From 4fdcf4be9d1e85a42ff92e7583208c0e87245124 Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Mon, 8 Feb 2021 04:02:47 -0800 Subject: [PATCH] safari: successfully exchanges 1 req/resp over ws, then fails --- .../SafariWebExtensionHandler.swift | 14 +++++++------- .../UserInterfaceState.xcuserstate | Bin 58463 -> 58335 bytes .../TabFS/TabFSService/TabFSService.swift | 7 +++++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/extension/safari/TabFS/TabFS Extension/SafariWebExtensionHandler.swift b/extension/safari/TabFS/TabFS Extension/SafariWebExtensionHandler.swift index a1ae4ff..e5a7b51 100644 --- a/extension/safari/TabFS/TabFS Extension/SafariWebExtensionHandler.swift +++ b/extension/safari/TabFS/TabFS Extension/SafariWebExtensionHandler.swift @@ -38,13 +38,13 @@ class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling { // need this one XPC call to actually initialize the service service?.upperCaseString("hello XPC") { response in os_log(.default, "Response from XPC service: %{public}@", response) - } - - // FIXME: report port back? - let response = NSExtensionItem() - response.userInfo = [ "message": [ "aResponse to": "moop" ] ] - context.completeRequest(returningItems: [response]) { (what) in - print(what) + + // FIXME: report port back? + let response = NSExtensionItem() + response.userInfo = [ "message": [ "aResponse to": "moop" ] ] + context.completeRequest(returningItems: [response]) { (what) in + print(what) + } } return diff --git a/extension/safari/TabFS/TabFS.xcodeproj/project.xcworkspace/xcuserdata/osnr.xcuserdatad/UserInterfaceState.xcuserstate b/extension/safari/TabFS/TabFS.xcodeproj/project.xcworkspace/xcuserdata/osnr.xcuserdatad/UserInterfaceState.xcuserstate index 93b8259604f621dcce19c544ab4782fcc692767c..83f9da63c95f3312127629bfcf7b3b940ce6f0da 100644 GIT binary patch delta 23271 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 z hYy{LL|^~UPW)%&UsS0AfBQGKRbcE0*j^_A)e)o*L0HFOPEqh6y~qf^tXrcaGw zjd6`zjb}~28lM`!nt?TeHG^w{YeH&<*JRZ+)U2yHUGt{4SFLaD=-P_f>e{;6#@goE z8MO;*J8GBIE~{Np+gZD%c3bVv+C8=VYY*1`QTwd+b?slZA8NnUA$542xK681x6V{n zXH{og=TPTb=TXf1wY)EOSY-n%zrQuA2>}JE=h6fFg8=f`1ZFt}CvEfUjsF81UX!LIk zX^d=4XiRQQZA@=0Xq?zs-dNdK)mYP5-`LnVwQ*tNmc|2(M;nhfo@_kVc(L(H= z8lN=2YSL~pXzJT!+GO73)a2JRuqm)9sA*`^u%^tW{3cmbQ&VeGd(-r$Sxs}B7BsDv zHLYvf*tDr>OVhTdolU!&jx}9qdfZGj+cXbq4sVWc9@CuOoY_3SIj6a_c}jC@^StKy z%?p|rHLq>n(7dU6OY^qo9nD9Ze{DX|e5wU+QE$;~(P`<`(x=6srGHCsOH@m2OMFXW zOG-;>%Y>GKmZFx4Er(jpw*1+0ujOIOla}W#vR5r{Ti&;PY-L*cR*hDzR^8U#t@^D- zttPEzt^Hd=S`%B#TI*Wpwytg6(R#4;Q0tM_)2(M(&$Yg8{nSRbQEhY^+t#bCPn%(z zahqwId7EcjbX#g$T3dQsMq5!^WgBRl(pKBn(57gc(KfqnUfaU9j<$7e8`^$q`*|up zRb4i<$5gGUx>LtbEuC6Eb<$M%)O%B3PklS}-PFI^hqOnxC$uNGr?!u6&uPzVFK91r zpV&UTeS7n ztyYU_T{Sg~lu9KdbQnhjaZl74LdG4G((;pt5>y(y&+pmY*nM`NefD{FA0#Ak4AOL; zjnGt@3l$XAGOiH!O<$P4`F{S2?^jZ^6eA6gW=Lt0BjreYqylN5R3!Z>38_Z9BGpQD z(mm;+^g?P*XgCf|fK%WsxB*%)A0CE9P{3kX39Dc=JPFUkmr4Vrvl6WgRT7lR$}}ZWNm7!P zdCEd1MM+cED;t%~%2p*ykrk+D%64VHQl*4y)fQ@unxHOIb(O0-)SYUMdPqI27OF++ zakWhSL#J{~xdQ-iv-qD(9?`aX*KrLPyt&P#fX*0A$ZKjr_&DU0HYqV4? zUCYq6Xqj4;W@x5{H7C1EcCYL&vm>*kbfy>RNA*&@Os~+Z^;03eMn9)t&@br^^vC*B z{ki_qc*A(hXlOJxni|cF&y8Wm0wdGNH)@O*s4a>{gU}EZi{j9DG!@N2Gtq36jOL;h zXcbzG)}nQ2J;Ep#6`=j-ASyxv6{8Y#5}ihu(REad>d*u92t7s5&8B8+vzr;}VMds} z%}6uK>}L)z2bzP;1aq=E)tqi7nn`A|InP{RE;g5#nP!ezW!|@1TQOFmm1>!mXYI6d ztv%L3E3iteW7h9hnN@C8T4$_t)-~&vb;r7IJ+YoyFL6EG9Jj>naR=NPcg5XscN~RB z;CMV1PYB@zJQ+{Ji8u)-j8&I#wFbJ{uUTy>s0FPvAjF>OlUp&!tmG?K>C*>ovgPFK<& zXo#j#ol@%2oiv9Aw1gg`ztQ6%T29Z=^YkLErFHZkeMq0sXRHZp&f2mF)|*ALDAtb+ zU<27;HjKrwQEV2Q!{)O2Y#~cw%h(FGimhfLmdZ9W%yzL7R>SJt2JT1h7w&L(qC3@{ z@D(^ zc;9;8c_A;&Tkmc3HhKBp-@F-rpSR;3c~2h6qj*0)fDhrZd<2i@WB52eiO=B+c?w^~ zSMW7Fm8bI!JcDoJfM;`;=kh$hmmlCoT<|0O7%%0O{7lII(a-S1zU@=r^LP5WexASA z7yc3ds9)-r`Q?74U+q5@?Zgm~B36ksu~}>tP#D4%`@{j^i(*kCj){}vv^XRF5*NiK zaYNh^b>gmgCZ3CzL8G8;&_3u8bPl=(-GUxL&!AV(C+HhQ2SbC{pkrJx>h)t^zy52R L*S_}u2ABT>)l?99 delta 23326 zcmaI81zc3w`}ohTncEkTQt58#4g(ah0TGaHBt$|&VCG0jqmJERqHE%+t844JVRy%> zyRPk8YyZ!kfmJ{I{r`NuX22WgKJO>a^PF?f;pS27=FixSWMuc2lnx|uHaZ_&fG$Co zqMhgpbPc)|{Q=#D?n4iuN71wBIrKbw0lkRcMt?`|pm)(H=qC)vXpF}MOdZq0^sv5| z0cMDqV%C@)W{){wj+hJPiw(ktVZ*Tz*ce3$8Z0}A{e=CB{f3>yPGRS;^VkjSF7^O> zf<47vU~jO0un*Wr9KlhX!8LGQygzP)o8jiTHEx4D;EuQ_?vD?_hv6Z3C_WM&g@@x& z_;`E*9*4){33w)+hZo_c_*7hm%kf&g0bhzQ!d= zcj3G7L-=9*2>ug(6hDcdLc8(P_<8&?{yTmje}eywzsBF;@A1!sHlai45_&{mq94(p z&?gKCL&B7>A#4dd!kKU(d zB_XRPrV|asEJ8udCgu~1iLFF8v5oki*iP&qb`n1jyNKPyMdA{1nYcn+C9V;e}Y?5r2Y>{l0bW65LzL#v5?2;Ui9FhDaIVw3RIVCwQ`BQRV@|Wa+km&UuqyVlp0Bmr6y8SshQMVY9Y0eI!R^DQWvSK)J^Ix^_K=n z1EoWx!=%Hd$Qsx(cSF3pf;O0%Td(uvZ1X^FH-S}m1HYoybq&C(8Or*wsMrF4~a zwRDYit+Y$JPP$S0y>z>DhjgEGzx06gqV$sVvh<4ds`Q%ly7Y$hru3HduJobwh4iKL zmGmtskm@p0gVZGZkXocRsYB|LdZa#SMw*irqyyG&awIv5 z3@2mASaJfHN~V$N@Z zx05@_-Q+>?SMoRV7^HJVDNGN?={i^`@ZQaMyEl}F`Mg;Y6JLCGmVHBwDf zGo_$rQ|qYp)OXYdY9qCY+DvVswo={H4r;HAI!qm*j#DS7lhi5d5_Oq+NNWL-`iJ^JV>Ct6v?kq$?oaE}F0?D{M!VAs>2Y)v zoj@njCG-@!lrE#o=?Z!(T}fBb)$}yFk#3@A&@<@;^g?-& zy`MfnAEXb_hv_5qFZ3z;0)3IbN#CMx(|^$q7&QiAPzGaghF~O&lpz_4;TSEZAJd;P zW6T+Q#(^2a1Tn$PP-Ykt!h|wm%y4D|Glm(@#4`y@29wETF$K(IW;)ZrG%`(0vy5qB zTA4PcoteSRMz=AGm=30sS;wqrzGF5p-!t2pW6W{p1ap!(#hhl&FlU)_%z5TAbBnpn z{K?#Bo-xmvznOQ;dsc(hWc#pMtTwB|>au!lU$!4>$Xc*=tUc?-y0ac^02{~#v!QGl z8_q_sk!&=Zz{*nCRCY33$QH51YzaGsm9v1I#@4X4Y#rOk&SYn?3U)TTm|emyWtXwb z*_G@nc0KzYyMf)q?q&C}``H8RLG}=PnEjRgjXlO5XHT;i*{kd|_ILIUdzXE{K4G77 z7>9ENC*hjp9ag zW4K6eJQvNSaH(7xm(FE#xm+Gs%9U~DTm?6klX26y7H$SNlbgfM=N53wxE0(=ZZo%q z+sbuw+qmz!?c6SIKX-upjXTC2=T2}Zxl`OZ?h<#MlRfAD=3a0wxmVn4?hW@3_m=y} zBRs)Nc#h|Jfmi1>cx}Ef-;X!tEqN>6j<@Fr^F#O`KA0cM5934lP(F+w&X4A!`0;!^ zpTKAEnS2&sz)$9<^9_6>-^4fbEqp8A#<%k`_}Tm-elfp-JbcB9_fnX|F z3pRp-;3{|seuBRcAVdk{g=is0h!rLXaYDS1AS4P&Lb8w|qzY+5x{x7c3X_FGp-3ne zDuuv$VY<*DGzv{Zv(O^U73K-^g-&6Guu@nhY!WsL-NGT^uy929NjNI}CY%sX3a5l~ z!WH3$a9emH{H-`f1tMz|EDey=-EB0Da9$qv#!glC##5a=oV~hNFcB(JvyHYXF%k zx0O34s=FxS%?!G&Oow2^CHXP=RmCKWky@wZXXNMP7vz3t(I&K6O+Z_a5sFh5I;J`D zlZonmQqnWC^TX38m!uaJTbE`RXZhHiQJbqa51on5QW#kpVV$T#VPI*)&p}3@ZSvD{ z1}Z#Vgyf}l_$$jLJ@6}&}GU4=fwm6rRcqDrLw_`VuRz9pjXf?bRD`L z{SMs##oUN)LN}vZ(5+}Ux(ykJj6=Uiw=x4pHBVmJC@qPlKSRAgj&S#i*$)RMgP{NfRlQj?3JK3AZ7(7g&1YcFg+ zdO#6p?SLFqG+Dd)9#;FI13e17wE$k>Vfg;l`KHYihPD(97r*^s4-h{I2}o3iLX9177zBKnmbR zDK>*c?x`JEgZ_d3iQY&5LLZ7+XXtbEZz#nJ z^dYIuvjL*Jtx(2t5oHk)D|%3sOV^=?$b=DU2UcJbOp1~62lB`ACtp0|HF_G_^P&6^wC77(JExO9 zCd0IqCVTqDWM|PX_?S&tKde8JEPpQlTdtOQ7y6=PQGV4awWV!vHK zPc!&fb0itF#QKdN72%kYT$DZm{wz$-h4z?|4iR3;pDPWA*qKqBHz9*=B%~|{?wKIM=_Wy`UZ2yJkWQTE9Q-Ulz)`J0tg|02etAMAow?G!Td0P zm0AFT%HMyjm%*Z5hG0Qhu>6Dk6F}7dRSf2eoPdh?C|@E!X&9TAoSpAjRGOVp+^e3E z%G004(~7Z{TDDlYs4svZ|5ey{QDFeVR2mzh^xB(NWdE-k#lC23yr`M(V-8KI?0>ug z>k_>I`wl{H#5SRj(?oOyfEddE0f;p~tiHwGigov5TL8r9Ywn#Q_Yc@EY&SrR0b&Xe zvoGXbVnoBnab=KCw$%5>zM}0_z)=;i`G0wjsdz0_ypcV;{j|=0MR`o51c;^Ls+;kD zI4>wUFGJ3&*fo*ULB(k+a=HP;^;^!H*sWepXMos!%?Sf<1@;H_Cw3no_5g7N$bc`L z7gU@MDo!&uOP7D0|D_7f>A!GqRd6m}jOnY`?$$^4#ei>BXf9FN`Ps$RHvjeAjUpZ{ zLEqsdPKkKdDm)JnFAyLB-{9da&h_H?0mSnwJX{mv;eBu|Tsr|EUI6h1h|d?kjVcIh z5u(>>|1~6Tth&tiKdiWgiq&8Kw_=Zb+80FJLWSrbKP5Z8G$=c5#H8f3|AQ1CfIC4_ z7f9-cyW<`J2?DThf*w0aL>&c?;Q$%=RR@N9;oiNhp#T~DHEV#42pfnG#0LRn2tbAc zB;;RK_@rRbXJPxnFd$ER*sx(L>kd;ovBc9{8|pyWf#DGKKW%4@2ikQw~B1?%ROlh zZ^RX9wq1A=-i){4t#}*Wj?chn;JIAuy|R6e?@-g}z_$Y=vjg7=kSxWP0hTiSM|_`}PA9$x zn+=d`fWTk(t8Dz5QP$OvQBm_dB1V-QlK}ZNGK@t=|DgjajkZOR)03rtn0LV1h zzt#Yxwu@j?PC^JOCn5R(q^{RV8oxM6tIA0TBj_Xq%tG}&PC}SLCn3xU3-JSx=>Ta^ zeM2X)R1fSiCSgxFLMI^{0MgV!3;;;8=p_9KSHc6@m~a!Fq~#kYQFIjQjUoJqK&1~5 z0ZJce`+xX=vN|DxiJ^(=+Mz+g!D-pWlL|w!i{N*8L~(LzPA4%;VeIeb7)FeSB_lDM z7(t9AV7CT?NC6Niz?_xD7-B49L_`2&EF zK0p=#WTE1k|14%Ak*j9gLBM!gtSApK)0j*YiT^JI$kGm?7$D0OTg>{)h%&VwI*D=u z`pI&DtoXNvC8`LZrn3SajgCRb%J<0k%J;1xrm0yIwE*c5L$y;rAbLc4MsXDEzs&|V zlqut+SFw#m>wj);gE!9r$V&0%Rq_Eb;n|s4#ipv;3->E;KSRt>6NtIQJh9wMOD;|x zt$`bKX9vb1l$VFGld(AbQJffPpjhf<-2G|bsQ(!mDPjh18rzBNKz1Uhkc-GoVbNpiD)i58LdR?(AnrbbUB;|J%rwa)%9QKLyUkEoMv!Z z(;f4H)0$z5m?1_o*rBaa*>VA~Fn(0T$dcmZl-%?nDB}uZ0kKGJQPiji@qfJ}HUnf!7gSIev5r_zd`D~` zHWHhN&7!Wh0$i>M@EU;60r)n6e-H2-0N<&gf}R`xNc^H^`yH`|*h}mq_7ew)gTx`? zFmZ(Vi8xC9tS}5VlmcWAK=yv87!<7KK%67a17sgSmjLM7*dl=a1h8WOyA5yx;7$Oa z0Pq}uPZCFm{tA;}`rQkIqfyyi;;owPCUq_19`OhIfw+&S6Ay@o#3O7I@q~CvJR_dN z8Lk(^OX3ygO}rssD%%f`gYp*uISjidfcylIp8*0pOe=sK0|@M|P66Z$tWp4S4j>l* zatYSk0J#E?YvNPh5$}l)#7E*2@mZoKK_rTjkUlXIR>A?~20)$x4 zY6DPPfO-Se2cW(H^#kZgfW`qd9-#REl>xLBpo`^>UnMe$rYcDvNK|)+wWYO!2o<#d zP2mz<)!9Rd>Z=u-MtUidLkqq-tFJnHBvHLiS(h4zjr@}SB_^t~M-{TLonPH#sXF{i zqWVr{leNRA311#)C!ST@91)<17*X|AV@|5Oj>E=$6$T@}KIN`Dby9ii&yiJMJU6L8TSk2?exT~?*+g|~D88X#M$rK1${9tDsb4E7NOjeDW%CeR(VbsMn( zMf@1uBzIN!x+WkF&bZ8(NiE@O;ooM?>BZ#&dkotpH!Is_4A`u&0JS8 zcq@{}mc&hvq{EPs#7W{M36exfk|bG@B1x6N3g9L{ZUN*rK;Xdo4nXb#W*z0D-~s5+JY|d<~E{0D&>|79j7s zBr8<%OV&u%O1hx@u-|yEk{=+j?*9ak&kz7r>jBsy0_+6HhhBi)5I`T79F!bV{5Y;} zzn>+l@cMpcFu9fHDAOyCm2D74dgu1QhWeK)Ej>q5>=vpoHo@5Or3R09epC8d;tAXNvb7C^ND zssm76fa(FXFF^YN6yoW3Ni}=zFV#hFs98wi34?#_kD7@SEKoRerEoH-B@|8ydlkbT z;iR^(j*!|(?WGP%kRt$;0Dsy?L%q7hc zHIfTZ_g;-m5*K>!^L&>;W~0%&lTbY3rwbg^^^q*(^g zp^!#h72s$HKtn|XhxOpB7jeD==&)X#O-k=GPtcO>l1_PJZrN*tm>!{Ti$ebn(CA*F@2PC?NcvPIG3VnM3B1d1O8bC6)se0CXBaYXDjc&^mzD z19Un-8@kBJy+W(ZPnN?juJK=~d(Ged+{XjyL)M8h!&{qrWp0Er8|cj-6)Jh*NCC>* z0_DZ#LwOY^i~Gls3&<6sSPRKTl)`06G((vjD09=xl(( z7@ONguKXXdV4TeRk5mhKR0-$*I>;XYI=@$}A4ReHA0mHJiFHIN)Pgk2-A!y*!03Q#ySfd%4tfI@(k zV&RCwLK;?+t^i&89eIM`4y9n~>!4sB`M$@%lq1ZA)Bws! z`~Y-2KzFFVVJ_5D*Xaoe%9DcWuY>Xe=nox~4?uT`V`_aWfEpzF#cXOI98d#vH}nh1 zaiw3Na8TX1|1c^{={HoU(r@RvBY^&@`i8({FYZ*TO2n-M=&=r}8lcCOQwY>Fs!oMltHeD4yEBp3EE z)9Sswg=$w}w<)nte{~(yO57Z3nMggCnn%s27ElYRMbu(y3AGfUX90Q+pfGP-0O&=4 zUIOT4fL;OU)h=pz5A{lFm6+hEwE(@=OML^NcT@@ft}2eHZ6fve0KMKzy;JdgvVq1v z>VU`vHG8vzf||XhGUHFwFDfn=)6k5!p_wSCNf_S0Lokc}r>S!)p0i4xdtaXyfv!+@ zMWCzHHR?KbgStuGqHa^aQ+ELRCqVB5^e=$IxP1uFM*w{cP}uI%F6v$n&|f`fgeRW$ z0>RR`r(${C1N2q|dI!+wy+9uo3B@KFI4yxdGy%{T9W*RrUn-Kzt@Ie0SMtzsa0z){ zL3w+7QGGovT2~1}>nLH~e0?(BfVP4pv>|Oo8`CDVDQ!lZ(-yQPK;HrsKK?yGKL9v2 zkA4E^XMm{z4C$h+RV1{%YFdkS0vOsug24_hM>Y3}kr2fL3G#y^v_HVG9uj)s|L?3; zk3Z4F=unX|1Ykr59R@IoNZEfBJr;t{qs2i#oDdLaJtfU>$`Tq*oYB&!$J4PYQaI1i zA7B(D#rKP5MJ9?DB+yCpM3FX`PN7rjG&-Hmpfl+#IvZdNz*vBB0OJ8B08AZV8UWJ- zSf4IBr-ybDT|mQ>M;8H1tCv<6VEO=qr8vM0m9#@;BCQ-?+P$DLF<^P zzG3)z^zt^-aH6S$ZULBH2i*p+z9Mh@EP9T}s}OnniM;e&$cw>Y+mrw1atbjUsH))A z)SY|VT}pST6aq63REQB&2n}c7p1?*#g~Zcq=q;i`*3w<{I(j|*9le3xNN=Jy0}M)O z3NSN(nFGuMV3q*00+=;SJzezH9))aIIWoNqU}BvrPJLtcy^f4IEA^rIlcTA-c>9Zp88Gt!-(B}Z=s5J2<`l^V0Swx02nef+ZBC?ZcVyaTV|L^oY70_KJ zkc$X(O$p?r0(wZl5`iAkkLf4$Q~DYGoc^1BLB9l;8^GKF<^eEIfO!GT8(=;F^97h+ z7yY^i=v@!cCxH3)0tNmHG(;JhLl_zoG0uU88^nA@n9g}P=E~s7>u7#fWi0~4zLjb8ws#cU5vL1mho5htIQyP zjqZhoCBCX(#iEq3eVCCV>?nYZ>4hDuG#?Yqz)2Rm^sjZ%v`Ka`~WNsATaR7?=L1?%q$gg;e=yG2eS-dnIi54W(Bia#9b-k zW{J4csSp>1L+1ZRsM$bsReY+a^*Y8zW{XN2aNZPZBUdzV@90wuPi6;mK-9)g<_BgM zvzz&m*~9E*_A&bbmJhH=04o64WPlX{4E9OI04o95lrH9Ak2Zc%c{B4Xz)E`!4ClvH zc?Ody4LppwAS&Y`z~K86<%=oi3RDKkFxSKn925bpT=fn6E23BM-~$Y6o)< zV3jKC|HV8Kd1f;Yl^!h)J{Z{f!tSP8vAj;d{|n}|iWg20L0`Y zX4P1PMOlo+Sps0w09FIAS|A#z9$?b})&Q_ZfHifoQWY=Ds2rMw-FI^@Z|lDfJxk@# zY=6kh!alpDhnF={Iy7s^!eHxQVJFwt!P)?GymHM zOOYN0v7W4tl9csUk}AHsP4shXb|5<#zQ$l-@XhI9hX8EeHx)b^qO6#)xr)(;=9>04 zI-DJ)X4}b*U|}H72iO8wWwB%Az5rXOkgYaUjBV8N9tY{*i{+euJ(rDPCx{P%p|iMy zg`us&oUH)ZDuAs9*qRk=C0oT-18gn8x&XFL@u?}^ zv0k(RG~xO$Vm7fb19q~_EX;x50c=Aj+s3v7Y$L!nDH@yI`_EzLi|6OE^8g03)0R$l z0lN@jTLIRsxZFHsK!?~Q6cU#Cu_MNeatIycP#n{n2ieu^T2TpW0Jfupg<|Yf3~w1Q zcq9A0n(b`D#* z43_726hF2s>2n0Wi)4RdkFq}l>>$7n0qn3Mx7E(;1bgzEF(P}0JtsTg>Tk{h-8LUx3|E7|#fdG3HFZy}+Eafv^8K3(k_W;;aGoJHYM&3=-a7 z$=PytoIMAtrUw9f4lpS7=Wl>H7ZvcGMD>3c6Di)!V80AKIZxFU_f$h+agiKn7@D6k z$*~|8zP|iwz{~lmuKZJ62=P?|gH(tAN>m@I)T!63ewIO82=sI=m>bFs1K2}=Jp$O{ z6>1x}FmAXQkFdjgCWi%$LQByyYrN)IhKm(Fqm-T++cU0XX@s6+4wG#-)ks zLCWa?<1kvWXAU`F6}L`wjn&*5ZY|dZa0=iwz!`wEE4lUDciaYUBfvR;^8gnB-e2)@ z&Ob8o%>lO);OcU}bKGvYni8&b;eO=yaGl(~n4zzqOy2yi2S8w1<~;HCgKTg%<&{^A~R54lI& zW9|v}6yW9nw*a^$z^wpo4R8m5I|6(__rm!M684UJ|83-b;y!ubzqFrw!9R% zzmg|;il=#~bQ^%%0^APZ_KK$q; z3hfT?&~MDnTd2(LqFA-C=F997Z>u`&*6p*X1dVgxJz+(_JMsf~C*GNN;azz*-ktXV za1j;m32-lfdjs4D;JyI&1GqoH1G;!GRYk!2sVV|~Aix8ADgu0PZ$*F)>z>&Oho>W; zwfK<$AJ|h6@MB;B#E(Trh#!Ctg5|vU1oPlb_-4^>vgd?7DZ#C#E7 z%$M*}_)@-%FXt=xsQ?cH_;7$j8KLx}06rSvV*oxD;Ne|-Pem+Q!%yR3MaSKY#itH^Sr@-v%ulgmvB7@_@Hl93)gXx9#Qz{-Z05J{TlsE&8~;7O zo!`O3P>lz80>Bdio&@k@fTsXF72s(APw(P)sitxzYgDBye-Pjqs;OM%YeQ8ji)V>1 z`ujypD(PO(>4<2a5NS>VJhPYPj9B6I=P&cuRI*=H%APICenXUfqC$P8zSSN69+aKG z3-H_y9tK_hx8C|t<(7Ghh?Ro}KjEK#>->N7aM;<&zu;d2ya3>Zo&0P54Zw>5KK0vX zKB$_Rthl(+^NZ69i0W{W!g!URrhp5u4DJvJfR}U#u#cJo>pOE91Gxki;H7fE^Wyqr zK|s3%bwLA3R%_%x2-=D2>gi<#$@yuKg~|CvsfF1E#WC6WY3XHSl8dtdULjW_0bFN? zmz_l?3c6|n^0%Oe=E9}wqas3kFB8{(0K8m&RJn#l=ugZWjOeQtjhL&=6AT5TM0Fjw z0%*jf%>S$_7mNiHh5Kr64Ku+)6d!g*l^p`?jH*QOqr{0=0d^nN|A+VjBDnNQSOjnx zln~8<5_$`6Xs)`Ey!UOi;3_I6pQd=b+At$ffU~aagn_~!VX!bn2oi#Y zp~5gBL9uMkEHV}!9nxDcTRyUjL$ zw~N67@EHJ~32+!0FsIG#u3BStfkLdX;Hg-HNk0Pt>r zuTUIcJ85i*+7GLQDMG1GCX@>m0AC334uG!&_*#Ik|2N$VRRRzjtQKT~9N>!pTuF#8 zSs_dlY6K|zQh+Z5IDGw{sBWn+K4_>|-zAr|3N!zYTj&Bo0cC&_Qg|nnLGC!#c--KU z?A+errm#R*@_*bWEESds%K^R$;Hv??M($`fP+c`p4fiot?NR87VPUlZ6Y>hd>3?Kp zD~0cb4PtQ&S2*J9M=t_LfTkTn~wFS}jaNjD)?yKEw!tS#K#^FNSXh_*TX71FK~}s|ms{!mr};s^aXt zbTNak@nKymc?)jTN&KGRtdMR$>HX;nY4nQL(hX-*A~-D>E(1M zy@mc8?mZg{ca_yL%i#RMPjGA4RpvT#6K)T?!`y>g#QtI)GN0fm8-*im2}`mx%d$MH z4mXQg$XG8p%uIw^zvOVp)y3{$cd|#=D{$-94fYn?zIB)VgS`(oa6Mw5zztjk+`L7> zjawWiz^z+-IBmFdt1ssXcV^|lJy+}D-m1TNmbZo5p`!R?K9x`BGx=;j2PU&Jn8+&m zYF-Z0)J&Ka&hgLSKBm5cte;>d*b4T-0Kpku^y${mIvd^eKll#o= z^FyC&eLiT(C@oVhb1h3PYb{$Xdo4#TCoLB(H!Tk>FD)Of2(58icr@j>D1~h&{?F@t+P|-w9ZwXdpb{b-suv$Qe8@y)@5~hU3Fa(U2omNy2Ersb%*PY z)Q!?j(oNCL)Gg4RrrW4HOLviOx9(2eQ@ZzcAM3u>)78`0^VbX0i_jaVH(oDBZ-QQ$ zUWQ(l-b6iFu3o-go!$byt$N4xuIOFWyQX(T?`>a6U#c(Dm+!0ISF^7}Uyr^KeaH13 zufI;eTmPE=9Rt>2vO%>$vq7styTMEYg~1$yc?K&DRvWA}SZDB^!A67423rlz8$2>3 z4Gj&046_Xj4T}s*466-ghQM&X;VQ$ehT9Cc8}2mRW%#4aaIfKShQ|$08lE;hYk1!9 zqTyx3w?=)89E?JYQjH3X%8jNPRT;^QfKiiCi&2}=45L{_vyHwpI%6y`wt_1>U5(w1 zJ&pa1hZ;v1#~NoE7Z^`AE;4R1ZZV!?+-bbZc#ZKopQ*m7p{a?fnW=?otZ9|$ zOw+}t`%I6U-ZK5$3^6k|3o}bGD>GYRw$tp0+0SObnjJSgDKk55cF*jI*$cB*W^c^i znoG<%bHQB0ypMT5bA59|b7ON;b0>3u^D*YJ=Befd=B4K4=2Ok9%xlf-%^S>{%v;Qt zny)eMGT(0gtNC^Fo96e;Uz)$QAS~1^3@i*Sj4VtnJS;*jqAhYPrdu>xG+VSns0>lQaHZd=^3cxLh560yWA2}`M^fu*Houw|HKw&fJdGRq3fO3V3{ zt1Q=8c3G~sJZ^c#@|xuh%UhOzTYk1etS~FWim`ID8fZ1%D%VPGrLbCUwb|;3)n%)z zR@bd=THUs~V|CB!iS>BvB$|l+-*Jheco6Q27)ixV!HrZ^k>9*Nr^P|l^n*%n7Y%bY6wE1W& zvDLQKwe4%GZ);?0YHML@ZEI^g+&0s;*>;KTZrhW#S8d=VRw*7hpHgZlv94yRmi=b`$M#?aJ+@+Ev-f>{{&F>}J@_ zvYT(W%5IHam)&~1kM|&4fZ?j58EHNzia=O zgPMbhgPDVcgSCULgS~^JgR_IHLx{t0hmj7W9mYCDIK(-mI;6`SG94y54RY{0Mqc>`t+ z*gW9mfJ+0e4!AMk)_}hT$o?MiYQR4O-VgZXq~?S=;Z7P(T28u7{hSP(jGX+OLY+oA zjdhB2igB9Yl;D))l9Nx@rx#AIoM~syS>0LFS<6|+*~r<_*~Z!4d4RLCbAa<8=ONC)&auv!GUsgP9Opde z3g;?knKN*n?mXLhp7R3dMb3Xae|AA!Fc*o7xl6E1h)bBu2$#_=V_hO$#=FG0-(BvyJaBpA z^3LUh%O}^7uCcCht_iNmu34_KM%NbCHrE-h3fDQV^IaFYE^*!J`n~H;*IlkZy6$y7 z>UzTUwCg$7i>{Yl|8V`w^`Yxy*LSWTTtB&~xp8jlZklddZvEV>+-%+K-5lN8+!nbl zaa-or>9*PJwA(qii*A?QuDRWCyX|(@?N7H4ZlB#zcidg#PP%Kj>$&%LH*`0VxtqB= zxx2c1xO=&ecaL$;aL;znanEy?xwp8txzBK)<-W|l(|x7;Y7f?Zt&df+3mUAbEoHS&pn=3Jl}d5cm;Z;dNq1&@H*!8(Cekw z8?Sd>AG`@~-dn?4%UjpGpSQlZp|`QOgSV5ntG9=@x3{l%w0FAqMDINB0`C&cE?+-q@KK*AXm-1zO1z$~HZC^d#{=SaB&c3d` z?!KPBKED3G1APbk2Kx^4P4lhsUE}+U?_<9{ex80&ekFd@e!#ERuimfSZ@%9mzomX1 zek=V}`>pj`=eNUem){=0{eFl1j`;oV_tfvD-y6SoexLnOf81Zj38f*8ukb&j9ZL-+-8aDFF)twg&7AI2dpw;OBr}1C9mU3V0mw zEZ{}J>wvcb?*oNEy+DIN<3O`Oi$Iq^??B%`nSWql;LyO(z~O=c#1f~Q|3Y-#H z7FZEj8CVloAJ`Ds9M~E-FK~HaSKyW*XNH^~a%0G&Auoo!3z7!)3o-~Y4l)a}46+Hb z4;m2U6678f5)>9RGH6UtL{L;vOi)}`9Z6KehhjVj0777I|UC9jt-t2 zTpU~~3$6&R3YG`g1lI>Q2Db#a2hR$g6TC5aOYpYf9l^VT_XO_`J{0^@@Grr~f=>pY z2|hPeYiQ8W%Awnb-XGRynE$ZSVcUk?3+Wp&BxFp;)R5{B5K>Xoeeu5 zc4>Iq@I}Ly3|}_9b42`zi6e4H3dypGW;V z>e#50qsvCujh-$W-8i~s^p4SoNB=bX=h4570b|<6%osCk%$zX?#+(>)YRs82=f~QQ z^&aax)_?54u@lFZjx8TMb!>IGRk&ODu<)?(k>O*)Bf_J?W5VOY6T?%&OTx>-E5a+o ztHb5tHR1K)4dKnNp!e+hpaAw;-F#6(m@ERNV6aX8{=#IF&@B4ppE2Cx6)1vF58={+|+oESi&yJoKy)Jq~^rq-7(cRJCNAHZ@ z9la-dfAqoVo6(1Q({YF%VH~Hr^hzLHpVu`&W~LXyD)Zf zY**}$vHM~V#vY0NIrg{M6S1db&&6JheGvON_G#?%*cY*{V*iPK7yBXh^8{pq;ROE) z$rEZOteJ3p!t*%wxB+oqalUZ@aRcK*r%H zAZ|vSB5rwHM_gyz%D63YTjRRpzK=T?cPQ>~+)r_5IEACO;)40FmUd8kVOmLASz1L}OrC5}wk>T(+OD*H zX$RAeq#aGWkajukkF>XGAJRUjqv=FCna-s1=^E);=~n5s>GtW4=}ze`>F(*C>E7uw zzx06g3F#H-OVjtK-_4*i95Y5{+r4y&1Ulg#X&X_#r8X_{%CX_;x0X_x7c z>6Gb`IXW{xb5`cI%uAV{vP`oEWhG^0XXVPWCS^^|s>rIzs>_<5)tJ?s)ta?1Ygtxj z)~c*^SsSu8XKl?okaZ~QRMzRNGg;@dZfCvA`jGWG8_g!N$!sQ@&(_G+%GS;9mu-;k zk?o!BmmQcrI6F8yBzt)FsO+)Xk=f(3W3%J3v$J!u^Rf%F4`-jwKAU|$`_e?$i32AN zo+t~NIBepYiQ6V_pSW}4?i@a+e~v+pQI2U&NzSyK+MN2F#+-9Gw{u?Ryvcc&^D$Q~ z7t598Qn_rdkZYQ2k!zJ}lWUjjnCqPDmg|x0o$H$$om-l_D0ffp?L29oU0zsTc3xp# zNnTlAMP5x_OI~~4th_mS^Ya$wEzVn-w?1#9EN@HRw!9sAKjdA=yOVc6?_u7Pycc<| z^WNsY&!_Ws^Y!zM@=f!t@@?}S@(1Jx^Yiix@{97Pk$)BIUD1S-*vi#2cmH7wqZ%x7{SxyR@R4{4wr0z*)CS9F$W76$OcP2fW^lH*S zlipAIR3JkNumYk$vp~B*ub_W{VS#ahe?eHm=z{QqaRspjaRrG5$pr-kMFsMLx`Kv+ z=7JdovkK-E%qv)3&|UCT!7l~J3QiWBDL7wnso-kCje^?+FALrjye)WN@Nu%*WNb1q zSvr}X%ucqM95Oj~a@*vslP^vFP}slFr*KH&(8AEd;j+TW!uZ0(!sNo#!t}z-!s5cx z!ivJGLV4k|!excu6>cfqR=A_^$HIMu2MZ4uo-Mpkc(d?P;q$_mg>MQ!6n-v3i}0d8 zMaD(0MIJ@oMSewrMT3iii$aQq7mX@PE=nuPD9S3DSd>>(P*hk{TvS?AUNpDp`=ZN5 z?~9F!gNw6^Wevq^iZ>T`7jG}#S$v@Q*W%;Fr;5)OUnss*e6RR^@x$UL#m|dhl&F^& zl$e%SlvtNIlsJ{RmbjM$m5eQkDv2qHD@iU%E6FU$E-5RiE16%isAOqLN6E^PH6`mx zHk52G=`Q)H4)N{*MDEICthzT{HLm6GcvH%mTD=|3fKO0sN9-IVoHPEL7J%9ZMr z_AS*fH7vC%bt-i&^(gf&^(zf19bP)BbZlv4>G;x^(kZ1ir46OcrER5((z&GzN*9%` zE8S80W9h!qgQZ7He=R*;db0FJ>BG`bWk?xbCM~1OxH9#!K4m&(ear0229!CMxt6(? zd6oH=1(Xde8&VcrCQB&;Wvj}LmOU)jD0eT9EH5grESHr}E3YkYEuUMypnP%pvhvRI zmF26;yUVwi|4{y8`M&Z48+qNphk%d4kWH&i!Qw^h%qo?Sh+y1ROR^^xkItADFL zReiSlLiMHUKdWC>zpegI{aJ>~q%vB@%KFQ!Wxlci*&tbvY?v%eCL1XmBa4tl$+Bg+ zvV2*AtWZ`WE0a~oDrGVmkS&$%k=>SKax3{r`DFPF`6l^J`EIzmdcXXaoFNq$9s z4gTq!NAjoe&o8`^zX4jn1XuzaU=N&u8}J0)AOs8t(I6fqfmDzMazH*P05Z@5mH}BO zSOwOC^7(JPJuJv9Jl~3gKOX>xDD=tKc->ROs5T?LRHNVuHs5xD8uI6&hHCfHgn%gzcYChJg*Y>H^sqI^qF~@*T>dp)>qV5)ywN^>g($p>s#vE>u1%^sb5>azJ5dfrur@Q+v<1J z|4_fXesBH$`s?){rW;QmJUwH2%k<6DPfmX_{mt}u(?3rC+(0&HH1uiEZqRM$+t9zk zy1}l&vB9~)t-+%qq9Lgvy&T9zQRDK)&c;=ZYZ?zVo^HI-c)jsv z|&wQF^3 zb!zo(9o8D(TH3m_b!Y35))TGgTQ9Xo%l~Zxh)IMEscqEW*9;A4j^=8SwqI-3j%mlWliGLMMXf{Y z(ynU1>%H_p>wWcp`T+elJv*rn(}(LL^%eSB{Vn}%eS_Yrx9dOYKkJu_N@IahZ7edD z7`u%9#$lt$Xf{q5r;Rg4n{nRw!R%{}F{hiA<}>DObFR6_Tx>2e*O|Hr&6MexX)`cG zv)0^VerPtCm#raIwv}V$TBEG7)_v9kR=HJa&9Rd6tp(OXtHyfCT5hehUbB$3+iJBs zts9^_xCQhES)e}{2<`&8U^Ey5@<9P81jS$?CCN)0y~W-VZ>hJ;d&OJfz3Q#<)_6&8v$xYb<#+c- z_~m|$zsaxlKk`5Eclmq#M*pziN4O4e#oO`6cn3a+591^FC~n3l za0@<#zro+)bLpPxVd=@~h3Spy57W)*PBMrLCD|m0j39YrJSif@WFjdg2~tKX$PDrv znNJpwh2%w2LtZA!$y&0Wn8YS7*-ZQ-Ns~HKPZ~%g`HUPShe;D@CMQS>`I%fImq{1- zm0Tk?GTkygGQBc?$_&pWGS!)PGPRke%oRGAj-w^Clun|P>2z92pQg{!*>o^s#z)$k;_z(OievxtehYplqIrM zCgcjK%TR8Udt|+Akd5*)c~BmbE%K~9C%>0J$`08jugc%$jc{c6MEFLyA=E=Bq+t}+ zg+#OG zExr(U#eb+Cs;?TThNyeg7&T5!P(`X(O;yuWg_@~msVCJOHD6V!7gUW}re0R7m8MK( oD_3n+zDg^q@`Vajt@@YRrS_=3O5OZ1di1zyR>w{M--f6D2M`ANlK=n! diff --git a/extension/safari/TabFS/TabFSService/TabFSService.swift b/extension/safari/TabFS/TabFSService/TabFSService.swift index e49d80f..87321c1 100644 --- a/extension/safari/TabFS/TabFSService/TabFSService.swift +++ b/extension/safari/TabFS/TabFSService/TabFSService.swift @@ -34,7 +34,6 @@ class TabFSService: NSObject, TabFSServiceProtocol { var ws: NWListener! func startWs() { - // websocket server let port = NWEndpoint.Port(rawValue: 9991)! let parameters = NWParameters(tls: nil) parameters.allowLocalEndpointReuse = true @@ -56,9 +55,13 @@ class TabFSService: NSObject, TabFSServiceProtocol { var handleRequest: ((_ req: Data) -> Void)? ws.newConnectionHandler = { conn in conn.start(queue: .main) + handleRequest = { req in - conn.send(content: req, completion: .contentProcessed({ err in + let metaData = NWProtocolWebSocket.Metadata(opcode: .text) + let context = NWConnection.ContentContext(identifier: "context", metadata: [metaData]) + conn.send(content: req, contentContext: context, completion: .contentProcessed({ err in if err != nil { + os_log(.default, "%{public}@ error: %{public}@", String(data: req, encoding: .utf8) as! CVarArg, err!.debugDescription as CVarArg) // FIXME: ERROR } }))