aboutsummaryrefslogtreecommitdiffstats
path: root/js/messaging-handlers.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/messaging-handlers.js')
-rw-r--r--js/messaging-handlers.js260
1 files changed, 260 insertions, 0 deletions
diff --git a/js/messaging-handlers.js b/js/messaging-handlers.js
new file mode 100644
index 0000000..30c39b3
--- /dev/null
+++ b/js/messaging-handlers.js
@@ -0,0 +1,260 @@
+/*******************************************************************************
+
+ µBlock - a Chromium browser extension to block requests.
+ Copyright (C) 2014 Raymond Hill
+
+ 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 chrome, µBlock */
+
+/******************************************************************************/
+
+(function() {
+
+// popup.js
+
+/******************************************************************************/
+
+var getStats = function(request, callback) {
+ var µb = µBlock;
+ var r = {
+ globalBlockedRequestCount: µb.localSettings.blockedRequestCount,
+ globalAllowedRequestCount: µb.localSettings.allowedRequestCount,
+ tabId: request.tabId,
+ pageURL: '',
+ pageBlockedRequestCount: 0,
+ pageAllowedRequestCount: 0,
+ netFilteringSwitch: false,
+ cosmeticFilteringSwitch: false
+ };
+ var pageStore = µb.pageStoreFromTabId(request.tabId);
+ if ( pageStore ) {
+ r.pageURL = pageStore.pageURL;
+ r.pageHostname = pageStore.pageHostname;
+ r.pageBlockedRequestCount = pageStore.perLoadBlockedRequestCount;
+ r.pageAllowedRequestCount = pageStore.perLoadAllowedRequestCount;
+ r.netFilteringSwitch = µb.getNetFilteringSwitch(pageStore.pageHostname);
+ }
+ return r;
+};
+
+/******************************************************************************/
+
+var onMessage = function(request, sender, callback) {
+ // Async
+ switch ( request.what ) {
+ default:
+ break;
+ }
+
+ // Sync
+ var response;
+
+ switch ( request.what ) {
+ case 'stats':
+ response = getStats(request);
+ break;
+
+ case 'toggleNetFiltering':
+ µBlock.toggleNetFilteringSwitch(
+ request.hostname,
+ request.state
+ );
+ µBlock.updateBadge(request.tabId);
+ break;
+
+ default:
+ return µBlock.messaging.defaultHandler(request, sender, callback);
+ }
+
+ callback(response);
+};
+
+µBlock.messaging.listen('popup.js', onMessage);
+
+})();
+
+/******************************************************************************/
+
+// content scripts
+
+(function() {
+
+var onMessage = function(request, sender, callback) {
+ // Async
+ switch ( request.what ) {
+ default:
+ break;
+ }
+
+ // Sync
+ var response;
+
+ switch ( request.what ) {
+ case 'retrieveDomainCosmeticSelectors':
+ response = µBlock.abpHideFilters.retrieveDomainSelectors(request);
+ break;
+
+ case 'retrieveGenericCosmeticSelectors':
+ response = µBlock.abpHideFilters.retrieveGenericSelectors(request);
+ break;
+
+ default:
+ return µBlock.messaging.defaultHandler(request, sender, callback);
+ }
+
+ callback(response);
+};
+
+µBlock.messaging.listen('contentscript-start.js', onMessage);
+µBlock.messaging.listen('contentscript-end.js', onMessage);
+
+})();
+
+/******************************************************************************/
+
+// 3p-filters.js
+
+(function() {
+
+var onMessage = function(request, sender, callback) {
+ var µb = µBlock;
+
+ // Async
+ switch ( request.what ) {
+ case 'readUserUbiquitousBlockRules':
+ return µb.assets.get(µb.userFiltersPath, callback);
+
+ case 'writeUserUbiquitousBlockRules':
+ return µb.assets.put(µb.userFiltersPath, request.content, callback);
+
+ default:
+ break;
+ }
+
+ // Sync
+ var response;
+
+ switch ( request.what ) {
+ default:
+ return µb.messaging.defaultHandler(request, sender, callback);
+ }
+
+ callback(response);
+};
+
+µBlock.messaging.listen('3p-filters.js', onMessage);
+
+})();
+
+/******************************************************************************/
+
+// 1p-filters.js
+
+(function() {
+
+var onMessage = function(request, sender, callback) {
+ var µb = µBlock;
+
+ // Async
+ switch ( request.what ) {
+ case 'readUserFilters':
+ return µb.assets.get(µb.userFiltersPath, callback);
+
+ case 'writeUserFilters':
+ return µb.assets.put(µb.userFiltersPath, request.content, callback);
+
+ default:
+ break;
+ }
+
+ // Sync
+ var response;
+
+ switch ( request.what ) {
+ default:
+ return µb.messaging.defaultHandler(request, sender, callback);
+ }
+
+ callback(response);
+};
+
+µBlock.messaging.listen('1p-filters.js', onMessage);
+
+})();
+
+/******************************************************************************/
+
+// about.js
+
+(function() {
+
+var onMessage = function(request, sender, callback) {
+ var µb = µBlock;
+
+ // Async
+ switch ( request.what ) {
+ case 'getAssetUpdaterList':
+ return µb.assetUpdater.getList(callback);
+
+ case 'launchAssetUpdater':
+ return µb.assetUpdater.update(request.list, callback);
+
+ case 'readUserSettings':
+ return chrome.storage.local.get(µb.userSettings, callback);
+
+ case 'readUserFilters':
+ return µb.assets.get(µb.userFiltersPath, callback);
+
+ case 'writeUserFilters':
+ return µb.assets.put(µb.userFiltersPath, request.content, callback);
+
+ default:
+ break;
+ }
+
+ // Sync
+ var response;
+
+ switch ( request.what ) {
+ case 'loadUpdatableAssets':
+ response = µb.loadUpdatableAssets();
+ break;
+
+ case 'readFilterListSelection':
+ response = µb.remoteBlacklists;
+ break;
+
+ case 'getSomeStats':
+ response = {
+ storageQuota: µb.storageQuota,
+ storageUsed: µb.storageUsed
+ };
+ break;
+
+ default:
+ return µb.messaging.defaultHandler(request, sender, callback);
+ }
+
+ callback(response);
+};
+
+µBlock.messaging.listen('about.js', onMessage);
+
+})();
+
+/******************************************************************************/