From 33e5911cb2741ae57ef41ec245636733568f362c Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Sun, 7 Feb 2021 02:46:07 -0800 Subject: [PATCH] trying to just run straight from sandbox instead of xpc -- kinda works! blocked on libfuse --- extension/background.js | 5 +++++ .../TabFS Extension/FSProcessManager.swift | 6 +++++- .../SafariWebExtensionHandler.swift | 8 ++++---- .../TabFS_Extension.entitlements | 8 ++++---- .../UserInterfaceState.xcuserstate | Bin 34829 -> 40591 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 +++--- 6 files changed, 21 insertions(+), 12 deletions(-) diff --git a/extension/background.js b/extension/background.js index e6fba2b..f38f29e 100644 --- a/extension/background.js +++ b/extension/background.js @@ -713,19 +713,24 @@ async function onMessage(req) { }; function tryConnect() { + console.log('start tryConnect'); port = chrome.runtime.connectNative('com.rsnous.tabfs'); + console.log('start tryConnect - did connectNative'); port.onMessage.addListener(onMessage); port.onDisconnect.addListener(p => {console.log('disconnect', p)}); + console.log('tryConnect - about to sNM'); // Safari is very weird -- it has this native app that we have to talk to, // so we poke that app to wake it up, get it to start the TabFS process, // and get it to start calling us whenever TabFS wants to do an FS call. // Is there a better way to do this? if (chrome.runtime.getURL('/').startsWith('safari-web-extension://')) { // Safari-only chrome.runtime.sendNativeMessage('com.rsnous.tabfs', {op: 'safari_did_connect'}, function(resp) { + console.log('didConnect resp'); console.log(resp); }); } + console.log('tryConnect - did sNM'); } if (!TESTING) { diff --git a/extension/safari/TabFS/TabFS Extension/FSProcessManager.swift b/extension/safari/TabFS/TabFS Extension/FSProcessManager.swift index d17d934..ecfea87 100644 --- a/extension/safari/TabFS/TabFS Extension/FSProcessManager.swift +++ b/extension/safari/TabFS/TabFS Extension/FSProcessManager.swift @@ -8,6 +8,7 @@ import Foundation import SafariServices.SFSafariApplication +import os.log let extensionBundleIdentifier = "com.rsnous.TabFS-Extension" @@ -24,6 +25,9 @@ class FSProcessManager { func start() { fs = Process() fs.executableURL = URL(fileURLWithPath: "/Users/osnr/Code/tabfs/fs/tabfs") + + os_log(.default, "url: %{public}@", fs.executableURL as! NSURL) + fs.arguments = [] let inputPipe = Pipe(), outputPipe = Pipe() @@ -34,7 +38,7 @@ class FSProcessManager { fsInput = inputPipe.fileHandleForWriting fsOutput = outputPipe.fileHandleForReading -// +// // SFSafariApplication.dispatchMessage( // withName: "ToSafari", // toExtensionWithIdentifier: extensionBundleIdentifier, diff --git a/extension/safari/TabFS/TabFS Extension/SafariWebExtensionHandler.swift b/extension/safari/TabFS/TabFS Extension/SafariWebExtensionHandler.swift index 6ae1aae..e582e96 100644 --- a/extension/safari/TabFS/TabFS Extension/SafariWebExtensionHandler.swift +++ b/extension/safari/TabFS/TabFS Extension/SafariWebExtensionHandler.swift @@ -20,10 +20,10 @@ class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling { if message["op"] as! String == "safari_did_connect" { FSProcessManager.shared.start() - - let response = NSExtensionItem() - response.userInfo = [ "message": [ "aResponse to": "moop" ] ] - context.completeRequest(returningItems: [response], completionHandler: nil) +// +// let response = NSExtensionItem() +// response.userInfo = [ "message": [ "aResponse to": "moop" ] ] +// context.completeRequest(returningItems: [response], completionHandler: nil) return } diff --git a/extension/safari/TabFS/TabFS Extension/TabFS_Extension.entitlements b/extension/safari/TabFS/TabFS Extension/TabFS_Extension.entitlements index f2ef3ae..3ebfe4c 100644 --- a/extension/safari/TabFS/TabFS Extension/TabFS_Extension.entitlements +++ b/extension/safari/TabFS/TabFS Extension/TabFS_Extension.entitlements @@ -2,9 +2,9 @@ - com.apple.security.app-sandbox - - com.apple.security.files.user-selected.read-only - + com.apple.security.app-sandbox + + com.apple.security.files.all + 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 231f2f7ad08e4dfef24bbf973884054072661897..90dd5fe6e0c1302bb59001b590c788681c1bb0bf 100644 GIT binary patch delta 22159 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%0DZgDxs26nkmhdQl+!fP3fr|qV!V+D2Hp6 zG0J#lk}_49p)6FED9e>fWwo+axj^}$@~0}Ns-acsRRvYWRb^EbRc%${t0q>xT!pHp zR?V(jQuSt4f7P0*4OQ<}y;rrl>VvBNRp+WMR{f=-Ro<#dRkA8Ym8wctm8dFJDpjqj zQPrYqSB+7&U)O$9d$IOX?bX`rwKr>T*WOi2)PCv=b-P-p-l_gp{b!wHomZVtoqt_mU3gto zT})kEU1D8wU20u=T}fSeowBaFPF+`DH??kl-J-fT>Xy~@)vc~uTlZGoj=EiShqZOb z>rT|2uKS|ytGaLMF4o%4X-r3+AybKeuJ)IS;Lx!w;DDyyxZ_z!{&yq z4SO2)H5_X=*>I-ee8Yu?ZyUaExZLod;bEf|G*XRhqomQS(W23*QQjER7~VL%F|skL zF{UxTF{v@Nv7)i6vAVGq|6h*A#uj{9MuY!JS$E@Wjhh?KHU8S<*c8*GZkpP(s_C7k z_nNjeZEM=w^hwi^rcaxWH+|l8vgzBV%T3psZZ_R*`myP!riaaBGt+F{Y}ahx?9}Yq z?5=H=H7lA!n!}shn*IE~}E^1xbx})__>xI^PZFHMMo4hTlt*Wi1t+Q=H+lsa|ZEM@M zw;gIb+IGC{MBC}MuiCz8`>ySB+tv0#?IG=H?fLD>_Ud+ZdqaD3dt1AveRBKM_MY~c z?X%k#Xxm?JU(&v;eMS4>_Fpva8h=f&CQ6f_N!FxkGBpL7VojN*Qd6aA)HG|xYqXkI zG}AP_nz@?SGz&GaYu?cGYu0GCXm)D$X!dIkX^v`+YfflRYtCveXs-4o^`!O`_0;y% z_cZmi_Go%Kd&c%m>6zZs+w*GAoSu0-uk|eGnY^>-VlUSl(i_fO@2t#@zlzTN}9M|&^!Uh2Ktd!zSO t@7><}y+8N<()(NQAH7dzNM@MMFrQ&*2vI})PejBYiO%rX_&y`${{e-B%N_s# delta 16863 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 diff --git a/extension/safari/TabFS/TabFS.xcodeproj/xcuserdata/osnr.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/extension/safari/TabFS/TabFS.xcodeproj/xcuserdata/osnr.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 3f0b7de..4af142b 100644 --- a/extension/safari/TabFS/TabFS.xcodeproj/xcuserdata/osnr.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/extension/safari/TabFS/TabFS.xcodeproj/xcuserdata/osnr.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -30,8 +30,8 @@ filePath = "TabFS Extension/FSProcessManager.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "25" - endingLineNumber = "25" + startingLineNumber = "26" + endingLineNumber = "26" landmarkName = "start()" landmarkType = "7"> @@ -56,7 +56,7 @@ BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">