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