diff --git a/content/install-hook-userstyles.js b/content/install-hook-userstyles.js index 86617ce4..1bc72ccf 100644 --- a/content/install-hook-userstyles.js +++ b/content/install-hook-userstyles.js @@ -194,7 +194,8 @@ function inPageContext(eventId, eventIdHost, styleId, apiUrl) { let done, orphaned, vars; - if (!window.chrome) window.chrome = {runtime: {sendMessage: () => {}}}; // USO bug in FF + // `chrome` may be empty if no extensions use externally_connectable but USO needs it + if (!window.chrome) window.chrome = {runtime: {sendMessage: () => {}}}; const EXT_ID = 'fjnbnpbmkenffdnngjfgmeleoegfcffe'; const {defineProperty} = Object; const {dispatchEvent, CustomEvent, removeEventListener} = window; @@ -224,9 +225,6 @@ function inPageContext(eventId, eventIdHost, styleId, apiUrl) { ], ]; OVR.forEach(([obj, name, caller], i) => { - /* Using Proxy to make the override undetectable so Stylish cannot track our users, - * which was the primary reason privacy-concerned users abandoned Stylish. - * TODO: add a user option to allow USO see the user has Stylus? */ const orig = obj[name]; const ovr = new Proxy(orig, { apply(fn, me, args) { @@ -237,6 +235,8 @@ function inPageContext(eventId, eventIdHost, styleId, apiUrl) { defineProperty(obj, name, {value: ovr}); OVR[i] = [obj, name, ovr, orig]; // same args as restore() }); + /* We set `isInstalled` at page start intentionally not trying to replicate Stylish login events. + * This difference allows USO site to detect presence of Stylus (or another similar extension). */ window.isInstalled = true; addEventListener(eventId, onCommand, true); function onCommand(e) {