diff --git a/Makefile b/Makefile index 8fe333f..0a5fbb0 100644 --- a/Makefile +++ b/Makefile @@ -66,7 +66,7 @@ libpolyfill: wget -O chromium/browser-polyfill.min.js https://unpkg.com/webextension-polyfill/dist/browser-polyfill.min.js fmt: - find . -name '*.js' -exec jsfmt -w {} \; + find . -path ./node_modules -prune -o -name '*.js' -exec jsfmt -w {} \; deborig: rm -rfv ../i2psetproxy.js-$(VERSION) diff --git a/background.js b/background.js index c81416e..b5734e9 100644 --- a/background.js +++ b/background.js @@ -23,32 +23,9 @@ function onGot(contexts) { function onError(e) { console.error(e); } + browser.contextualIdentities.query({}).then(onGot, onError); - -function getChrome() { - if (browser.runtime.getBrowserInfo == undefined) { - return true - } - return false -} - -function isDroid() { - if (!getChrome()) { - var gettingInfo = browser.runtime.getPlatformInfo(); - gettingInfo.then((got) => { - if (got.os == "android") { - console.log("android detected") - return true - } else { - console.log("desktop detected") - return false - } - }); - } - return false -} - if (!isDroid()) { chrome.windows.onCreated.addListener(themeWindow); } @@ -154,10 +131,6 @@ function setTitle(window) { querying.then(logTabs, onError); } -function setTitleError(window) { - alert("plugin error setting title on", window.id) -} - chrome.windows.onCreated.addListener(() => { //var gettingStoredSettings = chrome.storage.local.get(); //gettingStoredSettings.then(setupProxy, onError); @@ -170,5 +143,5 @@ chrome.tabs.onCreated.addListener(() => { var getting = browser.windows.getCurrent({ populate: true }); - getting.then(setTitle, setTitleError); -}); \ No newline at end of file + getting.then(setTitle, onError); +}); diff --git a/chromium/browser-polyfill.min.js b/chromium/browser-polyfill.min.js index 6752521..09bc5bb 100644 --- a/chromium/browser-polyfill.min.js +++ b/chromium/browser-polyfill.min.js @@ -1,901 +1,898 @@ (function(a, b) { - if ("function" == typeof define && define.amd) { - define("webextension-polyfill", ["module"], b); - } else if ("undefined" != typeof exports) { - b(module); - } else { - var c = { - exports: {} - }; - b(c), a.browser = c.exports - } + if ("function" == typeof define && define.amd) { + define("webextension-polyfill", ["module"], b); + } else if ("undefined" != typeof exports) { + b(module); + } else { + var c = { + exports: {} + }; + b(c), a.browser = c.exports + } })(this, function(a) { - "use strict"; - if ("undefined" == typeof browser || Object.getPrototypeOf(browser) !== Object.prototype) { - a.exports = (e => { - const f = { - alarms: { - clear: { - minArgs: 0, - maxArgs: 1 - }, - clearAll: { - minArgs: 0, - maxArgs: 0 - }, - get: { - minArgs: 0, - maxArgs: 1 - }, - getAll: { - minArgs: 0, - maxArgs: 0 - } - }, - bookmarks: { - create: { - minArgs: 1, - maxArgs: 1 - }, - get: { - minArgs: 1, - maxArgs: 1 - }, - getChildren: { - minArgs: 1, - maxArgs: 1 - }, - getRecent: { - minArgs: 1, - maxArgs: 1 - }, - getSubTree: { - minArgs: 1, - maxArgs: 1 - }, - getTree: { - minArgs: 0, - maxArgs: 0 - }, - move: { - minArgs: 2, - maxArgs: 2 - }, - remove: { - minArgs: 1, - maxArgs: 1 - }, - removeTree: { - minArgs: 1, - maxArgs: 1 - }, - search: { - minArgs: 1, - maxArgs: 1 - }, - update: { - minArgs: 2, - maxArgs: 2 - } - }, - browserAction: { - disable: { - minArgs: 0, - maxArgs: 1, - fallbackToNoCallback: !0 - }, - enable: { - minArgs: 0, - maxArgs: 1, - fallbackToNoCallback: !0 - }, - getBadgeBackgroundColor: { - minArgs: 1, - maxArgs: 1 - }, - getBadgeText: { - minArgs: 1, - maxArgs: 1 - }, - getPopup: { - minArgs: 1, - maxArgs: 1 - }, - getTitle: { - minArgs: 1, - maxArgs: 1 - }, - openPopup: { - minArgs: 0, - maxArgs: 0 - }, - setBadgeBackgroundColor: { - minArgs: 1, - maxArgs: 1, - fallbackToNoCallback: !0 - }, - setBadgeText: { - minArgs: 1, - maxArgs: 1, - fallbackToNoCallback: !0 - }, - setIcon: { - minArgs: 1, - maxArgs: 1 - }, - setPopup: { - minArgs: 1, - maxArgs: 1, - fallbackToNoCallback: !0 - }, - setTitle: { - minArgs: 1, - maxArgs: 1, - fallbackToNoCallback: !0 - } - }, - browsingData: { - remove: { - minArgs: 2, - maxArgs: 2 - }, - removeCache: { - minArgs: 1, - maxArgs: 1 - }, - removeCookies: { - minArgs: 1, - maxArgs: 1 - }, - removeDownloads: { - minArgs: 1, - maxArgs: 1 - }, - removeFormData: { - minArgs: 1, - maxArgs: 1 - }, - removeHistory: { - minArgs: 1, - maxArgs: 1 - }, - removeLocalStorage: { - minArgs: 1, - maxArgs: 1 - }, - removePasswords: { - minArgs: 1, - maxArgs: 1 - }, - removePluginData: { - minArgs: 1, - maxArgs: 1 - }, - settings: { - minArgs: 0, - maxArgs: 0 - } - }, - commands: { - getAll: { - minArgs: 0, - maxArgs: 0 - } - }, - contextMenus: { - remove: { - minArgs: 1, - maxArgs: 1 - }, - removeAll: { - minArgs: 0, - maxArgs: 0 - }, - update: { - minArgs: 2, - maxArgs: 2 - } - }, - cookies: { - get: { - minArgs: 1, - maxArgs: 1 - }, - getAll: { - minArgs: 1, - maxArgs: 1 - }, - getAllCookieStores: { - minArgs: 0, - maxArgs: 0 - }, - remove: { - minArgs: 1, - maxArgs: 1 - }, - set: { - minArgs: 1, - maxArgs: 1 - } - }, - devtools: { - inspectedWindow: { - eval: { - minArgs: 1, - maxArgs: 2, - singleCallbackArg: !1 - } - }, - panels: { - create: { - minArgs: 3, - maxArgs: 3, - singleCallbackArg: !0 - } - } - }, - downloads: { - cancel: { - minArgs: 1, - maxArgs: 1 - }, - download: { - minArgs: 1, - maxArgs: 1 - }, - erase: { - minArgs: 1, - maxArgs: 1 - }, - getFileIcon: { - minArgs: 1, - maxArgs: 2 - }, - open: { - minArgs: 1, - maxArgs: 1, - fallbackToNoCallback: !0 - }, - pause: { - minArgs: 1, - maxArgs: 1 - }, - removeFile: { - minArgs: 1, - maxArgs: 1 - }, - resume: { - minArgs: 1, - maxArgs: 1 - }, - search: { - minArgs: 1, - maxArgs: 1 - }, - show: { - minArgs: 1, - maxArgs: 1, - fallbackToNoCallback: !0 - } - }, - extension: { - isAllowedFileSchemeAccess: { - minArgs: 0, - maxArgs: 0 - }, - isAllowedIncognitoAccess: { - minArgs: 0, - maxArgs: 0 - } - }, - history: { - addUrl: { - minArgs: 1, - maxArgs: 1 - }, - deleteAll: { - minArgs: 0, - maxArgs: 0 - }, - deleteRange: { - minArgs: 1, - maxArgs: 1 - }, - deleteUrl: { - minArgs: 1, - maxArgs: 1 - }, - getVisits: { - minArgs: 1, - maxArgs: 1 - }, - search: { - minArgs: 1, - maxArgs: 1 - } - }, - i18n: { - detectLanguage: { - minArgs: 1, - maxArgs: 1 - }, - getAcceptLanguages: { - minArgs: 0, - maxArgs: 0 - } - }, - identity: { - launchWebAuthFlow: { - minArgs: 1, - maxArgs: 1 - } - }, - idle: { - queryState: { - minArgs: 1, - maxArgs: 1 - } - }, - management: { - get: { - minArgs: 1, - maxArgs: 1 - }, - getAll: { - minArgs: 0, - maxArgs: 0 - }, - getSelf: { - minArgs: 0, - maxArgs: 0 - }, - setEnabled: { - minArgs: 2, - maxArgs: 2 - }, - uninstallSelf: { - minArgs: 0, - maxArgs: 1 - } - }, - notifications: { - clear: { - minArgs: 1, - maxArgs: 1 - }, - create: { - minArgs: 1, - maxArgs: 2 - }, - getAll: { - minArgs: 0, - maxArgs: 0 - }, - getPermissionLevel: { - minArgs: 0, - maxArgs: 0 - }, - update: { - minArgs: 2, - maxArgs: 2 - } - }, - pageAction: { - getPopup: { - minArgs: 1, - maxArgs: 1 - }, - getTitle: { - minArgs: 1, - maxArgs: 1 - }, - hide: { - minArgs: 1, - maxArgs: 1, - fallbackToNoCallback: !0 - }, - setIcon: { - minArgs: 1, - maxArgs: 1 - }, - setPopup: { - minArgs: 1, - maxArgs: 1, - fallbackToNoCallback: !0 - }, - setTitle: { - minArgs: 1, - maxArgs: 1, - fallbackToNoCallback: !0 - }, - show: { - minArgs: 1, - maxArgs: 1, - fallbackToNoCallback: !0 - } - }, - permissions: { - contains: { - minArgs: 1, - maxArgs: 1 - }, - getAll: { - minArgs: 0, - maxArgs: 0 - }, - remove: { - minArgs: 1, - maxArgs: 1 - }, - request: { - minArgs: 1, - maxArgs: 1 - } - }, - runtime: { - getBackgroundPage: { - minArgs: 0, - maxArgs: 0 - }, - getBrowserInfo: { - minArgs: 0, - maxArgs: 0 - }, - getPlatformInfo: { - minArgs: 0, - maxArgs: 0 - }, - openOptionsPage: { - minArgs: 0, - maxArgs: 0 - }, - requestUpdateCheck: { - minArgs: 0, - maxArgs: 0 - }, - sendMessage: { - minArgs: 1, - maxArgs: 3 - }, - sendNativeMessage: { - minArgs: 2, - maxArgs: 2 - }, - setUninstallURL: { - minArgs: 1, - maxArgs: 1 - } - }, - sessions: { - getDevices: { - minArgs: 0, - maxArgs: 1 - }, - getRecentlyClosed: { - minArgs: 0, - maxArgs: 1 - }, - restore: { - minArgs: 0, - maxArgs: 1 - } - }, - storage: { - local: { - clear: { - minArgs: 0, - maxArgs: 0 - }, - get: { - minArgs: 0, - maxArgs: 1 - }, - getBytesInUse: { - minArgs: 0, - maxArgs: 1 - }, - remove: { - minArgs: 1, - maxArgs: 1 - }, - set: { - minArgs: 1, - maxArgs: 1 - } - }, - managed: { - get: { - minArgs: 0, - maxArgs: 1 - }, - getBytesInUse: { - minArgs: 0, - maxArgs: 1 - } - }, - sync: { - clear: { - minArgs: 0, - maxArgs: 0 - }, - get: { - minArgs: 0, - maxArgs: 1 - }, - getBytesInUse: { - minArgs: 0, - maxArgs: 1 - }, - remove: { - minArgs: 1, - maxArgs: 1 - }, - set: { - minArgs: 1, - maxArgs: 1 - } - } - }, - tabs: { - captureVisibleTab: { - minArgs: 0, - maxArgs: 2 - }, - create: { - minArgs: 1, - maxArgs: 1 - }, - detectLanguage: { - minArgs: 0, - maxArgs: 1 - }, - discard: { - minArgs: 0, - maxArgs: 1 - }, - duplicate: { - minArgs: 1, - maxArgs: 1 - }, - executeScript: { - minArgs: 1, - maxArgs: 2 - }, - get: { - minArgs: 1, - maxArgs: 1 - }, - getCurrent: { - minArgs: 0, - maxArgs: 0 - }, - getZoom: { - minArgs: 0, - maxArgs: 1 - }, - getZoomSettings: { - minArgs: 0, - maxArgs: 1 - }, - highlight: { - minArgs: 1, - maxArgs: 1 - }, - insertCSS: { - minArgs: 1, - maxArgs: 2 - }, - move: { - minArgs: 2, - maxArgs: 2 - }, - query: { - minArgs: 1, - maxArgs: 1 - }, - reload: { - minArgs: 0, - maxArgs: 2 - }, - remove: { - minArgs: 1, - maxArgs: 1 - }, - removeCSS: { - minArgs: 1, - maxArgs: 2 - }, - sendMessage: { - minArgs: 2, - maxArgs: 3 - }, - setZoom: { - minArgs: 1, - maxArgs: 2 - }, - setZoomSettings: { - minArgs: 1, - maxArgs: 2 - }, - update: { - minArgs: 1, - maxArgs: 2 - } - }, - topSites: { - get: { - minArgs: 0, - maxArgs: 0 - } - }, - webNavigation: { - getAllFrames: { - minArgs: 1, - maxArgs: 1 - }, - getFrame: { - minArgs: 1, - maxArgs: 1 - } - }, - webRequest: { - handlerBehaviorChanged: { - minArgs: 0, - maxArgs: 0 - } - }, - windows: { - create: { - minArgs: 0, - maxArgs: 1 - }, - get: { - minArgs: 1, - maxArgs: 2 - }, - getAll: { - minArgs: 0, - maxArgs: 1 - }, - getCurrent: { - minArgs: 0, - maxArgs: 1 - }, - getLastFocused: { - minArgs: 0, - maxArgs: 1 - }, - remove: { - minArgs: 1, - maxArgs: 1 - }, - update: { - minArgs: 2, - maxArgs: 2 - } - } - }; - if (0 === Object.keys(f).length) { - throw new Error("api-metadata.json has not been included in browser-polyfill"); + "use strict"; + if ("undefined" == typeof browser || Object.getPrototypeOf(browser) !== Object.prototype) { + a.exports = (e => { + const f = { + alarms: { + clear: { + minArgs: 0, + maxArgs: 1 + }, + clearAll: { + minArgs: 0, + maxArgs: 0 + }, + get: { + minArgs: 0, + maxArgs: 1 + }, + getAll: { + minArgs: 0, + maxArgs: 0 + } + }, + bookmarks: { + create: { + minArgs: 1, + maxArgs: 1 + }, + get: { + minArgs: 1, + maxArgs: 1 + }, + getChildren: { + minArgs: 1, + maxArgs: 1 + }, + getRecent: { + minArgs: 1, + maxArgs: 1 + }, + getSubTree: { + minArgs: 1, + maxArgs: 1 + }, + getTree: { + minArgs: 0, + maxArgs: 0 + }, + move: { + minArgs: 2, + maxArgs: 2 + }, + remove: { + minArgs: 1, + maxArgs: 1 + }, + removeTree: { + minArgs: 1, + maxArgs: 1 + }, + search: { + minArgs: 1, + maxArgs: 1 + }, + update: { + minArgs: 2, + maxArgs: 2 + } + }, + browserAction: { + disable: { + minArgs: 0, + maxArgs: 1, + fallbackToNoCallback: !0 + }, + enable: { + minArgs: 0, + maxArgs: 1, + fallbackToNoCallback: !0 + }, + getBadgeBackgroundColor: { + minArgs: 1, + maxArgs: 1 + }, + getBadgeText: { + minArgs: 1, + maxArgs: 1 + }, + getPopup: { + minArgs: 1, + maxArgs: 1 + }, + getTitle: { + minArgs: 1, + maxArgs: 1 + }, + openPopup: { + minArgs: 0, + maxArgs: 0 + }, + setBadgeBackgroundColor: { + minArgs: 1, + maxArgs: 1, + fallbackToNoCallback: !0 + }, + setBadgeText: { + minArgs: 1, + maxArgs: 1, + fallbackToNoCallback: !0 + }, + setIcon: { + minArgs: 1, + maxArgs: 1 + }, + setPopup: { + minArgs: 1, + maxArgs: 1, + fallbackToNoCallback: !0 + }, + setTitle: { + minArgs: 1, + maxArgs: 1, + fallbackToNoCallback: !0 + } + }, + browsingData: { + remove: { + minArgs: 2, + maxArgs: 2 + }, + removeCache: { + minArgs: 1, + maxArgs: 1 + }, + removeCookies: { + minArgs: 1, + maxArgs: 1 + }, + removeDownloads: { + minArgs: 1, + maxArgs: 1 + }, + removeFormData: { + minArgs: 1, + maxArgs: 1 + }, + removeHistory: { + minArgs: 1, + maxArgs: 1 + }, + removeLocalStorage: { + minArgs: 1, + maxArgs: 1 + }, + removePasswords: { + minArgs: 1, + maxArgs: 1 + }, + removePluginData: { + minArgs: 1, + maxArgs: 1 + }, + settings: { + minArgs: 0, + maxArgs: 0 + } + }, + commands: { + getAll: { + minArgs: 0, + maxArgs: 0 + } + }, + contextMenus: { + remove: { + minArgs: 1, + maxArgs: 1 + }, + removeAll: { + minArgs: 0, + maxArgs: 0 + }, + update: { + minArgs: 2, + maxArgs: 2 + } + }, + cookies: { + get: { + minArgs: 1, + maxArgs: 1 + }, + getAll: { + minArgs: 1, + maxArgs: 1 + }, + getAllCookieStores: { + minArgs: 0, + maxArgs: 0 + }, + remove: { + minArgs: 1, + maxArgs: 1 + }, + set: { + minArgs: 1, + maxArgs: 1 + } + }, + devtools: { + inspectedWindow: { + eval: { + minArgs: 1, + maxArgs: 2, + singleCallbackArg: !1 } - class g extends WeakMap { - constructor(v, w = void 0) { - super(w), this.createItem = v - } - get(v) { - return this.has(v) || this.set(v, this.createItem(v)), super.get(v) - } + }, + panels: { + create: { + minArgs: 3, + maxArgs: 3, + singleCallbackArg: !0 } - const h = v => { - return v && "object" == typeof v && "function" == typeof v.then - }; - const i = (v, w) => { - return (...x) => { - e.runtime.lastError ? v.reject(e.runtime.lastError) : w.singleCallbackArg || 1 >= x.length && !1 !== w.singleCallbackArg ? v.resolve(x[0]) : v.resolve(x) + } + }, + downloads: { + cancel: { + minArgs: 1, + maxArgs: 1 + }, + download: { + minArgs: 1, + maxArgs: 1 + }, + erase: { + minArgs: 1, + maxArgs: 1 + }, + getFileIcon: { + minArgs: 1, + maxArgs: 2 + }, + open: { + minArgs: 1, + maxArgs: 1, + fallbackToNoCallback: !0 + }, + pause: { + minArgs: 1, + maxArgs: 1 + }, + removeFile: { + minArgs: 1, + maxArgs: 1 + }, + resume: { + minArgs: 1, + maxArgs: 1 + }, + search: { + minArgs: 1, + maxArgs: 1 + }, + show: { + minArgs: 1, + maxArgs: 1, + fallbackToNoCallback: !0 + } + }, + extension: { + isAllowedFileSchemeAccess: { + minArgs: 0, + maxArgs: 0 + }, + isAllowedIncognitoAccess: { + minArgs: 0, + maxArgs: 0 + } + }, + history: { + addUrl: { + minArgs: 1, + maxArgs: 1 + }, + deleteAll: { + minArgs: 0, + maxArgs: 0 + }, + deleteRange: { + minArgs: 1, + maxArgs: 1 + }, + deleteUrl: { + minArgs: 1, + maxArgs: 1 + }, + getVisits: { + minArgs: 1, + maxArgs: 1 + }, + search: { + minArgs: 1, + maxArgs: 1 + } + }, + i18n: { + detectLanguage: { + minArgs: 1, + maxArgs: 1 + }, + getAcceptLanguages: { + minArgs: 0, + maxArgs: 0 + } + }, + identity: { + launchWebAuthFlow: { + minArgs: 1, + maxArgs: 1 + } + }, + idle: { + queryState: { + minArgs: 1, + maxArgs: 1 + } + }, + management: { + get: { + minArgs: 1, + maxArgs: 1 + }, + getAll: { + minArgs: 0, + maxArgs: 0 + }, + getSelf: { + minArgs: 0, + maxArgs: 0 + }, + setEnabled: { + minArgs: 2, + maxArgs: 2 + }, + uninstallSelf: { + minArgs: 0, + maxArgs: 1 + } + }, + notifications: { + clear: { + minArgs: 1, + maxArgs: 1 + }, + create: { + minArgs: 1, + maxArgs: 2 + }, + getAll: { + minArgs: 0, + maxArgs: 0 + }, + getPermissionLevel: { + minArgs: 0, + maxArgs: 0 + }, + update: { + minArgs: 2, + maxArgs: 2 + } + }, + pageAction: { + getPopup: { + minArgs: 1, + maxArgs: 1 + }, + getTitle: { + minArgs: 1, + maxArgs: 1 + }, + hide: { + minArgs: 1, + maxArgs: 1, + fallbackToNoCallback: !0 + }, + setIcon: { + minArgs: 1, + maxArgs: 1 + }, + setPopup: { + minArgs: 1, + maxArgs: 1, + fallbackToNoCallback: !0 + }, + setTitle: { + minArgs: 1, + maxArgs: 1, + fallbackToNoCallback: !0 + }, + show: { + minArgs: 1, + maxArgs: 1, + fallbackToNoCallback: !0 + } + }, + permissions: { + contains: { + minArgs: 1, + maxArgs: 1 + }, + getAll: { + minArgs: 0, + maxArgs: 0 + }, + remove: { + minArgs: 1, + maxArgs: 1 + }, + request: { + minArgs: 1, + maxArgs: 1 + } + }, + runtime: { + getBackgroundPage: { + minArgs: 0, + maxArgs: 0 + }, + getBrowserInfo: { + minArgs: 0, + maxArgs: 0 + }, + getPlatformInfo: { + minArgs: 0, + maxArgs: 0 + }, + openOptionsPage: { + minArgs: 0, + maxArgs: 0 + }, + requestUpdateCheck: { + minArgs: 0, + maxArgs: 0 + }, + sendMessage: { + minArgs: 1, + maxArgs: 3 + }, + sendNativeMessage: { + minArgs: 2, + maxArgs: 2 + }, + setUninstallURL: { + minArgs: 1, + maxArgs: 1 + } + }, + sessions: { + getDevices: { + minArgs: 0, + maxArgs: 1 + }, + getRecentlyClosed: { + minArgs: 0, + maxArgs: 1 + }, + restore: { + minArgs: 0, + maxArgs: 1 + } + }, + storage: { + local: { + clear: { + minArgs: 0, + maxArgs: 0 + }, + get: { + minArgs: 0, + maxArgs: 1 + }, + getBytesInUse: { + minArgs: 0, + maxArgs: 1 + }, + remove: { + minArgs: 1, + maxArgs: 1 + }, + set: { + minArgs: 1, + maxArgs: 1 + } + }, + managed: { + get: { + minArgs: 0, + maxArgs: 1 + }, + getBytesInUse: { + minArgs: 0, + maxArgs: 1 + } + }, + sync: { + clear: { + minArgs: 0, + maxArgs: 0 + }, + get: { + minArgs: 0, + maxArgs: 1 + }, + getBytesInUse: { + minArgs: 0, + maxArgs: 1 + }, + remove: { + minArgs: 1, + maxArgs: 1 + }, + set: { + minArgs: 1, + maxArgs: 1 + } + } + }, + tabs: { + captureVisibleTab: { + minArgs: 0, + maxArgs: 2 + }, + create: { + minArgs: 1, + maxArgs: 1 + }, + detectLanguage: { + minArgs: 0, + maxArgs: 1 + }, + discard: { + minArgs: 0, + maxArgs: 1 + }, + duplicate: { + minArgs: 1, + maxArgs: 1 + }, + executeScript: { + minArgs: 1, + maxArgs: 2 + }, + get: { + minArgs: 1, + maxArgs: 1 + }, + getCurrent: { + minArgs: 0, + maxArgs: 0 + }, + getZoom: { + minArgs: 0, + maxArgs: 1 + }, + getZoomSettings: { + minArgs: 0, + maxArgs: 1 + }, + highlight: { + minArgs: 1, + maxArgs: 1 + }, + insertCSS: { + minArgs: 1, + maxArgs: 2 + }, + move: { + minArgs: 2, + maxArgs: 2 + }, + query: { + minArgs: 1, + maxArgs: 1 + }, + reload: { + minArgs: 0, + maxArgs: 2 + }, + remove: { + minArgs: 1, + maxArgs: 1 + }, + removeCSS: { + minArgs: 1, + maxArgs: 2 + }, + sendMessage: { + minArgs: 2, + maxArgs: 3 + }, + setZoom: { + minArgs: 1, + maxArgs: 2 + }, + setZoomSettings: { + minArgs: 1, + maxArgs: 2 + }, + update: { + minArgs: 1, + maxArgs: 2 + } + }, + topSites: { + get: { + minArgs: 0, + maxArgs: 0 + } + }, + webNavigation: { + getAllFrames: { + minArgs: 1, + maxArgs: 1 + }, + getFrame: { + minArgs: 1, + maxArgs: 1 + } + }, + webRequest: { + handlerBehaviorChanged: { + minArgs: 0, + maxArgs: 0 + } + }, + windows: { + create: { + minArgs: 0, + maxArgs: 1 + }, + get: { + minArgs: 1, + maxArgs: 2 + }, + getAll: { + minArgs: 0, + maxArgs: 1 + }, + getCurrent: { + minArgs: 0, + maxArgs: 1 + }, + getLastFocused: { + minArgs: 0, + maxArgs: 1 + }, + remove: { + minArgs: 1, + maxArgs: 1 + }, + update: { + minArgs: 2, + maxArgs: 2 + } + } + }; + if (0 === Object.keys(f).length) { + throw new Error("api-metadata.json has not been included in browser-polyfill"); + } + class g extends WeakMap { + constructor(v, w = void 0) { + super(w), this.createItem = v + } + get(v) { + return this.has(v) || this.set(v, this.createItem(v)), super.get(v) + } + } + const h = v => { + return v && "object" == typeof v && "function" == typeof v.then + }; + const i = (v, w) => { + return (...x) => { + e.runtime.lastError ? v.reject(e.runtime.lastError) : w.singleCallbackArg || 1 >= x.length && !1 !== w.singleCallbackArg ? v.resolve(x[0]) : v.resolve(x) + } + }; + const j = v => 1 == v ? "argument" : "arguments"; + const k = (v, w) => { + return function(y, ...z) { + if (z.length < w.minArgs) { + throw new Error(`Expected at least ${w.minArgs} ${j(w.minArgs)} for ${v}(), got ${z.length}`); + } + if (z.length > w.maxArgs) { + throw new Error(`Expected at most ${w.maxArgs} ${j(w.maxArgs)} for ${v}(), got ${z.length}`); + } + return new Promise((A, B) => { + if (w.fallbackToNoCallback) { + try { + y[v](...z, i({ + resolve: A, + reject: B + }, w)) + } catch ( C ) { + console.warn(`${v} API method doesn't seem to support the callback parameter, ` + "falling back to call it without a callback: ", C), y[v](...z), w.fallbackToNoCallback = !1, w.noCallback = !0, A() + } + } else { + w.noCallback ? (y[v](...z), A()) : y[v](...z, i({ + resolve: A, + reject: B + }, w)) + } + }) + } + }; + const l = (v, w, x) => { + return new Proxy(w, { + apply(y, z, A) { + return x.call(z, v, ...A) + } + }) + }; + let m = Function.call.bind(Object.prototype.hasOwnProperty); + const n = (v, w = {}, x = {}) => { + let y = Object.create(null); + let z = { + has(B, C) { + return C in v || C in y + }, + get(B, C) { + if (C in y) { + return y[C]; + } + if (C in v) { + let E = v[C]; + if ("function" == typeof E) { + if ("function" == typeof w[C]) { + E = l(v, v[C], w[C]); + } else if (m(x, C)) { + let F = k(C, x[C]); + E = l(v, v[C], F) + } else { + E = E.bind(v); } - }; - const j = v => 1 == v ? "argument" : "arguments"; - const k = (v, w) => { - return function(y, ...z) { - if (z.length < w.minArgs) { - throw new Error(`Expected at least ${w.minArgs} ${j(w.minArgs)} for ${v}(), got ${z.length}`); - } - if (z.length > w.maxArgs) { - throw new Error(`Expected at most ${w.maxArgs} ${j(w.maxArgs)} for ${v}(), got ${z.length}`); - } - return new Promise((A, B) => { - if (w.fallbackToNoCallback) { - try { - y[v](...z, i({ - resolve: A, - reject: B - }, w)) - } catch (C) { - console.warn(`${v} API method doesn't seem to support the callback parameter, ` + "falling back to call it without a callback: ", C), y[v](...z), w.fallbackToNoCallback = !1, w.noCallback = !0, A() - } - } else { - w.noCallback ? (y[v](...z), A()) : y[v](...z, i({ - resolve: A, - reject: B - }, w)) - } - }) - } - }; - const l = (v, w, x) => { - return new Proxy(w, { - apply(y, z, A) { - return x.call(z, v, ...A) - } - }) - }; - let m = Function.call.bind(Object.prototype.hasOwnProperty); - const n = (v, w = {}, x = {}) => { - let y = Object.create(null); - let z = { - has(B, C) { - return C in v || C in y + } else if ("object" == typeof E && null !== E && (m(w, C) || m(x, C))) { + E = n(E, w[C], x[C]); + } else { + return Object.defineProperty(y, C, { + configurable: !0, + enumerable: !0, + get() { + return v[C] }, - get(B, C) { - if (C in y) { - return y[C]; - } - if (C in v) { - let E = v[C]; - if ("function" == typeof E) { - if ("function" == typeof w[C]) { - E = l(v, v[C], w[C]); - } else if (m(x, C)) { - let F = k(C, x[C]); - E = l(v, v[C], F) - } else { - E = E.bind(v); - } - } else if ("object" == typeof E && null !== E && (m(w, C) || m(x, C))) { - E = n(E, w[C], x[C]); - } else { - return Object.defineProperty(y, C, { - configurable: !0, - enumerable: !0, - get() { - return v[C] - }, - set(F) { - v[C] = F - } - }), E; - } - return y[C] = E, E - } - }, - set(B, C, D) { - return C in y ? y[C] = D : v[C] = D, !0 - }, - defineProperty(B, C, D) { - return Reflect.defineProperty(y, C, D) - }, - deleteProperty(B, C) { - return Reflect.deleteProperty(y, C) + set(F) { + v[C] = F } - }; - let A = Object.create(v); - return new Proxy(A, z) - }; - const o = v => ({ - addListener(w, x, ...y) { - w.addListener(v.get(x), ...y) - }, - hasListener(w, x) { - return w.hasListener(v.get(x)) - }, - removeListener(w, x) { - w.removeListener(v.get(x)) - } - }); - let p = !1; - const q = new g(v => { - return "function" == typeof v ? function(x, y, z) { - let B; - let D; - let A = !1; - let C = new Promise(G => { - B = function(H) { - p || (console.warn("Returning a Promise is the preferred way to send a reply from an onMessage/onMessageExternal listener, as the sendResponse will be removed from the specs (See https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage)", new Error().stack), p = !0), A = !0, G(H) - } - }); - try { - D = v(x, y, B) - } catch (G) { - D = Promise.reject(G) - } - const E = !0 !== D && h(D); - if (!0 !== D && !E && !A) { - return !1; - } - const F = G => { - G.then(H => { - z(H) - }, H => { - let I; - I = H && (H instanceof Error || "string" == typeof H.message) ? H.message : "An unexpected error occurred", z({ - __mozWebExtensionPolyfillReject__: !0, - message: I - }) - }).catch(H => { - console.error("Failed to send onMessage rejected reply", H) - }) - }; - return E ? F(D) : F(C), !0 - } : v - }); - const r = ({ - reject: v, - resolve: w - }, x) => { - e.runtime.lastError ? e.runtime.lastError.message === "The message port closed before a response was received." ? w() : v(e.runtime.lastError) : x && x.__mozWebExtensionPolyfillReject__ ? v(new Error(x.message)) : w(x) - }; - const s = (v, w, x, ...y) => { - if (y.length < w.minArgs) { - throw new Error(`Expected at least ${w.minArgs} ${j(w.minArgs)} for ${v}(), got ${y.length}`); - } - if (y.length > w.maxArgs) { - throw new Error(`Expected at most ${w.maxArgs} ${j(w.maxArgs)} for ${v}(), got ${y.length}`); - } - return new Promise((z, A) => { - const B = r.bind(null, { - resolve: z, - reject: A - }); - y.push(B), x.sendMessage(...y) - }) - }; - const t = { - runtime: { - onMessage: o(q), - onMessageExternal: o(q), - sendMessage: s.bind(null, "sendMessage", { - minArgs: 1, - maxArgs: 3 - }) - }, - tabs: { - sendMessage: s.bind(null, "sendMessage", { - minArgs: 2, - maxArgs: 3 - }) - } - }; - const u = { - clear: { - minArgs: 1, - maxArgs: 1 - }, - get: { - minArgs: 1, - maxArgs: 1 - }, - set: { - minArgs: 1, - maxArgs: 1 - } - }; - return f.privacy = { - network: { - networkPredictionEnabled: u, - webRTCIPHandlingPolicy: u - }, - services: { - passwordSavingEnabled: u - }, - websites: { - hyperlinkAuditingEnabled: u, - referrersEnabled: u - } - }, n(e, t, f) - })(chrome) - } else { - a.exports = browser - } + }), E; + } + return y[C] = E, E + } + }, + set(B, C, D) { + return C in y ? y[C] = D : v[C] = D, !0 + }, + defineProperty(B, C, D) { + return Reflect.defineProperty(y, C, D) + }, + deleteProperty(B, C) { + return Reflect.deleteProperty(y, C) + } + }; + let A = Object.create(v); + return new Proxy(A, z) + }; + const o = v => ({ + addListener(w, x, ...y) { + w.addListener(v.get(x), ...y) + }, + hasListener(w, x) { + return w.hasListener(v.get(x)) + }, + removeListener(w, x) { + w.removeListener(v.get(x)) + } + }); + let p = !1; + const q = new g(v => { + return "function" == typeof v ? function(x, y, z) { + let B; + let D; + let A = !1; + let C = new Promise(G => { + B = function(H) { + p || (console.warn("Returning a Promise is the preferred way to send a reply from an onMessage/onMessageExternal listener, as the sendResponse will be removed from the specs (See https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage)", new Error().stack), p = !0), A = !0, G(H) + } + }); + try { + D = v(x, y, B) + } catch ( G ) { + D = Promise.reject(G) + } + const E = !0 !== D && h(D); + if (!0 !== D && !E && !A) { + return !1; + } + const F = G => { + G.then(H => { + z(H) + }, H => { + let I; + I = H && (H instanceof Error || "string" == typeof H.message) ? H.message : "An unexpected error occurred", z({ + __mozWebExtensionPolyfillReject__: !0, + message: I + }) + }).catch(H => { + console.error("Failed to send onMessage rejected reply", H) + }) + }; + return E ? F(D) : F(C), !0 + } : v + }); + const r = ({reject: v, resolve: w} , x) => { + e.runtime.lastError ? e.runtime.lastError.message === "The message port closed before a response was received." ? w() : v(e.runtime.lastError) : x && x.__mozWebExtensionPolyfillReject__ ? v(new Error(x.message)) : w(x) + }; + const s = (v, w, x, ...y) => { + if (y.length < w.minArgs) { + throw new Error(`Expected at least ${w.minArgs} ${j(w.minArgs)} for ${v}(), got ${y.length}`); + } + if (y.length > w.maxArgs) { + throw new Error(`Expected at most ${w.maxArgs} ${j(w.maxArgs)} for ${v}(), got ${y.length}`); + } + return new Promise((z, A) => { + const B = r.bind(null, { + resolve: z, + reject: A + }); + y.push(B), x.sendMessage(...y) + }) + }; + const t = { + runtime: { + onMessage: o(q), + onMessageExternal: o(q), + sendMessage: s.bind(null, "sendMessage", { + minArgs: 1, + maxArgs: 3 + }) + }, + tabs: { + sendMessage: s.bind(null, "sendMessage", { + minArgs: 2, + maxArgs: 3 + }) + } + }; + const u = { + clear: { + minArgs: 1, + maxArgs: 1 + }, + get: { + minArgs: 1, + maxArgs: 1 + }, + set: { + minArgs: 1, + maxArgs: 1 + } + }; + return f.privacy = { + network: { + networkPredictionEnabled: u, + webRTCIPHandlingPolicy: u + }, + services: { + passwordSavingEnabled: u + }, + websites: { + hyperlinkAuditingEnabled: u, + referrersEnabled: u + } + }, n(e, t, f) + })(chrome) + } else { + a.exports = browser + } }); //# sourceMappingURL=browser-polyfill.min.js.map diff --git a/manifest.json b/manifest.json index d717c1e..ea9252e 100644 --- a/manifest.json +++ b/manifest.json @@ -37,7 +37,7 @@ "page": "options/options.html" }, "background": { - "scripts": ["chromium/browser-polyfill.min.js", "background.js", "proxy.js", "info.js", "privacy.js", "scrub.js" ] + "scripts": ["chromium/browser-polyfill.min.js", "platform.js", "background.js", "proxy.js", "info.js", "privacy.js", "scrub.js" ] }, "protocol_handlers": [{ "protocol": "web+rc", diff --git a/proxy.js b/proxy.js index 8cbe9ef..4db322b 100644 --- a/proxy.js +++ b/proxy.js @@ -1,118 +1,89 @@ -function getChrome() { - if (browser.runtime.getBrowserInfo == undefined) { - return true - } - return false -} - -function isDroid() { - if (!getChrome()) { - var gettingInfo = browser.runtime.getPlatformInfo(); - gettingInfo.then((got) => { - if (got.os == "android") { - console.log("android detected") - return true - } else { - console.log("desktop detected") - return false - } - }); - } - return false -} if (!getChrome()) { - browser.privacy.network.peerConnectionEnabled.set({ - value: false - }); + browser.privacy.network.peerConnectionEnabled.set({ + value: false + }); + console.log("Preliminarily disabled WebRTC.") } chrome.privacy.network.networkPredictionEnabled.set({ - value: false + value: false }); chrome.privacy.network.webRTCIPHandlingPolicy.set({ - value: "disable_non_proxied_udp" + value: "disable_non_proxied_udp" }); -console.log("Preliminarily disabled WebRTC.") - function shouldProxyRequest(requestInfo) { - return requestInfo.parentFrameId != -1; -} - - - -var onError = function(e) { - console.error(e); + return requestInfo.parentFrameId != -1; } var handleContextProxyRequest = async function(requestDetails) { - console.log("(proxy)Searching for proxy by context"); - try { - var handleProxyRequest = function(context) { - proxy = { - failoverTimeout: 0, - type: "direct", - proxyDns: false - } - if (context.name == "i2pbrowser") { - proxy = { - type: getScheme(), - host: getHost(), - port: getPort(), - } - console.log("(proxy)Using", proxy.type, "proxy ", proxy.host + ":" + proxy.port); - return proxy - } - return proxy + console.log("(proxy)Searching for proxy by context"); + try { + var handleProxyRequest = function(context) { + proxy = { + failoverTimeout: 0, + type: "direct", + proxyDns: false + } + if (context.name == "i2pbrowser") { + proxy = { + type: getScheme(), + host: getHost(), + port: getPort(), } - var contextGet = async function(tabInfo){ - try { - console.log("(proxy)Tab info from Function", tabInfo) - context = await browser.contextualIdentities.get(tabInfo.cookieStoreId) - return context - } catch(error) { - console.log("(proxy)Conext Error", error) - } - } - var tabGet = async function(tabId) { - try { - console.log("(proxy)Tab ID from Request", tabId) - let tabInfo = await browser.tabs.get(tabId) - return tabInfo - }catch(error){ - console.log("(proxy)Tab error", error) - } - } - if (requestDetails.tabId > 0) { - var tab = tabGet(requestDetails.tabId) - var context = tab.then(contextGet) - var proxy = await context.then(handleProxyRequest) - console.log("(proxy)Returning I2P Proxy", proxy) - return proxy - } - } catch (error) { - console.log("(proxy)Not using I2P Proxy.", error); + console.log("(proxy)Using", proxy.type, "proxy ", proxy.host + ":" + proxy.port); + return proxy + } + return proxy } + var contextGet = async function(tabInfo) { + try { + console.log("(proxy)Tab info from Function", tabInfo) + context = await browser.contextualIdentities.get(tabInfo.cookieStoreId) + return context + } catch ( error ) { + console.log("(proxy)Conext Error", error) + } + } + var tabGet = async function(tabId) { + try { + console.log("(proxy)Tab ID from Request", tabId) + let tabInfo = await browser.tabs.get(tabId) + return tabInfo + } catch ( error ) { + console.log("(proxy)Tab error", error) + } + } + if (requestDetails.tabId > 0) { + var tab = tabGet(requestDetails.tabId) + var context = tab.then(contextGet) + var proxy = await context.then(handleProxyRequest) + console.log("(proxy)Returning I2P Proxy", proxy) + return proxy + } + } catch ( error ) { + console.log("(proxy)Not using I2P Proxy.", error); + } } var proxy_scheme = "HTTP" function getScheme() { - if (proxy_scheme == undefined) { - proxy_scheme = "http" - } - if (proxy_scheme == "HTTP") { - proxy_scheme = "http" - } - if (proxy_scheme == "SOCKS") { - proxy_scheme = "socks" - } - if (proxy_scheme != "http" && proxy_scheme != "socks") { - proxy_scheme = "http" - } - //console.log("Got i2p proxy scheme:", proxy_scheme); - return proxy_scheme; + if (proxy_scheme == undefined) { + proxy_scheme = "http" + } + if (proxy_scheme == "HTTP") { + proxy_scheme = "http" + } + if (proxy_scheme == "SOCKS") { + proxy_scheme = "socks" + } + if (proxy_scheme != "http" && proxy_scheme != "socks") { + proxy_scheme = "http" + } + //console.log("Got i2p proxy scheme:", proxy_scheme); + return proxy_scheme; } var proxy_host = "127.0.0.1" @@ -121,112 +92,112 @@ var control_host = "127.0.0.1" var control_port = "4444" function getHost() { - if (proxy_host == undefined) { - proxy_host = "127.0.0.1" - } - return proxy_host; + if (proxy_host == undefined) { + proxy_host = "127.0.0.1" + } + return proxy_host; } function getPort() { - if (proxy_port == undefined) { - var scheme = getScheme() - if (scheme == "socks") { - proxy_port = "4446" - } else { - proxy_port = "4444" - } + if (proxy_port == undefined) { + var scheme = getScheme() + if (scheme == "socks") { + proxy_port = "4446" + } else { + proxy_port = "4444" } - return proxy_port; + } + return proxy_port; } function getControlHost() { - if (control_host == undefined) { - return "127.0.0.1" - } - return control_host; + if (control_host == undefined) { + return "127.0.0.1" + } + return control_host; } function getControlPort() { - if (control_port == undefined) { - return "4444" - } - return control_port; + if (control_port == undefined) { + return "4444" + } + return control_port; } function setupProxy() { - var controlHost = getControlHost() - var controlPort = getControlPort(); - var Host = getHost() - var Port = getPort() - var Scheme = getScheme() - if (!getChrome()) { - /**/ - console.log("Setting up Firefox WebExtension proxy") - browser.proxy.onRequest.addListener(handleContextProxyRequest, { - urls: [""] - }); - console.log("i2p settings created for WebExtension Proxy") - /**/ - } else { - var config = { - mode: "fixed_servers", - rules: { - singleProxy: { - scheme: Scheme, - host: Host, - port: parseInt(Port), - }, - } - }; - chrome.proxy.settings.set({ - value: config, - scope: 'regular' - }, function() {}); - } + var controlHost = getControlHost() + var controlPort = getControlPort(); + var Host = getHost() + var Port = getPort() + var Scheme = getScheme() + if (!getChrome()) { + /**/ + console.log("Setting up Firefox WebExtension proxy") + browser.proxy.onRequest.addListener(handleContextProxyRequest, { + urls: [""] + }); + console.log("i2p settings created for WebExtension Proxy") + /**/ + } else { + var config = { + mode: "fixed_servers", + rules: { + singleProxy: { + scheme: Scheme, + host: Host, + port: parseInt(Port), + }, + } + }; + chrome.proxy.settings.set({ + value: config, + scope: 'regular' + }, function() {}); + } } function checkStoredSettings(storedSettings) { - let defaultSettings = {}; - if (!storedSettings.proxy_scheme) { - defaultSettings["proxy_scheme"] = "http" - } - if (!storedSettings.proxy_host) { - defaultSettings["proxy_host"] = "127.0.0.1" - } - if (!storedSettings.proxy_port) { - defaultSettings["proxy_port"] = 4444 - } - if (!storedSettings.control_host) { - defaultSettings["control_host"] = "127.0.0.1" - } - if (!storedSettings.control_port) { - defaultSettings["control_port"] = 4444 - } - chrome.storage.local.set(defaultSettings); + let defaultSettings = {}; + if (!storedSettings.proxy_scheme) { + defaultSettings["proxy_scheme"] = "http" + } + if (!storedSettings.proxy_host) { + defaultSettings["proxy_host"] = "127.0.0.1" + } + if (!storedSettings.proxy_port) { + defaultSettings["proxy_port"] = 4444 + } + if (!storedSettings.control_host) { + defaultSettings["control_host"] = "127.0.0.1" + } + if (!storedSettings.control_port) { + defaultSettings["control_port"] = 4444 + } + chrome.storage.local.set(defaultSettings); } function update(restoredSettings) { - proxy_scheme = restoredSettings.proxy_scheme - console.log("restoring proxy scheme:", proxy_scheme) - proxy_host = restoredSettings.proxy_host - console.log("restoring proxy host:", proxy_host) - proxy_port = restoredSettings.proxy_port - console.log("restoring proxy port:", proxy_port) - control_host = restoredSettings.control_host - console.log("restoring control host:", control_host) - control_port = restoredSettings.control_port - console.log("restoring control port:", control_port) + proxy_scheme = restoredSettings.proxy_scheme + console.log("restoring proxy scheme:", proxy_scheme) + proxy_host = restoredSettings.proxy_host + console.log("restoring proxy host:", proxy_host) + proxy_port = restoredSettings.proxy_port + console.log("restoring proxy port:", proxy_port) + control_host = restoredSettings.control_host + console.log("restoring control host:", control_host) + control_port = restoredSettings.control_port + console.log("restoring control port:", control_port) } chrome.storage.local.get(function(got) { - checkStoredSettings(got) - update(got) - setupProxy() + checkStoredSettings(got) + update(got) + setupProxy() }); // Theme all currently open windows if (!getChrome()) { - if (!isDroid()) { - browser.windows.getAll().then(wins => wins.forEach(themeWindow)); - } + if (!isDroid()) { + browser.windows.getAll().then(wins => wins.forEach(themeWindow)); + } }