diff options
author | Alessio Vanni <vannilla@firemail.cc> | 2019-07-05 13:34:01 +0200 |
---|---|---|
committer | Alessio Vanni <vannilla@firemail.cc> | 2019-07-05 13:36:26 +0200 |
commit | 4c1c37a54318d91d572180b45bda9db6d9de0389 (patch) | |
tree | 7f3132bc4129bb965668f6ecd5193f76bfc39c99 /js/vapi-common.js | |
parent | 6908a6c89f9f44380faa1831ec13cff4042b671a (diff) | |
download | ematrix-4c1c37a54318d91d572180b45bda9db6d9de0389.tar.lz ematrix-4c1c37a54318d91d572180b45bda9db6d9de0389.tar.xz ematrix-4c1c37a54318d91d572180b45bda9db6d9de0389.zip |
Style changes
Diffstat (limited to 'js/vapi-common.js')
-rw-r--r-- | js/vapi-common.js | 286 |
1 files changed, 133 insertions, 153 deletions
diff --git a/js/vapi-common.js b/js/vapi-common.js index 9a322ec..14b1086 100644 --- a/js/vapi-common.js +++ b/js/vapi-common.js @@ -21,172 +21,152 @@ uMatrix Home: https://github.com/gorhill/uMatrix */ -/* global sendAsyncMessage */ - // For background page or non-background pages 'use strict'; -/******************************************************************************/ - -(function(self) { - -/******************************************************************************/ - -Components.utils.import('resource://gre/modules/Services.jsm'); - -// https://bugs.chromium.org/p/project-zero/issues/detail?id=1225&desc=6#c10 -// eMatrix: does this apply to us? -// In the meantime, let's remove the useless `eMatrix' property from vAPI -if (self.vAPI === undefined) { - self.vAPI = {}; -} - -var vAPI = self.vAPI; // This is used also when vapi-core is not available - -/******************************************************************************/ - -vAPI.setTimeout = vAPI.setTimeout || function(callback, delay, extra) { - return setTimeout(function(a) { callback(a); }, delay, extra); -}; - -/******************************************************************************/ - -// http://www.w3.org/International/questions/qa-scripts#directions - -var setScriptDirection = function(language) { - document.body.setAttribute( - 'dir', - ['ar', 'he', 'fa', 'ps', 'ur'].indexOf(language) !== -1 ? 'rtl' : 'ltr' - ); -}; +(function (self) { + const {classes: Cc, interfaces: Ci, utils: Cu} = Components; + Cu.import('resource://gre/modules/Services.jsm'); -/******************************************************************************/ - -vAPI.download = function(details) { - if ( !details.url ) { - return; + // https://bugs.chromium.org/p/project-zero/issues/detail?id=1225&desc=6#c10 + // eMatrix: does this apply to us? + // In the meantime, let's remove the useless `eMatrix' property from vAPI + if (self.vAPI === undefined) { + self.vAPI = {}; } - var a = document.createElement('a'); - a.href = details.url; - a.setAttribute('download', details.filename || ''); - a.dispatchEvent(new MouseEvent('click')); -}; - -/******************************************************************************/ - -vAPI.insertHTML = (function() { - const parser = Components.classes['@mozilla.org/parserutils;1'] - .getService(Components.interfaces.nsIParserUtils); - - // https://github.com/gorhill/uBlock/issues/845 - // Apparently dashboard pages execute with `about:blank` principal. - - return function(node, html) { - while ( node.firstChild ) { - node.removeChild(node.firstChild); - } - - node.appendChild(parser.parseFragment( - html, - parser.SanitizerAllowStyle, - false, - Services.io.newURI('about:blank', null, null), - document.documentElement - )); - }; -})(); - -/******************************************************************************/ + var vAPI = self.vAPI; // This is used also when vapi-core is not available -vAPI.getURL = function(path) { - return 'chrome://' + location.host + '/content/' + path.replace(/^\/+/, ''); -}; + vAPI.setTimeout = vAPI.setTimeout || function (callback, delay, extra) { + return setTimeout(function (a) { + callback(a); + }, delay, extra); + }; -/******************************************************************************/ + // http://www.w3.org/International/questions/qa-scripts#directions + var setScriptDirection = function(language) { + let dir = + ['ar', 'he', 'fa', 'ps', 'ur'].indexOf(language) !== -1 + ? 'rtl' + : 'ltr'; + + document.body.setAttribute('dir', dir); + }; -vAPI.i18n = (function() { - var stringBundle = Services.strings.createBundle( - 'chrome://' + location.host + '/locale/messages.properties' - ); + vAPI.download = function (details) { + if (!details.url) { + return; + } - return function(s) { - try { - return stringBundle.GetStringFromName(s); - } catch (ex) { - return ''; - } + var a = document.createElement('a'); + a.href = details.url; + a.setAttribute('download', details.filename || ''); + a.dispatchEvent(new MouseEvent('click')); }; -})(); - -setScriptDirection(navigator.language); - -/******************************************************************************/ - -vAPI.closePopup = function() { - sendAsyncMessage(location.host + ':closePopup'); -}; - -/******************************************************************************/ - -// A localStorage-like object which should be accessible from the -// background page or auxiliary pages. -// This storage is optional, but it is nice to have, for a more polished user -// experience. - -vAPI.localStorage = { - pbName: '', - pb: null, - str: Components.classes['@mozilla.org/supports-string;1'] - .createInstance(Components.interfaces.nsISupportsString), - init: function(pbName) { - this.pbName = pbName; - this.pb = Services.prefs.getBranch(pbName); - }, - getItem: function(key) { - try { - return this.pb.getComplexValue( - key, - Components.interfaces.nsISupportsString - ).data; - } catch (ex) { - return null; - } - }, - setItem: function(key, value) { - this.str.data = value; - this.pb.setComplexValue( - key, - Components.interfaces.nsISupportsString, - this.str - ); - }, - getBool: function(key) { - try { - return this.pb.getBoolPref(key); - } catch (ex) { - return null; - } - }, - setBool: function(key, value) { - this.pb.setBoolPref(key, value); - }, - setDefaultBool: function(key, defaultValue) { - Services.prefs.getDefaultBranch(this.pbName).setBoolPref(key, defaultValue); - }, - removeItem: function(key) { - this.pb.clearUserPref(key); - }, - clear: function() { - this.pb.deleteBranch(''); - } -}; -vAPI.localStorage.init('extensions.' + location.host + '.'); + vAPI.insertHTML = (function () { + const parser = Cc['@mozilla.org/parserutils;1'] + .getService(Ci.nsIParserUtils); + + // https://github.com/gorhill/uBlock/issues/845 + // Apparently dashboard pages execute with `about:blank` principal. + + return function (node, html) { + while (node.firstChild) { + node.removeChild(node.firstChild); + } + + let parsed = + parser.parseFragment(html, + parser.SanitizerAllowStyle, + false, + Services.io.newURI('about:blank', + null, null), + document.documentElement); + + node.appendChild(parsed); + }; + })(); + + vAPI.getURL = function (path) { + return 'chrome://' + + location.host + + '/content/' + + path.replace(/^\/+/, ''); + }; + + vAPI.i18n = (function () { + var stringBundle = + Services.strings.createBundle('chrome://' + + location.host + + '/locale/messages.properties'); + + return function (s) { + try { + return stringBundle.GetStringFromName(s); + } catch (ex) { + return ''; + } + }; + })(); + + setScriptDirection(navigator.language); + + vAPI.closePopup = function() { + sendAsyncMessage(location.host + ':closePopup'); + }; -/******************************************************************************/ + // A localStorage-like object which should be accessible from the + // background page or auxiliary pages. + // This storage is optional, but it is nice to have, for a more polished user + // experience. + vAPI.localStorage = { + pbName: '', + pb: null, + str: Cc['@mozilla.org/supports-string;1'] + .createInstance(Ci.nsISupportsString), + + init: function (pbName) { + this.pbName = pbName; + this.pb = Services.prefs.getBranch(pbName); + }, + getItem: function (key) { + try { + return this.pb + .getComplexValue(key, + Ci.nsISupportsString).data; + } catch (ex) { + return null; + } + }, + setItem: function (key, value) { + this.str.data = value; + this.pb.setComplexValue(key, + Ci.nsISupportsString, + this.str); + }, + getBool: function (key) { + try { + return this.pb.getBoolPref(key); + } catch (ex) { + return null; + } + }, + setBool: function (key, value) { + this.pb.setBoolPref(key, value); + }, + setDefaultBool: function (key, defaultValue) { + Services.prefs.getDefaultBranch(this.pbName) + .setBoolPref(key, defaultValue); + }, + removeItem: function (key) { + this.pb.clearUserPref(key); + }, + clear: function () { + this.pb.deleteBranch(''); + } + }; + vAPI.localStorage.init('extensions.' + location.host + '.'); })(this); - -/******************************************************************************/ |