diff options
Diffstat (limited to 'netwerk/protocol/http/WellKnownOpportunisticUtils.js')
-rw-r--r-- | netwerk/protocol/http/WellKnownOpportunisticUtils.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/netwerk/protocol/http/WellKnownOpportunisticUtils.js b/netwerk/protocol/http/WellKnownOpportunisticUtils.js new file mode 100644 index 000000000..865f2a6b4 --- /dev/null +++ b/netwerk/protocol/http/WellKnownOpportunisticUtils.js @@ -0,0 +1,43 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, +* You can obtain one at http://mozilla.org/MPL/2.0/. */ + +'use strict'; + +const { classes: Cc, interfaces: Ci, utils: Cu } = Components; + +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); + +const WELLKNOWNOPPORTUNISTICUTILS_CONTRACTID = "@mozilla.org/network/well-known-opportunistic-utils;1"; +const WELLKNOWNOPPORTUNISTICUTILS_CID = Components.ID("{b4f96c89-5238-450c-8bda-e12c26f1d150}"); + +function WellKnownOpportunisticUtils() { + this.valid = false; + this.mixed = false; + this.lifetime = 0; +} + +WellKnownOpportunisticUtils.prototype = { + classID: WELLKNOWNOPPORTUNISTICUTILS_CID, + contractID: WELLKNOWNOPPORTUNISTICUTILS_CONTRACTID, + classDescription: "Well-Known Opportunistic Utils", + QueryInterface: XPCOMUtils.generateQI([Ci.nsIWellKnownOpportunisticUtils]), + + verify: function(aJSON, aOrigin, aAlternatePort) { + try { + let obj = JSON.parse(aJSON.toLowerCase()); + let ports = obj[aOrigin.toLowerCase()]['tls-ports']; + if (ports.indexOf(aAlternatePort) == -1) { + throw "invalid port"; + } + this.lifetime = obj[aOrigin.toLowerCase()]['lifetime']; + this.mixed = obj[aOrigin.toLowerCase()]['mixed-scheme']; + } catch (e) { + return; + } + this.valid = true; + }, +}; + +this.NSGetFactory = XPCOMUtils.generateNSGetFactory([WellKnownOpportunisticUtils]); |