aboutsummaryrefslogtreecommitdiffstats
path: root/js/vapi-common.js
diff options
context:
space:
mode:
authorAlessio Vanni <vannilla@firemail.cc>2019-07-05 13:34:01 +0200
committerAlessio Vanni <vannilla@firemail.cc>2019-07-05 13:36:26 +0200
commit4c1c37a54318d91d572180b45bda9db6d9de0389 (patch)
tree7f3132bc4129bb965668f6ecd5193f76bfc39c99 /js/vapi-common.js
parent6908a6c89f9f44380faa1831ec13cff4042b671a (diff)
downloadematrix-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.js286
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);
-
-/******************************************************************************/