From b4a5aaf9d2f2bd4254807d24125fd06e80276a8d Mon Sep 17 00:00:00 2001
From: Thomas Rientjes <synzvato@protonmail.com>
Date: Wed, 9 Aug 2017 19:49:04 -0400
Subject: [PATCH] Refactor existing codebase

---
 core/interceptor.js   |  6 +++---
 core/state-manager.js | 23 ++++++++++++++++-------
 manifest.json         |  1 +
 3 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/core/interceptor.js b/core/interceptor.js
index 17ae2c8..78cb9ae 100644
--- a/core/interceptor.js
+++ b/core/interceptor.js
@@ -29,11 +29,11 @@ const HTTP_EXPRESSION = /^http?:\/\//;
  * Public Methods
  */
 
-interceptor.handleRequest = function (requestDetails, tabIdentifier, tabUrl) {
+interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
 
-    let validCandidate, targetDetails, targetPath, amountInjected;
+    let validCandidate, targetDetails, targetPath;
 
-    validCandidate = requestAnalyzer.isValidCandidate(requestDetails, tabUrl);
+    validCandidate = requestAnalyzer.isValidCandidate(requestDetails, tab);
 
     if (!validCandidate) {
 
diff --git a/core/state-manager.js b/core/state-manager.js
index b8675ff..58bddaf 100644
--- a/core/state-manager.js
+++ b/core/state-manager.js
@@ -111,13 +111,22 @@ stateManager._removeTab = function (tabIdentifier) {
 
 stateManager._updateTab = function (details) {
 
-    let tabIdentifier = details.tabId;
+    let tabIdentifier, frameIdentifier;
 
-    if (tabIdentifier !== -1) {
+    tabIdentifier = details.tabId;
+    frameIdentifier = details.frameId;
 
-        if (stateManager.tabs[tabIdentifier]) {
-            stateManager.tabs[tabIdentifier].injections = {};
-        }
+    if (tabIdentifier === -1 || frameIdentifier !== 0) {
+        return;
+    }
+
+    chrome.browserAction.setBadgeText({
+        tabId: tabIdentifier,
+        text: ''
+    });
+
+    if (stateManager.tabs[tabIdentifier]) {
+        stateManager.tabs[tabIdentifier].injections = {};
     }
 };
 
@@ -157,8 +166,8 @@ chrome.tabs.query({}, function (tabs) {
 chrome.tabs.onCreated.addListener(stateManager._createTab);
 chrome.tabs.onRemoved.addListener(stateManager._removeTab);
 
-chrome.webRequest.onBeforeRequest.addListener(stateManager._updateTab, {
-    urls: ['<all_urls>'], types: ['main_frame']
+chrome.webNavigation.onCommitted.addListener(stateManager._updateTab, {
+    url: [{urlContains: ':'}]
 });
 
 chrome.webRequest.onErrorOccurred.addListener(function (requestDetails) {
diff --git a/manifest.json b/manifest.json
index a79f948..c5387e2 100644
--- a/manifest.json
+++ b/manifest.json
@@ -20,6 +20,7 @@
     "privacy",
     "storage",
     "tabs",
+    "webNavigation",
     "webRequest",
     "webRequestBlocking"
   ],
-- 
GitLab