|
@@ -40,6 +40,14 @@ md.webrequest = ({storage: {state}, detect}) => {
|
|
|
return {responseHeaders}
|
|
return {responseHeaders}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ var onCompleted = ({ip, tabId}) => {
|
|
|
|
|
+ if (ip && ip !== '127.0.0.1') {
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ chrome.tabs.sendMessage(tabId, {message: 'autoreload'})
|
|
|
|
|
+ }, 500)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
var events = () => {
|
|
var events = () => {
|
|
|
var headers = false
|
|
var headers = false
|
|
|
for (var key in state.origins) {
|
|
for (var key in state.origins) {
|
|
@@ -54,20 +62,25 @@ md.webrequest = ({storage: {state}, detect}) => {
|
|
|
headers = true
|
|
headers = true
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return {headers}
|
|
|
|
|
|
|
+ var completed = false
|
|
|
|
|
+ if (state.content.autoreload) {
|
|
|
|
|
+ completed = true
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return {headers, completed}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- var perm = (headers, done) => {
|
|
|
|
|
|
|
+ var perm = (headers, completed, done) => {
|
|
|
// ff: webRequest is required permission
|
|
// ff: webRequest is required permission
|
|
|
if (/Firefox/.test(navigator.userAgent)) {
|
|
if (/Firefox/.test(navigator.userAgent)) {
|
|
|
done()
|
|
done()
|
|
|
}
|
|
}
|
|
|
// request permissions
|
|
// request permissions
|
|
|
- else if (headers && !chrome.webRequest) {
|
|
|
|
|
|
|
+ else if ((headers || completed) && !chrome.webRequest) {
|
|
|
chrome.permissions.request({permissions}, done)
|
|
chrome.permissions.request({permissions}, done)
|
|
|
}
|
|
}
|
|
|
// remove permissions
|
|
// remove permissions
|
|
|
- else if (!headers && chrome.webRequest) {
|
|
|
|
|
|
|
+ else if (!headers && !completed && chrome.webRequest) {
|
|
|
chrome.permissions.remove({permissions}, () => {
|
|
chrome.permissions.remove({permissions}, () => {
|
|
|
chrome.webRequest = null
|
|
chrome.webRequest = null
|
|
|
done()
|
|
done()
|
|
@@ -80,20 +93,26 @@ md.webrequest = ({storage: {state}, detect}) => {
|
|
|
|
|
|
|
|
return () => {
|
|
return () => {
|
|
|
|
|
|
|
|
- var {headers} = events()
|
|
|
|
|
|
|
+ var {headers, completed} = events()
|
|
|
|
|
|
|
|
// remove listeners
|
|
// remove listeners
|
|
|
if (chrome.webRequest) {
|
|
if (chrome.webRequest) {
|
|
|
if (!headers && !/Firefox/.test(navigator.userAgent)) {
|
|
if (!headers && !/Firefox/.test(navigator.userAgent)) {
|
|
|
chrome.webRequest.onHeadersReceived.removeListener(onHeadersReceived)
|
|
chrome.webRequest.onHeadersReceived.removeListener(onHeadersReceived)
|
|
|
}
|
|
}
|
|
|
|
|
+ if (!completed) {
|
|
|
|
|
+ chrome.webRequest.onCompleted.removeListener(onCompleted)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- perm(headers, () => {
|
|
|
|
|
|
|
+ perm(headers, completed, () => {
|
|
|
// add listeners
|
|
// add listeners
|
|
|
if (headers && !chrome.webRequest.onHeadersReceived.hasListener(onHeadersReceived)) {
|
|
if (headers && !chrome.webRequest.onHeadersReceived.hasListener(onHeadersReceived)) {
|
|
|
chrome.webRequest.onHeadersReceived.addListener(onHeadersReceived, filter, options)
|
|
chrome.webRequest.onHeadersReceived.addListener(onHeadersReceived, filter, options)
|
|
|
}
|
|
}
|
|
|
|
|
+ if (completed && !chrome.webRequest.onCompleted.hasListener(onCompleted)) {
|
|
|
|
|
+ chrome.webRequest.onCompleted.addListener(onCompleted, filter)
|
|
|
|
|
+ }
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|