From 861ba95deec6c61a951f95422cf2589df931d017 Mon Sep 17 00:00:00 2001 From: Thomas Rientjes <synzvato@protonmail.com> Date: Sun, 10 Dec 2017 18:27:21 -0300 Subject: [PATCH] Improve cross-browser compatibility --- core/main.js | 16 +--------------- core/state-manager.js | 27 +++++++++++++++++---------- pages/popup/popup.css | 11 +++++++++++ 3 files changed, 29 insertions(+), 25 deletions(-) diff --git a/core/main.js b/core/main.js index 7869946..d562f7c 100644 --- a/core/main.js +++ b/core/main.js @@ -94,20 +94,6 @@ chrome.runtime.getPlatformInfo(function (information) { main.operatingSystem = information.os; }); -if (typeof chrome.browserAction.setBadgeBackgroundColor !== 'function') { - - chrome.browserAction.setBadgeBackgroundColor = function () {}; - chrome.browserAction.setBadgeText = function () {}; - - chrome.browserAction.onClicked.addListener(function () { - - chrome.tabs.create({ - 'url': chrome.extension.getURL('pages/popup/popup.html'), - 'active': false - }); - }); -} - -chrome.browserAction.setBadgeBackgroundColor({ +wrappers.setBadgeBackgroundColor({ 'color': [74, 130, 108, 255] }); diff --git a/core/state-manager.js b/core/state-manager.js index 2728d0a..43bf38b 100644 --- a/core/state-manager.js +++ b/core/state-manager.js @@ -37,14 +37,14 @@ stateManager.registerInjection = function (tabIdentifier, injection) { if (injectionCount > 0) { - chrome.browserAction.setBadgeText({ + wrappers.setBadgeText({ 'tabId': tabIdentifier, 'text': injectionCount.toString() }); } else { - chrome.browserAction.setBadgeText({ + wrappers.setBadgeText({ 'tabId': tabIdentifier, 'text': '' }); @@ -114,12 +114,8 @@ stateManager._createTab = function (tab) { chrome.webRequest.onBeforeRequest.addListener(function (requestDetails) { - return new Promise((resolve) => { - - browser.tabs.get(tabIdentifier).then(function (tab) { - resolve(interceptor.handleRequest(requestDetails, tabIdentifier, tab)); - }); - }); + let tab = stateManager.tabs[tabIdentifier].details || {}; + return interceptor.handleRequest(requestDetails, tabIdentifier, tab); }, requestFilters, [WebRequest.BLOCKING]); }; @@ -141,7 +137,7 @@ stateManager._updateTab = function (details) { if (stateManager.showIconBadge === true) { - chrome.browserAction.setBadgeText({ + wrappers.setBadgeText({ 'tabId': tabIdentifier, 'text': '' }); @@ -203,7 +199,7 @@ stateManager._handleStorageChanged = function (changes) { stateManager._removeIconBadgeFromTab = function (tab) { - chrome.browserAction.setBadgeText({ + wrappers.setBadgeText({ 'tabId': tab.id, 'text': '' }); @@ -238,6 +234,17 @@ chrome.storage.local.get('showIconBadge', function (items) { chrome.tabs.onCreated.addListener(stateManager._createTab); chrome.tabs.onRemoved.addListener(stateManager._removeTab); +chrome.webRequest.onBeforeRequest.addListener(function (requestDetails) { + + if (requestDetails.tabId !== -1) { + + stateManager.tabs[requestDetails.tabId].details = { + 'url': requestDetails.url + }; + } + +}, {'types': ['main_frame'], 'urls': [Address.ANY]}); + chrome.webNavigation.onCommitted.addListener(stateManager._updateTab, { 'url': [{'urlContains': ':'}] }); diff --git a/pages/popup/popup.css b/pages/popup/popup.css index 204c037..37c2c59 100644 --- a/pages/popup/popup.css +++ b/pages/popup/popup.css @@ -247,3 +247,14 @@ footer { font-style: italic; font-weight: 400; } + +/** + * Compatibility + */ + +@media screen and (-webkit-min-device-pixel-ratio: 0) { + + body { + width: 348px; + } +} -- GitLab