aboutsummaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorRaymond Hill <rhill@raymondhill.net>2014-11-24 14:49:11 -0200
committerRaymond Hill <rhill@raymondhill.net>2014-11-24 14:49:11 -0200
commita430e526b6b72182a07cca94822861da7fbdf77b (patch)
treef32f7dd8480a8c6ba49ba3b4a8c61ac84c13fdec /meta
parent266f62914fab3a9ae5d01fa808b9e7a68e948777 (diff)
downloaduBlock-a430e526b6b72182a07cca94822861da7fbdf77b.zip
uBlock-a430e526b6b72182a07cca94822861da7fbdf77b.tar.gz
uBlock-a430e526b6b72182a07cca94822861da7fbdf77b.tar.bz2
use "platform" as suggested in #360
Diffstat (limited to 'meta')
-rw-r--r--meta/crx/manifest.json54
-rw-r--r--meta/crx/vapi-background.js381
-rw-r--r--meta/crx/vapi-client.js151
-rw-r--r--meta/crx/vapi-common.js89
4 files changed, 0 insertions, 675 deletions
diff --git a/meta/crx/manifest.json b/meta/crx/manifest.json
deleted file mode 100644
index 0d92222..0000000
--- a/meta/crx/manifest.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "manifest_version": 2,
-
- "name": "µBlock",
- "version": "0.7.0.11",
-
- "default_locale": "en",
- "description": "__MSG_extShortDesc__",
- "icons": {
- "16": "img/icon_16.png",
- "128": "img/icon_128.png"
- },
-
- "browser_action": {
- "default_icon": {
- "19": "img/browsericons/icon19-off.png",
- "38": "img/browsericons/icon38-off.png"
- },
- "default_title": "µBlock",
- "default_popup": "popup.html"
- },
-
- "author": "Raymond Hill",
- "background": {
- "page": "background.html"
- },
- "content_scripts": [
- {
- "matches": ["http://*/*", "https://*/*"],
- "js": ["js/vapi-client.js", "js/contentscript-start.js"],
- "run_at": "document_start",
- "all_frames": true
- },
- {
- "matches": ["http://*/*", "https://*/*"],
- "js": ["js/contentscript-end.js"],
- "run_at": "document_end",
- "all_frames": true
- }
- ],
- "minimum_chrome_version": "22.0",
- "options_page": "dashboard.html",
- "permissions": [
- "contextMenus",
- "storage",
- "tabs",
- "unlimitedStorage",
- "webNavigation",
- "webRequest",
- "webRequestBlocking",
- "http://*/*",
- "https://*/*"
- ]
-} \ No newline at end of file
diff --git a/meta/crx/vapi-background.js b/meta/crx/vapi-background.js
deleted file mode 100644
index ce88e49..0000000
--- a/meta/crx/vapi-background.js
+++ /dev/null
@@ -1,381 +0,0 @@
-/*******************************************************************************
-
- µ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
-*/
-
-/* global self */
-
-// For background page
-
-/******************************************************************************/
-
-(function() {
-
-'use strict';
-
-/******************************************************************************/
-
-self.vAPI = self.vAPI || {};
-
-var vAPI = self.vAPI;
-var chrome = self.chrome;
-
-vAPI.chrome = true;
-
-/******************************************************************************/
-
-vAPI.storage = chrome.storage.local;
-
-/******************************************************************************/
-
-vAPI.tabs = {};
-
-/******************************************************************************/
-
-vAPI.tabs.registerListeners = function() {
- if ( typeof this.onNavigation === 'function' ) {
- chrome.webNavigation.onCommitted.addListener(this.onNavigation);
- }
-
- if ( typeof this.onUpdated === 'function' ) {
- chrome.tabs.onUpdated.addListener(this.onUpdated);
- }
-
- if ( typeof this.onClosed === 'function' ) {
- chrome.tabs.onRemoved.addListener(this.onClosed);
- }
-
- if ( typeof this.onPopup === 'function' ) {
- chrome.webNavigation.onCreatedNavigationTarget.addListener(this.onPopup);
- }
-};
-
-/******************************************************************************/
-
-vAPI.tabs.get = function(tabId, callback) {
- var onTabReady = function(tab) {
- // https://code.google.com/p/chromium/issues/detail?id=410868#c8
- if ( chrome.runtime.lastError ) {
- return;
- }
- callback(tab);
- };
- if ( tabId !== null ) {
- chrome.tabs.get(tabId, onTabReady);
- return;
- }
- var onTabReceived = function(tabs) {
- // https://code.google.com/p/chromium/issues/detail?id=410868#c8
- if ( chrome.runtime.lastError ) {
- return;
- }
- callback(tabs[0]);
- };
- chrome.tabs.query({ active: true, currentWindow: true }, onTabReceived);
-};
-
-/******************************************************************************/
-
-// properties of the details object:
-// url: 'URL', // the address that will be opened
-// tabId: 1, // the tab is used if set, instead of creating a new one
-// index: -1, // undefined: end of the list, -1: following tab, or after index
-// active: false, // opens the tab in background - true and undefined: foreground
-// select: true // if a tab is already opened with that url, then select it instead of opening a new one
-
-vAPI.tabs.open = function(details) {
- var targetURL = details.url;
- if ( typeof targetURL !== 'string' || targetURL === '' ) {
- return null;
- }
- // extension pages
- if ( /^[\w-]{2,}:/.test(targetURL) !== true ) {
- targetURL = vAPI.getURL(targetURL);
- }
-
- // dealing with Chrome's asynchronous API
- var wrapper = function() {
- if ( details.active === undefined ) {
- details.active = true;
- }
-
- var subWrapper = function() {
- var _details = {
- url: targetURL,
- active: !!details.active
- };
-
- if ( details.tabId ) {
- // update doesn't accept index, must use move
- chrome.tabs.update(details.tabId, _details, function(tab) {
- // if the tab doesn't exist
- if ( vAPI.lastError() ) {
- chrome.tabs.create(_details);
- } else if ( details.index !== undefined ) {
- chrome.tabs.move(tab.id, {index: details.index});
- }
- });
- } else {
- if ( details.index !== undefined ) {
- _details.index = details.index;
- }
-
- chrome.tabs.create(_details);
- }
- };
-
- if ( details.index === -1 ) {
- vAPI.tabs.get(null, function(tab) {
- if ( tab ) {
- details.index = tab.index + 1;
- } else {
- delete details.index;
- }
-
- subWrapper();
- });
- }
- else {
- subWrapper();
- }
- };
-
- if ( details.select ) {
- chrome.tabs.query({ currentWindow: true }, function(tabs) {
- var rgxHash = /#.*/;
- // this is questionable
- var url = targetURL.replace(rgxHash, '');
- var selected = tabs.some(function(tab) {
- if ( tab.url.replace(rgxHash, '') === url ) {
- chrome.tabs.update(tab.id, { active: true });
- return true;
- }
- });
-
- if ( !selected ) {
- wrapper();
- }
- });
- }
- else {
- wrapper();
- }
-};
-
-/******************************************************************************/
-
-vAPI.tabs.remove = function(tabId) {
- var onTabRemoved = function() {
- if ( vAPI.lastError() ) {
- }
- };
- chrome.tabs.remove(tabId, onTabRemoved);
-};
-
-/******************************************************************************/
-
-vAPI.tabs.injectScript = function(tabId, details, callback) {
- var onScriptExecuted = function() {
- // https://code.google.com/p/chromium/issues/detail?id=410868#c8
- if ( chrome.runtime.lastError ) {
- }
- if ( typeof callback === 'function' ) {
- callback();
- }
- };
- if ( tabId ) {
- chrome.tabs.executeScript(tabId, details, onScriptExecuted);
- } else {
- chrome.tabs.executeScript(details, onScriptExecuted);
- }
-};
-
-/******************************************************************************/
-
-// Must read: https://code.google.com/p/chromium/issues/detail?id=410868#c8
-
-// https://github.com/gorhill/uBlock/issues/19
-// https://github.com/gorhill/uBlock/issues/207
-// Since we may be called asynchronously, the tab id may not exist
-// anymore, so this ensures it does still exist.
-
-vAPI.setIcon = function(tabId, img, badge) {
- var onIconReady = function() {
- if ( vAPI.lastError() ) {
- return;
- }
- chrome.browserAction.setBadgeText({ tabId: tabId, text: badge });
- if ( badge !== '' ) {
- chrome.browserAction.setBadgeBackgroundColor({ tabId: tabId, color: '#666' });
- }
- };
- chrome.browserAction.setIcon({ tabId: tabId, path: img }, onIconReady);
-};
-
-/******************************************************************************/
-
-vAPI.messaging = {
- ports: {},
- listeners: {},
- defaultHandler: null,
- NOOPFUNC: function(){},
- UNHANDLED: 'vAPI.messaging.notHandled'
-};
-
-/******************************************************************************/
-
-vAPI.messaging.listen = function(listenerName, callback) {
- this.listeners[listenerName] = callback;
-};
-
-/******************************************************************************/
-
-vAPI.messaging.onPortMessage = function(request, port) {
- var callback = vAPI.messaging.NOOPFUNC;
- if ( request.requestId !== undefined ) {
- callback = function(response) {
- port.postMessage({
- requestId: request.requestId,
- portName: request.portName,
- msg: response !== undefined ? response : null
- });
- };
- }
-
- // Specific handler
- var r = vAPI.messaging.UNHANDLED;
- var listener = vAPI.messaging.listeners[request.portName];
- if ( typeof listener === 'function' ) {
- r = listener(request.msg, port.sender, callback);
- }
- if ( r !== vAPI.messaging.UNHANDLED ) {
- return;
- }
-
- // Default handler
- r = vAPI.messaging.defaultHandler(request.msg, port.sender, callback);
- if ( r !== vAPI.messaging.UNHANDLED ) {
- return;
- }
-
- console.error('µBlock> messaging > unknown request: %o', request);
-
- // Unhandled:
- // Need to callback anyways in case caller expected an answer, or
- // else there is a memory leak on caller's side
- callback();
-};
-
-/******************************************************************************/
-
-vAPI.messaging.onPortDisconnect = function(port) {
- port.onDisconnect.removeListener(vAPI.messaging.onPortDisconnect);
- port.onMessage.removeListener(vAPI.messaging.onPortMessage);
- delete vAPI.messaging.ports[port.name];
-};
-
-/******************************************************************************/
-
-vAPI.messaging.onPortConnect = function(port) {
- port.onDisconnect.addListener(vAPI.messaging.onPortDisconnect);
- port.onMessage.addListener(vAPI.messaging.onPortMessage);
- vAPI.messaging.ports[port.name] = port;
-};
-
-/******************************************************************************/
-
-vAPI.messaging.setup = function(defaultHandler) {
- // Already setup?
- if ( this.defaultHandler !== null ) {
- return;
- }
-
- if ( typeof defaultHandler !== 'function' ) {
- defaultHandler = function(){ return vAPI.messaging.UNHANDLED; };
- }
- this.defaultHandler = defaultHandler;
-
- chrome.runtime.onConnect.addListener(this.onPortConnect);
-};
-
-/******************************************************************************/
-
-vAPI.messaging.broadcast = function(message) {
- var messageWrapper = {
- broadcast: true,
- msg: message
- };
-
- for ( var portName in this.ports ) {
- if ( this.ports.hasOwnProperty(portName) === false ) {
- continue;
- }
- this.ports[portName].postMessage(messageWrapper);
- }
-};
-
-/******************************************************************************/
-
-vAPI.net = {
- registerListeners: function() {
- var listeners = [
- 'onBeforeRequest',
- 'onBeforeSendHeaders',
- 'onHeadersReceived'
- ];
-
- for (var i = 0; i < listeners.length; ++i) {
- chrome.webRequest[listeners[i]].addListener(
- this[listeners[i]].callback,
- {
- 'urls': this[listeners[i]].urls || ['<all_urls>'],
- 'types': this[listeners[i]].types || []
- },
- this[listeners[i]].extra
- );
- }
- }
-};
-
-/******************************************************************************/
-
-vAPI.contextMenu = {
- create: function(details, callback) {
- this.menuId = details.id;
- this.callback = callback;
- chrome.contextMenus.create(details);
- chrome.contextMenus.onClicked.addListener(this.callback);
- },
- remove: function() {
- chrome.contextMenus.onClicked.removeListener(this.callback);
- chrome.contextMenus.remove(this.menuId);
- }
-};
-
-/******************************************************************************/
-
-vAPI.lastError = function() {
- return chrome.runtime.lastError;
-};
-
-/******************************************************************************/
-
-})();
-
-/******************************************************************************/
diff --git a/meta/crx/vapi-client.js b/meta/crx/vapi-client.js
deleted file mode 100644
index 8fa7b07..0000000
--- a/meta/crx/vapi-client.js
+++ /dev/null
@@ -1,151 +0,0 @@
-/*******************************************************************************
-
- µ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 non background pages
-
-/* global self, chrome, vAPI */
-
-/******************************************************************************/
-
-(function() {
-
-'use strict';
-
-/******************************************************************************/
-
-self.vAPI = self.vAPI || {};
-self.vAPI.chrome = true;
-
-/******************************************************************************/
-
-var messagingConnector = function(response) {
- if ( !response ) {
- return;
- }
-
- var channels = vAPI.messaging.channels;
- var channel, listener;
-
- if ( response.broadcast === true ) {
- for ( channel in channels ) {
- if ( channels.hasOwnProperty(channel) === false ) {
- continue;
- }
- listener = channels[channel].listener;
- if ( typeof listener === 'function' ) {
- listener(response.msg);
- }
- }
- return;
- }
-
- if ( response.requestId ) {
- listener = vAPI.messaging.listeners[response.requestId];
- delete vAPI.messaging.listeners[response.requestId];
- delete response.requestId;
- }
-
- if ( !listener ) {
- channel = channels[response.portName];
- listener = channel && channel.listener;
- }
-
- if ( typeof listener === 'function' ) {
- listener(response.msg);
- }
-};
-
-/******************************************************************************/
-
-var uniqueId = function() {
- return parseInt(Math.random() * 1e10, 10).toString(36);
-};
-
-/******************************************************************************/
-
-self.vAPI.messaging = {
- port: null,
- channels: {},
- listeners: {},
- requestId: 1,
- connectorId: uniqueId(),
-
- setup: function() {
- this.port = chrome.runtime.connect({name: this.connectorId});
- this.port.onMessage.addListener(messagingConnector);
- },
-
- close: function() {
- if ( this.port === null ) {
- return;
- }
- this.port.disconnect();
- this.port.onMessage.removeListener(messagingConnector);
- this.port = null;
- this.channels = {};
- this.listeners = {};
- },
-
- channel: function(channelName, callback) {
- if ( !channelName ) {
- return;
- }
-
- this.channels[channelName] = {
- portName: channelName,
- listener: typeof callback === 'function' ? callback : null,
- send: function(message, callback) {
- if ( vAPI.messaging.port === null ) {
- vAPI.messaging.setup();
- }
-
- message = {
- portName: this.portName,
- msg: message
- };
-
- if ( callback ) {
- message.requestId = vAPI.messaging.requestId++;
- vAPI.messaging.listeners[message.requestId] = callback;
- }
-
- vAPI.messaging.port.postMessage(message);
- },
- close: function() {
- delete vAPI.messaging.channels[this.portName];
- }
- };
-
- return this.channels[channelName];
- }
-};
-
-/******************************************************************************/
-
-self.vAPI.canExecuteContentScript = function() {
- return true;
-};
-
-/******************************************************************************/
-
-})();
-
-/******************************************************************************/ \ No newline at end of file
diff --git a/meta/crx/vapi-common.js b/meta/crx/vapi-common.js
deleted file mode 100644
index cce22b2..0000000
--- a/meta/crx/vapi-common.js
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
-
- µ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
-
-/* global self, vAPI */
-
-/******************************************************************************/
-
-(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();
-};
-
-/******************************************************************************/
-
-var chrome = self.chrome;
-
-vAPI.getURL = function(path) {
- return chrome.runtime.getURL(path);
-};
-
-vAPI.i18n = function(s) {
- return chrome.i18n.getMessage(s);
-};
-
-setScriptDirection(vAPI.i18n('@@ui_locale'));
-
-/******************************************************************************/
-
-})();
-
-/******************************************************************************/