diff options
Diffstat (limited to 'js/vapi-background.js')
-rw-r--r-- | js/vapi-background.js | 80 |
1 files changed, 3 insertions, 77 deletions
diff --git a/js/vapi-background.js b/js/vapi-background.js index 0da0638..a7cc5f3 100644 --- a/js/vapi-background.js +++ b/js/vapi-background.js @@ -33,6 +33,8 @@ (function () { const {classes: Cc, interfaces: Ci, utils: Cu} = Components; const {Services} = Cu.import('resource://gre/modules/Services.jsm', null); + const {HTTPRequestHeaders} = + Cu.import('chrome://ematrix/content/HTTPRequestHeaders.jsm', null); let vAPI = self.vAPI; // Guaranteed to be initialized by vapi-core.js @@ -69,82 +71,6 @@ } }; - let httpRequestHeadersFactory = function (channel) { - let entry = httpRequestHeadersFactory.junkyard.pop(); - if (entry) { - return entry.init(channel); - } - - return new HTTPRequestHeaders(channel); - }; - - httpRequestHeadersFactory.junkyard = []; - - let HTTPRequestHeaders = function (channel) { - this.init(channel); - }; - - HTTPRequestHeaders.prototype.init = function (channel) { - this.channel = channel; - this.headers = new Array(); - this.originalHeaderNames = new Array(); - - channel.visitRequestHeaders({ - visitHeader: function (name, value) { - this.headers.push({name: name, value: value}); - this.originalHeaderNames.push(name); - }.bind(this) - }); - - return this; - }; - - HTTPRequestHeaders.prototype.dispose = function () { - this.channel = null; - this.headers = null; - this.originalHeaderNames = null; - httpRequestHeadersFactory.junkyard.push(this); - }; - - HTTPRequestHeaders.prototype.update = function () { - let newHeaderNames = new Set(); - for (let header of this.headers) { - this.setHeader(header.name, header.value, true); - newHeaderNames.add(header.name); - } - - //Clear any headers that were removed - for (let name of this.originalHeaderNames) { - if (!newHeaderNames.has(name)) { - this.channel.setRequestHeader(name, '', false); - } - } - }; - - HTTPRequestHeaders.prototype.getHeader = function (name) { - try { - return this.channel.getRequestHeader(name); - } catch (e) { - // Ignore - } - - return ''; - }; - - HTTPRequestHeaders.prototype.setHeader = function (name, newValue, create) { - let oldValue = this.getHeader(name); - if (newValue === oldValue) { - return false; - } - - if (oldValue === '' && create !== true) { - return false; - } - - this.channel.setRequestHeader(name, newValue, false); - return true; - }; - let httpObserver = { classDescription: 'net-channel-event-sinks for ' + location.host, classID: Components.ID('{5d2e2797-6d68-42e2-8aeb-81ce6ba16b95}'), @@ -351,7 +277,7 @@ let onBeforeSendHeaders = vAPI.net.onBeforeSendHeaders; if (onBeforeSendHeaders.types === null || onBeforeSendHeaders.types.has(type)) { - let requestHeaders = httpRequestHeadersFactory(channel); + let requestHeaders = HTTPRequestHeaders.factory(channel); let newHeaders = onBeforeSendHeaders.callback({ parentFrameId: type === 'main_frame' ? -1 : 0, requestHeaders: requestHeaders.headers, |