aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/vapi-common.js
diff options
context:
space:
mode:
authorDeathamns <deathamns@gmail.com>2014-10-17 21:44:19 +0200
committerDeathamns <deathamns@gmail.com>2014-11-09 17:39:12 +0100
commit5b79bf353647a4dad9d4968d0f246582744f07bc (patch)
tree06f045f4dfbd188a8f1217c491b185f0d41d6d50 /src/js/vapi-common.js
parent96c4e2e2565ffbd7d413ed7721d9610772b03859 (diff)
downloaduBlock-5b79bf353647a4dad9d4968d0f246582744f07bc.zip
uBlock-5b79bf353647a4dad9d4968d0f246582744f07bc.tar.gz
uBlock-5b79bf353647a4dad9d4968d0f246582744f07bc.tar.bz2
Work on vendor API abstraction, and near complete Safari support
Diffstat (limited to 'src/js/vapi-common.js')
-rw-r--r--src/js/vapi-common.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/js/vapi-common.js b/src/js/vapi-common.js
new file mode 100644
index 0000000..2997a11
--- /dev/null
+++ b/src/js/vapi-common.js
@@ -0,0 +1,62 @@
+// only for background and other extension pages
+/* global chrome, Components, BeforeLoadEvent */
+
+(function() {
+'use strict';
+
+window.vAPI = window.vAPI || {};
+
+if (window.chrome) {
+ var chrome = window.chrome;
+
+ vAPI.getURL = function(path) {
+ return chrome.runtime.getURL(path);
+ };
+
+ vAPI.i18n = function(s) {
+ return chrome.i18n.getMessage(s) || s;
+ };
+} else if (window.safari) {
+ vAPI.getURL = function(path) {
+ return safari.extension.baseURI + path;
+ };
+
+ var xhr = new XMLHttpRequest;
+ xhr.overrideMimeType('application/json;charset=utf-8');
+ xhr.open('GET', './locales.json', false);
+ xhr.send();
+ vAPI.i18nData = JSON.parse(xhr.responseText);
+
+ if (vAPI.i18nData[vAPI.i18n = navigator.language.replace('-', '_')]
+ || vAPI.i18nData[vAPI.i18n = vAPI.i18n.slice(0, 2)]) {
+ vAPI.i18nAlpha2 = vAPI.i18n;
+ } else {
+ vAPI.i18nAlpha2 = vAPI.i18nData._;
+ }
+
+ xhr = new XMLHttpRequest;
+ xhr.overrideMimeType('application/json;charset=utf-8');
+ xhr.open('GET', './_locales/' + vAPI.i18nAlpha2 + '/messages.json', false);
+ xhr.send();
+ vAPI.i18nData = JSON.parse(xhr.responseText);
+
+ for (var i18nKey in vAPI.i18nData) {
+ vAPI.i18nData[i18nKey] = vAPI.i18nData[i18nKey].message;
+ }
+
+ vAPI.i18n = function(s) {
+ return this.i18nData[s] || s;
+ };
+
+ // update popover size to its content
+ if (safari.self.identifier === 'popover' && safari.self) {
+ vAPI.updatePopoverSize = function() {
+ safari.self.width = document.body.clientWidth;
+ safari.self.height = document.body.clientHeight;
+ };
+
+ setTimeout(vAPI.updatePopoverSize, 200);
+ }
+}
+
+})(); \ No newline at end of file