Browse Source

Remove the intercept flag

simov 7 years ago
parent
commit
90c858b1da
5 changed files with 25 additions and 45 deletions
  1. 1 1
      background/detect.js
  2. 3 1
      background/headers.js
  3. 1 5
      background/messages.js
  4. 0 6
      background/storage.js
  5. 20 32
      content/options.js

+ 1 - 1
background/detect.js

@@ -34,7 +34,7 @@ md.detect = ({storage: {state}, inject}) => {
         }
         }
 
 
         if (header(win.header) || match(win.url)) {
         if (header(win.header) || match(win.url)) {
-          if (onwakeup && state.intercept) {
+          if (onwakeup && chrome.webRequest) {
             onwakeup = false
             onwakeup = false
             chrome.tabs.reload(id)
             chrome.tabs.reload(id)
           }
           }

+ 3 - 1
background/headers.js

@@ -39,7 +39,9 @@ md.headers = ({storage: {state}, detect}) => {
   var options = ['blocking', 'responseHeaders']
   var options = ['blocking', 'responseHeaders']
 
 
   var add = () => {
   var add = () => {
-    chrome.webRequest.onHeadersReceived.addListener(callback, filter, options)
+    if (!chrome.webRequest.onHeadersReceived.hasListeners()) {
+      chrome.webRequest.onHeadersReceived.addListener(callback, filter, options)
+    }
   }
   }
 
 
   var remove = () => {
   var remove = () => {

+ 1 - 5
background/messages.js

@@ -78,7 +78,6 @@ md.messages = ({storage: {defaults, state, set}, compilers, mathjax, headers}) =
       sendResponse({
       sendResponse({
         origins: state.origins,
         origins: state.origins,
         header: state.header,
         header: state.header,
-        intercept: state.intercept,
         match: state.match,
         match: state.match,
       })
       })
     }
     }
@@ -89,11 +88,8 @@ md.messages = ({storage: {defaults, state, set}, compilers, mathjax, headers}) =
     else if (req.message === 'options.intercept') {
     else if (req.message === 'options.intercept') {
       // ff: onHeadersReceived is enabled by default
       // ff: onHeadersReceived is enabled by default
       if (!/Firefox/.test(navigator.userAgent)) {
       if (!/Firefox/.test(navigator.userAgent)) {
-        if (req.intercept !== state.intercept) {
-          headers[req.intercept ? 'add' : 'remove']()
-        }
+        headers[req.intercept ? 'add' : 'remove']()
       }
       }
-      set({intercept: req.intercept})
       sendResponse()
       sendResponse()
     }
     }
 
 

+ 0 - 6
background/storage.js

@@ -16,7 +16,6 @@ md.storage = ({compilers}) => {
     },
     },
     raw: false,
     raw: false,
     header: true,
     header: true,
-    intercept: false,
     match,
     match,
     origins: {
     origins: {
       'file://': {
       'file://': {
@@ -83,10 +82,6 @@ md.storage = ({compilers}) => {
     if (options.content.mathjax === undefined) {
     if (options.content.mathjax === undefined) {
       options.content.mathjax = false
       options.content.mathjax = false
     }
     }
-    // v3.3 -> v3.4
-    if (options.csp === undefined) {
-      options.csp = false
-    }
     // v3.4 -> v3.5
     // v3.4 -> v3.5
     if (typeof options.origins['file://'] === 'string') {
     if (typeof options.origins['file://'] === 'string') {
       options.origins = Object.keys(options.origins)
       options.origins = Object.keys(options.origins)
@@ -97,7 +92,6 @@ md.storage = ({compilers}) => {
       }, all), {})
       }, all), {})
     }
     }
     if (typeof options.csp === 'boolean') {
     if (typeof options.csp === 'boolean') {
-      options.intercept = options.csp
       delete options.csp
       delete options.csp
     }
     }
 
 

+ 20 - 32
content/options.js

@@ -3,7 +3,6 @@ var defaults = {
   // storage
   // storage
   origins: {},
   origins: {},
   header: false,
   header: false,
-  intercept: false,
   // static
   // static
   protocols: ['https', 'http', '*'],
   protocols: ['https', 'http', '*'],
   // UI
   // UI
@@ -112,10 +111,7 @@ var events = {
         origin,
         origin,
         options: {match, csp, encoding},
         options: {match, csp, encoding},
       })
       })
-      webRequest.update()
-      webRequest.permission(() => {
-        webRequest.register()
-      })
+      webRequest()
     },
     },
 
 
     encoding: (origin) => (e) => {
     encoding: (origin) => (e) => {
@@ -126,41 +122,33 @@ var events = {
         origin,
         origin,
         options: {match, csp, encoding},
         options: {match, csp, encoding},
       })
       })
-      webRequest.update()
-      webRequest.permission(() => {
-        webRequest.register()
-      })
+      webRequest()
     },
     },
   },
   },
 }
 }
 
 
-var webRequest = {
-  update: () => {
-    state.intercept = false
-    for (var key in state.origins) {
-      if (state.origins[key].csp || state.origins[key].encoding) {
-        state.intercept = true
-        break
-      }
-    }
-  },
-  permission: (done) => {
-    // ff: webRequest is required permission
-    if (/Firefox/.test(navigator.userAgent)) {
-      done()
-    }
-    else {
-      chrome.permissions[state.intercept ? 'request' : 'remove']({
-        permissions: ['webRequest', 'webRequestBlocking']
-      }, done)
+function webRequest () {
+  // ff: webRequest is required permission
+  if (/Firefox/.test(navigator.userAgent)) {
+    return
+  }
+
+  var intercept = false
+  for (var key in state.origins) {
+    if (state.origins[key].csp || state.origins[key].encoding) {
+      intercept = true
+      break
     }
     }
-  },
-  register: () => {
+  }
+
+  chrome.permissions[intercept ? 'request' : 'remove']({
+    permissions: ['webRequest', 'webRequestBlocking']
+  }, () => {
     chrome.runtime.sendMessage({
     chrome.runtime.sendMessage({
       message: 'options.intercept',
       message: 'options.intercept',
-      intercept: state.intercept,
+      intercept,
     })
     })
-  }
+  })
 }
 }
 
 
 chrome.extension.isAllowedFileSchemeAccess((isAllowedAccess) => {
 chrome.extension.isAllowedFileSchemeAccess((isAllowedAccess) => {