Browse Source

fix #554

pull/2/head
gorhill 9 years ago
parent
commit
73646ed7ce
  1. 78
      platform/firefox/vapi-background.js

78
platform/firefox/vapi-background.js

@ -1722,7 +1722,6 @@ var httpObserver = {
this.pendingRingBufferInit(); this.pendingRingBufferInit();
// https://developer.mozilla.org/en/docs/Observer_Notifications#HTTP_requests // https://developer.mozilla.org/en/docs/Observer_Notifications#HTTP_requests
Services.obs.addObserver(this, 'http-on-opening-request', true);
Services.obs.addObserver(this, 'http-on-modify-request', true); Services.obs.addObserver(this, 'http-on-modify-request', true);
Services.obs.addObserver(this, 'http-on-examine-response', true); Services.obs.addObserver(this, 'http-on-examine-response', true);
Services.obs.addObserver(this, 'http-on-examine-cached-response', true); Services.obs.addObserver(this, 'http-on-examine-cached-response', true);
@ -1752,7 +1751,6 @@ var httpObserver = {
}, },
unregister: function() { unregister: function() {
Services.obs.removeObserver(this, 'http-on-opening-request');
Services.obs.removeObserver(this, 'http-on-modify-request'); Services.obs.removeObserver(this, 'http-on-modify-request');
Services.obs.removeObserver(this, 'http-on-examine-response'); Services.obs.removeObserver(this, 'http-on-examine-response');
Services.obs.removeObserver(this, 'http-on-examine-cached-response'); Services.obs.removeObserver(this, 'http-on-examine-cached-response');
@ -1840,43 +1838,37 @@ var httpObserver = {
handleRequest: function(channel, URI, tabId, rawType) { handleRequest: function(channel, URI, tabId, rawType) {
var type = this.typeMap[rawType] || 'other'; var type = this.typeMap[rawType] || 'other';
var onBeforeRequest = vAPI.net.onBeforeRequest;
if ( onBeforeRequest.types && onBeforeRequest.types.has(type) === false ) {
return false;
}
var result = onBeforeRequest.callback({
hostname: URI.asciiHost,
parentFrameId: type === 'main_frame' ? -1 : 0,
tabId: tabId,
type: type,
url: URI.asciiSpec
});
if ( typeof result !== 'object' ) {
return false;
var onBeforeRequest = vAPI.net.onBeforeRequest;
if ( onBeforeRequest.types === null || onBeforeRequest.types.has(type) ) {
var result = onBeforeRequest.callback({
hostname: URI.asciiHost,
parentFrameId: type === 'main_frame' ? -1 : 0,
tabId: tabId,
type: type,
url: URI.asciiSpec
});
if ( typeof result === 'object' ) {
channel.cancel(this.ABORT);
return true;
}
} }
channel.cancel(this.ABORT);
return true;
},
handleRequestHeaders: function(channel, URI, tabId, rawType) {
var type = this.typeMap[rawType] || 'other';
var onBeforeSendHeaders = vAPI.net.onBeforeSendHeaders; var onBeforeSendHeaders = vAPI.net.onBeforeSendHeaders;
if ( onBeforeSendHeaders.types && onBeforeSendHeaders.types.has(type) === false ) {
return;
if ( onBeforeSendHeaders.types === null || onBeforeSendHeaders.types.has(type) ) {
var requestHeaders = httpRequestHeadersFactory(channel);
onBeforeSendHeaders.callback({
hostname: URI.asciiHost,
parentFrameId: type === 'main_frame' ? -1 : 0,
requestHeaders: requestHeaders,
tabId: tabId,
type: type,
url: URI.asciiSpec
});
requestHeaders.dispose();
} }
var requestHeaders = httpRequestHeadersFactory(channel);
onBeforeSendHeaders.callback({
hostname: URI.asciiHost,
parentFrameId: type === 'main_frame' ? -1 : 0,
requestHeaders: requestHeaders,
tabId: tabId,
type: type,
url: URI.asciiSpec
});
requestHeaders.dispose();
return false;
}, },
channelDataFromChannel: function(channel) { channelDataFromChannel: function(channel) {
@ -1996,18 +1988,7 @@ var httpObserver = {
return; return;
} }
if ( topic === 'http-on-modify-request' ) {
channelData = this.channelDataFromChannel(channel);
if ( channelData === null ) {
return;
}
this.handleRequestHeaders(channel, URI, channelData[0], channelData[1]);
return;
}
// http-on-opening-request
// http-on-modify-request
var tabId; var tabId;
var pendingRequest = this.lookupPendingRequest(URI.asciiSpec); var pendingRequest = this.lookupPendingRequest(URI.asciiSpec);
var rawType = 1; var rawType = 1;
@ -2060,12 +2041,11 @@ var httpObserver = {
return; return;
} }
if ( !(oldChannel instanceof Ci.nsIWritablePropertyBag) ) {
var channelData = this.channelDataFromChannel(oldChannel);
if ( channelData === null ) {
return; return;
} }
var channelData = oldChannel.getProperty(this.REQDATAKEY);
if ( this.handleRequest(newChannel, URI, channelData[0], channelData[1]) ) { if ( this.handleRequest(newChannel, URI, channelData[0], channelData[1]) ) {
result = this.ABORT; result = this.ABORT;
return; return;

Loading…
Cancel
Save