Campbell et al v. Facebook Inc.

Filing 184

EXHIBITS re 181 Administrative Motion to Seal Documents Accompanying Class Certification Briefs and Evidentiary Objections filed by Facebook Inc.. (Attachments: # 1 Exhibit 53 (Redacted), # 2 Exhibit 54 (Unredacted), # 3 Exhibit 55 (Redacted), # 4 Exhibit 56 (Unredacted), # 5 Exhibit 57 (Redacted), # 6 Exhibit 58 (Unredacted), # 7 Exhibit 59 (Redacted), # 8 Exhibit 60 (Unredacted), # 9 Exhibit 61 (Redacted), # 10 Exhibit 62 (Unredacted), # 11 Exhibit 63 (Redacted), # 12 Exhibit 64 (Unredacted), # 13 Exhibit 65 (Redacted), # 14 Exhibit 66 (Unredacted), # 15 Exhibit 67 (Redacted), # 16 Exhibit 68 (Unredacted), # 17 Exhibit 69 (Redacted), # 18 Exhibit 70 (Unredacted), # 19 Exhibit 71 (Redacted), # 20 Exhibit 72 (Unredacted), # 21 Exhibit 73 (Redacted), # 22 Proof of Service)(Related document(s) 181 ) (Chorba, Christopher) (Filed on 3/28/2016) Modified on 3/29/2016 (kcS, COURT STAFF).

Download PDF
EXHIBIT 00 1 2 3 4 5 6 7 8 9 10 11 12 GIBSON, DUNN & CRUTCHER LLP JOSHUA A. JESSEN, SBN 222831 llessen@gibsondunn.coln JEANA BISNAR MAUTE, SBN 290573 JBisnarMaute@gibsondunn.coln ASHLEY M. ROGERS, SBN 286252 ARogers@gibsondunn.coln 1881 Page Mill Road Palo Alto, California 94304 Telephone: (650) 849-5300 Facsimile: (650) 849-5333 GIBSON, DUNN & CRUTCHER LLP GAIL E. LEES, SBN 90363 GLees@gibsondunn.coln CHRISTOPHER CHORBA, SBN 216692 CChorba@gibsondunn.coln 333 South Grand Avenue Los Angeles, California 90071 Telephone: (213) 229-7000 Facsimile: (213) 229-7520 Attorneys for Defendant FACEBOOK, INC. 13 14 UNITED STATES DISTRICT COURT 15 NORTHERN DISTRICT OF CALIFORNIA 16 OAKLAND DIVISON 17 MATTHEW CAMPBELL, MICHAEL HURLEY, and DAVID SHADPOUR, Case No. C 13-05996 PJH (MEJ) PUTATIVE CLASS ACTION 18 Plaintiffs, DECLARATION OF ALEX HIMEL ON BEHALF OF DEFENDANT FACEBOOK, INC. 19 v. 20 FACEBOOK, INC., 21 Defendant. 22 23 24 HIGHLY CONFIDENTIAL-ATTORNEYS' EYES ONLY 25 26 27 28 Gibson, Dunn & Crutcher LLP DECLARATION OF ALEX HIMEL ON BEHALF OF DEFENDANT FACEBOOK, INC. Case No. C 13-05996 PJH (MEJ) 1 2 I, Alex Himel, declare as follows: 1. I have been employed as a software engineer at Facebook since April 2009, and my 3 current title is Engineering Director. From 2009-2014, I worked on Facebook's Developer Platform, 4 and my work encompassed Facebook's "Share" button, Facebook's "Like" button, and the code that 5 keeps track of the "count" features associated with "Share" and "Like." I have personal knowledge 6 of the matters stated herein and, if called as a witness, could and would testify competently thereto. I 7 provide this Declaration to explain certain facts regarding Facebook's software code as it relates to 8 detecting uniform resource locators ( "URLs ") in messages sent and received through the Facebook 9 platform and the relationship of any such URLs to certain social plugins served by Facebook and 10 visible on third-party websites. In particular, I refer below to the count associated with a Facebook 11 "Like" social plugin on third-party websites (the "Like" count). I also explain the termination of 12 related practices in October and December 2012. 13 2. I understand the purported class in this action to consist of Facebook users located 14 within the United States who have sent or received messages that included URLs in the body of the 15 message from December 30, 2011 until in or around late 2012, when the practice of including URL 16 shares in messages in the count on third-party web sites ceased ("the Relevant Period"). 17 Facebook's Source Code 18 3. Attached as Exhibits A through G are true and correct copies of documents from an 19 internal Facebook system that tracks changes to Facebook's source code and includes related notes 20 and comments. These documents, known as "Differentials" or "Diffs," include the date of the 21 change, a description of the change, and the portions of the code that are changed. The relevant code 22 before the change is on the left, and the relevant code after the change is on the right. Diffs also 23 include an identification of the Facebook employee making the change, as well as the persons 24 commenting on the change. 25 26 4. To the extent that the above-mentioned documents contain source code, this code has been redacted for several reasons. 27 28 Gibson, Dunn & Crutcher LLP 1 HIGHLY CONFIDENTIAL-ATTORNEYS' EYES ONLY DECLARATION OF ALEX FilMEL ON BEHALF OF DEFENDANT FACEBOOK, INC. Case No. C 13-05996 PJH (MEJ) 1 5. First, Facebook's source code is a closely guarded trade secret of enormous economic 2 value. Providing it to outside parties increases the risk of further disclosure and therefore poses a risk 3 of substantial competitive harm. Disclosure of source code outside of Facebook erodes Facebook's 4 efforts to protect the code in which Facebook has invested significant resources and which comprises 5 a significant part of Facebook's product offering and competitive advantage. Indeed, the code 6 reflected in these Diffs alone is the product of thousands of engineering hours. Revealing the code 7 that generates Facebook's proprietary design and functionalities could cause catastrophic competitive 8 harm by allowing others to replicate that design and functionality without making the same 9 investment of time, money, and personnel. 10 6. Second, disclosing portions of Facebook's source code would reveal the methods used 11 to protect Facebook's users and the integrity of the Facebook platform, and could undermine both of 12 these efforts. Facebook's source code includes complex safety and security features that detect spam, 13 detect and prevent abuse of the system, and protect users from malware, among other things. These 14 features not only provide for a better and more enjoyable product (another competitive advantage for 15 Facebook), but also protect Facebook and its users from harm and loss associated with unsolicited 16 and dangerous content and activities by third parties. The effectiveness of these systems depends in 17 part on their secrecy. Disclosure of Facebook's security methods would potentially allow hackers 18 and abusers to threaten users and the system. 19 7. In the context of certain types of litigation (such as patent litigation) where there may 20 be a legitimate need for source code inspection, I am aware that Facebook negotiates specific 21 protections for source code and implements detailed and time-consuming protocols for handling 22 source code, as well as extensive limitations on the use of source code materials, disclosure, and 23 future restrictions on the conduct of individuals exposed to source code materials. 24 8. In the present case, evidence other than source code is available to demonstrate the 25 processes and functionality at issue. In particular, the non-code information embodied in "Diffs" 26 the documentation of key changes to the source code-effectively demonstrates the processes and 27 functionality at issue. Additionally, the source code for the processes and functionality at issue is not 28 2 Gibson, Dunn & Crutcher LLP HIGHLY CONFIDENTIAL-ATTORNEYS' EYES ONLY DECLARATION OF ALEX FilMEL ON BEHALF OF DEFENDANT FACEBOOK, INC. Case No. C 13-05996 PJH (MEJ) 1 limited or contained in any discrete way; that is, it is interconnected with other source code at 2 Facebook. Therefore, if Facebook were required to make source code available in this matter, it 3 would have little choice but to grant access to a significant amount of source code that has nothing to 4 do with the allegations in this case. 5 Share and Like Functionality 6 9. During the Relevant Period, Facebook offered websites "social plugins," or units of 7 embeddable code that allow users to share information using Facebook directly from third-party 8 websites. A third-party website may have embedded code for the Facebook "Like" button plugin on 9 its website, enabling Facebook users to directly "Like" the website and to share that action with their 10 Facebook connections (without having to return to https://www.facebook.com or the Facebook 11 mobile app to share the content). The "Like" button plugin also may have displayed an anonymous 12 and aggregate count of all "Likes" for that particular website (the above-referenced "Like" count). 13 Facebook also offered a "Share" button, which also may have displayed an anonymous and aggregate 14 count of all "Shares" for that particular website (the "Share" count). 15 10. In September 2009, Facebook enabled functionality that would ultimately allow third- 16 party website developers to provide a count associated with a "Share" button on their websites. 17 Attached as Exhibit A is a Diff dated September 30, 2009, reflecting the code that enabled a count of 18 "Shares" including URLs (1) posted to a user's profile, (2) commented on, (3) "liked," by clicking on 19 a "Like" or "Share" button, or (4) sent as an attachment to a message by clicking on the "Share" 20 button on a third-party website and choosing "in a private message." URLs sent in messages through 21 the Messages product directly from the Facebook website were not included; the count included 22 messages created by clicking the "Share" button on a third-party website. In particular 23 demonstrate the generation of a new statistic for the number of times a given URL link 24 was "shared." Ex. A at 5. 25 this new statistic incorporated the number of times a URL was "shared" (which in turn included the 26 number of times the URL was sent as an attachment to a message after clicking on the "Share" 27 button, the number of times a user posted the URL to his/her profile, the number of times the URL and 28 3 Gibson, Dunn & Crutcher LLP HIGHLY CONFIDENTIAL-ATTORNEYS' EYES ONLY DECLARATION OF ALEX FilMEL ON BEHALF OF DEFENDANT FACEBOOK, INC. Case No. C 13-05996 PJH (MEJ) likewise demonstrate that 1 was "liked," and the number of times the URL was commented on). Ex. A at 5, 7-8. In addition to 2 the overall "Share count," third-party web site developers also could view the public API statistics 3 indicating how many times a particular URL was shared. The public API statistics did not include 4 statistics indicating (specifically or by inference) how many times a given URL was shared using the 5 "Share" button and choosing "in a private message." 6 11. In October 2009, Facebook enabled code for the "Share" button and count. Attached 7 as Exhibit B is a Diff titled 8 button, including the social plug-in functionality that allowed third-party websites to display the 9 "Share" button and the statistic indicating how many times a particular URL had been shared. As ," which enabled the "Share" 10 reflected in 11 Diff enabled a user interface for a given webpage to fetch the "Share" count for that URL and render 12 a "Share" button on the webpage to show that "Share" count. As indicated in the Diff, this 13 functionality was enabled in the source code on October 8, 2009. Ex. B at 3-5. 14 12. , the At our F8 Developer Conference on April 21, 2010, Facebook announced the public 15 launch of the "Like" button, which also included a count feature reflecting the number of times a user 16 had clicked or commented on the "Like" button on that third-party website. The "Like" count 17 reflected data from the same existing functionality utilized by the "Share" button and count reflected 18 in Exhibit A. Instead of pulling the total count of shares created by the Diff at Exhibit A, the "Like" 19 count reflected only the counts for comments and "Likes" generated by clicking a "Like" button. 20 13. In May 2010, Facebook changed the "Like" count to include URL shares. Attached as 21 Exhibit C is a Diff titled 22 reflecting an adjustment made to the code on May 4, 2010 in order to make the "Like" count and the 23 "Share" count on third-party websites consistent. Following this change, the "Like" count displayed 24 on third-party websites also included URLs (1) posted to a user's profile, (2) commented on, (3) 25 "liked," or (4) sent as an attachment to a message by clicking on the "Like" button on a third-party 26 website and choosing "in a private message." As with the "Share" count, URLs sent in messages 27 through the Messages product directly from the Facebook website were not included; the count 28 4 Gibson, Dunn & Crutcher LLP HIGHLY CONFIDENTIAL-ATTORNEYS' EYES ONLY DECLARATION OF ALEX FilMEL ON BEHALF OF DEFENDANT FACEBOOK, INC. Case No. C 13-05996 PJH (MEJ) 1 2 included messages created by clicking the "Like" button on a third-party website. demonstrate that the existing "Like" count statistic for third-party websites was adjusted to be the 3 sum of the number of times a URL was posted to a user's profile, commented on, "liked," or sent as 4 an attachment to a message. Ex. C at 5. 5 URL Preview 6 14. During the Relevant Period, Facebook's service included a Messages product, which 7 allowed users to exchange messages that could be viewed in the recipient user's Messages folder. 8 Beginning in August 2010, Facebook's source code included functionality supporting a feature 9 related to URLs typed into the draft message body in the Messages product on the Facebook website. 10 Specifically, if a user typed a URL into the text field in the Facebook Messages product, and the user 11 had JavaScript enabled in her browser, the JavaScript code running in the user's browser may have 12 detected the existence of a URL. 13 15. The JavaScript code may then have requested information from a Facebook server in 14 order to provide a preview of the typed URL CURL preview")-including a brief description of the 15 URL and, if available, a relevant image from the website, as illustrated by the example below: 16 wivw.nyti mes. corn 17 The New York Tito4.- Breaking-News, World News & 18 E3 Multimedia mr-tin 19 111 .-torn Find breaking news, multimedia, reviews & opinion ao Washington, buss: sporb: 20 trairml, bas, jabs; adocatina, real estate, ears & mere at nytiro.com. .4 I I 1 013 C,-..x.se a T.-ulna-0, 21 fr.11 Ma Thumbnail 22 rg Add Files Press Enter to send 121 Add Photos 5-end 23 16. If the information was not already available on a Facebook server, Facebook may have 24 sent a request to scrape the third-party website to obtain the information and send it back to the 25 Facebook server and to the user's browser. The bundle of information related to that URL was stored 26 on the Facebook server as an "object." Facebook's software code running in the user's browser then 27 28 5 Gibson, Dunn & Crutcher LLP HIGHLY CONFIDENTIAL-ATTORNEYS' EYES ONLY DECLARATION OF ALEX FilMEL ON BEHALF OF DEFENDANT FACEBOOK, INC. Case No. C 13-05996 PJH (MEJ) used the information to create the URL preview as an attachment to a draft message, distinct from the 2 3 text in the draft message body. 17. If a user proceeded to send a message, the message (including the text of the message, 4 certain information about the message, e.g., date and time sent, sender, recipient, text formatting) as 5 well as any attachments (including URL previews), would have been sent to a Facebook server. 6 After receiving the message on a Facebook server, Facebook software processed the message and any 7 attachments while they were in electronic storage, including for abuse-detection and security-related 8 purposes as well as purposes related to user functionality. When a URL preview attachment was 9 successfully sent to a Facebook server, Facebook recorded that action (a "share object").1 When a 10 user accessed the message from his or her inbox, Facebook code would recreate a preview for the 11 user from the share object. 12 13 14 18. Attached as Exhibit D is the Diff titled dated August 16, 2010, which enabled the URL preview functionality for messages.2 As described in the Diff summary: 15 16 demonstrate the addition of code to detect URLs in the 17 18 draft message body, and, if detected, request scraped information related to the URL, and append that 19 information to the draft message. 20 the information to the draft message as an attachment. demonstrate the addition of code to append 21 22 23 24 25 26 27 If a user shared a URL through a message but no share object was created (for any of a number of reasons), the sharing of that URL did not increment any count associated with any social plugin on the destination website. Similarly, if the destination website associated with the URL did not have a Facebook button plugin, the sharing of that URL did not increment the count associated with the social plugin on the website (even if a share object was created). Additionally, in some cases, even if a share object was created and the destination website associated with the URL had a Facebook social plugin, the count on the destination website may not have been incremented (for example, if the URL a user included in a message was not exactly the same as the URL the developer passed to the plugin). "Titan" was the internal name for the Facebook Messages product. 28 6 Gibson, Dunn & Crutcher LLP HIGHLY CONFIDENTIAL-ATTORNEYS' EYES ONLY DECLARATION OF ALEX FilMEL ON BEHALF OF DEFENDANT FACEBOOK, INC. Case No. C 13-05996 PJH (MEJ) 1 demonstrate the addition of code to get URL share information in order to generate a preview when a 2 user views the message from his or her inbox. 3 Modification of the Like and Share Counts 4 19. After URL preview functionality was enabled for URLs typed into the Messages 5 product on Facebook's website in August 2010, URL preview share objects were counted in the 6 "Like" and "Share" counts visible on third-party websites that embedded those social plugins. 7 20. On or around October 4, 2012, I was made aware of a bug that resulted in an increase 8 of the "Like" count by 2 for each URL attachment sent with a message. I then made changes to the 9 code to isolate and ultimately remove shares of URLs in messages from the "Like" and "Share" 10 counts on third-party websites. Exhibit E is a Diff titled 11 adjustment I made to the code on October 11, 2012 in order to distinguish between URL shares 12 generated from preview attachments to messages and other URL shares on the Facebook website. As 13 I wrote, reflecting an I 14 15 Ex. Eat 1-2. 16 show that when a message is sent 17 with a URL attachment, a log of this event is created to indicate the fact that the URL was attached 18 and sent. Ex. E at 4. 19 URLs shared in posts to a user's profile from (ii) the metrics for URLs shared in messages. 20 21. likewise demonstrate the separation of (i) the metrics for A few days later, I removed URL shares in messages from the "Share count." 21 Attached as Exhibit F is a Diff titled 22 an adjustment I made to the code on October 16, 2012. As is reflected in the notes within the code 23 itself, prior to October 16, 2012, the code executed the following practice: " reflecting As is also reflected in the notes within the 24 25 code itself, as of October 16, 2012 and onward, the code executed the following practice: Ex. F at 3-4. For instance, revised 26 27 28 Gibson, Dunn & Crutcher LLP demonstrate that the calculation of the public statistic for the "Share" count and the 7 HIGHLY CONFIDENTIAL -ATTORNEYS' EYES ONLY DECLARATION OF ALEX HIMEL ON BEHALF OF DEFENDANT FACEBOOK. INC. 1 corresponding public APIs (discussed above in paragraph 10) for a particular URL was adjusted to 2 remove a counter that included the number of times the URL was sent as an attachment to a message. 3 Ex. E at 4. By removing shares associated with attachments to messages from the share_count, those 4 URL shares were no longer included in any "Share" counts associated with social plugins on third- 5 party websites. 6 22. My adjustment to the code in October 2012 was intended to remove all URL shares 7 from attachments to messages from public social plugin counts. However, I later learned that my 8 adjustment did not remove all URL attachments in messages, and, in December 2012, Facebook fully 9 removed URL shares in messages from the "Like" count. Attached as Exhibit G is a Diff titled " reflecting an adjustment made to the code on 10 11 December 19, 2012. The summary explains the purpose of the Diff: This change ensured that all 12 13 calculations of the "Like" button count, including those used on third-party websites using a "Like" 14 button social plugin, did not reflect URL shares generated from attachments to messages. Revised 15 lines 131-132 demonstrate the deletion of the code that previously enabled a display of the "Like" 16 count that included the number of times a URL was sent as an attachment to a message. Ex. G at 7. 17 Revised lines 293-299 likewise demonstrate that the new version of the public statistic for the "Like" 18 count for a particular URL would not include the number of times the URL was shared as an 19 attachment to a message. Ex. G at 10. 20 I declare under penalty of perjury under the laws of the United States of America that the 21 foregoing is true and correct and that this declaration was executed on June 1, 2015 in Menlo Park, 22 California. 23 24 (10 25 26 ex Himel 27 28 8 Gibson, Dunn & Crutcher LLP HIGHLY CONFIDENTIAL-ATTORNEYS' EYES ONLY DECLARATION OF ALEX HEMEL ON BEHALF OF DEFENDANT FACEBOOK_ INC. EXHIBIT A 671l) Create OW tsharepro] rename fql fields and add api wrapper for launch Committed Atl Author lie Reviewers Press ? to sbow moment shortaits. Eitit Revision yanv Edit linked Facebook I shopiti Tas;s3 rnkinsey Lint Unit * * No Edit .Dependenr.ie.s ntersAvaeable Ormnloa0 Raw ffiff No Unit Test coveraw Commits :-E 'i.90656 ctiuckr via rolease.php: merging 190565 ;t`90566: fsbareprej rename tql fields and add api wiappe,,: t*r iaurith Lines 2.315 Ask for Merge for rE190666: chtickr via refeasephry. merging 190566 Ask for Merge tor Subscribers dmig, richai rE.1.90565: !share-pi-A rename tqi fields anti add api wrapper for Launch Flag For Later Award Token Subscr be SUMMARY As per discussion with public naming Unit tests have also been renamed_ and pass TEST PLAN php unit test scriptslunitteslitestsfplattornitiglitink_stat.php php unit test scriptisiunittestiteststplatfomilfgfishare_statphp the updated this revision Via Legacy Sep 29 2009, /3'3 PM updated thrift files_ added API wrapper function links_getStats (and unit test) around link_stat fql table_ yariv requested dieriges to this revision. via Legacy Sep 30 2009. a:38AM Looks sweet! Very well written code. A question Please add the new method to the php api client. Irene C,osturients 16 (On Diff 4193764) The tql fields include like_count and comment count, but these cases aren't handled here. Are we not returning like count and comment count or am I missing something? BO n (On Cliff (1193164) small nitpick. you could store the result of gelid() in a variable to avoid calling it muRiple limes. the updated this revision via Legacy Sep 30 2009, 1 :28 PM 1. added comment to make tike_countimessage_count dearer. Basi atiy. these are the same as our internal names, so they're https:llphabricalor.komiD66110 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001570 L/L4L1f 4U ibE epl UJ i ei WE 1 itl NI I tUW`a. d1 KI HO' W dppel 3134 iifiLIE*LI 3 already populated in the data type. 2)1 started making the change to getlel as a local way variable, but we already store/iemoize it explicitly as a static array in the LinktirlDataType. Note that this isn't "really" app jd dependent, I just need to inherit the function signature of the parent class. Essentially, adding a variable will double the memory requirement for storing the urf to ids, but only save a single function call_ rhe added a comment. Via tegecy Sep 30 2009, 130 PM As for the client I brary. rd like to make that change when we actually announce, so we don't push it out prematurely yariv accepted this revision. of Legacy Sep 30 2009, 1'.41 PM rhe dosed this revision. Via legacy Sect 30 2009,2:06 PM Revision Update History Diff i D Base Base Description Lint Created Unit * * * Base DM I 193745 Sep 29 2009, 6:5.4 PM * Ditf 2 193764 Sep 29 2009, 7:32 PM * OW 3 '194064 Sep 30 2009, 1:24 PM * WhitespaCe Changes: ;.:. 0 0 * t Ignore Most h-OW 041' Table of Contents P Rth Ri Coverage (AM Coverage (Touched) I I I M I St I St I St I St I St I I M I I I I I Ak M I I I hltpsitphabricator.lb.cmiD66710 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 2/83 FB000001571 Al I It9 US dI RS dUU rm. 1525 152h P4 lifiLIE *1_13 Shy_tw Aft 202 Lines Show 20 mss : LICKS 1/29 service Facebook4010 1587 LINK'S 1728 */ 1730 /** 1525 Show 20 bites 1711 HO LYE dppel ICA 1524 41 1729 link id links_post(lniid uid, 2:string url, azstring link id links_post(1:uid uid, ?:string uri, a:string 4730 comment) comment) 1732 /731 1113 1732 1734 1733 /735 1734 1714 2735 ..111111111111.11.111.1.11111111 /736 1737 1737 173a i 1741 nta commentsget(1:xid xid) list <c 1742 COMMENTS 1740 &I 3.740 / 1739 ' COMMENTS 1737 3.741 1738 i* MMIMIIIIIIIIIIIIIIIIIIIIIIIIIIIIMMI lisVcomment> comments_get(1:xid xid) 1742 1.1.1.1.11.11=MMEIME /743 /743 1744 1744 /745 Shaw 20 Show AS 909 Lines Shove Last 20 Lines =IN 962. 952 962 963 963 IME 954 964 955 965 96 966 1111111 957 968 .1111 I 967 968 969 959 970 971 111011 97? 970 971 /** 972 * ° 975 API method to refresh images already linked in feed and other content. and other content. 976 977 @pram string 975 977 * stories 974 976 /* 974 API method to refresh images already linked in feed stories 973 I 974 * Puri The inage to refresh. @return bool Whether the refresh was successful. a/ 378 @pram 979 @return tool whether the refresh was successful. string Surl The image to refresh. 980 A Show 20 Lines Show AE 7508 Lines g Show Last 20 Lines libiapilauth.php Sew 20 Lams Show/4 234 LInes Show 20 tines Options "r 43 ); Irphabr icator 11).cm-0)66710 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001572 235 . be returned. */ be returned. 235 236 236 217 237 238 / // tado: Aiiiiiimi D8 - V THE5 3 R 3 218 233 243 240 241 241 242 // (gado: AHNHHH DR-TFY IRIS 10NX A2W61144k 239 242 243 243 244 244 245 246 245 245 247 2.4B 243 2se 11.111MINIMININIIII 111111111111111111 111111111111MMINN IIIIIII 247 248 IIIIIIMIIIIIIIIIIIIIIIIIIIII 249 11111 IIIIIIIIIIIIIIIIMMIIIIIIII 250 251 now 20 Lines - Show All 213e Lines Show 1..ast 20 Ijnes 11.1.111.1.1 105 106 .1111111111111111111111111111111111111111111111111111111111111111111111. .1111111=I 107 68 105 11.1111 165 107 168 194 2e9 11111111111.0110111111.1 109 110 1111111 M1.11 116 Ill 112 113 214 111111111111 IIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 1=111111.11111111.11 1=11111111111111111111111111 111 111111111111 112 11111.1111111. 113 MEM= IIIIIMMIIM 114 115 MIIIIIIIIIIIIIIII 135 11111111.1111.111111 116 1.1111111111111111111111 116 1111111.11.1111 117 IIIIIIIIIIIIIIM 117 111111111.1111.1.1 118 11.111.1.1IIIIIIIIIII 119 1111111 118 115 MIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIII 229 120 111111111111111.1.11 121 A Stow 2l Lines Show AP 61.4 Lines Show Last 20 Lines MIME 11111111.1111111111111.11111111111 I MI 2 3 4 5 5 7 /I* wrapper arobnd the share_stat Fpt table 8 9 3 Papi Ilnks_getStats 10 * ifthroNs 11 */ 12 13 14 /5 16 17 hitpsIllphabricatorib.can/1366710 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 7/83 FB000001573 28 14 20 111.1111 21 22 I 23 24 25 26 27 28 29 30 11111.11111111111111.11111.1 31 =11MM 12 33 34 15 111=MI 47 48 47 48 44 49 MEM 50 58 51 5/ 52 52 53 53 54 54 .1.1111111111111111111111111 1.1111111.111011.111 1111.11.1.11.111111. 55 .55 56 sa 57 57 58 58 59 59 so aa 51 52 62 MEM 63 11111111111 --- - - - 11111 2 3 11111111111 4 5 1111111 11.1 6 11111 7 a fi the metrics data type populates our internal panes 'sharecOunt*; f/ 'post_count', count', and 'comeent_coiint' These are neat the 19 fY exterpa1/9fficia7. naves for the metrijcS, so* rename them here hitpsI1fphathricator.lixcaniD66710 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001574 11 12 13 ft .actually want to caLtnt messages and post to profile in the // sha0e_coqnt 14 25 16 1/ th internal 5hape_count 15 exterally nameA 'message cont' 10 1111111111.1M 19 20 1111111111111 21 22 23 24 1 as 26 I 27 28 11111111.111111111111111111111111111111111111. 29 30 1111111 31 IIIIIIIIIII 32 I 37 34 35 36 11111111111111111111101 1 37 38 39 46 41 42 43 44 I I MEM 44 45 41 IEEE. 4g 1 49 89 IM=M J 11.1.1.1 51 `'2 11111111111111 WeliphabricatouharnA)65710 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 9/83 FB000001575 53 53 54 54 55 55 56 56 57 58 58 59 59 MME EM=MMEMME 85 85 56 56 52 87 88 88 89 89 9° .1111111.1111111111111111111111111111111111111111111.1111111.110. 91 IMINIMIIIMMEIMINEMEME 92 .11111111.1111111111.1111111111 92 94 .... 9e 91 92 92 94 11111.0.111111....11.0111 MEIMM .............11.1111.11__ 1.1..11111.111.11110.111.1111.1.1 , MIIMEMENIE11.1111111111.111.1.1111111111 23 i MEM MEM 52 11111 51 1111111111111111.1 52 111.1111 51 1111.111111111111 53 11111111111.1111111 11.1.11111111111 sa MEM 93 54 55 55 56 MEN MM. 11.11.1111111 111111111 1111111111111111111.1 1111.1111111.11111111 56 57 MNI 57 58 50 58 MEMO 59 59 St 62 1111111111111.1 60 II 61 /I* 62 / 53 Create a new FQL5tatenent. 63 64 @Oaram array Sselect an array of 64 Waram array $select an array of FQ1ExpresSions Worn 65 10param string $from 4 Create a new FQL5tatement. FQLExpressions 55 6param string the table to select from the table to select from MI HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001576 /4* This table has all-public data 57 / 58 59 60 I 61 62 63 64 I 65 66 67 68 I 69 70 71 72 73 74 IMMM. 111.1.11.1.1.1.1.1.1.111 75 76 77 78 79 80 81 82 83 84 1.1111 85 86 87 88 89 90 91 92 93 g4 95 46 MEI 97 98 99 100 101 102 103 104 105 106 107 I 108 10e 110 https://phabricator fb.com /0 6671 0 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY i 2;83 FB000001577 S1 53 52 52 53 53 54 54 SS S5 55 56 51 S7 58 5a 54 68 MMMIIIM =MI =11111 59 69 Si Si 62 52 1111.111.11.1111111.1.111111111111.111111.11 63 63 IMIMMIMINIMIEMMIME 64 111111111111111111111111111111111111.111111111.1111. 111111 64 65 55 66 Show A :130 Lines 111111111111 1 2 3 11111 /. 4 Tests for links.get5tats api call. 5 * 6 * To run: 7 " 8 * 9 * @owner the ../../../birdunittest Llnks6et5tets.php ' ceails rbegarebook.com platform- 10 tests@lists.faceboak.con "/ 11 12 /3 14 15 is 111111111.11.1111.111111 17 18 // most of this is tested in link_stat fql test, so just sanity check 19 Ii that this furKtion wacky 20 21. 22 23 24 htipsfiphatbricztor comiD65710 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001578 1111111 26 29, I view aptions i a 11111 /** * Tests for the link stet FQL table. 3 4 5 *To run: 6 * ../../../bin/unittest linkstat.php * * @Owner rhe 8 9 * filemails rhegfa(ehook-com platform- te5tS@lists.faCehook.coe 10 *I 11 12 33 14 15 16 17 18 11111111111111111111 19 20 21 Z2 23 24 ZS 26 27 28 29 30 31 32 33 ii most srf this logging functionality is tested in 14 11 ShareRealTimeStatSTeSt, this just makes sure we'r,e 35 consistent 36 37 1111 30 40 41 IMINININ1111111111111111111111111 42 43 NMI 44 45 46 47 44 49 se 51 52 53 Illphabr icator .11).caniD667 10 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY eo83 FB000001579 (et Ira MU WE %NE appUt ILI REA111.i I cc MM. I S6 57 1111.1111.11111111.11111.111111111.1 SS S9 61 63 MIME 64 6S 11111111111M 66 67 68 69 70 I 71 Leap Into Acton Action eommem Comment own htlpisliptiabricator 11).comiD66710 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY rta 833 FB000001580 EXHIBIT B . areprol Release canclhclate for P Committed e 'I .A1 Users .... ... ... ,: .. , . ,..., .. :: . ,....:.,...,....,..,:ceee,,,,,,,,...9,:aree,,,,,,,,,,,,...........,-- r Atithor Reviewers rnkinsey , , Press ? lo slaw keyboard shortcut. julie Edit Revision Edit Linked Facenook v.iztit.1 Tasks Lint No Linters Avaslable Unit kio t. Fl Test ecworage Commits rE192403: [shareprol Release candidate for Phase 1 1E192609: chuckr via release.php: merging 192403 Lines 115 Async Build Subscribers ..... : . :.. Edit Dependencies Download Raw Diff Ask for Merge for rE 192403. [she repro] Release candidate For Phase 1 wzhu, zhen Ask for t erge for rE192609: chucks via release.php: merging 192403 Flag For Later Award Token Subsob ..._ . . SUMMARY Want to get this checked in so JZ can check the CSS. There are a few inconsistencies still in 1E6. And so Wei can tweak J5 if necessary. Wei - 13 extra lines. TEST PLAN httplirrp4.24.ne.,.111bitesterhtml API covered separately mkinsey updated this revision. Ocl 7 2DN, 149 PM using assetHost in irng src wzhu added a comii-:-°. Via Legacy Oct 7 2009, PM Lg. A couple of minor suggestions. hrtps:?:.'phabricater tb.comiD67898[5:26;20-13 4;54:20 PM] HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001581 1r111rx-, hthllIsioonnectiFBIShareProjs 26 (On Diff #197031) 32 (On Diff #197031) 1. Since this function is only used once, let's 'Nine it 2. The cede can be simplified as You can simply this function as } mkinsey updatcA this revision. :2 2009, 12AK3 PM 0:`,t Smaller per wel Don't send t parameter if we have a share_url specified (so the share login dialogue says the right thing). This adds extra code and may not be strictly necessary? midnsey up;lated this revision. 21(Y-) C.:x't wztiu accepted this revision, 12 03 PM 6 2009. 4:5.5 Looks good. ey c.iosed tN?; =e-,'is i . 11 n Update History ID Base Ease De..scriptott Created Unit 0 Base Nif 1 196986 Dm 2 197031 Oct 7 2009, 1:45 PM Q Oct 7 2009, 12:52 PM Diff 3 197556 Oct 8 2009. 12:02 PM i 0 Q 0 ON. Q bitespace Changes: h Ignore Most haps :'phabricattv tb.convilt67898[5:26720-15 4:54:2.9 PM] HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001582 View L-- Options v tg.;`: This is an image. View Options 'v. Context not avanatie, 6 6 j // Fields from share_stat table to requests // Fields from share_stat table to requests 8 , . . l'. .`." 10 - a ':,''. ,, .. , .xy Z mc7zZ- - 4.4%, - q 11 12 13 11 I 011111.1.11.1.1.11.101 IIMIMIIIIIIIIMINI Context not 15 14 1.7 ble. 13 16 'a 15 1 , I littPs:(1Phabricatert.com:1361898[5:25-;20-13 4:54:20 PM] HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001583 17 l 19 f/ Find out what url is being shared. 2e 21 27 23 2. 25 // Find out what url is // Makes the count no more than 4 chars being shared. 26 26 27 27 28 28 2.9 29 30 30 31 31 32 32 34 33 34 34 35 36 }; // Update a button post API call E . 1.1111111111.1. 4e 11.1111.111111I 42 43 35 44. 111 46 47 36 // Render a given button 49 " 51 5 // Attach click handler 56 37 57 m pAraw:VM g:10 53 54 .40 GO 61 41 62 // Fetch the url if not already requested hups:?'phabricatortl,.com1361898[5:26;2015 4:54:20PM] HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001584 111111.1111111 IIIIIIIIIIIII 63 // Do we need to render real-time interaction total count? 11.1.1111111111 11 Need to fetch this I. field U // Create markup 7? https:t'fphabricator tb.convil,67898[526;2013 4;54:20 PM] HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001585 62 73 63. 4 64 6S 66 75 71 }; 73 79 // Scan the document and find all share buttons to render aa 81 3? 83 8 85 86 87 g3 // Method to fetch real-time data from go 91 91 92 93 , : : :T';7".!!!1"'!!!7!!!'":!'.7F.! https:llphabricator ti.con1:1361898[5:26;2013 4;54:2 PM] HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001586 94 94 95 95 96 96 97 97 ); // Add 350NP request 9a 9E if Note I am passing a dummy 99 1/ Construct the API request 99 api_key because that our restserver.php We // requires one. We should tee remove that in real code 101 102 101. 10.i 101 le4 103 105 194 106 105 10/ 10;e 108 107 1); } } 109 100 Context not available. 112 // Render default 111 113 114 115 // Render default 112 113 1/ Note we call APT after : 114 // Note we call API after first render because that render also 115 /1 parse the DOM to decide if any API call is needed. -first render becaUse that render illso. lib 1/ parse the DOM to decide if any API call is needed. 117 116 1.1.8 117 Context not available. Leap Into Action Action comment Comment latps:(1phabricator/11.conal67898[5:2672015 4:54:20PM] HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001587 https:,'phabricator th.convp678945 26 2015 4:54:20 PK HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001588 EXHIBIT C ' . c-cnt pm t shareprf:, courft ILO 00 0 0 co 'n 0 U) m ci) Award TfAceii Frx C,V4a1oari Raw 1:1Aft COMETt. _ Mac:IF.::r Revert Plan: ok vend this is equal to total count fac-es Test Plan: htto:lAyww.rtle.dem006.t.oebrx;icoomtp:ugitiilike. php-?hret ::http nmtab1 e.com,2010/05,104/zynga--larrnviNe-valuell&layout,,button_cnashow- Reviewed by: mkinsey Summary: SOc we can stop being inconsistent aA::tg4tt4d.:iAati.Alcft::Wtttitc::.Opt0t::0*SWW:.ta:*400M*NM: rn ORP11 e-M None Pt s rE242a,e2-. Fix fog spew tor 1:;,t-Consistentileeh on GemidiandieV2 n CilwslmAted rAntani rnaka 0 ci Ill 0 Lbke- __..... O CO (./1 O 0 O -n 0 z rn z 0 z rn 71 0 0 z r- 0 * page treodeled as a traditional share object). ',lc page (modeled as a traditional share obiect), * Oparam fbid $from_id the id of the logged in user. * the presence of a like edge between a user and an external w the presence of a like edge between a user and an external * Oparam fbid $ta_id the id of the global share object being * Oparam fbid $fronid the id of the logged in user. * Construct an ExternallinkiNe instance, which helps manage w Construct an ExternallinkLike instance, which helps manage /** * between a user and an external link. * between a user and an external link. /** * Models a Like edge residing for potentially residing) /** * Models a Like edge residing {or potentially residing) ;nx * tparaa fbid $to_id the id of the global share object being * 40 * @param bool 8auto_prep true if the constructor should build 3g liked. 0 z U) rn z 0 z rn 71 47 46 45 4; I 44 42 44 43 * @maintainer icuin * @maintainer jcain the object in the Preparer:;go sense. if we expect external code to intentionally prepare 0 0 z 41 if we expect external code to intentionally prepare r- the object in the Preparemgo sense. up the entire object at construction time, and false 41 up the entire of ect at construction time, and false aram boot $auto_prep true if the constructor should build 0 1.0 cn U) O a O a CO m z 0 z m 0 r- z 0 z .* Overrides getSampleConnections that would otherwise be /** I I $this->sampleConnections can only be * not everything is self-prepped or prepped externally, we whether Of * post preparation, and since we technically don't know determined * of the class itself. preparation * and the preparation of the LinkiikerDracle overlays the Preparable, ';.3- :=2 A:i: -::0 -,,:...: -r5: ?e 7,3 -y5 ?"34 - connect the user's friends of the share node in 1;,-;-, * is only needed if we need to confirm that an edge is really ix edge. present. = 2 Most of it is self-explanatory, but note that Spass * rehydrate all of the DB material needed to full construct this * Implements the one Preparable method needed to efficiently -12q 1.;:r. -;.1-:: ..;n T5 55 In 55 /** V I 5g ,, St c. ..--` :.---i- :.-.:. .,. W 41..1. I * maintainer jcain question. 1, :--,, :..14 :-"z. ... -..-7 that * @return assoc a dictionary of information about the edges .% r-, 4, w manaually manage the construction of sampleConnection. need to ?::4 .:= n -.:-.-: :'::. -n This particular class is a full-bIown * inherited. 73 77 Ii3 75 connect the user's friends of the share node in Most of it is self-explanatory, but note that $pass = present. * is only needed if we need to tonfirm that an edge is really * edge. this * rehydrate -all of the DB material needed to full construct * implements the one Ft-reparable method- needed to efficiently /** I * @maintainer jcain guestion. * that * @return assoc a dictionary of information about the edges * manually manage the construction of sampleConnection. need to * not everything is self-prepped or prepped externally, we whether or 2 Sthis->sampIeConnections can only be * past preparation, and since we technically don't know determined * of the class itself. preparation I This particular class is a full-blown * and the preparation of the LinkliketOracle overlays the Preparable, * inherited. * Overrides getSampleConnections that would otherwise be /** I cn CO CO -a. CD 0 CD c) CD -In 0 z rn rn z 0 z rn z 71 0 0 r- C) , .: - :44i, m .:.,: * I'm allowing Tor the possibility that someone creates a *1 * maintainer jcain otherwise. s @return true if more rounds are needed, and false been called on this object. * @param ipt $pass the number of times the prepare method has * widget should reflect the on-facebock_cem story deletion The external * share story, and then goes hack to the external widget. removes the * edge using an external widget, comes to facebook.com and like-this-share 1 1 '.. .' 115: 114 lia 112 Kc =.-6 The */ * @maintainer jcain * @return true if more rounds are needed, and false otherwise. been called on this object- * Qparam let Spass the number of times the prepare method has * widget should reflect the on -facebook-eom story deletion. external * share story, and then goes back to the external widget. removes the * edge using an external widget, comes to facebook.com and like-this-share * I'm allowing for the possibility that someone creates a cn O a CO m z 0 z m 0 1 0 z C) 3.4e: 12: 142 /** mt 1.43 1.5I. 1,49- We try to unroll any partial made if we fail_ halfway through, but it can't be and false otherwise. 16.3 user, although we need to be able to recover it should 5r,5 1.C,7 share id, sn that we can quickly determine if the user is currently liking/sharing this item.. * specific Each association will need to carry, as data, the user- * * Like count, and we need to maintain associations between all users who've shared the object and the object itself. * * T-72 171_ 7u Ii.;:?- 16.-8 167 MS MA 1.% This is the object that needs to maintain the full * "Mi4 -1-.q.-5 on the very first like through the external widget. * * + tthis-->toID is the ID of the master share abject, created 164 l'.-.ee specifically, it's of no use whatsoever to any other * the user unlike the share. 'S.: * 2.4 the fbid of the share story on that user's well, * More * + The share_id returned by share_create is essentially ;4::?, V.;i6'. :-.;"7 M n= 15. * Implementation notes: * @maintainer jcain guaranteed. changes * perfectly if @return boot true if and only if everything worked out A asset between the user and it. 53 la? * user shared a copy of the global share item by adding and * share item iterD) by creating a new share item and noting ::...3 --51- :3 -.56 ee 147 the 146 142 * Establishes a link between the user ifrom/D) and the global 145 1.41 14 544 140 14'.? .5.43 1'39 ;: E tte esee ie More the user unlike the share. user, although we need to be able to recover it should specifically, its of no use whatsoever to any other the fbid of the share story on that user's wall. Each association will need to carry, as data, the user- all users who've shared the object and the object itself, like count, and we need to maintain associations between This is the object that needs to maintain the full on the very first like through the external widget. * * currently likingieharing this item. ehare_id, so that we can quickly determine if the user is specific * * * * * * + Sthis->toID is the ID of the master share object, created * * * * * e The share_id returned by share_create is essentially. * Implementation notes: * We try to unroll any partial made if we fail halfway through, but it can't be * iemaietainer jcain guaranteed. * changes * and false otherwise. * @return burl true if and only if everything worked out * * assoc between the user and it. * user shared a copy of the global share itec by adding and * share item (toID) by creating a new share item and noting * Establishes a link between the user (fromln and the global perfectly the I Le tee ere e <eee cn co cn - a a 0 0 0 0 0] - n 0 z co m co rn z 0 --t D T1 0 C) ::: ,.:.:3 Y.::: ."Ti 0 Vii;? .2-i 1 207 "tel :r:'-!, 2i),5 */ ::2 , =, 204 * maintainer jcain ;.-1 -::: * @return boot true if and only if everything worked out, and 11::0C4 false if something went wrong. :::''- * 11Xi * .;:.-. 1.9 * and the global share (ton). !97 zila false if something went wrong. */ * @maintainer jcain * * @return boot true if and only if everything worked out * * and the global_ share (tolD). and * Fully removes the connection between the user (fronID) and /** if** 1S4:: .f, -- . I-:)0 1 ' 1.4. in I I I ial .; * Fully removes the connection between the user (from10 and 1-.15 : 1U -1: 1.79 in 1 17'2 P.; 174 1M In 1-7-r a) CO 0 O 0 O -n 0 z U) rn 0) 0 rn 71 0 0 r- .15 I &,,E_. ''.! i..!.; 1-;`.i.N th.,;7, 7:r.7:-.Sr: ..,.-; t 7'-iS- 1.: -.7_1:4R-).7:?-:.: t i.: w.:71.f-; t ?ti 14d:.. 011.:12'.7M7:MI.- 4,..,.., a...-: 'de t:-.3" V...77:-&77:1 ',7 ..:: t. :t :"-; r E . v.: :,.. ME - .5(47 r':,..:. .,;,:!..li:ke r :: #' --,;it.:::::: #. Li.j:si: 2,2 fj 224= 2.23 :1'20 '...q5 '21:-.7 211i 2,15.. 212, .., Z1:2 2at I .-77 7'..:., :,:-. 111111111111 242 24F.: is @claintainer jcain .-W 24S :2.42 ::... * into the share story_ 24..... * @peram string Scomment the user comment that 5hou1.4 be inserted 23'1 :.--:.-T ,;3':.7.: * Create share story with user comment and remove like story / 4.* 2 ..f:zi,Tt : :s4 .:: .3 ' ;:::1 u2 !'...:1 227 1,- ---z_ 2Z3 2'M 22T C. 214 ,,-.1 212 ...?...n .C.I.T; 219- 243 in : 15 s-f-,-.: II si:., ::-.,::SE, thl..S *.C.zS :-<:-E*.t. ,,.; z cBm-,,,x-InT. -::::::',:,::-.! cixe7,.-E -- -:: T:-.:%' h'f r,:3, ai: w%i..lko cl: s:.. rolern TO* s:9-, ;7.e..C.iii':.- 17.1%,..:: ',.:-..-n-: ::j-:::: rl.:--r. t #: 1.S ,ri,.::.. tr:1 i;..- ::.11 ',-i:, 17 -::-i-7!:t. lot n the share story. * camaihtainer jcain * * @pareal string $cossment the user comment that should be /** * Create share story with user coment and remove like story I Al, ?r: '..!...^ ... ....:. ...... C. S., ., ..... v. .....-. :k ........ :::Y. S:. .' i-' ::: C. . ;.e.: ,...,' "....: 4., . ... 0 -.4-, ..,:;..... : ',.....: { C.., ..,, '.... 4., :.% f..: ...... . e: C:. .. ....T.T. ... ... . . ,:..: ". " ..... .-., = -- ., :, -, {; ... = :4 . .. = . ..s.^.. +'? ^t ?S n (. ...,. ses § . C%-). :. .r, ;`...7, ' ' ..s.S 'r"... . ..% .... f---3 :.;-.5 '. ... J-.4 ..-' .;.: . --. .. ror ,.. .-.. .,.... .-s.i :.,.: . . :.-:: ,::? , '4 ..s> ,f, 5.0 ".S ,',S. ;NS ': . '7 -. .,s's s.0. ?",f ,..:.::. -- e4 f-, '..."..: S ? \: N ',-....'s , .. s''-- -'!:.' -., :7: . -5 '''-;, 5'.. ,."... ..".. e-..; :,..s :,:s :...: : ! : :0 : ',.., ....,.. ...r.: ,..".: 4...": %.'. ...... ....:: ii: :::. . . ......, '. " :7., : It:. 11, . ..., `.' 4 . . ,, ....... ':.:. .....: .7,.%. ....;',. :".... %.4 ,....., .,.. ,", .,.. ...., .7( . C; ...'": t... . . L., ... :..". ....,, :: x ........ . .......: -- ..s. ,. ri ,-sr (74 *IT t.Nt = . ".S' (NI I . ::. ft . . .. = . -...... .-.-4 5N tzZ: tes F rs Lx's :.-7-..1 S'.S £.7,3 IN . s':. i -.: .- '-: ,.'5 ;,-....: (.4 ,....,.. s'.!''.3 4N1 ,r,i r4 fl 1...-1 iN r:.'... .:',.... s',.: .\ . ..."'.. :..."7.2 (....1 N N ',3 -:-4 C4 04 . HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY FB000001597 EXHIBIT D 0 D144832 Integrate Share-Scraper functionality into Titan https://phabricator fb.com/D144832 D144832 Create Diff Integrate Share-Scraper functionality into Titan All Users Committed Author wbailey Reviewers Lint Unit Edit Revision Press ? to show keyboard shortcuts. rdbayer * * Edit Linked Facebook Lint Warnings Tasks No Unit Test Coverage Edit Dependencies Download Raw Diff Commits rE278245: Integrate Share-Scraper functionality into Titan rE278610: dmurphy via release.php: merging 278245 Lines 224 Ask for Merge for rE278245: Integrate Async Build None Share-Scraper functionality into Titan Tasks #269602: Integrate share-scraper Subscribers rdbayer, drew, wbailey and 2 others Ask for Merge for rE278610: dmurphy via release.php: merging 278245 Flag For Later Award Token Subscribe SUMMARY This diff adds a simple share scraper to Titan. Per discussions with the team I did not integrate the existing composer and instead created a standalone scraper control. Modifications were made to the SendMesssageTitanController to allow creation of a share object during preparation. This is passed through to the XHP rendering via the fbAttachmentData attribute. The logic for embedding replies was modified so that replies that include an fbAttachment are rendered as whole posts rather than embeds. TODO: need a strategy for dealing with sending these fbAttachments out to external email addresses integrate the changes in D144-710 TEST PLAN Tested creating shares to validate they render properly REVERT PLAN OK wbailey updated this revision. Via Legacy Aug 12 2010, 12:08 AM accidentally left this in wbailey updated this revision. HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 1 of 20 Via Legacy Aug 12 2010, 10:30 AM FB00001623 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan https://phabricator fb.com/D144832 the _setVisibility method is unnecessary wbailey updated this revision. Via Legacy Aug 12 2010, 11:05 AM reverting a couple of changes I accidentally included making the scraper handle retyping the same link properly rdbayer added a comment. Via Legacy Aug 12 2010, 1:05 PM hey will, let me know once you've integrated with what i committed and updated, then i'll take a proper look at this wbailey updated this revision. Via Legacy Aug 12 2010, 2:32 PM merged with diff from ross wbailey updated this revision. Via Legacy Aug 12 2010, 2:47 PM these lines shouldn't have been modified wbailey updated this revision. Via Legacy Aug 12 2010, 2:50 PM wbailey updated this revision. Via Legacy Aug 12 2010, 2:52 PM typo sorry...left this in rdbayer requested changes to this revision. Via Legacy Aug 12 2010, 3:48 PM dude, awesome work on this, welcome to the code base :) a bunch of comments to help you get up to speed on our coding standards, but nice work overall HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 2 of 20 FB00001624 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan https://phabricator fb.com/D144832 -I -I -I wbailey updated this revision. Via Legacy Aug 13 2010, 9:52 AM Ross, thanks for the great review. See updates: HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 3 of 20 FB00001625 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan wbailey updated this revision. https://phabricator fb.com/D144832 Via Legacy Aug 13 2010, 9:57 AM forgot to yank this unused method wbailey updated this revision. Via Legacy Aug 13 2010, 10:07 AM I can simplify this since the composerld is known. No need to do dom manipulation. rdbayer added a comment. Via Legacy Aug 13 2010, 1:53 PM great work cleaning this up. a few more questions, but getting close :) HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 4 of 20 FB00001626 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan wbailey added a comment. https://phabricator fb.com/D144832 Via Legacy Aug 13 2010, 10:24 PM I'll follow up with uie to verify this, but let me know if I'm missing something you are aware of. rdbayer added a comment. Via Legacy Aug 13 2010, 11:44 PM good points, i hadn't considered those. maybe run it by uie to see if they can think of a good way, if not what you had will do :) wbailey added a comment. Tom Occhino pointed me to work here as well. Via Legacy Aug 14 2010, 12:14 AM I think this will probably FYI he also said... "technically its a bug that you can't pass the class name.. we have to tell Marcel to fix.. also, no underscores, hyphens, or capital letters in attribute names" wbailey updated this revision. Via Legacy Aug 15 2010, 10:55 AM Thanks for the review. I learned a few things about Preparables in the process. HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 5 of 20 FB00001627 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan rdbayer accepted this revision. https://phabricator fb.com/D144832 Via Legacy Aug 15 2010, 3:05 PM awesome dude, a few little nitpicks, but otherwise good to get this in :) wbailey updated this revision. Via Legacy Aug 16 2010, 9:04 AM updates...thanks! wbailey updated this revision. Via Legacy Aug 16 2010, 9:27 AM updating to use merged in onload register for referencing the composer controller wbailey updated this revision. Via Legacy Aug 16 2010, 9:35 AM switching this handler back to use the js constructor style referencing and accidentally included a merge artifact HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 6 of 20 FB00001628 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan https://phabricator fb.com/D144832 Via Legacy Aug 16 2010, 9:40 AM wbailey closed this revision. 7 Revision Update History Diff ID Base Base Description Lint Unit Aug 12 2010, 12:05 AM * * Created Base Diff 1 374980 fd87c2f Diff 2 374981 6e2a416 accidentally left this in Aug 12 2010, 12:08 AM * * Diff 3 375135 b4da471 the _setVisibility method is unnecessary Aug 12 2010, 10:29 AM * * Aug 12 2010, 11:03 AM r r r r r * Diff 4 375176 b849eaa - reverting a couple of changes I accidentally included - making the scraper handle retyping the same link properly Diff 5 375497 83d3b5f merged with diff from ross Aug 12 2010, 2:32 PM * * Diff 6 375526 Oce95af these lines shouldn't have been modified Aug 12 2010, 2:47 PM * * Diff 7 375532 aca5d94 typo Aug 12 2010, 2:49 PM * * Diff 8 375537 05dac59 sorry...left this in Aug 12 2010, 2:51 PM * Aug 13 2010, 9:44 AM Diff 9 376265 2fca9ee Ross, thanks for the great review. See updates: r * r r r r r r r r * * r r replaced hard-coded pa... Diff 10 376274 65079fd forgot to yank this unused method Aug 13 2010, 9:56 AM * * r r Diff 11 376284 d9c225e I can simplify this since the composerld is known. No need to do dom manipulation. Aug 13 2010, 10:07 AM * * r r Aug 15 2010, 10:33 AM * o r Diff 12 377426 165bc82 Thanks for the review. I learned a few things about Preparables in the process. * remo... Diff 13 377851 c2ac5be updates...thanks! Aug 16 2010, 9:03 AM * C Diff 14 377860 d8f982d updating to use merged in onload register for referencing the composer controller Aug 16 2010, 9:27 AM * C Oac42ca switching this handler back to use the is constructor style referencing and accidentally included a merge artifact Aug 16 2010, 9:34 AM * Diff 15 377863 Whitespace Changes: * Ignore Most Table of Contents Path Coverage (All) Coverage (Touched) I I HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 7 of 20 FB00001629 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan https://phabricator fb.com/D144832 I I I I I I I I I I I I I I I : Show All Context i Diff 377863 View Options This file contains generated code, which does not normally need to be reviewed. Show File Contents View Options Show First 20 Lines Show All 78 Lines Show 20 Lines M 72 79 79 80 80 81 82 I 81 82 83 83 84 84 85 85 86 I 86 87 88 87 89 88 90 89 91 90 92 91 93 92 94 93 95 94 96 Show All 12 Lines 106 107 109 108 110 109 111 110 112 111 113 112 114 113 115 114 116 115 117 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 8 of 20 FB00001630 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan https://phabricator fb.com/D144832 46 47 48 I 49 50 51 52 View Options 1 /** 1 /** 2 * @provides messaging-composer-js 2 * @provides messaging-composer-js 3 * @requires arbiter async css dom 3 * @requires arbiter async css dom url-scraper 4 */ 4 */ 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 30 31 32 33 34 29 35 30 36 31 37 32 38 33 39 34 40 35 41 36 42 37 43 38 44 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 12 of 20 FB00001631 5/30/2015 6:30 PM https://phabricator fb.com/D144832 0 D144832 Integrate Share-Scraper functionality into Titan 45 39 . 46 40 47 41 48 42 49 43 50 44 51 45 52 46 53 I I 54 47 55 56 48 49 II 57 58 50 51 52 59 /** * Gets called when Compose dialog is closed (but 60 54 * Gets called when Compose dialog is closed (but not cancelled) not cancelled) 53 /** * or a reply is sent. 61 * or a reply is sent. */ 62 */ 63 55 96 Show All 33 Lines 89 97 90 98 91 99 92 100 93 101 M 94 95 N 102 1 103 104 96 105 106 97 107 98 108 99 109 100 110 111 101 // don't close the dialog or 102 103 II 104 // don't close the dialog or 112 follow the href follow the href 113 II 114 115 /** 116 * serialize the fb attachments from the stage 117 */ 118 119 120 . 121 122 /** 123 * begin detecting urls 124 */ 125 126 127 128 129 130 131 132 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 13 of 20 FB00001632 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan https://phabricator fb.com/D144832 133 134 135 * fired when a url is detected 136 */ 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 /** 152 * fired when the share scraper ajax call completes 153 */ 154 155 156 157 158 159 /** 160 * cleanup share scraper stage 161 */ 162 163 164 165 166 167 168 105 106 // Hack for now, the tokenizer/typeahead doesn't 169 really support locking 107 // no good way to lock the token pool right now 170 108 // TODO(wiley) 6/15/2010 When we get actual 171 locking functionality for 109 // typeahead/tokenizer, use that instead // no good way to lock the token pool right now // TODO(wiley) 6/15/2010 When we get actual locking functionality for 172 110 174 112 175 113 // typeahead/tokenizer, use that instead 173 111 176 114 177 I 115 178 116 179 117 180 118 181 119 182 120 183 121 122 I I 184 185 123 I 187 125 I 186 124 188 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 14 of 20 // Hack for now, the tokenizer/typeahead doesn't really support locking FB00001633 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan https://phabricator fb.com/D144832 189 126 190 127 191 128 192 129 193 130 194 I 131 195 132 196 133 197 N Show 20 Lines Show All 57 Lines Show Last 20 Lines . _ . Show First 20 Lines Show All 829 Lines Show 20 Lines . 830 831 View Options .. 824 830 831 832 832 833 833 834 834 835 835 I // else The server knew this shouldn't be 836 836 embedded I // else The server knew this shouldn't be embedded 837 837 838 838 839 839 840 840 // Emote 841 841 // Emote 842 842 843 843 // Add the whole html portion of the message 844 844 to the messages list // Add the whole html portion of the message to the messages list 845 845 846 846 Show 20 Lines Show All 376 Lines Show Last 20 Lines View Options Show First 20 Lines Show All 328 Lines Show 20 Lines 325 329 329 330 330 331 331 332 332 333 333 334 334 335 335 336 336 337 337 338 338 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 15 of 20 339 FB00001634 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan https://phabricator fb.com/D144832 339 340 340 341 341 342 342 343 343 344 344 345 345 346 Show 20 Lines Show All 46 Lines Show 20 Lines 390 392 393 393 394 394 395 395 396 396 397 397 398 398 399 399 400 401 402 403 404 400 401 402 405 // Separate the new message case from the send 406 message reply case based 403 // on 0 or 1 thread ids. // Separate the new message case from the send message reply case based 407 404 405 // on 0 or 1 thread ids. 408 409 410 411 // create fb attachment // TODO: well need to handle multiple types of app_ids here 412 // this is just the generic link sharing case. Photos and 413 // videos should be passed in a similar way but the sharings 414 // are created differently see the Gigaboxx Composer endpoint for 415 // details. wbailey 416 417 418 419 420 421 422 423 424 425 426 406 427 407 408 428 // New thread as there is nothing to reply to 409 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 16 of 20 429 // New thread as there is nothing to reply to 430 FB00001635 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan https://phabricator fb.com/D144832 410 431 411 432 412 433 434 413 435 414 436 415 437 416 438 417 439 418 440 419 441 420 442 443 421 444 422 445 423 446 424 447 425 448 426 449 427 450 428 451 Show All 10 Lines // TODO: 439 Is there a way Sentry supports e-mail 459 // TODO: Is there a way Sentry supports e-mail 462 addresses too? addresses too? 440 463 441 464 442 465 443 466 444 467 445 468 446 I 469 I 470 // if there is an fb attachment fetch it in 471 parallel as there 7/ are no dependencies on this data until the 472 render phase 473 474 475 476 477 478 479 447 I 480 448 482 450 483 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY of 20 17 I 481 449 I FB00001636 5/30/2015 6:30 PM https://phabricator fb.com/D144832 0 D144832 Integrate Share-Scraper functionality into Titan 451 484 452 485 486 487 488 I 453 I 489 490 454 // Get the titan TID of the sent thread. 455 This // Get the titan TID of the sent thread. 491 This should be the root-tid should be the root-tid 492 456 493 457 I 458 I 494 495 459 // get the fb attachment data from the ShareData 496 preparable 497 498 499 500 501 502 503 504 505 506 460 // no worthwhile markup to return, but don't 461 getXHPObject() // to fail like default ActionTitanController 462 behavior does 509 463 I 464 510 511 465 I 512 I 513 467 Show 20 Lines Show All 170 Lines Show 20 Lines 589 638 684 639 685 640 686 641 687 642 688 643 689 644 690 645 691 646 692 647 693 648 694 695 649 650 // need to wrap it in a correctly formatted <li> 696 // need to wrap it in a correctly formatted <li> before returning before returning 651 697 652 698 653 699 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 18 of 20 // to fail like default ActionTitanController 508 behavior does 466 // no worthwhile markup to return, but don't want 507 want getXHPObject() FB00001637 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan 654 https://phabricator fb.com/D144832 700 Show 20 Lines Show All 99 Lines Show Last 20 Lines , . . View Options , Show All 12 Lines 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 Leap Into Action These changes have lint problems. HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 19 of 20 FB00001638 5/30/2015 6:30 PM 0 D144832 Integrate Share-Scraper functionality into Titan https://phabricator fb.com/D144832 Action Comment Comment HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 20 of 20 Clowncoptarize PREVIEW FB00001639 5/30/2015 6:30 PM EXHIBIT E Ai! Users Results (I Detail) Press to snow keyboard shortcuts 5493: LId Tracking Ask for Merge for Adjustments rE Run Perflab E_xpertrnent The purpose of this change is to be able to accurately tkarnenick, platform-diffs&ists Complete Test Run 7685110/38/3/4 (pessiskipitailifatablimeout) with 0 Failure not in trunk HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY Subscribe Award Token Flag For Later EST Strihgs Perflab FB000001599 Sort SharetinTrackingTests Skip Show Fuli Unit Results g7 Passed, 4 Details) Tracking Adjustments RecornmendalionsBarClueryTestCsse rE64581: Mali merging 645493 sh o t Url Skip Unit Tesi:s (check-Module) Ask for Merge for Download Raw Diff not new to 'his di ft Lines 29 Arcanist Project facebook-www Repository rE (Engineering) SUMMARY Tasks Edit Linked Facebook ShareFeedbactiTardetTestCase Branch tikecounts Subscribers Edit FRevision Create Diff Edit Dependencies Show Full U REP aisi Warring daWN IV-ij Lint Warnings tbithareicreetekreatm_jmpl,php Excuse the rothbart LL-ViWt/ Ur! Commits rE645493: Uri Tracking Adjustments rE 16: bha3 merging 6454931 ahirnet Urt Tracking Adjustments Perfiab Unit Lint Reviewers Author al-14nel Committed Uri Tracking Adjustments D597938 titips-.Itoriebrinstr lbosin/0591938 3e4E-FiLl (On Diff #1505646) 1505646 1505798 Diff 1 01li' 2 Base ID This is epic, Commit rEe45493 Ease HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 645492 645379 Base Description Closed by commit rE645493 (authored by &ahintel }. anirriel closed this revision. 33 Revision Update History Diff Oct 11 2012. 7:38 AM Oct 11 2012, 12:4S AM Crested TtICK4N -AUJUSEHIEJfk flibirnessagingicontrollerstactionlsendiSerdMessageContro!lerFactory.php Sent a bunch of messages and did a lot of wall posts ttips.itphabricakar Paocciil0597938 = TEST PLAN data determine what % of the like counts are attributable to private messages, lithe % is low enough, we will cut this tracking due to privacy concerns. This diff does two things: 1i Separate wall posts and private messages in the accounting (post_count, share_count), 2/ Add hive logging for message sends to use for double-checking the LL-Vi Wt/ Ur! * Lint "k Unit '_. 217 FB000001600 :..ii.: , . . . , . L.7 Lr.:V.WO Ur I, dChthr . MIMI 1.11111111111 30 29 27 IIIIIIIIIIIIIIIIIIIIIIIII 28 M 26 25 16 lonore most : . 1 FB000001601 4F Oct 11 20'12, 12 42 AM Date Show OW MIIIIIIIIIIIIIIIIII 111.111.11 Wh[tespace Changes: I;Lijse EPV.S Ud Tracking Adjustments (Show More, ..) Summary HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY . . ahimel c954acifc382 IIIIIIIIIIIIIIIIIIIIIII. MMM titlimitpheiTicatcr lb.axn10597938 29 28 27 26 25 9c58353615f7 affilcaaa815c Author Parents IIIIIIIIIII WM IIMIIIII Tree Commit Local Commits . 3Y4Es.ex3 i-D 31 32 33 34 35 36 37 38 39 40 LE LIMMAXiiirl 11111111111111111111111111111111111111111111111111111111 // Separate the new message case from the send message ccni/ENWM3 f/ New thread as there is nothing to reply to 11111111 111111111.111.1111111111 111111111111111111111 // on 0 or I thread ids. reply case based htlin:Yptobrit-Atex HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY al 1111 1111 MINI 111111111111111111111111111111111111111111111111111111111 I r tICKff Ng AtlitE50ii-EAVLS 31 12 33 34 35 36 37 1111111111 11111111111111111111111111 39 - . If New thread as there is nothing to reply to MIME 111111 1111111111111111111111 - 1111111111111111111111 // on 0 or 1 thread ids. reply case based // Separate the new message case from the send message 1 11111111111 11111111111111111111111111111111111111111 1111111111111111 MM. 38 4e 41 42 43 44 45 46 47 48 49 50 51 53 52 39 .. FB000001602 22e 222 223 222 223 - calor la otxril0501938 120 I 123 122 121 125 119 118 11R 119 117 117 111101111111111111111111.11111111111111.1 115 116 114 113 lea 233 232 231 230 116 // add it if we have it information II -otrfee URL objects were created without sharescraper Show First 20 Lines Show Ali 112 Lines V Show 20 Lines A Show 20 Unes Show AO 693 Lines Show Last 20 Lines EMI= // get rid of them 115 114 113 231 230 229 22R 229 /1 TOODOgroSs): ogaction_createfirst and 227 ogactidn_deletelast seem unused, 228 227 225 226 226 224 225 224 221 221 =MEMO // add it if we have it - per MI11111111 - FB000001603 1111111111111111111111111111111111 P some URL objects were created without 111111.1.111. ogaction_deletelast seem unused, if get rid of them // TODD(jgrasS); ogaction createfirst and // Action mutation logging 219 11M1.11. 218 220 219 218 if Action mutation logging tICKKN -AUJUSIMENILS 217 WU Ur! 216 L.' 217 .: 216 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 30.41:3-110 Deffs.13 121 122 123 124 125 :126 127 128 129 130 131 132 1 111111111 111111111 11111111111111 1111111111111111 J! Add the user as a coptributor if it was posted 11111111111111111111111111111111111111111 UW0 Ur! TdCK 124 12 126 127 128 129 13a 131 132 133 134 135 355 354 353 352 1111111111.1111111111111111/ 3.56 358 357 356 355 354 353 352 319 357 354 363 362 361 360 359 - 358 111111111=11111111111 111111N11111111111.111111111MM,_ I 359 36 361 j-IV5Irptiahricalorflcm-0)507938 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 11111111111111111 111111111111 11111111 MI= 111.11. 111111111-- /;LgLESURIAK5 1 j; Add the user as a covtributar if it was posted 11111111111111111111111111111.11 INN 11111111111111=1111111 V FB000001604 . . 3.67 366 365 366 366 371 36a A Show 20 Lines Show AI 108 Lines Show Last 20 Lines 1111111.111111111111111 370 367 111111111111.11111 365 .., prajagopaian added a comment. Comment Action !Comment These changes have lint problems. HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY . . Ciowne.optefize Mil 11111=1. 11111111 11 L'Mlf ti4X1 UVI I f dattiN IV.JjtM-Lr El EPV.S 36S 364 363 362 Leap into Action 3-D ttips:Itptebriczkar lb.00miD597938 3e4-1,23 , FB000001605 PREVIEW 1 EXHIBIT F Ali Users Run Per lab Experiment * Perfiab Press 7 to show keyboard sboricuts bgolub, platforrn-diffsQRsts HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY titimitphabricator /b.00crilD602346 These were contributing 0,8-4% of the count depending on domain, Given the low contribution and high degree of scrutiny from privacy advocates, let's just remove it, SUMMARY Subscribers harshdeep, Subscribe Awed Token Flag For Later FBT Strings Perflab Snoadort ii5 FB000001606 Like Button Count 649796 j ahimei !Remove Private Messages from Aicanist Project facebooke Repository rE (Engineering) Complete Test Run 7646/3g/87/14TO (passiskiptfailifatalitimeout) with 0 failure not in trunk rE65043S: bile merging Ask for Merge for Button Count rE649796: Remove Private Messages from Like Ask for Merge for Downkad Raw Diff Edit Dependencies Tasks Edit Linked Facebook Edit FRevision Create Diff Lines 12 Branch lice counts Commits rE649796: Remove Private Messages from Like Button Count rE650435: bhati merging 649796 animel Remove Private Messages from Like Button Count to Unit Test Coverage * tint OK Unit Lint rothbart Author ahimel Reviewers the Committed Remove Private Messages from Like Button Count D602346 649378 1521770 MIT 3 Local Commits 1519845 MIT 2 Lint * Created Oct16 2012, 8:15PM Commit rE649796 * * * Unit Y 1 * J 0 I 215 FB000001607 5---11"` °i4T- 0 (5) Legacy Oct 16 2012. 8:21 PM ignore Most * Oct 16 2012, 2:28 PM updating common's Whitespace Changes-. * Oct 162612, 2:26 PM Base Description HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 549795 649378 1519837 Base OW 1 Base ID Revision Update History ttlin.ltphobricator it:loom/0602346 - Closed by commit rE649796 (authored by @abirmai ). ahirnel closed this revision. s ,.4a Legacy Oct 16 2012. 2:28 PM ahimei updated this revision, updating comments Via Legacy - Oct 16 2012,2:27 PM the accepted this revision, lIttps:ilapi.animei.deva317.facebook oomirestsenrer.php7method-4inks.getS tats&uris=httpffiNvvw huffington post.com.12012i1 Oil 3ttirnothy-kurekstraight-chtistian-pretends-gay n_1963657,ntrnt Locked at results for given uri - total count and share count both go down by the number of private messages sent. TEST PLAN 8ce4foe 2cd la 973d7480a626 Path ahi ei (18383fl941df 6 11 the metrics data type populates our internal params 9 likes on page IIIIIIIIIIIIIIIIIII if this includes the tradiational likes-on-feedback and 111111111111111111111111 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY htimitphabricator PacomfD602346 15 14 13 12 // external/official names for the metrics, so we rename them here IIIIIIMIIIIIIIM _.1 likes on page F B000001608 /I this includes the tradiational likes-on-feedback and 11.1111111111.11 15 V y/ 'post_count', '/ike_count', and 'corarment_count* These are nut the 'share_count', /1 the metrics data type populates our internal params 11111111111.1111111.11111M11111.111111 1.1111111M1 13 14. I Coverage crouched) Oct 16 2012, 224 PM Date 11111 1/ Copyright 2064-present Facebook. All Rights Reserved. 12 11 If external/official names for the metrics, so we rename. 11 them here // 'post_count', "Iike_count', and 'comment_count' These are not the 10 'share count', le- 9 MIMI 6 -6 7 5 5 1111111111111111111 4 7 3 3 2 1 I Coverage (A11) Remove Private Messages from Like Button Count (Show More_ .) Summary // Copyright 2064-present Facebook. All Rights Reserved, = Author Parents 4 2 1 Diff 1521770 M .... Table of Contents Tree Commit 1 exists 28 27 1 AGE comment y ___ HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY htimitphabricator PacociilD602346 Comment Leap into Action Show AEI 34 Lines 34 33 1 33 34 32 32 31 aa 10 31 29 // TO00(jtung): make this work for non-integer fields If this returns null if it is 0, to indicate no fhid - -26 29 2.5 27 26 25 25 111111.11.1111111.1111=11 24 23 22 21 2a 19 18 17 24 11111111111111111111111111111111 amessage_count' 1/ the internal share count is externally named If share_count profile in the 1/ we actually want to count messages and past to 16 23 22 21 20 19 la 17 16 I Mil 1 e, to indicate no fbid 46 FB000001609 /1 7C00(jtung): make this work for non-integer fields 1/ this returns null if it is IIIIIMEMIIIIIII exists 1 111111.111111111111111111111111111 I=MIMMI 'message_cnunt' 1/ the internal share count is externally named 111.1.1MMI1 1111111111111111.11111.111. // nossages, private /, share_coont. adding 'share count' wound include I/ we actually want to count only posts to profile in the IIIIIIIIIIIIOIIIIMIIIII jeanabisnar added a comment, http6:11phabricatorlb.coniA3602346 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY C 1 0 Vj n coptr ize. PREviEw 515 FB000001610 EXHIBIT G rE698931 z -- Press ? to 'ow keyboard shortcuts ELT 24:KPAYt Award Token Flag For Later Download Raw Diff Edit Commit HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY wit.-1,pearitaty_fb_canfrEaTteal Changes (8) Task ID: 1969650 Differential Revision: Ntps:liphabricator.fb.wm/D6-62208 CC: platform-diffs@lists, search -dills @lists, hubs--diffs@lists, vibes-diffs@lists. arudoiph Reviewed By: ahirriel Reviewers: ahimel, rhe, jeffreyspehar: stayaristefanov FB000001611 Test Plan: Rendered like button for a URL. verified count didn't go up when URL is shared via a private message but it does go up when URL is shared publicly. Summary: Don't include share_count in like button counts, following a similar logic to https://ohabricator.fOrorn/D602346. Remove share count from like button counts DESCRIPPON Tags Nc-,ne. Branches None Parents rE596930: Add adhoe job to durnp MARC data arid create pages for them Reviewer ahimel ' Differential Revision Committed rothbart Dec 1 2012, 11:49AM elitity-exterra-nocle Typeahead Pages share Remove share_count from like button counts Engineering Pr oje ct/P a c k age Au 4eZIY.eL" Shove AM 58 Lines Show Al 28 Lines 11. Show 20 Lines 6a 5g 7 67 67 1111.111111111MIIIIIII111 I/ for facebook uris, external share object counts are rot HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY http5.1tphohricator Facornica9Nel 147 147 146 145 146 144 145 8 71 144 1 70 71 7a 69 1 69 =MIMINIIMMIMMIIMMIM 66 66 68 65 65 6R 54 64 IIIIIIIIIIIIIIII 63 63 62 62 IIIIIIIIIIIII 61 worth indexing J/ If no share information exists for this page, it is not Show First 20 Lines 1 61 60 5g 1123 1226 1125 -4-e.AKel2TO 1 Ir 116 FB000001612 // for facebook uris, external share object counts are not .11111111.1111111 1 MMIIMMINII.11.1.1.11110. IIIIIIIIIIIII MEM. no share information exists for this page, it is not worth indexing 1/ If 154 155 156 157 154 155 156 157 163 164 165 166 167 168 160 161 162 163 164 165 63 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY ro comfrE4399931 separately 1/ save our fan connections so we can get this number 61 63 62 61 69 62 59 88 59 1111111 162 35 161 158 160 159 159 A Show 20 Lines Show Ali 282 Lines Show Last 20 Lines 153 158 152 152 153 158 151 1/ tracking 151 15e 149 149 share 148 // accurate (shared with different codepath), thus we always go // with the sampleconnections likes without the normal iUMKOUt 148 tittpsitptimbricainc 410 // accurate (shared with different codepath), thus we separately FB000001613 if save our fan connections so we can get this number 111111111 111111 111111111111 1/ tracking share 1/ with the sampleconnections likes without the Forma_ always go // add to numConnections our share counts to make the should // if URL like counts are whacked, then correct them.. 71 72 73 /1 ignore any expense as something that isn't worth /0, this shouldn't happen very often at all, so we 72 71 70 69 69 78 68 68 66 65 64 LO:10:3 I 6.? // equivalent numbers r 61 66 65 64 I I 78 79 84 85 128 129 135 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 130 127 134 136 126 133 125 124 132 131 I 77 83 I 76 82 130 75 93 74 81 79 80 73 78 77 111111111.11111111111.1111111.11 // worrying about 75 76 74 https://phabricatoribcomirE6989211 `WCW4-1.11,1 I I I I 111111111111.111.1111=1 // equivalent 5/10 FB000001614 // add to numConnections our share counts to make the numbers 281 282 281 282 /** 28G 280 295 295 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 296 294 11.1111111.111111111111111111111 293 292 291 29G 299 298 287 286 285 .4 289 288 294 ./ Stracking_info associative array indexed eturn integer representing the number of likes we display externally 4 * by tracking param * gparan array * * The tracking array can be generated by the getUr1Counts function array. * Gets the number of 'likes' given a external tracking 111.11.11111111111111111.1111111111M I 293 292 291 290 289 228 28Y oat 285 /39 289 287 286 28b =MI 285 285 287 284 284 283 279 279 283 278 1=IMIM FLUM.kYt a/a tAW'Phabrif.at.nr lb curnirEMEM1 ge.AY4712#0 _*,,i 3;f1 F B000001615 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII display externally } 1trackingLinfo associative array indexed by * @return integer representing the number of likes we tracking param * @param array function * The tracking array can be generated by the getUr1Counts array. * Gets the number of 'likes' given a external tracking /** 11111111.1111. i I i 1 i 1 i HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY cern IrE091.43 1 jeanabisnar commented on this commit. Comments Action r comment Creative Accounting _. A Show 20 Lines Show AO 205 Lines Show Last 20 Lines 307 303 ... 30.6 305 302 * associative array. * Gets the tracking_info string given the tracking info /** 304 301 300 302 303 301 298 2999 300 299 298 297 297 1 itemu.31 296 haps lipfiabr i catcc - _ 4..0.w2u t-D. ... * C,aok. ti:',E.,, Gooks I .-.- 1 9110 FB000001616 PREVIEW : , -- --- ------ .------------------- associative array. * sets the tracking_info string given the tracking info /** 1 D662208 Ail Users . . Run Perflab Experiment Show F . Unit Remits . Passed, I Detail Press 7 to show keyboard shortcuts. LiCiOGZI.X3 KL-11K.POL` MO WEIR IT(}1,3F 411L FARM C4.3WICi HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY hltwl,ptiahricator IticurriAMMEI TEST PLAN Don't include share count in like button counts, following a similar logic to httosliphabricator fb.comiD602346. SUMMARY Complete Test Run 844415134l313 (passiskipifailifataitmeout) with 0 failure not in trunk Subscribers arudolph, vibes-diffs@lists, hubs-diffs2lists and 2 others Repository rE (Engineering) Tasks #1969650: sharing URL links in "private message", can increaset more likes? Lines 56 Arcenist Project facebook-www Branch privateMessages Commits rE699208: eugeneb meroing 698931 rothbart Remove share count from like button counts rE698931: Remove share count from like button counts Perflab . ShareUrtTraddngTests Unit Tests OK Unit Skip Lint Postponed Lint stoyanstefanov jeffreyspehar rhe Author rothbart Reviewers ahimel Committed Remove share count from like button counts 410,37.41110 . . . . Subscribe Award Token Flag For Later FBT Strings Pettab Snoaort button counts FB000001617 Ask for Merge for rE698931: Remove share count from like like button counts rE699208: eugeneb merging 69801 F rothbart Remove share count from Ask for Merge for Download Raw Did Edit Dependencies Tasks Edit Linked Facebook Edit Revision . Create Diff 697814 Base 1724298 Diff 3 occiilD 6072143 Tree Parents Commit rE698931 A bit more refeetoring. Base Author HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY titipOphabricatx Commit Local Commits 1724267 Dili' 2 698910 697814 1720038 10 Diff 1 Base Diff Description animet accepted this revision. Revision Update History publicly. Summary * Unit Whttespace Changes. ... Date * Ignore Most * * Dec 19 2012, 11A5 AM Dec 19 2012, 11:49 AM * * Lint Dec /8 2012, 12:07 PM Created .. C.) i . FB000001618 Ito* at:. 0 0 'vile Legacy Dec 19 2012. 7:34AM Rendered like button for a URL, verified count didn't go up when URL is shared via a private message but it does go up. when URI. is shared 71a HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY 11 70 71 69 1 69 68 68 11.1.1111111111111.111111.1111.11111.11.11 67 67 06 65 65 1111111111.1111110 64 66 63 64 61 63 111.1.11.11111 59 60 62 1111111.1.111 worth indexing 1/ If no share information exists for this page, it is not t2 61 60 59 htli-irs:ItphabficabiftleanilD6072}43 - 1127 1127 57 1126 1126 1124 1123 1125 11.1.1111111111111.11. ME 1125 1124 1123 1122 1122 . 11/1 . 1120 . 1121 . 1120 , 1119 . 1119 LICKIG,IX 11.1.1111.1 I 111111111111 1 . . . 4f1-1 FB000001619 1/ if no share information exists for this page, it is not worth hexing I 1 MOFIMUFAJWY4VMAKS 157 EMINIMMINIIIMMEMB 155 157 168 165 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY oagn/D6W)913 167 164 ttli-irOphabficatr 165 163 111 164 165 161 162 1t2 161 160 161 159 158 160 15g 158 1.55 155 156 154 153 111111111111 153 154 152 152 258 151 1/ tracking 149 151 150 // with the sampleconnections likes without the norm] share always go 148 149 147 // accurate (shared with different codepath), thus we 148 146 146 1/ for facebook uris, external share object counts are not 145 145 14.7 144 144 8 IMIMMIIMEMIIMMEM IIIIIIIIIIII i1 tracking share FB000001620 11 with the sampleconnections likes without the normal always go fi accurate (shared with different codepath), thus we 1l for facebook urls, external share object counts are not 1111.111111111.1111111.1111111.11111111.111 should 71 72 73 7/ ignore any expense as something that isn't worth // this shouldn't happen very often at all, so we 72 71 70 7/ if URL like counts are whacked, then correct them.. 69 69 76 68 68 66 65 67 /1 equivalent // worrying about 25 71 74 75 76 77 78 79 78 79 80 81 82 83 84 85 77 76 74 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY httpsiipbabricator.ib_GornID662208 _ 1/ add to numfonnections our share counts to make the numbers 64 67 66 65 64 separately 62 62 63 61 61 /1 save our fan connections so we can get this number 60 66 63 59 59 35 /1 equivalent numbers 6 FB000001621 /7 add to numConnections our share counts to make the separately // save our fan connections so we can get this number I IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 295 Comment F.-- 303 Action _comment 307 302 associative array. 305 306 301 304 * Gets the tracking_info string given the tracking info 303 /** 300 302 299 301 298 305 239 298 297 297 296 294 295 29 293 292 291 290 HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY $tracking_info associative array indexed by 111.11111=1.11.11 associative array. 1W-1i FB000001622 * Gets the tracking_info string given the tracking info /** *1 display externally * @return integer representing the number of likes we tracking param 4 @param array t1xuit3rcnrrnxatuu M 024.115 2E9 294 ./ $tracking_info associative array indexed :.,u--acce.x3Kent return integer representing the number of likes we display externally * htli-irOphabficatr ittoogn/D6W)913 - aram array by tracking param * 293 292 291 290 239

Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.


Why Is My Information Online?