|
@ -785,6 +785,7 @@ var httpObserver = { |
|
|
contractID: '@' + location.host + '/net-channel-event-sinks;1', |
|
|
contractID: '@' + location.host + '/net-channel-event-sinks;1', |
|
|
ABORT: Components.results.NS_BINDING_ABORTED, |
|
|
ABORT: Components.results.NS_BINDING_ABORTED, |
|
|
ACCEPT: Components.results.NS_SUCCEEDED, |
|
|
ACCEPT: Components.results.NS_SUCCEEDED, |
|
|
|
|
|
// Request types: https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPolicy#Constants
|
|
|
MAIN_FRAME: Ci.nsIContentPolicy.TYPE_DOCUMENT, |
|
|
MAIN_FRAME: Ci.nsIContentPolicy.TYPE_DOCUMENT, |
|
|
VALID_CSP_TARGETS: 1 << Ci.nsIContentPolicy.TYPE_DOCUMENT | |
|
|
VALID_CSP_TARGETS: 1 << Ci.nsIContentPolicy.TYPE_DOCUMENT | |
|
|
1 << Ci.nsIContentPolicy.TYPE_SUBDOCUMENT, |
|
|
1 << Ci.nsIContentPolicy.TYPE_SUBDOCUMENT, |
|
@ -795,7 +796,9 @@ var httpObserver = { |
|
|
5: 'object', |
|
|
5: 'object', |
|
|
6: 'main_frame', |
|
|
6: 'main_frame', |
|
|
7: 'sub_frame', |
|
|
7: 'sub_frame', |
|
|
11: 'xmlhttprequest' |
|
|
|
|
|
|
|
|
11: 'xmlhttprequest', |
|
|
|
|
|
12: 'object', |
|
|
|
|
|
14: 'font' |
|
|
}, |
|
|
}, |
|
|
lastRequest: { |
|
|
lastRequest: { |
|
|
url: null, |
|
|
url: null, |
|
@ -892,11 +895,12 @@ var httpObserver = { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
var result = onBeforeRequest.callback({ |
|
|
var result = onBeforeRequest.callback({ |
|
|
url: channel.URI.asciiSpec, |
|
|
|
|
|
type: type, |
|
|
|
|
|
tabId: details.tabId, |
|
|
|
|
|
frameId: details.frameId, |
|
|
frameId: details.frameId, |
|
|
parentFrameId: details.parentFrameId |
|
|
|
|
|
|
|
|
hostname: channel.URI.asciiHost, |
|
|
|
|
|
parentFrameId: details.parentFrameId, |
|
|
|
|
|
tabId: details.tabId, |
|
|
|
|
|
type: type, |
|
|
|
|
|
url: channel.URI.asciiSpec |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
if ( !result || typeof result !== 'object' ) { |
|
|
if ( !result || typeof result !== 'object' ) { |
|
@ -906,7 +910,9 @@ var httpObserver = { |
|
|
if ( result.cancel === true ) { |
|
|
if ( result.cancel === true ) { |
|
|
channel.cancel(this.ABORT); |
|
|
channel.cancel(this.ABORT); |
|
|
return true; |
|
|
return true; |
|
|
} else if ( result.redirectUrl ) { |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ( result.redirectUrl ) { |
|
|
channel.redirectionLimit = 1; |
|
|
channel.redirectionLimit = 1; |
|
|
channel.redirectTo( |
|
|
channel.redirectTo( |
|
|
Services.io.newURI(result.redirectUrl, null, null) |
|
|
Services.io.newURI(result.redirectUrl, null, null) |
|
@ -954,10 +960,11 @@ var httpObserver = { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
result = vAPI.net.onHeadersReceived.callback({ |
|
|
result = vAPI.net.onHeadersReceived.callback({ |
|
|
url: URI.asciiSpec, |
|
|
|
|
|
tabId: channelData[1], |
|
|
|
|
|
|
|
|
hostname: URI.asciiHost, |
|
|
parentFrameId: channelData[0] === this.MAIN_FRAME ? -1 : 0, |
|
|
parentFrameId: channelData[0] === this.MAIN_FRAME ? -1 : 0, |
|
|
responseHeaders: result ? [{name: topic, value: result}] : [] |
|
|
|
|
|
|
|
|
responseHeaders: result ? [{name: topic, value: result}] : [], |
|
|
|
|
|
tabId: channelData[1], |
|
|
|
|
|
url: URI.asciiSpec |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
if ( result ) { |
|
|
if ( result ) { |
|
@ -1098,11 +1105,11 @@ vAPI.net.registerListeners = function() { |
|
|
// data: and about:blank
|
|
|
// data: and about:blank
|
|
|
if ( details.url.charAt(0) !== 'h' ) { |
|
|
if ( details.url.charAt(0) !== 'h' ) { |
|
|
vAPI.net.onBeforeRequest.callback({ |
|
|
vAPI.net.onBeforeRequest.callback({ |
|
|
url: 'http://' + details.url.slice(0, details.url.indexOf(':')), |
|
|
|
|
|
type: 'main_frame', |
|
|
|
|
|
tabId: vAPI.tabs.getTabId(e.target), |
|
|
|
|
|
frameId: details.frameId, |
|
|
frameId: details.frameId, |
|
|
parentFrameId: details.parentFrameId |
|
|
|
|
|
|
|
|
parentFrameId: details.parentFrameId, |
|
|
|
|
|
tabId: vAPI.tabs.getTabId(e.target), |
|
|
|
|
|
type: 'main_frame', |
|
|
|
|
|
url: 'http://' + details.url.slice(0, details.url.indexOf(':')) |
|
|
}); |
|
|
}); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|