From cdad0f8428469ea440dbf6aab4bf3e8e2bc7abc5 Mon Sep 17 00:00:00 2001 From: didierfred <didierfred@gmail.com> Date: Mon, 19 Nov 2018 07:36:00 +0100 Subject: [PATCH] add chrome support --- background.js | 27 +++++++++++++++++++-------- popup/config.js | 21 ++++++++++++++++----- popup/menu.js | 48 ++++++++++++++++++++++++++++++++++++------------ 3 files changed, 71 insertions(+), 25 deletions(-) diff --git a/background.js b/background.js index c4b361d..045367a 100644 --- a/background.js +++ b/background.js @@ -14,6 +14,17 @@ let config ; let started = "off"; let debug_mode = false; +let generic_browser ; +let is_chrome = false; + +// check if chrome +if (chrome===undefined) generic_browser=browser; +else { + generic_browser= chrome; + is_chrome=true; +} +console.log("is_chrome set to " + is_chrome); + // if configuration exist if (localStorage.getItem('config')) { console.log("Load standard config"); @@ -69,11 +80,11 @@ else started = localStorage.getItem('started'); if (started==="on") { addListener(); - browser.browserAction.setIcon({ path: "icons/modify-green-32.png"}); + generic_browser.browserAction.setIcon({ path: "icons/modify-green-32.png"}); } // listen for change in configuration or start/stop -browser.runtime.onMessage.addListener(notify); +generic_browser.runtime.onMessage.addListener(notify); /* @@ -179,13 +190,13 @@ function notify(message) { } else if (message==="off") { removeListener(); - browser.browserAction.setIcon({ path: "icons/modify-32.png"}); + generic_browser.browserAction.setIcon({ path: "icons/modify-32.png"}); started="off"; if (config.debug_mode) log("Stop modifying headers"); } else if (message==="on") { addListener(); - browser.browserAction.setIcon({ path: "icons/modify-green-32.png"}); + generic_browser.browserAction.setIcon({ path: "icons/modify-green-32.png"}); started="on"; if (config.debug_mode) log("Start modifying headers"); } @@ -199,11 +210,11 @@ function notify(message) { function addListener() { let target = config.target_page; if ((target==="*")||(target==="")||(target===" ")) target="<all_urls>"; - browser.webRequest.onBeforeSendHeaders.addListener(rewriteRequestHeader, + generic_browser.webRequest.onBeforeSendHeaders.addListener(rewriteRequestHeader, {urls: target.split(";")}, ["blocking", "requestHeaders"]); - browser.webRequest.onHeadersReceived.addListener(rewriteResponseHeader, + generic_browser.webRequest.onHeadersReceived.addListener(rewriteResponseHeader, {urls: target.split(";")}, ["blocking", "responseHeaders"]); } @@ -214,8 +225,8 @@ function addListener() { * */ function removeListener() { - browser.webRequest.onBeforeSendHeaders.removeListener(rewriteRequestHeader); - browser.webRequest.onHeadersReceived.removeListener(rewriteResponseHeader); + generic_browser.webRequest.onBeforeSendHeaders.removeListener(rewriteRequestHeader); + generic_browser.webRequest.onHeadersReceived.removeListener(rewriteResponseHeader); } diff --git a/popup/config.js b/popup/config.js index d0d9d5a..4a9071a 100644 --- a/popup/config.js +++ b/popup/config.js @@ -20,8 +20,19 @@ let comments_field_size= 28; let input_field_style="form_control input_field_small"; +let generic_browser ; +let is_chrome = false; + + window.onload = function() { + + // check if chrome + if (chrome===undefined) generic_browser=browser; + else { + generic_browser= chrome; + is_chrome=true; + } // load configuration from local storage let config = JSON.parse(localStorage.getItem("config")); if (config.debug_mode) document.getElementById("debug_mode").checked = true; @@ -241,7 +252,7 @@ function isTargetValid(target) { function saveData() { if (!isTargetValid(document.getElementById('targetPage').value)) alert("Warning: Url patterns are invalid"); localStorage.setItem("config",create_configuration_data()); - browser.runtime.sendMessage("reload"); + generic_browser.runtime.sendMessage("reload"); return true; } @@ -327,7 +338,7 @@ function readSingleFile(e) { // store the conf in the local storage localStorage.setItem("config",JSON.stringify(config)); // load the new conf - browser.runtime.sendMessage("reload"); + generic_browser.runtime.sendMessage("reload"); // reload the configuration page with the new conf document.location.href="config.html"; } @@ -344,7 +355,7 @@ function readSingleFile(e) { // store the conf in the local storage localStorage.setItem("config",JSON.stringify(to_load)); // load the new conf - browser.runtime.sendMessage("reload"); + generic_browser.runtime.sendMessage("reload"); // reload the configuration page with the new conf document.location.href="config.html"; } @@ -427,13 +438,13 @@ function startModify() { if (started==="off") { saveData(); localStorage.setItem("started","on"); - browser.runtime.sendMessage("on"); + generic_browser.runtime.sendMessage("on"); started = "on"; document.getElementById("start_img").src = "img/stop.png"; } else { localStorage.setItem("started","off"); - browser.runtime.sendMessage("off"); + generic_browser.runtime.sendMessage("off"); started = "off"; document.getElementById("start_img").src = "img/start.png"; } diff --git a/popup/menu.js b/popup/menu.js index b8cdacf..22d7374 100644 --- a/popup/menu.js +++ b/popup/menu.js @@ -11,7 +11,21 @@ var started = "off"; +let generic_browser ; +let is_chrome = false; + window.onload = function() { + + + + // check if chrome + if (browser!=undefined) generic_browser=browser; + else { + generic_browser= chrome; + is_chrome=true; + } +console.log("is_chrome set to" + is_chrome); + document.getElementById('config').addEventListener('click',function (e) {start_config();}); document.getElementById('start_stop').addEventListener('click',function (e) {start_modify();}); started = localStorage.getItem("started"); @@ -25,21 +39,24 @@ function start_modify() if (started=="off") { localStorage.setItem("started","on"); - browser.runtime.sendMessage("on"); + generic_browser.runtime.sendMessage("on"); started = "on"; document.getElementById("start_stop").value = "Stop"; } else { localStorage.setItem("started","off"); - browser.runtime.sendMessage("off"); + generic_browser.runtime.sendMessage("off"); started = "off"; document.getElementById("start_stop").value = "Start"; } // if exists reload config tab , to get the start/stop information correct - var promise_tabs = browser.tabs.query({currentWindow: true}); - promise_tabs.then(reloadConfigTab); + if (is_chrome) generic_browser.tabs.query({currentWindow: true},reloadConfigTab); + else { + var promise_tabs = generic_browser.tabs.query({currentWindow: true}); + promise_tabs.then(reloadConfigTab); + } } @@ -51,21 +68,23 @@ function reloadConfigTab(tabs) // search for config tab for (let tab of tabs) { - if (tab.url.startsWith(browser.extension.getURL(""))) config_tab = tab; + if (tab.url.startsWith(generic_browser.extension.getURL(""))) config_tab = tab; } // config tab exists , reload it - if (config_tab) browser.tabs.reload(config_tab.id); + if (config_tab) generic_browser.tabs.reload(config_tab.id); - } function start_config() { - var promise_tabs = browser.tabs.query({currentWindow: true}); - promise_tabs.then(loadConfigTab); + if (is_chrome) generic_browser.tabs.query({currentWindow: true},loadConfigTab); + else { + var promise_tabs = generic_browser.tabs.query({currentWindow: true}); + promise_tabs.then(loadConfigTab); + } } @@ -76,12 +95,17 @@ function loadConfigTab(tabs) // search for config tab for (let tab of tabs) { - if (tab.url.startsWith(browser.extension.getURL(""))) config_tab = tab; + if (tab.url.startsWith(generic_browser.extension.getURL(""))) config_tab = tab; } // config tab exits , put the focus on it - if (config_tab) browser.tabs.update(config_tab.id,{active:true}) + if (config_tab) generic_browser.tabs.update(config_tab.id,{active:true}) // else create a new tab - else browser.tabs.create({url:"config.html"}); + else + { +console.log("is chrome=" + is_chrome); + if (is_chrome) generic_browser.tabs.create({url:"popup/config.html"}); + else generic_browser.tabs.create({url:"config.html"}); + } } -- GitLab