diff --git a/README.md b/README.md
index 18eedb9f0785b..b750119d5f8e8 100644
--- a/README.md
+++ b/README.md
@@ -28,7 +28,7 @@ While most of the code in this extension is shared with [upstream](https://githu
## Issues
-Known issues, bugs and missing features are listed on the [Issues page](https://github.com/nikrolls/uBlock-Edge/issues) for this repo. Features documented in the upstream extension and not listed on the Issues page are assumed to be working. If you run into an issue not listed, please [create a new issue](https://github.com/nikrolls/uBlock-Edge/issues) and complete the provided template.
+In the first instance, issues should be reported in [uBlock’s section of the Feedback Hub](feedback-hub://?tabid=2&appid=37833NikRolls.uBlockOrigin_f8jsg5mm64m62!App). If this is not working for you, please [create a new GitHub issue](https://github.com/nikrolls/uBlock-Edge/issues) and complete the provided template.
## Performance and Efficiency
diff --git a/dist/description/description-da.txt b/dist/description/description-da.txt
index 320a7bb9a460f..0eb6f46f4ba62 100644
--- a/dist/description/description-da.txt
+++ b/dist/description/description-da.txt
@@ -1,8 +1,8 @@
En effektiv blocker: let på hukommelse og CPU forbrug,. Kan indlæse og anvende tusindvis af flere filtre end andre populære blockere derude.
-Illustreret oversigt over effektiviteten: https://github.com/gorhill/uBlock/wiki/uBlock-vs.-ABP :-Efficiency-compared
+Illustreret oversigt over effektiviteten: https://github.com/gorhill/uBlock/wiki/uBlock-vs.-ABP:-Efficiency-compared
-Anvendelse: Den Store power knap i pop-up-vinduet kan permanent deaktivere/aktivere uBlock på det aktuelle websted. Dette gælder kun for det aktuelle websted, det er ikke en global afbryderknap.
+Anvendelse: Den store tænd-sluk-knap i pop op-vinduet bruges til permanent at deaktivere/aktivere uBlock på det aktuelle websted. Dette gælder kun for det aktuelle websted, det er ikke en global afbryderknap.
***
@@ -24,7 +24,7 @@ Flere lister er tilgængelige hvis du ønsker det:
- Spam404
- Osv.
-Selvfølgelig vil flere aktive filtre betyde højere hukommelsesforbrug. Selv efter tilføjelse af Fanboys to ekstra lister, og hpHosts’s Ad and tracking servers, har uBlock₀ stadig et lavere hukommelsesforbrug end andre blokere derude.
+Selvfølgelig vil flere aktive filtre betyde højere hukommelsesforbrug. Men selv efter tilføjelse af Fanboys to ekstra lister, samt hpHosts’s Ad and tracking servers, har uBlock stadig et lavere hukommelsesforbrug end andre meget populære blockere derude.
Vær desuden opmærksom på, at hvis du vælger nogle af disse ekstra lister kan det føre til højere sandsynlighed for, at webstedet bliver vist forkert - især de lister der normalt anvendes som hosts-fil.
diff --git a/platform/chromium/manifest.json b/platform/chromium/manifest.json
index b17c8120e87d7..0eb0f71835b0c 100644
--- a/platform/chromium/manifest.json
+++ b/platform/chromium/manifest.json
@@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "uBlock Origin",
- "version": "1.11.0",
+ "version": "1.11.2",
"default_locale": "en",
"description": "__MSG_extShortDesc__",
diff --git a/platform/chromium/vapi-background.js b/platform/chromium/vapi-background.js
index 63290d47b6ab0..2a4fdd66dfc61 100644
--- a/platform/chromium/vapi-background.js
+++ b/platform/chromium/vapi-background.js
@@ -976,16 +976,23 @@ vAPI.net.registerListeners = function() {
// logger, etc.
// Counterpart of following block of code is found in "vapi-client.js" --
// search for "https://github.com/gorhill/uBlock/issues/1497".
+ //
+ // Once uBO 1.11.1 and uBO-Extra 2.12 are widespread, the image-based
+ // handling code can be removed.
var onBeforeWebsocketRequest = function(details) {
+ if ( (details.type !== 'image') &&
+ (details.method !== 'HEAD' || details.type !== 'xmlhttprequest')
+ ) {
+ return;
+ }
+ var requestURL = details.url,
+ matches = /[?&]u(?:rl)?=([^&]+)/.exec(requestURL);
+ if ( matches === null ) { return; }
details.type = 'websocket';
- var requestURL = details.url;
- var matches = /[?&]url=([^&]+)/.exec(requestURL);
details.url = decodeURIComponent(matches[1]);
var r = onBeforeRequestClient(details);
- // Blocked?
if ( r && r.cancel ) { return r; }
- // Try to redirect to the URL of an image already present in the
- // document, or a 1x1 data: URL if none is present.
+ // Redirect to the provided URL, or a 1x1 data: URI if none provided.
matches = /[?&]r=([^&]+)/.exec(requestURL);
return {
redirectUrl: matches !== null ?
@@ -997,11 +1004,9 @@ vAPI.net.registerListeners = function() {
var onBeforeRequestClient = this.onBeforeRequest.callback;
var onBeforeRequest = function(details) {
// https://github.com/gorhill/uBlock/issues/1497
- if (
- details.type === 'image' &&
- details.url.endsWith('ubofix=f41665f3028c7fd10eecf573336216d3')
- ) {
- return onBeforeWebsocketRequest(details);
+ if ( details.url.endsWith('ubofix=f41665f3028c7fd10eecf573336216d3') ) {
+ var r = onBeforeWebsocketRequest(details);
+ if ( r !== undefined ) { return r; }
}
normalizeRequestDetails(details);
diff --git a/platform/edge/about.html b/platform/edge/about.html
index da2a5445bd908..42bb3ae6c4f3c 100644
--- a/platform/edge/about.html
+++ b/platform/edge/about.html
@@ -13,6 +13,7 @@
-
+
-
-
-
diff --git a/platform/edge/manifest.json b/platform/edge/manifest.json
index 336ab6fe603a8..5d270191154af 100644
--- a/platform/edge/manifest.json
+++ b/platform/edge/manifest.json
@@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "uBlock Origin",
- "version": "1.11.0",
+ "version": "1.11.2",
"default_locale": "en",
"description": "__MSG_extShortDesc__",
diff --git a/platform/edge/vapi-background.js b/platform/edge/vapi-background.js
index 243bd2e1d53c3..b5f3ca416fa54 100644
--- a/platform/edge/vapi-background.js
+++ b/platform/edge/vapi-background.js
@@ -1178,22 +1178,27 @@ vAPI.net.registerListeners = function() {
}
};
- // https://bugs.chromium.org/p/chromium/issues/detail?id=129353
- // https://github.com/gorhill/uBlock/issues/1497
// Expose websocket-based network requests to uBO's filtering engine,
// logger, etc.
// Counterpart of following block of code is found in "vapi-client.js" --
// search for "https://github.com/gorhill/uBlock/issues/1497".
+ //
+ // Once uBO 1.11.1 and uBO-Extra 2.12 are widespread, the image-based
+ // handling code can be removed.
var onBeforeWebsocketRequest = function(details) {
+ if ( (details.type !== 'image') &&
+ (details.method !== 'HEAD' || details.type !== 'xmlhttprequest')
+ ) {
+ return;
+ }
+ var requestURL = details.url,
+ matches = /[?&]u(?:rl)?=([^&]+)/.exec(requestURL);
+ if ( matches === null ) { return; }
details.type = 'websocket';
- var requestURL = details.url;
- var matches = /[?&]url=([^&]+)/.exec(requestURL);
details.url = decodeURIComponent(matches[1]);
var r = onBeforeRequestClient(details);
- // Blocked?
if ( r && r.cancel ) { return r; }
- // Try to redirect to the URL of an image already present in the
- // document, or a 1x1 data: URL if none is present.
+ // Redirect to the provided URL, or a 1x1 data: URI if none provided.
matches = /[?&]r=([^&]+)/.exec(requestURL);
return {
redirectUrl: matches !== null ?
@@ -1205,11 +1210,9 @@ vAPI.net.registerListeners = function() {
var onBeforeRequestClient = this.onBeforeRequest.callback;
var onBeforeRequest = function(details) {
// https://github.com/gorhill/uBlock/issues/1497
- if (
- details.type === 'image' &&
- details.url.endsWith('ubofix=f41665f3028c7fd10eecf573336216d3')
- ) {
- return onBeforeWebsocketRequest(details);
+ if ( details.url.endsWith('ubofix=f41665f3028c7fd10eecf573336216d3') ) {
+ var r = onBeforeWebsocketRequest(details);
+ if ( r !== undefined ) { return r; }
}
normalizeRequestDetails(details);
diff --git a/platform/firefox/install.rdf b/platform/firefox/install.rdf
index 2307fcac62f09..8cb7a2edd6beb 100644
--- a/platform/firefox/install.rdf
+++ b/platform/firefox/install.rdf
@@ -39,7 +39,7 @@
{{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}}
2.21
- 2.40.*
+ *
@@ -48,7 +48,7 @@
{{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}}
25.0
- 26.*
+ 27.*
diff --git a/platform/webext/manifest.json b/platform/webext/manifest.json
index ebbbf36b1ef09..2579d659ae2b8 100644
--- a/platform/webext/manifest.json
+++ b/platform/webext/manifest.json
@@ -52,6 +52,7 @@
},
"permissions": [
"contextMenus",
+ "privacy",
"storage",
"tabs",
"webNavigation",
diff --git a/src/_locales/ar/messages.json b/src/_locales/ar/messages.json
index 82cdca5574306..4171b441bc8ec 100644
--- a/src/_locales/ar/messages.json
+++ b/src/_locales/ar/messages.json
@@ -208,7 +208,7 @@
"description":""
},
"settingsAdvancedUserPrompt":{
- "message":"أنا مستخدم متقدم (قراءة إجبارية<\/a>)",
+ "message":"أنا مستخدم ذو خبرة (قراءة إجبارية<\/a>)",
"description":""
},
"settingsAdvancedUserSettings":{
diff --git a/src/_locales/da/messages.json b/src/_locales/da/messages.json
index 68b994610c549..0c48870bff159 100644
--- a/src/_locales/da/messages.json
+++ b/src/_locales/da/messages.json
@@ -224,7 +224,7 @@
"description":"English: "
},
"settingsWebRTCIPAddressHiddenPrompt":{
- "message":"Forhindre WebRTC i at lække lokale IP-adresser",
+ "message":"Forhindr WebRTC i at lække lokale IP-adresser",
"description":"English: "
},
"settingPerSiteSwitchGroup":{
@@ -232,7 +232,7 @@
"description":""
},
"settingPerSiteSwitchGroupSynopsis":{
- "message":"Disse standardindstillinger kan overskrives på en per-side basis",
+ "message":"Disse standardindstillinger kan tilsidesættes for hver enkelt websted",
"description":""
},
"settingsNoCosmeticFilteringPrompt":{
@@ -240,7 +240,7 @@
"description":""
},
"settingsNoLargeMediaPrompt":{
- "message":"Bloker medieelementer større end {{input: nummer}} kB",
+ "message":"Bloker medieelementer større end {{input:number}} kB",
"description":""
},
"settingsNoRemoteFontsPrompt":{
diff --git a/src/_locales/eo/messages.json b/src/_locales/eo/messages.json
index 90b5bfe67d937..ad8ac35cad8f6 100644
--- a/src/_locales/eo/messages.json
+++ b/src/_locales/eo/messages.json
@@ -40,7 +40,7 @@
"description":"appears as tab name in dashboard"
},
"advancedSettingsPageName":{
- "message":"Advanced settings",
+ "message":"Altgradaj agordoj",
"description":"Title for the advanced settings page"
},
"popupPowerSwitchInfo":{
@@ -212,7 +212,7 @@
"description":""
},
"settingsAdvancedUserSettings":{
- "message":"advanced settings",
+ "message":"altgradaj agordoj",
"description":"For the tooltip of a link which gives access to advanced settings"
},
"settingsPrefetchingDisabledPrompt":{
diff --git a/src/_locales/he/messages.json b/src/_locales/he/messages.json
index 1d8022796e6b3..c4b6e28935064 100644
--- a/src/_locales/he/messages.json
+++ b/src/_locales/he/messages.json
@@ -424,7 +424,7 @@
"description":"English: dynamic rule syntax and full documentation."
},
"whitelistPrompt":{
- "message":"רשימת שמות המתחם שלך בהם uBlock₀ לא יהיה פעיל. רשומה אחת בכל שורה. שמות מתחם לא חוקיים לא יפורשו ולא תהיה התראה לכך.",
+ "message":"הרשומות ברשימה הלבנה מציינות באילו דפי אינטרנט uBlock Origin לא יהיה פעיל. רשומה אחת בכל שורה. רשומות לא חוקיות תתעלמנה בשקט ויסומנו כהערות.",
"description":"English: An overview of the content of the dashboard's Whitelist pane."
},
"whitelistImport":{
diff --git a/src/_locales/pt_BR/messages.json b/src/_locales/pt_BR/messages.json
index 42fcae42696b7..28d6050f26ed8 100644
--- a/src/_locales/pt_BR/messages.json
+++ b/src/_locales/pt_BR/messages.json
@@ -200,7 +200,7 @@
"description":"English: Make use of context menu where appropriate"
},
"settingsColorBlindPrompt":{
- "message":"Modo Daltonismo",
+ "message":"Modo daltonismo",
"description":"English: Color-blind friendly"
},
"settingsCloudStorageEnabledPrompt":{
diff --git a/src/_locales/pt_PT/messages.json b/src/_locales/pt_PT/messages.json
index e2d63b466d109..6e110e1c4d89e 100644
--- a/src/_locales/pt_PT/messages.json
+++ b/src/_locales/pt_PT/messages.json
@@ -560,7 +560,7 @@
"description":"English: my-ublock-backup_{{datetime}}.txt"
},
"aboutRestoreDataButton":{
- "message":"Restaurar por um ficheiro...",
+ "message":"Restaurar a partir de um ficheiro...",
"description":"English: Restore from file..."
},
"aboutResetDataButton":{
@@ -568,7 +568,7 @@
"description":"English: Reset to default settings..."
},
"aboutRestoreDataConfirm":{
- "message":"Todas as suas definições serão substituídas utilizando os dados da cópia de segurança de {{time}}, e uBlock₀ irá reiniciar.\n\nSubstituir todas as definições existentes utilizando os dados da cópia de segurança?",
+ "message":"Todas as suas definições serão substituídas utilizando os dados da cópia de segurança de {{time}}, e o uBlock₀ irá reiniciar.\n\nSubstituir todas as definições existentes utilizando os dados da cópia de segurança?",
"description":"Message asking user to confirm restore"
},
"aboutRestoreDataError":{
diff --git a/src/_locales/sv/messages.json b/src/_locales/sv/messages.json
index f7f8996fefbf3..51b40c8c852ba 100644
--- a/src/_locales/sv/messages.json
+++ b/src/_locales/sv/messages.json
@@ -76,7 +76,7 @@
"description":"English: Enter element picker mode"
},
"popupTipLog":{
- "message":"Öppna loggaren",
+ "message":"Öppna loggen",
"description":"Tooltip used for the logger icon in the panel"
},
"popupTipNoPopups":{
diff --git a/src/epicker.html b/src/epicker.html
index fc1f34e520a3a..42df6414195b6 100644
--- a/src/epicker.html
+++ b/src/epicker.html
@@ -78,7 +78,7 @@
resize: none;
width: 100%;
}
-section > div:first-child > textarea + div {
+#resultsetCount {
background-color: #aaa;
bottom: 0;
color: white;
@@ -86,7 +86,7 @@
position: absolute;
right: 0;
}
-section.invalidFilter > div:first-child > textarea + div {
+section.invalidFilter #resultsetCount {
background-color: red;
}
section > div:first-child + div {
@@ -183,7 +183,7 @@