From 0067ca51e0e14deee16c1fd584f320c3d9d1e79e Mon Sep 17 00:00:00 2001 From: Ross Singer Date: Thu, 8 Mar 2018 23:14:19 -0500 Subject: [PATCH] Refactor to properly inject through messages --- Gruntfile.js | 9 +- background.html | 1 - images/icon176.png | Bin 0 -> 13579 bytes js/background.js | 18 +- js/bookmarker.js | 36 +- js/ms/README.md | 6 - js/ms/backgroundScriptsAPIBridge.js | 1044 --------------------------- js/ms/contentScriptsAPIBridge.js | 472 ------------ js/options.js | 2 +- manifest.json | 9 +- package.json | 2 +- 11 files changed, 43 insertions(+), 1556 deletions(-) create mode 100644 images/icon176.png delete mode 100644 js/ms/README.md delete mode 100644 js/ms/backgroundScriptsAPIBridge.js delete mode 100644 js/ms/contentScriptsAPIBridge.js diff --git a/Gruntfile.js b/Gruntfile.js index a761cce..584e2a6 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -68,11 +68,12 @@ module.exports = function(grunt) { {"sizes":"16x16", "src": "images/icon16.png"}, {"sizes": "30x30", "src": "images/icon30.png"}, {"sizes": "50x50", "src": "images/icon50.png"}, - {"sizes":"120x120", "src": "images/icon120.png"} + {"sizes":"120x120", "src": "images/icon120.png"}, + {"sizes":"176x176", "src": "images/icon176.png"}, ]; - } else { - delete(manifest['-ms-preload']); - } + manifest.start_url = ''; + manifest.scope = '/'; + } grunt.file.write(grunt.config('distdir') + '/manifest.json', JSON.stringify(manifest, null, 2)); }); grunt.registerTask( diff --git a/background.html b/background.html index 8d4234f..827bee5 100644 --- a/background.html +++ b/background.html @@ -1,6 +1,5 @@ - \ No newline at end of file diff --git a/images/icon176.png b/images/icon176.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3fa1a9bad356aad66994e675c76d219a1d9e7f GIT binary patch literal 13579 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 this.compareBoundaryPoints(Range.END_TO_START, range) - && 0 < this.compareBoundaryPoints(Range.START_TO_END, range); - }; -} -if (!Navigator.prototype["languages"]) { - Navigator.prototype["languages"] = [navigator.language]; -} -var getExtensionProtocol = function () { - if (typeof browser == "undefined") { - if (typeof chrome !== "undefined") - return "chrome-extension://"; - } - else { - return "ms-browser-extension://"; - } -}; -class BridgeAlarmEvent { - constructor() { - this.listeners = new Array(); - } - addListener(callback) { - this.listeners.push(callback); - } - addRules(rules, callback) { } - getRules(ruleIdentifiers, callback) { } - hasListener(callback) { return false; } - hasListeners() { return this.listeners.length > 0; } - removeRules(ruleIdentifiers, callback) { } - removeListener(callback) { } -} -class EdgeBridgeAlarms { - constructor() { - this.alarms = {}; - this.onAlarm = new BridgeAlarmEvent(); - } - create(name, alarmInfo) { - if (arguments.length < 1 || arguments.length > 2) { - throw "Unexpected set of arguments. Expecting (alarmInfo) or (name, alarmInfo)"; - } - var alarmName = ""; - var startMilliseconds = 0; - var startSet = false; - if (typeof name === "string") { - alarmName = name; - } - else if (typeof name === "object") { - alarmInfo = name; - } - else - throw "Unexpected set of arguments. Expecting (alarmInfo) or (name, alarmInfo)"; - if (!alarmInfo) { - throw "You must specify an alarmInfo argument!!"; - } - if (!alarmInfo.when && !alarmInfo.delayInMinutes && !alarmInfo.periodInMinutes) { - throw "Invalid alarmInfo argument!!"; - } - else if (alarmInfo.when && alarmInfo.delayInMinutes) { - throw "Invalid alarmInfo argument!! Either 'when' or 'delayInMinutes' but not both!!"; - } - else if (alarmInfo.when) { - startMilliseconds = alarmInfo.when; - startSet = true; - } - else if (alarmInfo.delayInMinutes) { - startMilliseconds = alarmInfo.delayInMinutes * 60 * 1000; - startSet = true; - } - else if (alarmInfo.periodInMinutes) { - startMilliseconds = alarmInfo.periodInMinutes * 60 * 1000; - startSet = true; - } - else - throw "Invalid alarmInfo argument!!"; - var timerHandle; - if (startSet) { - if (this.alarms[alarmName]) { - this.clearAlarm(alarmName); - } - var alarm = { name: alarmName, scheduledTime: Date.now() + startMilliseconds }; - var alarmAndHandle = { alarm: alarm, timerHandle: 0, startedInterval: false }; - this.alarms[alarmName] = alarmAndHandle; - if (alarmInfo.periodInMinutes) { - this.alarms[alarmName].alarm.periodInMinutes = alarmInfo.periodInMinutes; - this.alarms[alarmName].timerHandle = window.setTimeout(function (alarmName, that) { - that.soundAlarm(alarmName, that); - that.alarms[alarmName].timerHandle = window.setInterval(that.soundAlarm, alarmInfo.periodInMinutes * 60 * 1000, alarmName, that); - that.alarms[alarmName].startedInterval = true; - }, startMilliseconds, alarmName, this); - } - else { - this.alarms[alarmName].timerHandle = window.setTimeout(this.soundAlarm, startMilliseconds, alarmName, this); - } - } - } - getAll(callback) { - for (var key in this.alarms) { - if (this.alarms.hasOwnProperty(key)) { - var alarm = this.alarms[key].alarm; - callback(alarm); - } - } - } - clearAll(callback) { - var clearedAll = true; - for (var key in this.alarms) { - if (this.alarms.hasOwnProperty(key)) { - var alarm = this.alarms[key].alarm; - if (!this.clearAlarm(alarm.name)) { - clearedAll = false; - } - } - } - if (callback) { - callback(clearedAll); - } - } - clear(name, callback) { - var alarmName = ""; - if (typeof name === "string") { - alarmName = name; - } - else if (typeof name === "function") { - callback = name; - } - var wasCleared = this.clearAlarm(alarmName); - if (callback) { - callback(wasCleared); - } - } - get(name, callback) { - if (this.alarms.hasOwnProperty(name)) { - var alarm = this.alarms[name].alarm; - callback(alarm); - } - } - clearAlarm(name) { - var wasCleared = false; - if (this.alarms[name]) { - if (this.alarms[name].alarm.startedInterval) { - window.clearInterval(this.alarms[name].timerHandle); - } - else { - window.clearTimeout(this.alarms[name].timerHandle); - } - delete this.alarms[name]; - wasCleared = true; - } - return wasCleared; - } - soundAlarm(name, that) { - for (var index = 0; index < that.onAlarm.listeners.length; index++) { - var listener = that.onAlarm.listeners[index]; - listener({ name: name }); - } - } -} -class FakeEvent { - addListener(callback) { } - addRules(rules, callback) { } - getRules(ruleIdentifiers, callback) { } - hasListener(callback) { return false; } - hasListeners() { return false; } - removeRules(ruleIdentifiers, callback) { } - removeListener(callback) { } -} -class EdgeBridgeHelper { - constructor() { - this.fakeEvent = new FakeEvent(); - this.alarms = new EdgeBridgeAlarms(); - } - toAbsolutePath(relativePath) { - if (relativePath.indexOf("ms-browser-extension://") == 0) { - return relativePath.replace(myBrowser.runtime.getURL(""), ""); - } - else if (relativePath.indexOf("/") != 0) { - var absolutePath = ""; - var documentPath = document.location.pathname; - absolutePath = documentPath.substring(0, documentPath.lastIndexOf("/") + 1); - absolutePath += relativePath; - return absolutePath; - } - return relativePath; - } -} -var bridgeHelper = new EdgeBridgeHelper(); -class EdgeBridgeDebugLog { - constructor() { - this.CatchOnException = true; - this.VerboseLogging = true; - this.FailedCalls = {}; - this.SuccededCalls = {}; - this.DeprecatedCalls = {}; - this.BridgedCalls = {}; - this.UnavailableApis = {}; - this.EdgeIssues = {}; - } - log(message) { - try { - if (this.VerboseLogging) { - console.log(message); - } - } - catch (e) { - } - } - info(message) { - try { - if (this.VerboseLogging) { - console.info(message); - } - } - catch (e) { - } - } - warn(message) { - try { - if (this.VerboseLogging) { - console.warn(message); - } - } - catch (e) { - } - } - error(message) { - try { - if (this.VerboseLogging) { - console.error(message); - } - } - catch (e) { - } - } - DoActionAndLog(action, name, deprecatedTo, bridgedTo) { - var result; - try { - result = action(); - this.AddToCalledDictionary(this.SuccededCalls, name); - if (typeof deprecatedTo !== "undefined") { - this.warn("API Call Deprecated - Name: " + name + ", Please use " + deprecatedTo + " instead!"); - this.AddToCalledDictionary(this.DeprecatedCalls, name); - } - if (typeof bridgedTo !== "undefined") { - this.info("API Call '" + name + "' has been bridged to another Edge API: " + bridgedTo); - this.AddToCalledDictionary(this.BridgedCalls, name); - } - this.info("API Call: '" + name + "'"); - return result; - } - catch (ex) { - this.AddToCalledDictionary(this.FailedCalls, name); - if (this.CatchOnException) - this.error("API Call Failed: " + name + " - " + ex); - else - throw ex; - } - } - LogEdgeIssue(name, message) { - this.warn(message); - this.AddToCalledDictionary(this.EdgeIssues, name); - } - LogUnavailbleApi(name, deprecatedTo) { - this.warn("API Call '" + name + "' is not supported in Edge"); - this.AddToCalledDictionary(this.UnavailableApis, name); - if (typeof deprecatedTo !== "undefined") { - this.warn("API Call Deprecated - Name: " + name + ", Please use " + deprecatedTo + " instead!"); - this.AddToCalledDictionary(this.DeprecatedCalls, name); - } - } - AddToCalledDictionary(dictionary, name) { - if (typeof dictionary[name] !== "undefined") { - dictionary[name]++; - } - else { - dictionary[name] = 1; - } - } -} -var bridgeLog = new EdgeBridgeDebugLog(); -class EdgeChromeAlarmBridge { - get onAlarm() { - return bridgeLog.DoActionAndLog(() => { - return bridgeHelper.alarms.onAlarm; - }, "alarms.onAlarm", undefined, "bridgeHelper.alarms.onAlarm"); - } - create(name, alarmInfo) { - bridgeLog.DoActionAndLog(() => { - bridgeHelper.alarms.create.apply(null, arguments); - }, "alarms.create", undefined, "bridgeHelper.alarms.create"); - } - getAll(callback) { - bridgeLog.DoActionAndLog(() => { - bridgeHelper.alarms.getAll.apply(null, arguments); - }, "alarms.getAll", undefined, "bridgeHelper.alarms.getAll"); - } - clearAll(callback) { - bridgeLog.DoActionAndLog(() => { - bridgeHelper.alarms.clearAll.apply(null, arguments); - }, "alarms.clearAll", undefined, "bridgeHelper.alarms.clearAll"); - } - clear(name, callback) { - bridgeLog.DoActionAndLog(() => { - bridgeHelper.alarms.clear.apply(null, arguments); - }, "alarms.clear", undefined, "bridgeHelper.alarms.clear"); - } - get(name, callback) { - bridgeLog.DoActionAndLog(() => { - bridgeHelper.alarms.get.apply(null, arguments); - }, "alarms.get", undefined, "bridgeHelper.alarms.get"); - } -} -class EdgeChromeAppBridge { - getDetails() { - return bridgeLog.DoActionAndLog(() => { - return EdgeChromeRuntimeBridge.prototype.getManifest.apply(null, arguments); - }, "app.getManifest", undefined, "runtime.getManifest"); - } - get isInstalled() { return bridgeLog.DoActionAndLog(() => { throw "app.isInstalled is not available in Edge"; }, "app.isInstalled"); } - getIsInstalled() { return bridgeLog.DoActionAndLog(() => { throw "app.getIsInstalled is not available in the Edge"; }, "app.getIsInstalled"); } - installState() { return bridgeLog.DoActionAndLog(() => { throw "app.installState is not available in Edge"; }, "app.installState"); } - runningState() { return bridgeLog.DoActionAndLog(() => { throw "app.runningState is not available in Edge"; }, "app.runningState"); } -} -class EdgeBookmarksBridge { - create(bookmark, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.bookmarks.create.apply(null, arguments); - }, "bookmarks.create"); - } - getTree(callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.bookmarks.getTree.apply(null, arguments); - }, "bookmarks.getTree"); - } - move(id, destination, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.bookmarks.move.apply(null, arguments); - }, "bookmarks.move"); - } - remove(id, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.bookmarks.remove.apply(null, arguments); - }, "bookmarks.remove"); - } - removeTree(id, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.bookmarks.removeTree.apply(null, arguments); - }, "bookmarks.removeTree"); - } - update(id, changes, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.bookmarks.update.apply(null, arguments); - }, "bookmarks.update"); - } -} -class EdgeChromeBookmarksBridge extends EdgeBookmarksBridge { - get onRemoved() { bridgeLog.LogUnavailbleApi("bookmarks.onRemoved"); return bridgeHelper.fakeEvent; } - get onImportEnded() { bridgeLog.LogUnavailbleApi("bookmarks.onImportEnded"); return bridgeHelper.fakeEvent; } - get onImportBegan() { bridgeLog.LogUnavailbleApi("bookmarks.onImportBegan"); return bridgeHelper.fakeEvent; } - get onChanged() { bridgeLog.LogUnavailbleApi("bookmarks.onChanged"); return bridgeHelper.fakeEvent; } - get onMoved() { bridgeLog.LogUnavailbleApi("bookmarks.onMoved"); return bridgeHelper.fakeEvent; } - get onCreated() { bridgeLog.LogUnavailbleApi("bookmarks.onCreated"); return bridgeHelper.fakeEvent; } - get onChildrenReordered() { bridgeLog.LogUnavailbleApi("bookmarks.onChildrenReordered"); return bridgeHelper.fakeEvent; } - getRecent(numberOfItems, callback) { - bridgeLog.LogUnavailbleApi("bookmarks.getRecent"); - } - get(idList, callback) { - bridgeLog.LogUnavailbleApi("bookmarks.get"); - } - getChildren(id, callback) { - bridgeLog.LogUnavailbleApi("bookmarks.getChildren"); - } - getSubTree(id, callback) { - bridgeLog.LogUnavailbleApi("bookmarks.getSubTree"); - } - search(query, callback) { - bridgeLog.LogUnavailbleApi("bookmarks.search"); - } -} -class EdgeBrowserActionBridge { - get onClicked() { return bridgeLog.DoActionAndLog(() => { return myBrowser.browserAction.onClicked; }, "browserAction.onClicked"); } - disable(tabId) { - bridgeLog.DoActionAndLog(() => { - myBrowser.browserAction.disable.apply(null, arguments); - }, "browserAction.disable"); - } - enable(tabId) { - bridgeLog.DoActionAndLog(() => { - myBrowser.browserAction.enable.apply(null, arguments); - }, "browserAction.Enable"); - } - getBadgeBackgroundColor(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.browserAction.getBadgeBackgroundColor.apply(null, arguments); - }, "browserAction.getBadgeBackgroundColor"); - } - getBadgeText(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.browserAction.getBadgeText.apply(null, arguments); - ; - }, "browserAction.getBadgeText"); - } - getPopup(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.browserAction.getPopup.apply(null, arguments); - }, "browserAction.getPopup"); - } - getTitle(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.browserAction.getTitle.apply(null, arguments); - }, "browserAction.getTitle"); - } - setBadgeBackgroundColor(details) { - bridgeLog.DoActionAndLog(() => { - myBrowser.browserAction.setBadgeBackgroundColor.apply(null, arguments); - }, "browserAction.setBadgeBackgroundColor"); - } - setBadgeText(details) { - bridgeLog.DoActionAndLog(() => { - myBrowser.browserAction.setBadgeText.apply(null, arguments); - }, "browserAction.setBadgeText"); - } - setIcon(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.browserAction.setIcon.apply(null, arguments); - }, "browserAction.setIcon"); - } - setPopup(details) { - bridgeLog.DoActionAndLog(() => { - myBrowser.browserAction.setPopup.apply(null, arguments); - }, "browserAction.setPopup"); - } - setTitle(details) { - bridgeLog.DoActionAndLog(() => { - myBrowser.browserAction.setTitle.apply(null, arguments); - }, "browserAction.setTitle"); - } -} -class EdgeChromeBrowserActionBridge extends EdgeBrowserActionBridge { - getPopup(details, callback) { - if (myBrowser.browserAction.getPopup) { - EdgeBrowserActionBridge.prototype.getPopup.apply(null, arguments); - } - else { - bridgeLog.LogUnavailbleApi("browserAction.getPopup"); - } - } - getTitle(details, callback) { - if (myBrowser.browserAction.getTitle) { - EdgeBrowserActionBridge.prototype.getTitle.apply(null, arguments); - } - else { - bridgeLog.LogUnavailbleApi("browserAction.getTitle"); - } - } - setTitle(details) { - if (myBrowser.browserAction.setTitle) { - EdgeBrowserActionBridge.prototype.setTitle.apply(null, arguments); - } - else { - bridgeLog.LogUnavailbleApi("browserAction.setTitle"); - } - } -} -class EdgeChromeCommandsBridge { - get onCommand() { bridgeLog.LogUnavailbleApi("commands.onCommand"); return bridgeHelper.fakeEvent; } - getAll(callback) { - bridgeLog.LogUnavailbleApi("commands.getAll"); - } -} -class EdgeContextMenusBridge { - get ACTION_MENU_TOP_LEVEL_LIMIT() { return bridgeLog.DoActionAndLog(() => { return myBrowser.contextMenus.ACTION_MENU_TOP_LEVEL_LIMIT; }, "contextMenus.ACTION_MENU_TOP_LEVEL_LIMIT"); } - get onClicked() { return bridgeLog.DoActionAndLog(() => { return myBrowser.contextMenus.onClicked; }, "contextMenus.onClicked"); } - create(createProperties, callback) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.contextMenus.create.apply(null, arguments); - }, "contextMenus.create"); - } - remove(menuItemId, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.contextMenus.remove.apply(null, arguments); - }, "contextMenus.remove"); - } - removeAll(callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.contextMenus.removeAll.apply(null, arguments); - }, "contextMenus.removeAll"); - } - update(id, updateProperties, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.contextMenus.update.apply(null, arguments); - }, "contextMenus.update"); - } -} -class EdgeCookiesBridge { - get(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.cookies.get.apply(null, arguments); - }, "cookies.get"); - } - getAll(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.cookies.getAll.apply(null, arguments); - }, "cookies.getAll"); - } - remove(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.cookies.remove.apply(null, arguments); - }, "cookies.remove"); - } - set(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.cookies.set.apply(null, arguments); - }, "cookies.set"); - } -} -class EdgeChromeCookiesBridge extends EdgeCookiesBridge { - get onChanged() { bridgeLog.LogUnavailbleApi("cookies.onChanged"); return bridgeHelper.fakeEvent; } -} -class EdgeExtensionBridge { - getBackgroundPage() { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.extension.getBackgroundPage.apply(null, arguments); - }, "extension.getBackgroundPage"); - } - getURL(path) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.extension.getURL.apply(null, arguments); - }, "extension.getURL"); - } - getViews(fetchProperties) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.extension.getViews.apply(null, arguments); - }, "extension.getViews"); - } -} -class EdgeChromeExtensionBridge extends EdgeExtensionBridge { - get onConnect() { return bridgeLog.DoActionAndLog(() => { return EdgeRuntimeBridge.prototype.onConnect; }, "extension.onConnect", "runtime.onConnect", "runtime.onConnect"); } - get onMessage() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessage; }, "extension.onMessage", "runtime.onMessage", "runtime.onMessage"); } - get onRequest() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessage; }, "extension.onRequest", "runtime.onMessage", "runtime.onMessage"); } - get onRequestExternal() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessageExternal; }, "extension.onRequestExternal", "runtime.onMessageExternal", "runtime.onMessageExternal"); } - get inIncognitoContext() { return bridgeLog.DoActionAndLog(() => { return myBrowser.extension["inPrivateContext"]; }, "extension.inIncognitoContext", undefined, "extension.inPrivateContext"); } - get lastError() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.lastError; }, "extension.lastError", undefined, "runtime.lastError"); } - connect(extensionId, connectInfo) { - return bridgeLog.DoActionAndLog(() => { - return EdgeRuntimeBridge.prototype.connect.apply(null, arguments); - }, "extension.connect", "runtime.connect", "runtime.connect"); - } - sendMessage(message, responseCallback) { - return bridgeLog.DoActionAndLog(() => { - return EdgeRuntimeBridge.prototype.sendMessage.apply(null, arguments); - }, "extension.sendMessage", "runtime.sendMessage", "runtime.sendMessage"); - } - sendRequest(extensionId, message, options, responseCallback) { - return bridgeLog.DoActionAndLog(() => { - return EdgeRuntimeBridge.prototype.sendMessage.apply(null, arguments); - }, "extension.sendRequest", "runtime.sendMessage", "runtime.sendMessage"); - } - isAllowedFileSchemeAccess(callback) { - bridgeLog.LogUnavailbleApi("extension.isAllowedFileSchemeAccess"); - } - isAllowedIncognitoAccess(callback) { - bridgeLog.LogUnavailbleApi("extension.isAllowedIncognitoAccess"); - } - setUpdateUrlData(data) { - bridgeLog.LogUnavailbleApi("extension.setUpdateUrlData"); - } -} -class EdgeHistoryBridge { - get onVisited() { bridgeLog.LogUnavailbleApi("history.onVisited"); return bridgeHelper.fakeEvent; } - get onVisitRemoved() { bridgeLog.LogUnavailbleApi("history.onVisitRemoved"); return bridgeHelper.fakeEvent; } - addUrl(details, callback) { - bridgeLog.LogUnavailbleApi("history.addUrl"); - } - deleteAll(callback) { - bridgeLog.LogUnavailbleApi("history.deleteAll"); - } - deleteRange(range, callback) { - bridgeLog.LogUnavailbleApi("history.deleteRange"); - } - deleteUrl(details, callback) { - bridgeLog.LogUnavailbleApi("history.deleteUrl"); - } - getVisits(details, callback) { - bridgeLog.LogUnavailbleApi("history.getVisits"); - } - search(query, callback) { - bridgeLog.LogUnavailbleApi("history.search"); - } -} -class EdgeI18nBridge { - getAcceptLanguages(callback) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.i18n.getAcceptLanguages.apply(null, arguments); - }, "i18n.getAcceptLanguages"); - } - getMessage(messageName, substitutions) { - return bridgeLog.DoActionAndLog(() => { - if (messageName.indexOf("@@extension_id") > -1) { - return myBrowser.runtime.id; - } - return myBrowser.i18n.getMessage.apply(null, arguments); - }, "i18n.getMessage"); - } - getUILanguage() { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.i18n.getUILanguage.apply(null, arguments); - }, "i18n.getUILanguage"); - } -} -class EdgeChromeIdleBridge { - get onStateChanged() { bridgeLog.LogUnavailbleApi("idle.onStateChanged"); return bridgeHelper.fakeEvent; } - queryState(detectionIntervalInSeconds, callback) { - bridgeLog.LogUnavailbleApi("idle.queryState"); - } - setDetectionInterval(intervalInSeconds) { - bridgeLog.LogUnavailbleApi("idle.setDetectionInterval"); - } -} -class EdgeNotificationBridge { - get onButtonClicked() { bridgeLog.LogUnavailbleApi("notifications.onButtonClicked"); return bridgeHelper.fakeEvent; } - get onClicked() { bridgeLog.LogUnavailbleApi("notifications.onClicked"); return bridgeHelper.fakeEvent; } - get onClosed() { bridgeLog.LogUnavailbleApi("notifications.onClosed"); return bridgeHelper.fakeEvent; } - get onPermissionLevelChanged() { bridgeLog.LogUnavailbleApi("notifications.onPermissionLevelChanged"); return bridgeHelper.fakeEvent; } - get onShowSettings() { bridgeLog.LogUnavailbleApi("notifications.onShowSettings"); return bridgeHelper.fakeEvent; } - clear(notificationId, callback) { - bridgeLog.LogUnavailbleApi("notifications.clear"); - } - create(notificationId, options, callback) { - bridgeLog.LogUnavailbleApi("notifications.create"); - } - getAll(callback) { - bridgeLog.LogUnavailbleApi("notifications.getAll"); - } - getPermissionLevel(callback) { - bridgeLog.LogUnavailbleApi("notifications.getPermissionLevel"); - } - update(notificationId, options, callback) { - bridgeLog.LogUnavailbleApi("notifications.update"); - } -} -class EdgePageActionBridge { - get onClicked() { return bridgeLog.DoActionAndLog(() => { return myBrowser.pageAction.onClicked; }, "pageAction.onClicked"); } - getPopup(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.pageAction.getPopup.apply(null, arguments); - }, "pageAction.getPopup"); - } - getTitle(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.pageAction.getTitle.apply(null, arguments); - }, "pageAction.getTitle"); - } - hide(tabId) { - bridgeLog.DoActionAndLog(() => { - myBrowser.pageAction.hide.apply(null, arguments); - }, "pageAction.hide"); - } - setTitle(details) { - bridgeLog.DoActionAndLog(() => { - myBrowser.pageAction.setTitle.apply(null, arguments); - }, "pageAction.setTitle"); - } - setIcon(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.pageAction.setIcon.apply(null, arguments); - }, "pageAction.setIcon"); - } - setPopup(details) { - bridgeLog.DoActionAndLog(() => { - myBrowser.pageAction.setPopup.apply(null, arguments); - }, "pageAction.setPopup"); - } - show(tabId) { - bridgeLog.DoActionAndLog(() => { - myBrowser.pageAction.show.apply(null, arguments); - }, "pageAction.show"); - } -} -class EdgePermissionsBridge { - get onAdded() { bridgeLog.LogUnavailbleApi("permissions.onAdded"); return bridgeHelper.fakeEvent; } - get onRemoved() { bridgeLog.LogUnavailbleApi("permissions.onRemoved"); return bridgeHelper.fakeEvent; } - contains(permissions, callback) { - bridgeLog.LogUnavailbleApi("permissions.contains"); - } - getAll(callback) { - bridgeLog.LogUnavailbleApi("permissions.getAll"); - } - remove(permissions, callback) { - bridgeLog.LogUnavailbleApi("permissions.remove"); - } - request(permissions, callback) { - bridgeLog.LogUnavailbleApi("permissions.request"); - } -} -class EdgeRuntimeBridge { - get id() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.id; }, "runtime.id"); } - get lastError() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.lastError; }, "runtime.lastError"); } - get onConnect() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onConnect; }, "runtime.onConnect"); } - get onInstalled() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onInstalled; }, "runtime.onInstalled"); } - get onMessage() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessage; }, "runtime.onMessage"); } - get onMessageExternal() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessageExternal; }, "runtime.onMessageExternal"); } - connect(extensionId, connectInfo) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.runtime.connect.apply(null, arguments); - }, "runtime.connect"); - } - connectNative(application) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.runtime.connectNative.apply(null, arguments); - }, "runtime.connectNative"); - } - getBackgroundPage(callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.runtime.getBackgroundPage.apply(null, arguments); - }, "runtime.getBackgroundPage"); - } - getManifest() { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.runtime.getManifest.apply(null, arguments); - }, "runtime.getManifest"); - } - getURL(path) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.runtime.getURL.apply(null, arguments); - }, "runtime.getURL"); - } - reload() { - bridgeLog.DoActionAndLog(() => { - myBrowser.runtime.reload.apply(null, arguments); - }, "runtime.reload"); - } - sendMessage(extensionId, message, options, responseCallback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.runtime.sendMessage.apply(null, arguments); - }, "runtime.sendMessage"); - } - sendNativeMessage(application, message, responseCallback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.runtime.sendNativeMessage.apply(null, arguments); - }, "runtime.sendNativeMessage"); - } - setUninstallURL(url, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.runtime.setUninstallURL.apply(null, arguments); - }, "runtime.setUninstallURL"); - } -} -class EdgeChromeRuntimeBridge extends EdgeRuntimeBridge { - get onConnectExternal() { bridgeLog.LogUnavailbleApi("runtime.onConnectExternal"); return bridgeHelper.fakeEvent; } - get onRestartRequired() { bridgeLog.LogUnavailbleApi("runtime.onRestartRequired"); return bridgeHelper.fakeEvent; } - get onSuspend() { bridgeLog.LogUnavailbleApi("runtime.onSuspend"); return bridgeHelper.fakeEvent; } - get onSuspendCanceled() { bridgeLog.LogUnavailbleApi("runtime.onSuspendCanceled"); return bridgeHelper.fakeEvent; } - get onUpdateAvailable() { bridgeLog.LogUnavailbleApi("runtime.onUpdateAvailable"); return bridgeHelper.fakeEvent; } - get onStartup() { return bridgeLog.DoActionAndLog(() => { return myBrowser.windows.onCreated; }, "runtime.onStartup", undefined, "windows.onCreated"); } - openOptionsPage(callback) { - bridgeLog.DoActionAndLog(() => { - var optionsPage = myBrowser.runtime.getManifest()["options_page"]; - var optionsPageUrl = myBrowser.runtime.getURL(optionsPage); - if (typeof callback !== "undefined") { - myBrowser.tabs.create({ url: optionsPageUrl }, callback); - } - else { - myBrowser.tabs.create({ url: optionsPageUrl }); - } - }, "runtime.openOptionsPage", undefined, "tabs.create({ url: optionsPageUrl })"); - } - setUninstallURL(url, callback) { - if (myBrowser.runtime.setUninstallURL) { - EdgeRuntimeBridge.prototype.setUninstallURL.apply(null, arguments); - } - else { - bridgeLog.LogUnavailbleApi("runtime.setUninstallURL"); - } - } - getPackageDirectoryEntry(callback) { - bridgeLog.LogUnavailbleApi("runtime.getPackageDirectoryEntry"); - } - getPlatformInfo(callback) { - bridgeLog.LogUnavailbleApi("runtime.getPlatformInfo"); - } - requestUpdateCheck(callback) { - bridgeLog.LogUnavailbleApi("runtime.requestUpdateCheck"); - } - restart() { - bridgeLog.LogUnavailbleApi("runtime.restart"); - } -} -class EdgeStorageBridge { - get local() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.local; }, "storage.local"); } - get sync() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.sync; }, "storage.sync"); } - get onChanged() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.onChanged; }, "storage.onChanged"); } -} -class EdgeChromeStorageBridge extends EdgeStorageBridge { - get sync() { - if (myBrowser.storage.sync) { - return EdgeStorageBridge.prototype.sync; - } - else { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.storage.local; - }, "storage.sync", undefined, "storage.local"); - } - } - get managed() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.local; }, "storage.managed", undefined, "storage.local"); } -} -class EdgeTabsBridge { - get onActivated() { return bridgeLog.DoActionAndLog(() => { return myBrowser.tabs.onActivated; }, "tabs.onActivated"); } - get onAttached() { return bridgeLog.DoActionAndLog(() => { return myBrowser.tabs.onAttached; }, "tabs.onAttached"); } - get onCreated() { return bridgeLog.DoActionAndLog(() => { return myBrowser.tabs.onCreated; }, "tabs.onCreated"); } - get onDetached() { return bridgeLog.DoActionAndLog(() => { return myBrowser.tabs.onDetached; }, "tabs.onDetached"); } - get onRemoved() { return bridgeLog.DoActionAndLog(() => { return myBrowser.tabs.onRemoved; }, "tabs.onRemoved"); } - get onReplaced() { return bridgeLog.DoActionAndLog(() => { return myBrowser.tabs.onReplaced; }, "tabs.onReplaced"); } - get onUpdated() { return bridgeLog.DoActionAndLog(() => { return myBrowser.tabs.onUpdated; }, "tabs.onUpdated"); } - captureVisibleTab(windowId, options, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.tabs.captureVisibleTab.apply(null, arguments); - }, "tabs.captureVisibleTab"); - } - create(createProperties, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.tabs.create.apply(null, arguments); - }, "tabs.create"); - } - detectLanguage(tabId, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.tabs.detectLanguage.apply(null, arguments); - }, "tabs.detectLanguage"); - } - executeScript(tabId, details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.tabs.executeScript.apply(null, arguments); - }, "tabs.executeScript"); - } - get(tabId, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.tabs.get.apply(null, arguments); - }, "tabs.get"); - } - getCurrent(callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.tabs.getCurrent.apply(null, arguments); - }, "tabs.getCurrent"); - } - insertCSS(tabId, details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.tabs.insertCSS.apply(null, arguments); - }, "tabs.insertCSS"); - } - query(queryInfo, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.tabs.query.apply(null, arguments); - }, "tabs.query"); - } - remove(tabId, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.tabs.remove.apply(null, arguments); - }, "tabs.remove"); - } - sendMessage(tabId, message, responseCallback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.tabs.sendMessage.apply(null, arguments); - }, "tabs.sendMessage"); - } - update(tabId, updateProperties, callback) { - var updatePropertiesBridged = false; - for (var index = 0; index < arguments.length; index++) { - var argument = arguments[index]; - if (typeof argument === "object") { - if (!argument.active && (argument.highlighted || argument.selected)) { - argument.active = argument.highlighted || argument.selected; - updatePropertiesBridged = true; - } - } - } - bridgeLog.DoActionAndLog(() => { - myBrowser.tabs.update.apply(null, arguments); - }, "tabs.update", undefined, updatePropertiesBridged ? "tabs.update with UpdateProperties modified" : undefined); - } -} -class EdgeChromeTabsBridge extends EdgeTabsBridge { - get onHighlighted() { bridgeLog.LogUnavailbleApi("tabs.onHighlighted"); return bridgeHelper.fakeEvent; } - get onMoved() { bridgeLog.LogUnavailbleApi("tabs.onMoved"); return bridgeHelper.fakeEvent; } - get onSelectionChanged() { - return bridgeLog.DoActionAndLog(() => { - var fakeEvent = bridgeHelper.fakeEvent; - fakeEvent.addListener = (callback) => { - myBrowser.tabs.onActivated.addListener((activeInfo) => { - callback(activeInfo.tabId, { windowId: activeInfo.windowId }); - }); - }; - return fakeEvent; - }, "tabs.onSelectionChanged", "tabs.onActivated", "tabs.onActivated"); - } - duplicate(tabId, callback) { - bridgeLog.DoActionAndLog(() => { - var tabGetCallback = function (tab) { - if (typeof callback !== "undefined") { - myBrowser.tabs.create({ url: tab.url }, callback); - } - else { - myBrowser.tabs.create({ url: tab.url }); - } - }; - EdgeTabsBridge.prototype.get(tabId, tabGetCallback); - }, "tabs.duplicate", undefined, "tabs.create"); - } - getAllInWindow(windowId, callback) { - bridgeLog.DoActionAndLog(() => { - EdgeTabsBridge.prototype.query({ windowId: windowId }, callback); - }, "tabs.getAllInWindow", "tabs.query", "tabs.query"); - } - getSelected(windowId, callback) { - bridgeLog.DoActionAndLog(() => { - EdgeTabsBridge.prototype.query({ active: true }, (tabs) => callback(tabs[0])); - }, "tabs.getSelected", "tabs.query", "tabs.query"); - } - sendRequest(tabId, request, responseCallback) { - bridgeLog.DoActionAndLog(() => { - EdgeTabsBridge.prototype.sendMessage.apply(null, arguments); - }, "tabs.sendRequest", "tabs.sendMessage", "tabs.sendMessage"); - } - connect(tabId, connectInfo) { - bridgeLog.LogUnavailbleApi("tabs.connect"); - return null; - } - highlight(highlightInfo, callback) { - bridgeLog.LogUnavailbleApi("tabs.highlight"); - } - move(tabId, moveProperties, callback) { - bridgeLog.LogUnavailbleApi("tabs.move"); - } - reload(tabId, reloadProperties, callback) { - bridgeLog.LogUnavailbleApi("tabs.reload"); - } -} -class EdgeWebNavigationBridge { - get onBeforeNavigate() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onBeforeNavigate; }, "webNavigation.onBeforeNavigate"); } - get onCommitted() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onCommitted; }, "webNavigation.onCommitted"); } - get onCompleted() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onCompleted; }, "webNavigation.onCompleted"); } - get onCreatedNavigationTarget() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onCreatedNavigationTarget; }, "webNavigation.onCreatedNavigationTarget"); } - get onDOMContentLoaded() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onDOMContentLoaded; }, "webNavigation.onDOMContentLoaded"); } - get onErrorOccurred() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onErrorOccurred; }, "webNavigation.onErrorOccurred"); } - get onHistoryStateUpdated() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onHistoryStateUpdated; }, "webNavigation.onHistoryStateUpdated"); } - get onReferenceFragmentUpdated() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onReferenceFragmentUpdated; }, "webNavigation.onReferenceFragmentUpdated"); } - get onTabReplaced() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onTabReplaced; }, "webNavigation.onTabReplaced"); } - getAllFrames(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.webNavigation.getAllFrames.apply(null, arguments); - }, "webNavigation.getAllFrames"); - } - getFrame(details, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.webNavigation.getFrame.apply(null, arguments); - }, "webNavigation.getFrame"); - } -} -class EdgeWebRequestBridge { - get MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES; }, "webNavigation.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES"); } - get onAuthRequired() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onAuthRequired; }, "webRequest.onAuthRequired"); } - get onBeforeRedirect() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onBeforeRedirect; }, "webRequest.onBeforeRedirect"); } - get onBeforeRequest() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onBeforeRequest; }, "webRequest.onBeforeRequest"); } - get onBeforeSendHeaders() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onBeforeSendHeaders; }, "webRequest.onBeforeSendHeaders"); } - get onCompleted() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onCompleted; }, "webRequest.onCompleted"); } - get onErrorOccurred() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onErrorOccurred; }, "webRequest.onErrorOccurred"); } - get onHeadersReceived() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onHeadersReceived; }, "webRequest.onHeadersReceived"); } - get onResponseStarted() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onResponseStarted; }, "webRequest.onResponseStarted"); } - get onSendHeaders() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onSendHeaders; }, "webRequest.onSendHeaders"); } - handlerBehaviorChanged(callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.webRequest.handlerBehaviorChanged.apply(null, arguments); - }, "webRequest.handlerBehaviorChanged"); - } -} -class EdgeWindowsBridge { - get WINDOW_ID_CURRENT() { return bridgeLog.DoActionAndLog(() => { return myBrowser.windows.WINDOW_ID_CURRENT; }, "windows.WINDOW_ID_CURRENT"); } - get WINDOW_ID_NONE() { return bridgeLog.DoActionAndLog(() => { return myBrowser.windows.WINDOW_ID_NONE; }, "windows.WINDOW_ID_NONE"); } - get onCreated() { return bridgeLog.DoActionAndLog(() => { return myBrowser.windows.onCreated; }, "windows.onCreated"); } - get onFocusChanged() { return bridgeLog.DoActionAndLog(() => { return myBrowser.windows.onFocusChanged; }, "windows.onFocusChanged"); } - get onRemoved() { return bridgeLog.DoActionAndLog(() => { return myBrowser.windows.onRemoved; }, "windows.onRemoved"); } - create(createData, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.windows.create.apply(null, arguments); - }, "windows.create"); - } - get(windowId, getInfo, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.windows.get.apply(null, arguments); - }, "windows.get"); - } - getAll(getInfo, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.windows.getAll.apply(null, arguments); - }, "windows.getAll"); - } - getCurrent(getInfo, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.windows.getCurrent.apply(null, arguments); - }, "windows.getCurrent"); - } - getLastFocused(getInfo, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.windows.getLastFocused.apply(null, arguments); - }, "windows.getLastFocused"); - } - update(windowId, updateInfo, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.windows.update.apply(null, arguments); - }, "windows.update"); - } -} -class EdgeChromeWindowsBridge extends EdgeWindowsBridge { - remove(windowId, callback) { - bridgeLog.LogUnavailbleApi("windows.remove"); - } -} -class EdgeBackgroundBridge { - constructor() { - this.alarms = new EdgeChromeAlarmBridge(); - this.app = new EdgeChromeAppBridge(); - this.commands = new EdgeChromeCommandsBridge(); - this.idle = new EdgeChromeIdleBridge(); - this.notifications = new EdgeNotificationBridge(); - this.bookmarks = typeof browser["bookmarks"] !== "undefined" ? new EdgeChromeBookmarksBridge() : undefined; - this.browserAction = typeof browser.browserAction !== "undefined" ? new EdgeChromeBrowserActionBridge() : undefined; - this.contextMenus = typeof browser.contextMenus !== "undefined" ? new EdgeContextMenusBridge() : undefined; - this.cookies = typeof browser.cookies !== "undefined" ? new EdgeChromeCookiesBridge() : undefined; - this.extension = typeof browser.extension !== "undefined" ? new EdgeChromeExtensionBridge() : undefined; - this.history = typeof browser.history !== "undefined" ? new EdgeHistoryBridge() : undefined; - this.i18n = typeof browser.i18n !== "undefined" ? new EdgeI18nBridge() : undefined; - this.pageAction = typeof browser.pageAction !== "undefined" ? new EdgePageActionBridge() : undefined; - this.permissions = typeof browser.permissions !== "undefined" ? new EdgePermissionsBridge() : undefined; - this.runtime = typeof browser.runtime !== "undefined" ? new EdgeChromeRuntimeBridge() : undefined; - this.storage = typeof browser.storage !== "undefined" ? new EdgeChromeStorageBridge() : undefined; - this.tabs = typeof browser.tabs !== "undefined" ? new EdgeChromeTabsBridge() : undefined; - this.webNavigation = typeof browser.webNavigation !== "undefined" ? new EdgeWebNavigationBridge() : undefined; - this.webRequest = typeof browser.webRequest !== "undefined" ? new EdgeWebRequestBridge() : undefined; - this.windows = typeof browser.windows !== "undefined" ? new EdgeChromeWindowsBridge() : undefined; - } -} -var myBrowser = browser; -var chrome = new EdgeBackgroundBridge(); diff --git a/js/ms/contentScriptsAPIBridge.js b/js/ms/contentScriptsAPIBridge.js deleted file mode 100644 index 8a3a0a0..0000000 --- a/js/ms/contentScriptsAPIBridge.js +++ /dev/null @@ -1,472 +0,0 @@ -if (!Range.prototype["intersectsNode"]) { - Range.prototype["intersectsNode"] = function (node) { - let range = document.createRange(); - range.selectNode(node); - return 0 > this.compareBoundaryPoints(Range.END_TO_START, range) - && 0 < this.compareBoundaryPoints(Range.START_TO_END, range); - }; -} -if (!Navigator.prototype["languages"]) { - Navigator.prototype["languages"] = [navigator.language]; -} -var getExtensionProtocol = function () { - if (typeof browser == "undefined") { - if (typeof chrome !== "undefined") - return "chrome-extension://"; - } - else { - return "ms-browser-extension://"; - } -}; -class BridgeAlarmEvent { - constructor() { - this.listeners = new Array(); - } - addListener(callback) { - this.listeners.push(callback); - } - addRules(rules, callback) { } - getRules(ruleIdentifiers, callback) { } - hasListener(callback) { return false; } - hasListeners() { return this.listeners.length > 0; } - removeRules(ruleIdentifiers, callback) { } - removeListener(callback) { } -} -class EdgeBridgeAlarms { - constructor() { - this.alarms = {}; - this.onAlarm = new BridgeAlarmEvent(); - } - create(name, alarmInfo) { - if (arguments.length < 1 || arguments.length > 2) { - throw "Unexpected set of arguments. Expecting (alarmInfo) or (name, alarmInfo)"; - } - var alarmName = ""; - var startMilliseconds = 0; - var startSet = false; - if (typeof name === "string") { - alarmName = name; - } - else if (typeof name === "object") { - alarmInfo = name; - } - else - throw "Unexpected set of arguments. Expecting (alarmInfo) or (name, alarmInfo)"; - if (!alarmInfo) { - throw "You must specify an alarmInfo argument!!"; - } - if (!alarmInfo.when && !alarmInfo.delayInMinutes && !alarmInfo.periodInMinutes) { - throw "Invalid alarmInfo argument!!"; - } - else if (alarmInfo.when && alarmInfo.delayInMinutes) { - throw "Invalid alarmInfo argument!! Either 'when' or 'delayInMinutes' but not both!!"; - } - else if (alarmInfo.when) { - startMilliseconds = alarmInfo.when; - startSet = true; - } - else if (alarmInfo.delayInMinutes) { - startMilliseconds = alarmInfo.delayInMinutes * 60 * 1000; - startSet = true; - } - else if (alarmInfo.periodInMinutes) { - startMilliseconds = alarmInfo.periodInMinutes * 60 * 1000; - startSet = true; - } - else - throw "Invalid alarmInfo argument!!"; - var timerHandle; - if (startSet) { - if (this.alarms[alarmName]) { - this.clearAlarm(alarmName); - } - var alarm = { name: alarmName, scheduledTime: Date.now() + startMilliseconds }; - var alarmAndHandle = { alarm: alarm, timerHandle: 0, startedInterval: false }; - this.alarms[alarmName] = alarmAndHandle; - if (alarmInfo.periodInMinutes) { - this.alarms[alarmName].alarm.periodInMinutes = alarmInfo.periodInMinutes; - this.alarms[alarmName].timerHandle = window.setTimeout(function (alarmName, that) { - that.soundAlarm(alarmName, that); - that.alarms[alarmName].timerHandle = window.setInterval(that.soundAlarm, alarmInfo.periodInMinutes * 60 * 1000, alarmName, that); - that.alarms[alarmName].startedInterval = true; - }, startMilliseconds, alarmName, this); - } - else { - this.alarms[alarmName].timerHandle = window.setTimeout(this.soundAlarm, startMilliseconds, alarmName, this); - } - } - } - getAll(callback) { - for (var key in this.alarms) { - if (this.alarms.hasOwnProperty(key)) { - var alarm = this.alarms[key].alarm; - callback(alarm); - } - } - } - clearAll(callback) { - var clearedAll = true; - for (var key in this.alarms) { - if (this.alarms.hasOwnProperty(key)) { - var alarm = this.alarms[key].alarm; - if (!this.clearAlarm(alarm.name)) { - clearedAll = false; - } - } - } - if (callback) { - callback(clearedAll); - } - } - clear(name, callback) { - var alarmName = ""; - if (typeof name === "string") { - alarmName = name; - } - else if (typeof name === "function") { - callback = name; - } - var wasCleared = this.clearAlarm(alarmName); - if (callback) { - callback(wasCleared); - } - } - get(name, callback) { - if (this.alarms.hasOwnProperty(name)) { - var alarm = this.alarms[name].alarm; - callback(alarm); - } - } - clearAlarm(name) { - var wasCleared = false; - if (this.alarms[name]) { - if (this.alarms[name].alarm.startedInterval) { - window.clearInterval(this.alarms[name].timerHandle); - } - else { - window.clearTimeout(this.alarms[name].timerHandle); - } - delete this.alarms[name]; - wasCleared = true; - } - return wasCleared; - } - soundAlarm(name, that) { - for (var index = 0; index < that.onAlarm.listeners.length; index++) { - var listener = that.onAlarm.listeners[index]; - listener({ name: name }); - } - } -} -class FakeEvent { - addListener(callback) { } - addRules(rules, callback) { } - getRules(ruleIdentifiers, callback) { } - hasListener(callback) { return false; } - hasListeners() { return false; } - removeRules(ruleIdentifiers, callback) { } - removeListener(callback) { } -} -class EdgeBridgeHelper { - constructor() { - this.fakeEvent = new FakeEvent(); - this.alarms = new EdgeBridgeAlarms(); - } - toAbsolutePath(relativePath) { - if (relativePath.indexOf("ms-browser-extension://") == 0) { - return relativePath.replace(myBrowser.runtime.getURL(""), ""); - } - else if (relativePath.indexOf("/") != 0) { - var absolutePath = ""; - var documentPath = document.location.pathname; - absolutePath = documentPath.substring(0, documentPath.lastIndexOf("/") + 1); - absolutePath += relativePath; - return absolutePath; - } - return relativePath; - } -} -var bridgeHelper = new EdgeBridgeHelper(); -class EdgeBridgeDebugLog { - constructor() { - this.CatchOnException = true; - this.VerboseLogging = true; - this.FailedCalls = {}; - this.SuccededCalls = {}; - this.DeprecatedCalls = {}; - this.BridgedCalls = {}; - this.UnavailableApis = {}; - this.EdgeIssues = {}; - } - log(message) { - try { - if (this.VerboseLogging) { - console.log(message); - } - } - catch (e) { - } - } - info(message) { - try { - if (this.VerboseLogging) { - console.info(message); - } - } - catch (e) { - } - } - warn(message) { - try { - if (this.VerboseLogging) { - console.warn(message); - } - } - catch (e) { - } - } - error(message) { - try { - if (this.VerboseLogging) { - console.error(message); - } - } - catch (e) { - } - } - DoActionAndLog(action, name, deprecatedTo, bridgedTo) { - var result; - try { - result = action(); - this.AddToCalledDictionary(this.SuccededCalls, name); - if (typeof deprecatedTo !== "undefined") { - this.warn("API Call Deprecated - Name: " + name + ", Please use " + deprecatedTo + " instead!"); - this.AddToCalledDictionary(this.DeprecatedCalls, name); - } - if (typeof bridgedTo !== "undefined") { - this.info("API Call '" + name + "' has been bridged to another Edge API: " + bridgedTo); - this.AddToCalledDictionary(this.BridgedCalls, name); - } - this.info("API Call: '" + name + "'"); - return result; - } - catch (ex) { - this.AddToCalledDictionary(this.FailedCalls, name); - if (this.CatchOnException) - this.error("API Call Failed: " + name + " - " + ex); - else - throw ex; - } - } - LogEdgeIssue(name, message) { - this.warn(message); - this.AddToCalledDictionary(this.EdgeIssues, name); - } - LogUnavailbleApi(name, deprecatedTo) { - this.warn("API Call '" + name + "' is not supported in Edge"); - this.AddToCalledDictionary(this.UnavailableApis, name); - if (typeof deprecatedTo !== "undefined") { - this.warn("API Call Deprecated - Name: " + name + ", Please use " + deprecatedTo + " instead!"); - this.AddToCalledDictionary(this.DeprecatedCalls, name); - } - } - AddToCalledDictionary(dictionary, name) { - if (typeof dictionary[name] !== "undefined") { - dictionary[name]++; - } - else { - dictionary[name] = 1; - } - } -} -var bridgeLog = new EdgeBridgeDebugLog(); -class EdgeExtensionBridge { - getBackgroundPage() { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.extension.getBackgroundPage.apply(null, arguments); - }, "extension.getBackgroundPage"); - } - getURL(path) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.extension.getURL.apply(null, arguments); - }, "extension.getURL"); - } - getViews(fetchProperties) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.extension.getViews.apply(null, arguments); - }, "extension.getViews"); - } -} -class EdgeChromeExtensionBridge extends EdgeExtensionBridge { - get onConnect() { return bridgeLog.DoActionAndLog(() => { return EdgeRuntimeBridge.prototype.onConnect; }, "extension.onConnect", "runtime.onConnect", "runtime.onConnect"); } - get onMessage() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessage; }, "extension.onMessage", "runtime.onMessage", "runtime.onMessage"); } - get onRequest() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessage; }, "extension.onRequest", "runtime.onMessage", "runtime.onMessage"); } - get onRequestExternal() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessageExternal; }, "extension.onRequestExternal", "runtime.onMessageExternal", "runtime.onMessageExternal"); } - get inIncognitoContext() { return bridgeLog.DoActionAndLog(() => { return myBrowser.extension["inPrivateContext"]; }, "extension.inIncognitoContext", undefined, "extension.inPrivateContext"); } - get lastError() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.lastError; }, "extension.lastError", undefined, "runtime.lastError"); } - connect(extensionId, connectInfo) { - return bridgeLog.DoActionAndLog(() => { - return EdgeRuntimeBridge.prototype.connect.apply(null, arguments); - }, "extension.connect", "runtime.connect", "runtime.connect"); - } - sendMessage(message, responseCallback) { - return bridgeLog.DoActionAndLog(() => { - return EdgeRuntimeBridge.prototype.sendMessage.apply(null, arguments); - }, "extension.sendMessage", "runtime.sendMessage", "runtime.sendMessage"); - } - sendRequest(extensionId, message, options, responseCallback) { - return bridgeLog.DoActionAndLog(() => { - return EdgeRuntimeBridge.prototype.sendMessage.apply(null, arguments); - }, "extension.sendRequest", "runtime.sendMessage", "runtime.sendMessage"); - } - isAllowedFileSchemeAccess(callback) { - bridgeLog.LogUnavailbleApi("extension.isAllowedFileSchemeAccess"); - } - isAllowedIncognitoAccess(callback) { - bridgeLog.LogUnavailbleApi("extension.isAllowedIncognitoAccess"); - } - setUpdateUrlData(data) { - bridgeLog.LogUnavailbleApi("extension.setUpdateUrlData"); - } -} -class EdgeI18nBridge { - getAcceptLanguages(callback) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.i18n.getAcceptLanguages.apply(null, arguments); - }, "i18n.getAcceptLanguages"); - } - getMessage(messageName, substitutions) { - return bridgeLog.DoActionAndLog(() => { - if (messageName.indexOf("@@extension_id") > -1) { - return myBrowser.runtime.id; - } - return myBrowser.i18n.getMessage.apply(null, arguments); - }, "i18n.getMessage"); - } - getUILanguage() { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.i18n.getUILanguage.apply(null, arguments); - }, "i18n.getUILanguage"); - } -} -class EdgeRuntimeBridge { - get id() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.id; }, "runtime.id"); } - get lastError() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.lastError; }, "runtime.lastError"); } - get onConnect() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onConnect; }, "runtime.onConnect"); } - get onInstalled() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onInstalled; }, "runtime.onInstalled"); } - get onMessage() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessage; }, "runtime.onMessage"); } - get onMessageExternal() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessageExternal; }, "runtime.onMessageExternal"); } - connect(extensionId, connectInfo) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.runtime.connect.apply(null, arguments); - }, "runtime.connect"); - } - connectNative(application) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.runtime.connectNative.apply(null, arguments); - }, "runtime.connectNative"); - } - getBackgroundPage(callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.runtime.getBackgroundPage.apply(null, arguments); - }, "runtime.getBackgroundPage"); - } - getManifest() { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.runtime.getManifest.apply(null, arguments); - }, "runtime.getManifest"); - } - getURL(path) { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.runtime.getURL.apply(null, arguments); - }, "runtime.getURL"); - } - reload() { - bridgeLog.DoActionAndLog(() => { - myBrowser.runtime.reload.apply(null, arguments); - }, "runtime.reload"); - } - sendMessage(extensionId, message, options, responseCallback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.runtime.sendMessage.apply(null, arguments); - }, "runtime.sendMessage"); - } - sendNativeMessage(application, message, responseCallback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.runtime.sendNativeMessage.apply(null, arguments); - }, "runtime.sendNativeMessage"); - } - setUninstallURL(url, callback) { - bridgeLog.DoActionAndLog(() => { - myBrowser.runtime.setUninstallURL.apply(null, arguments); - }, "runtime.setUninstallURL"); - } -} -class EdgeChromeRuntimeBridge extends EdgeRuntimeBridge { - get onConnectExternal() { bridgeLog.LogUnavailbleApi("runtime.onConnectExternal"); return bridgeHelper.fakeEvent; } - get onRestartRequired() { bridgeLog.LogUnavailbleApi("runtime.onRestartRequired"); return bridgeHelper.fakeEvent; } - get onSuspend() { bridgeLog.LogUnavailbleApi("runtime.onSuspend"); return bridgeHelper.fakeEvent; } - get onSuspendCanceled() { bridgeLog.LogUnavailbleApi("runtime.onSuspendCanceled"); return bridgeHelper.fakeEvent; } - get onUpdateAvailable() { bridgeLog.LogUnavailbleApi("runtime.onUpdateAvailable"); return bridgeHelper.fakeEvent; } - get onStartup() { return bridgeLog.DoActionAndLog(() => { return myBrowser.windows.onCreated; }, "runtime.onStartup", undefined, "windows.onCreated"); } - openOptionsPage(callback) { - bridgeLog.DoActionAndLog(() => { - var optionsPage = myBrowser.runtime.getManifest()["options_page"]; - var optionsPageUrl = myBrowser.runtime.getURL(optionsPage); - if (typeof callback !== "undefined") { - myBrowser.tabs.create({ url: optionsPageUrl }, callback); - } - else { - myBrowser.tabs.create({ url: optionsPageUrl }); - } - }, "runtime.openOptionsPage", undefined, "tabs.create({ url: optionsPageUrl })"); - } - setUninstallURL(url, callback) { - if (myBrowser.runtime.setUninstallURL) { - EdgeRuntimeBridge.prototype.setUninstallURL.apply(null, arguments); - } - else { - bridgeLog.LogUnavailbleApi("runtime.setUninstallURL"); - } - } - getPackageDirectoryEntry(callback) { - bridgeLog.LogUnavailbleApi("runtime.getPackageDirectoryEntry"); - } - getPlatformInfo(callback) { - bridgeLog.LogUnavailbleApi("runtime.getPlatformInfo"); - } - requestUpdateCheck(callback) { - bridgeLog.LogUnavailbleApi("runtime.requestUpdateCheck"); - } - restart() { - bridgeLog.LogUnavailbleApi("runtime.restart"); - } -} -class EdgeStorageBridge { - get local() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.local; }, "storage.local"); } - get sync() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.sync; }, "storage.sync"); } - get onChanged() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.onChanged; }, "storage.onChanged"); } -} -class EdgeChromeStorageBridge extends EdgeStorageBridge { - get sync() { - if (myBrowser.storage.sync) { - return EdgeStorageBridge.prototype.sync; - } - else { - return bridgeLog.DoActionAndLog(() => { - return myBrowser.storage.local; - }, "storage.sync", undefined, "storage.local"); - } - } - get managed() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.local; }, "storage.managed", undefined, "storage.local"); } -} -class EdgeContentBridge { - constructor() { - this.extension = typeof browser.extension !== "undefined" ? new EdgeChromeExtensionBridge() : undefined; - this.i18n = typeof browser.i18n !== "undefined" ? new EdgeI18nBridge() : undefined; - this.runtime = typeof browser.runtime !== "undefined" ? new EdgeChromeRuntimeBridge() : undefined; - this.storage = typeof browser.storage !== "undefined" ? new EdgeChromeStorageBridge() : undefined; - } -} -var myBrowser = browser; -var chrome = new EdgeContentBridge(); diff --git a/js/options.js b/js/options.js index 2d2a744..3e5cfbb 100644 --- a/js/options.js +++ b/js/options.js @@ -13,7 +13,7 @@ $(function() { $('#save').on('click', function() { saveActiveTenant($('#tenantCode').val(), function() { // Update status to let user know options were saved. - $('#status').html('
' + chrome.i18n.getMessage('optionsSettingsSaved') + '
'); + $('#status').html('
' + chromeOrBrowser().i18n.getMessage('optionsSettingsSaved') + '
'); setTimeout(function() { $('#status').textContent = ''; }, 750); diff --git a/manifest.json b/manifest.json index 13a8fa2..c45f714 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,8 @@ "icons": { "16": "images/icon16.png", "48": "images/icon48.png", - "128": "images/icon128.png" + "128": "images/icon128.png", + "176": "images/icon176.png" }, "background": { "page": "background.html", @@ -39,9 +40,5 @@ } }, "default_locale": "en", - "manifest_version": 2, - "-ms-preload": { - "backgroundScript": "js/ms/backgroundScriptsAPIBridge.js", - "contentScript": "js/ms/contentScriptsAPIBridge.js" - } + "manifest_version": 2 } \ No newline at end of file diff --git a/package.json b/package.json index 88fbc5e..fcc361a 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,6 @@ "grunt-contrib-copy": "^1.0.0" }, "scripts": { - "postinstall": "./node_modules/.bin/bower install" + "postinstall": "./node_modules/.bin/bower install" } }