diff --git a/_locales/de/messages.json b/_locales/de/messages.json index a1db65fc7..19423f0c3 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -107,6 +107,10 @@ "message":"Verwende das Kontext-Menü, falls möglich", "description":"English: Make use of context menu where appropriate" }, + "settingsExperimentalPrompt":{ + "message":"Enable experimental features", + "description":"English: Enable experimental features" + }, "3pListsOfBlockedHostsPrompt":{ "message":"{{netFilterCount}} Netzwerkfilter + {{cosmeticFilterCount}} kosmetische Filter von:", "description":"English: {{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 50a78fdbb..3794e1511 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -107,6 +107,10 @@ "message":"Make use of context menu where appropriate", "description":"English: Make use of context menu where appropriate" }, + "settingsExperimentalPrompt":{ + "message":"Enable experimental features", + "description":"English: Enable experimental features" + }, "3pListsOfBlockedHostsPrompt":{ "message":"{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:", "description":"English: {{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index 6e9eb9951..48be9c125 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -107,6 +107,10 @@ "message":"Utiliser le menu contextuel si possible", "description":"English: Make use of context menu where appropriate" }, + "settingsExperimentalPrompt":{ + "message":"Activer les fonctionalités expérimentales", + "description":"English: Enable experimental features" + }, "3pListsOfBlockedHostsPrompt":{ "message":"{{netFilterCount}} filtre(s) réseau et {{cosmeticFilterCount}} filtre(s) esthétique(s) sont actuellement en action :", "description":"English: {{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" diff --git a/background.html b/background.html index 9e3123fdd..45ab4e473 100644 --- a/background.html +++ b/background.html @@ -9,6 +9,7 @@ + diff --git a/js/background.js b/js/background.js index d232e21bd..54d417dfc 100644 --- a/js/background.js +++ b/js/background.js @@ -55,6 +55,7 @@ return { autoUpdate: true, collapseBlocked: true, contextMenuEnabled: false, + experimentalEnabled: false, externalLists: defaultExternalLists, logRequests: false, parseAllABPHideFilters: true, diff --git a/js/settings.js b/js/settings.js index a09e6674c..5b927ced6 100644 --- a/js/settings.js +++ b/js/settings.js @@ -61,6 +61,12 @@ var onUserSettingsReceived = function(details) { .on('change', function(){ changeUserSettings('contextMenuEnabled', this.checked); }); + + uDom('#experimental-enabled') + .prop('checked', details.experimentalEnabled === true) + .on('change', function(){ + changeUserSettings('experimentalEnabled', this.checked); + }); }; messaging.ask({ what: 'userSettings' }, onUserSettingsReceived); diff --git a/js/storage.js b/js/storage.js index 202d755ad..260027d4a 100644 --- a/js/storage.js +++ b/js/storage.js @@ -669,6 +669,7 @@ var onUserSettingsReady = function(settings) { µb.contextMenu.toggle(settings.contextMenuEnabled); µb.fromSelfie(onSelfieReady); + µb.mirrors.toggle(settings.experimentalEnabled); }; this.loadUserSettings(onUserSettingsReady); diff --git a/js/traffic.js b/js/traffic.js index 34c91e354..36e25d8a3 100644 --- a/js/traffic.js +++ b/js/traffic.js @@ -104,6 +104,14 @@ var onBeforeRequest = function(details) { pageStore.addFrame(frameId, requestURL); } + if ( µb.userSettings.experimentalEnabled ) { + var redirectURL = µb.mirrors.toURL(requestURL, true); + if ( redirectURL !== '' ) { + //console.debug('"%s" redirected to "%s..."', requestURL.slice(0, 50), redirectURL.slice(0, 50)); + return { redirectUrl: redirectURL }; + } + } + //console.debug('µBlock> onBeforeRequest()> ALLOW "%s" (%o)', details.url, details); return; } diff --git a/js/ublock.js b/js/ublock.js index 10750963c..c95f298c6 100644 --- a/js/ublock.js +++ b/js/ublock.js @@ -213,7 +213,12 @@ // Post-change switch ( name ) { case 'contextMenuEnabled': - this.contextMenu.toggle(value === true); + this.contextMenu.toggle(value); + break; + case 'experimentalEnabled': + if ( typeof this.mirrors === 'object' ) { + this.mirrors.toggle(value); + } break; default: break; diff --git a/settings.html b/settings.html index 1b73bd59d..c6d5f0380 100644 --- a/settings.html +++ b/settings.html @@ -9,6 +9,9 @@ ul { list-style-type: none; } +#experimental-enabled { + margin-top: 1em; + } @@ -18,6 +21,8 @@ ul {
  • +
  • + (Experimental features)