diff options
author | Alessio Vanni <vannilla@firemail.cc> | 2019-06-23 03:11:39 +0200 |
---|---|---|
committer | Alessio Vanni <vannilla@firemail.cc> | 2019-06-23 03:11:39 +0200 |
commit | a7ad9ff0d7e80001db78e65fb5e756966141230f (patch) | |
tree | c5bca3a55fd0586a3704928096b41045f603570a /js/vapi-background.js | |
parent | 6458ec333511fe07101dd3afffbefed7b4fead07 (diff) | |
download | ematrix-a7ad9ff0d7e80001db78e65fb5e756966141230f.tar.lz ematrix-a7ad9ff0d7e80001db78e65fb5e756966141230f.tar.xz ematrix-a7ad9ff0d7e80001db78e65fb5e756966141230f.zip |
Make HTTPRequestHeaders a module
The same as CallbackWrapper.
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, |