From e98b514a51782e72b6627b772276f438ba35c237 Mon Sep 17 00:00:00 2001 From: Deathamns Date: Mon, 24 Nov 2014 20:00:27 +0100 Subject: [PATCH] Initial Firefox port (base, messaging, locales) --- platform/firefox/vapi-common.js | 96 +++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 platform/firefox/vapi-common.js diff --git a/platform/firefox/vapi-common.js b/platform/firefox/vapi-common.js new file mode 100644 index 0000000..45825e7 --- /dev/null +++ b/platform/firefox/vapi-common.js @@ -0,0 +1,96 @@ +/******************************************************************************* + + µBlock - a Chromium browser extension to block requests. + Copyright (C) 2014 The µBlock authors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +// For background page or non-background pages + +/******************************************************************************/ + +(function() { + +'use strict'; + +self.vAPI = self.vAPI || {}; + +/******************************************************************************/ + +// 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' + ); +}; + +/******************************************************************************/ + +vAPI.download = function(details) { + if ( !details.url ) { + return; + } + + var a = document.createElement('a'); + + if ( 'download' in a ) { + a.href = details.url; + a.setAttribute('download', details.filename || ''); + a.dispatchEvent(new MouseEvent('click')); + return; + } + var messager = vAPI.messaging.channel('_download'); + messager.send({ + what: 'gotoURL', + details: { + url: details.url, + index: -1 + } + }); + messager.close(); +}; + +/******************************************************************************/ + +vAPI.getURL = function(path) { + return 'chrome://ublock/content/' + path.replace(/^\/+/, ''); +}; + +vAPI.i18n = (function() { + var stringBundle = Components.classes['@mozilla.org/intl/stringbundle;1'] + .getService(Components.interfaces.nsIStringBundleService) + .createBundle('chrome://ublock/locale/messages.properties'); + + return function(s) { + try { + return stringBundle.GetStringFromName(s); + } catch (ex) { + return s; + } + }; +})(); + +setScriptDirection(navigator.language); + +/******************************************************************************/ + +})(); + +/******************************************************************************/ +