Browse Source

this should fix #390

pull/2/head
gorhill 9 years ago
parent
commit
6c0c62cc13
  1. 9
      platform/firefox/frameModule.js
  2. 17
      platform/firefox/vapi-background.js

9
platform/firefox/frameModule.js

@ -102,7 +102,6 @@ var contentObserver = {
register: function() {
Services.obs.addObserver(this, 'document-element-inserted', true);
if ( this.firefoxPre35 ) {
this.componentRegistrar.registerFactory(
this.classID,
this.classDescription,
@ -116,20 +115,20 @@ var contentObserver = {
false,
true
);
}
},
unregister: function() {
Services.obs.removeObserver(this, 'document-element-inserted');
if ( this.firefoxPre35 ) {
this.componentRegistrar.unregisterFactory(this.classID, this);
this.componentRegistrar.unregisterFactory(
this.classID,
this
);
this.categoryManager.deleteCategoryEntry(
'content-policy',
this.contractID,
false
);
}
},
// https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPolicy

17
platform/firefox/vapi-background.js

@ -1820,15 +1820,21 @@ var httpObserver = {
}
// http-on-opening-request
var tabId, rawType;
var tabId;
var pendingRequest = this.lookupPendingRequest(URI.asciiSpec);
var rawType = channel.loadInfo && channel.loadInfo.contentPolicyType || 1;
if ( pendingRequest !== null ) {
tabId = pendingRequest.tabId;
// https://github.com/gorhill/uBlock/issues/654
// Use the request type from the HTTP observer point of view.
if ( rawType !== 1 ) {
pendingRequest.rawType = rawType;
} else {
rawType = pendingRequest.rawType;
}
} else {
tabId = this.tabIdFromChannel(channel);
rawType = channel.loadInfo && channel.loadInfo.contentPolicyType || 1;
}
if ( this.handleRequest(channel, URI, tabId, rawType) ) {
@ -1900,25 +1906,18 @@ vAPI.net.registerListeners = function() {
pendingReq.tabId = tabWatcher.tabIdFromTarget(e.target);
};
// https://github.com/gorhill/uMatrix/issues/200
// We need this only for Firefox 34 and less: the tab id is derived from
// the origin of the message.
if ( vAPI.firefoxPre35 ) {
vAPI.messaging.globalMessageManager.addMessageListener(
shouldLoadListenerMessageName,
shouldLoadListener
);
}
httpObserver.register();
cleanupTasks.push(function() {
if ( vAPI.firefoxPre35 ) {
vAPI.messaging.globalMessageManager.removeMessageListener(
shouldLoadListenerMessageName,
shouldLoadListener
);
}
httpObserver.unregister();
});
};

Loading…
Cancel
Save