Adblock Plus kompatible “element skjuldende” filtre<\/a>. Disse filtre er i det væsentlige kosmetiske og har til formål at skjule irriterende visuelle elementer websider, som det ikke er muligt at blokere på andre måder. <\/p>Denne indstilling øger uBlock₀'s hukommelsesforbrug.<\/p>",
"description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature."
},
"3pIgnoreGenericCosmeticFilters": {
@@ -364,7 +364,7 @@
"description": "English: Malware domains"
},
"3pGroupAnnoyances": {
- "message": "Irriterende",
+ "message": "Irritationsmomenter",
"description": "The header identifying the filter lists in the category 'annoyances'"
},
"3pGroupMultipurpose": {
@@ -388,7 +388,7 @@
"description": "used as a tooltip for the out-of-date icon beside a list"
},
"3pLastUpdate": {
- "message": "Sidste opdatering: {{ago}}",
+ "message": "Sidste opdatering: {{ago}}.\nKlik for at gennemtvinge en opdatering.",
"description": "used as a tooltip for the clock icon beside a list"
},
"3pUpdating": {
@@ -616,7 +616,7 @@
"description": "English: Reset to default settings..."
},
"aboutRestoreDataConfirm": {
- "message": "Alle indstillinger vil blive erstattet af sikkerhedskopien fra {{time}}, hvorefter uBlock₀ vil genstarte.\n\nErstat alle indstillinger med indstillingerne fra sikkerhedskopien?",
+ "message": "Alle dine indstillinger vil blive overskrevet med sikkerhedskopierede data fra {{time}}, hvorefter uBlock₀ vil genstarte.\n\nOverskriv de nuværende indstillinger med data fra sikkerhedskopien?",
"description": "Message asking user to confirm restore"
},
"aboutRestoreDataError": {
@@ -628,7 +628,7 @@
"description": "Message asking user to confirm reset"
},
"errorCantConnectTo": {
- "message": "Kan ikke forbinde til {{url}}",
+ "message": "Netværksfejl: {{msg}}",
"description": "English: Network error: {{msg}}"
},
"subscriberConfirm": {
@@ -712,7 +712,7 @@
"description": "tooltip"
},
"cloudPull": {
- "message": "Importer fra skylagring",
+ "message": "Importer fra skylager",
"description": "tooltip"
},
"cloudPullAndMerge": {
@@ -728,7 +728,7 @@
"description": "used as a prompt for the user to provide a custom device name"
},
"advancedSettingsWarning": {
- "message": "Advarsel! Ændr disse avancerede indstillinger på eget ansvar.",
+ "message": "Advarsel! Disse avancerede indstillinger ændres på eget ansvar.",
"description": "A warning to users at the top of 'Advanced settings' page"
},
"genericSubmit": {
diff --git a/src/_locales/ka/messages.json b/src/_locales/ka/messages.json
index 5e0e3a075c595..59d31a38c109d 100644
--- a/src/_locales/ka/messages.json
+++ b/src/_locales/ka/messages.json
@@ -84,7 +84,7 @@
"description": "Tooltip for the element-zapper icon in the popup panel"
},
"popupTipPicker": {
- "message": "პიპეტის გამოყენება",
+ "message": "ელემენტის შერჩევა",
"description": "English: Enter element picker mode"
},
"popupTipLog": {
diff --git a/src/_locales/lv/messages.json b/src/_locales/lv/messages.json
index bb25920d54811..83bc3a46f491b 100644
--- a/src/_locales/lv/messages.json
+++ b/src/_locales/lv/messages.json
@@ -512,7 +512,7 @@
"description": "Pretty name for behind-the-scene network requests"
},
"loggerCurrentTab": {
- "message": "Current tab",
+ "message": "Šī cilne",
"description": "Appears in the logger's tab selector"
},
"logFilterPrompt": {
diff --git a/src/_locales/mr/messages.json b/src/_locales/mr/messages.json
index 1e5d11b5b32d4..bf2f41c74f728 100644
--- a/src/_locales/mr/messages.json
+++ b/src/_locales/mr/messages.json
@@ -40,7 +40,7 @@
"description": "appears as tab name in dashboard"
},
"advancedSettingsPageName": {
- "message": "Advanced settings",
+ "message": "प्रगत सेटिंग्ज",
"description": "Title for the advanced settings page"
},
"popupPowerSwitchInfo": {
@@ -48,11 +48,11 @@
"description": "English: Click: disable\/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page."
},
"popupPowerSwitchInfo1": {
- "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page.",
+ "message": "Ctrl क्लिक करा फक्त या साइटवर म्यूब्लॉक बंद करण्यासाठी.",
"description": "Message to be read by screen readers"
},
"popupPowerSwitchInfo2": {
- "message": "Click to enable uBlock₀ for this site.",
+ "message": "Ctrl क्लिक करा फक्त या साइटवर म्यूब्लॉक चालू करण्यासाठी.",
"description": "Message to be read by screen readers"
},
"popupBlockedRequestPrompt": {
@@ -164,11 +164,11 @@
"description": ""
},
"popup3pAnyRulePrompt": {
- "message": "3rd-party",
+ "message": "तृतीय पक्ष",
"description": ""
},
"popup3pPassiveRulePrompt": {
- "message": "3rd-party css\/images",
+ "message": "तृतीय पक्षी css\/चित्रे",
"description": ""
},
"popupInlineScriptRulePrompt": {
@@ -256,7 +256,7 @@
"description": ""
},
"settingsAdvancedUserSettings": {
- "message": "advanced settings",
+ "message": "प्रगत सेटिंग्ज",
"description": "For the tooltip of a link which gives access to advanced settings"
},
"settingsPrefetchingDisabledPrompt": {
@@ -304,7 +304,7 @@
"description": "English: Last restore:"
},
"settingsLastBackupPrompt": {
- "message": "Last backup:",
+ "message": "अंतिम बॅकअप:",
"description": "English: Last backup:"
},
"3pListsOfBlockedHostsPrompt": {
@@ -364,7 +364,7 @@
"description": "English: Malware domains"
},
"3pGroupAnnoyances": {
- "message": "Annoyances",
+ "message": "चिडवणाऱ्या गोष्टी",
"description": "The header identifying the filter lists in the category 'annoyances'"
},
"3pGroupMultipurpose": {
@@ -428,7 +428,7 @@
"description": "header"
},
"rulesRevert": {
- "message": "Revert",
+ "message": "मागे जा",
"description": "This will remove all temporary rules"
},
"rulesCommit": {
diff --git a/src/_locales/sr/messages.json b/src/_locales/sr/messages.json
index 04d7021a8acdb..5518deef813a9 100644
--- a/src/_locales/sr/messages.json
+++ b/src/_locales/sr/messages.json
@@ -80,11 +80,11 @@
"description": "English: Click to open the dashboard"
},
"popupTipZapper": {
- "message": "Ући у режим уклањања елемената",
+ "message": "Режим уклањања елемената",
"description": "Tooltip for the element-zapper icon in the popup panel"
},
"popupTipPicker": {
- "message": "Ући у режим избора елемената",
+ "message": "Режим избора елемената",
"description": "English: Enter element picker mode"
},
"popupTipLog": {
diff --git a/src/_locales/sv/messages.json b/src/_locales/sv/messages.json
index b861fc3ac0f62..97658aca88a00 100644
--- a/src/_locales/sv/messages.json
+++ b/src/_locales/sv/messages.json
@@ -280,7 +280,7 @@
"description": ""
},
"settingsNoCosmeticFilteringPrompt": {
- "message": "Stäng av kosmetisk filtrering",
+ "message": "Inaktivera kosmetisk filtrering",
"description": ""
},
"settingsNoLargeMediaPrompt": {
From 4bc5763b28d4be518c313c0994784a80eb8be36b Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sat, 31 Mar 2018 10:27:27 -0400
Subject: [PATCH 48/65] new revision for dev build
---
dist/version | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dist/version b/dist/version
index 551b3871399b7..29c98e1f599b1 100644
--- a/dist/version
+++ b/dist/version
@@ -1 +1 @@
-1.15.19.102
+1.15.19.103
From 7c478ebabb6857e441d792ddaeaef8f916230469 Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sat, 31 Mar 2018 10:30:45 -0400
Subject: [PATCH 49/65] make Firefox dev build auto-update
---
dist/firefox/updates.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dist/firefox/updates.json b/dist/firefox/updates.json
index 1164e09825b49..f95619a4d4153 100644
--- a/dist/firefox/updates.json
+++ b/dist/firefox/updates.json
@@ -3,10 +3,10 @@
"uBlock0@raymondhill.net": {
"updates": [
{
- "version": "1.15.19rc2",
+ "version": "1.15.19rc3",
"applications": { "gecko": { "strict_min_version": "52" } },
- "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.15.19rc2",
- "update_link": "https://github.com/gorhill/uBlock/releases/download/1.15.19rc2/uBlock0.webext.signed.xpi"
+ "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.15.19rc3",
+ "update_link": "https://github.com/gorhill/uBlock/releases/download/1.15.19rc3/uBlock0.webext.signed.xpi"
}
]
}
From 2632cf63b2fe1bcbaf98229d67f0d0892822e0c6 Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sat, 31 Mar 2018 12:12:31 -0400
Subject: [PATCH 50/65] code review for 588a8acc
---
src/js/start.js | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/src/js/start.js b/src/js/start.js
index e377cef5d0318..cda75e306821b 100644
--- a/src/js/start.js
+++ b/src/js/start.js
@@ -126,9 +126,7 @@ var onVersionReady = function(lastVersion) {
(match[4] ? parseInt(match[4], 10) : 0);
if ( /rc\d+$/.test(s) ) { v += 100; }
if ( v > 1015019008 ) { return; }
- if ( µb.getNetFilteringSwitch('http://behind-the-scene/') !== true ) {
- return;
- }
+ if ( µb.getNetFilteringSwitch('http://behind-the-scene/') ) { return; }
var fwRules = [
'behind-the-scene * * noop',
'behind-the-scene * image noop',
@@ -142,7 +140,7 @@ var onVersionReady = function(lastVersion) {
µb.permanentFirewall.fromString(fwRules, true);
µb.savePermanentFirewallRules();
µb.hnSwitches.fromString([
- 'behind-the-scene: no-large-media false'
+ 'no-large-media: behind-the-scene false'
].join('\n'), true);
µb.saveHostnameSwitches();
µb.toggleNetFilteringSwitch('http://behind-the-scene/', '', true);
@@ -301,7 +299,7 @@ var onSelectedFilterListsLoaded = function() {
].join('\n'),
'urlFilteringString': '',
'hostnameSwitchesString': [
- 'behind-the-scene: no-large-media false'
+ 'no-large-media: behind-the-scene false'
].join('\n'),
'lastRestoreFile': '',
'lastRestoreTime': 0,
From 8648341a24b7e004ff9fda582bc5834366a8baf5 Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sat, 31 Mar 2018 12:13:05 -0400
Subject: [PATCH 51/65] new revision for dev build
---
dist/version | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dist/version b/dist/version
index 29c98e1f599b1..15e4c91810758 100644
--- a/dist/version
+++ b/dist/version
@@ -1 +1 @@
-1.15.19.103
+1.15.19.104
From 94679b316a9f06c7d01b9e8633d33f7743fc2de8 Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sat, 31 Mar 2018 12:16:07 -0400
Subject: [PATCH 52/65] make Firefox dev build auto-update
---
dist/firefox/updates.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dist/firefox/updates.json b/dist/firefox/updates.json
index f95619a4d4153..5a7ab8ded0962 100644
--- a/dist/firefox/updates.json
+++ b/dist/firefox/updates.json
@@ -3,10 +3,10 @@
"uBlock0@raymondhill.net": {
"updates": [
{
- "version": "1.15.19rc3",
+ "version": "1.15.19rc4",
"applications": { "gecko": { "strict_min_version": "52" } },
- "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.15.19rc3",
- "update_link": "https://github.com/gorhill/uBlock/releases/download/1.15.19rc3/uBlock0.webext.signed.xpi"
+ "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.15.19rc4",
+ "update_link": "https://github.com/gorhill/uBlock/releases/download/1.15.19rc4/uBlock0.webext.signed.xpi"
}
]
}
From 9bc029b72c1375f737e742703099603d0975a4a2 Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sat, 31 Mar 2018 15:02:12 -0400
Subject: [PATCH 53/65] allow un-whitelisting in non-advanced user mode
---
src/js/popup.js | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/src/js/popup.js b/src/js/popup.js
index 4fa02ba888ad4..5a5106bed8fdf 100644
--- a/src/js/popup.js
+++ b/src/js/popup.js
@@ -411,9 +411,7 @@ var renderPopup = function() {
elem.classList.toggle('advancedUser', popupData.advancedUserEnabled);
elem.classList.toggle(
'off',
- popupData.pageURL === '' ||
- !popupData.netFilteringSwitch ||
- popupData.pageHostname === 'behind-the-scene' && !popupData.advancedUserEnabled
+ popupData.pageURL === '' || !popupData.netFilteringSwitch
);
// If you think the `=== true` is pointless, you are mistaken
@@ -649,12 +647,6 @@ messaging.addChannelListener('popup', onPopupMessage);
var toggleNetFilteringSwitch = function(ev) {
if ( !popupData || !popupData.pageURL ) { return; }
- if (
- popupData.pageHostname === 'behind-the-scene' &&
- !popupData.advancedUserEnabled
- ) {
- return;
- }
messaging.send(
'popupPanel',
{
From 5c15f685f185a7ecfe2e1f70d88f6a362e7f5575 Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sat, 31 Mar 2018 18:47:56 -0400
Subject: [PATCH 54/65] add workaround for Firefox's inability to redirect xhr
to data: URI
---
platform/webext/vapi-webrequest.js | 109 ++++++++++++++++++++++++-----
1 file changed, 92 insertions(+), 17 deletions(-)
diff --git a/platform/webext/vapi-webrequest.js b/platform/webext/vapi-webrequest.js
index 1b33eed740314..515e01f3b3d20 100644
--- a/platform/webext/vapi-webrequest.js
+++ b/platform/webext/vapi-webrequest.js
@@ -43,7 +43,7 @@ vAPI.net.registerListeners = function() {
// https://github.com/gorhill/uBlock/issues/2950
// Firefox 55 does not normalize URLs to ASCII, uBO must do this itself.
// https://bugzilla.mozilla.org/show_bug.cgi?id=945240
- var mustPunycode = false;
+ let mustPunycode = false;
(function() {
if (
typeof browser === 'object' &&
@@ -58,10 +58,10 @@ vAPI.net.registerListeners = function() {
}
})();
- var wrApi = browser.webRequest;
+ let wrApi = browser.webRequest;
// legacy Chromium understands only these network request types.
- var validTypes = new Set([
+ let validTypes = new Set([
'image',
'main_frame',
'object',
@@ -80,14 +80,14 @@ vAPI.net.registerListeners = function() {
}
}
- var denormalizeTypes = function(aa) {
+ let denormalizeTypes = function(aa) {
if ( aa.length === 0 ) {
return Array.from(validTypes);
}
- var out = new Set(),
+ let out = new Set(),
i = aa.length;
while ( i-- ) {
- var type = aa[i];
+ let type = aa[i];
if ( validTypes.has(type) ) {
out.add(type);
}
@@ -98,12 +98,12 @@ vAPI.net.registerListeners = function() {
return Array.from(out);
};
- var punycode = self.punycode;
- var reAsciiHostname = /^https?:\/\/[0-9a-z_.:@-]+[/?#]/;
- var reNetworkURI = /^(?:ftps?|https?|wss?)/;
- var parsedURL = new URL('about:blank');
+ let punycode = self.punycode;
+ let reAsciiHostname = /^https?:\/\/[0-9a-z_.:@-]+[/?#]/;
+ let reNetworkURI = /^(?:ftps?|https?|wss?)/;
+ let parsedURL = new URL('about:blank');
- var normalizeRequestDetails = function(details) {
+ let normalizeRequestDetails = function(details) {
if (
details.tabId === vAPI.noTabId &&
reNetworkURI.test(details.documentUrl)
@@ -119,7 +119,7 @@ vAPI.net.registerListeners = function() {
);
}
- var type = details.type;
+ let type = details.type;
// https://github.com/gorhill/uBlock/issues/1493
// Chromium 49+/WebExtensions support a new request type: `ping`,
@@ -135,10 +135,85 @@ vAPI.net.registerListeners = function() {
}
};
- var onBeforeRequestClient = this.onBeforeRequest.callback;
- var onBeforeRequest = function(details) {
+ // This is to work around Firefox's inability to redirect xmlhttprequest
+ // to data: URI.
+ let pseudoRedirector = {
+ filters: new Map(),
+ reDataURI: /^data:\w+\/\w+;base64,/,
+ dec: null,
+ init: function() {
+ this.dec = new Uint8Array(128);
+ let s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+ for ( let i = 0, n = s.length; i < n; i++ ) {
+ this.dec[s.charCodeAt(i)] = i;
+ }
+ },
+ start: function(requestId, redirectUrl) {
+ if ( this.dec === null ) { this.init(); }
+ let match = this.reDataURI.exec(redirectUrl);
+ if ( match === null ) { return redirectUrl; }
+ let s = redirectUrl.slice(match[0].length).replace(/=*$/, '');
+ let f = browser.webRequest.filterResponseData(requestId);
+ f.onstop = this.done;
+ f.onerror = this.disconnect;
+ this.filters.set(f, s);
+ },
+ done: function() {
+ let pr = pseudoRedirector;
+ let bufIn = pr.filters.get(this);
+ if ( bufIn === undefined ) { return pr.disconnect(this); }
+ let dec = pr.dec;
+ let sizeIn = bufIn.length;
+ let iIn = 0;
+ let sizeOut = sizeIn * 6 >>> 3;
+ let bufOut = new Uint8Array(sizeOut);
+ let iOut = 0;
+ let n = sizeIn & ~3;
+ while ( iIn < n ) {
+ let b0 = dec[bufIn.charCodeAt(iIn++)];
+ let b1 = dec[bufIn.charCodeAt(iIn++)];
+ let b2 = dec[bufIn.charCodeAt(iIn++)];
+ let b3 = dec[bufIn.charCodeAt(iIn++)];
+ bufOut[iOut++] = (b0 << 2) & 0xFC | (b1 >>> 4);
+ bufOut[iOut++] = (b1 << 4) & 0xF0 | (b2 >>> 2);
+ bufOut[iOut++] = (b2 << 6) & 0xC0 | b3;
+ }
+ if ( n < sizeIn ) {
+ let b0 = dec[bufIn.charCodeAt(iIn++)];
+ let b1 = dec[bufIn.charCodeAt(iIn++)];
+ if ( (sizeIn & 3) === 2 ) {
+ let b2 = dec[bufIn.charCodeAt(iIn++)];
+ bufOut[iOut++] = (b0 << 2) & 0xFC | (b1 >>> 4);
+ bufOut[iOut++] = (b1 << 4) & 0xF0 | (b2 >>> 2);
+ } else {
+ bufOut[iOut++] = (b0 << 2) & 0xFC | (b1 >>> 4);
+ }
+ }
+ this.write(bufOut);
+ pr.disconnect(this);
+ },
+ disconnect: function(f) {
+ let pr = pseudoRedirector;
+ pr.filters.delete(f);
+ f.disconnect();
+ }
+ };
+
+ let onBeforeRequestClient = this.onBeforeRequest.callback;
+ let onBeforeRequest = function(details) {
normalizeRequestDetails(details);
- return onBeforeRequestClient(details);
+ let r = onBeforeRequestClient(details);
+ if (
+ r !== undefined &&
+ r.redirectUrl !== undefined &&
+ details.type === 'xmlhttprequest'
+ ) {
+ r.redirectUrl = pseudoRedirector.start(
+ details.requestId,
+ r.redirectUrl
+ );
+ }
+ return r;
};
if ( onBeforeRequest ) {
@@ -175,10 +250,10 @@ vAPI.net.registerListeners = function() {
);
}
- var onHeadersReceivedClient = this.onHeadersReceived.callback,
+ let onHeadersReceivedClient = this.onHeadersReceived.callback,
onHeadersReceivedClientTypes = this.onHeadersReceived.types.slice(0),
onHeadersReceivedTypes = denormalizeTypes(onHeadersReceivedClientTypes);
- var onHeadersReceived = function(details) {
+ let onHeadersReceived = function(details) {
normalizeRequestDetails(details);
if (
onHeadersReceivedClientTypes.length !== 0 &&
From f69c7721fd028bf388aa7b363c974a4fcb503762 Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sat, 31 Mar 2018 18:48:30 -0400
Subject: [PATCH 55/65] new revision for dev build
---
dist/version | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dist/version b/dist/version
index 15e4c91810758..3a54ee127efa7 100644
--- a/dist/version
+++ b/dist/version
@@ -1 +1 @@
-1.15.19.104
+1.15.19.105
From c5f870a3677958a4b712f6b7fadba675012e106f Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sat, 31 Mar 2018 18:54:01 -0400
Subject: [PATCH 56/65] make Firefox dev build auto-update
---
dist/firefox/updates.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dist/firefox/updates.json b/dist/firefox/updates.json
index 5a7ab8ded0962..159036bbb960b 100644
--- a/dist/firefox/updates.json
+++ b/dist/firefox/updates.json
@@ -3,10 +3,10 @@
"uBlock0@raymondhill.net": {
"updates": [
{
- "version": "1.15.19rc4",
+ "version": "1.15.19rc5",
"applications": { "gecko": { "strict_min_version": "52" } },
- "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.15.19rc4",
- "update_link": "https://github.com/gorhill/uBlock/releases/download/1.15.19rc4/uBlock0.webext.signed.xpi"
+ "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.15.19rc5",
+ "update_link": "https://github.com/gorhill/uBlock/releases/download/1.15.19rc5/uBlock0.webext.signed.xpi"
}
]
}
From cb060e54ee9ad495cb1ae7bf03887caa2dcfc635 Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sat, 31 Mar 2018 19:41:59 -0400
Subject: [PATCH 57/65] code review for 5c15f685
---
platform/webext/vapi-webrequest.js | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/platform/webext/vapi-webrequest.js b/platform/webext/vapi-webrequest.js
index 515e01f3b3d20..55c60b4bbed36 100644
--- a/platform/webext/vapi-webrequest.js
+++ b/platform/webext/vapi-webrequest.js
@@ -178,15 +178,13 @@ vAPI.net.registerListeners = function() {
bufOut[iOut++] = (b1 << 4) & 0xF0 | (b2 >>> 2);
bufOut[iOut++] = (b2 << 6) & 0xC0 | b3;
}
- if ( n < sizeIn ) {
+ if ( iIn !== sizeIn ) {
let b0 = dec[bufIn.charCodeAt(iIn++)];
let b1 = dec[bufIn.charCodeAt(iIn++)];
- if ( (sizeIn & 3) === 2 ) {
+ bufOut[iOut++] = (b0 << 2) & 0xFC | (b1 >>> 4);
+ if ( iIn !== sizeIn ) {
let b2 = dec[bufIn.charCodeAt(iIn++)];
- bufOut[iOut++] = (b0 << 2) & 0xFC | (b1 >>> 4);
bufOut[iOut++] = (b1 << 4) & 0xF0 | (b2 >>> 2);
- } else {
- bufOut[iOut++] = (b0 << 2) & 0xFC | (b1 >>> 4);
}
}
this.write(bufOut);
From 17f31da1cc0bc37400f244f04680694cf8aeaa01 Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sun, 1 Apr 2018 06:57:44 -0400
Subject: [PATCH 58/65] new revision for dev build
---
dist/version | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dist/version b/dist/version
index 3a54ee127efa7..0d889378b0203 100644
--- a/dist/version
+++ b/dist/version
@@ -1 +1 @@
-1.15.19.105
+1.15.19.106
From 8a64ba6f4359c56d616d993e1799f6d4cce41cd9 Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sun, 1 Apr 2018 06:58:20 -0400
Subject: [PATCH 59/65] code review for 5c15f68
---
platform/webext/vapi-webrequest.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/platform/webext/vapi-webrequest.js b/platform/webext/vapi-webrequest.js
index 55c60b4bbed36..18d3dba954b86 100644
--- a/platform/webext/vapi-webrequest.js
+++ b/platform/webext/vapi-webrequest.js
@@ -136,7 +136,7 @@ vAPI.net.registerListeners = function() {
};
// This is to work around Firefox's inability to redirect xmlhttprequest
- // to data: URI.
+ // requests to data: URIs.
let pseudoRedirector = {
filters: new Map(),
reDataURI: /^data:\w+\/\w+;base64,/,
@@ -147,9 +147,9 @@ vAPI.net.registerListeners = function() {
for ( let i = 0, n = s.length; i < n; i++ ) {
this.dec[s.charCodeAt(i)] = i;
}
+ return this.dec;
},
start: function(requestId, redirectUrl) {
- if ( this.dec === null ) { this.init(); }
let match = this.reDataURI.exec(redirectUrl);
if ( match === null ) { return redirectUrl; }
let s = redirectUrl.slice(match[0].length).replace(/=*$/, '');
@@ -162,7 +162,7 @@ vAPI.net.registerListeners = function() {
let pr = pseudoRedirector;
let bufIn = pr.filters.get(this);
if ( bufIn === undefined ) { return pr.disconnect(this); }
- let dec = pr.dec;
+ let dec = pr.dec || pr.init();
let sizeIn = bufIn.length;
let iIn = 0;
let sizeOut = sizeIn * 6 >>> 3;
From 67c1d90d7ac5d4b265eb8af35e175b8528961bee Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Sun, 1 Apr 2018 07:24:10 -0400
Subject: [PATCH 60/65] make Firefox dev build auto-update
---
dist/firefox/updates.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dist/firefox/updates.json b/dist/firefox/updates.json
index 159036bbb960b..88a7e6c08bc67 100644
--- a/dist/firefox/updates.json
+++ b/dist/firefox/updates.json
@@ -3,10 +3,10 @@
"uBlock0@raymondhill.net": {
"updates": [
{
- "version": "1.15.19rc5",
+ "version": "1.15.19rc6",
"applications": { "gecko": { "strict_min_version": "52" } },
- "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.15.19rc5",
- "update_link": "https://github.com/gorhill/uBlock/releases/download/1.15.19rc5/uBlock0.webext.signed.xpi"
+ "update_info_url": "https://github.com/gorhill/uBlock/releases/tag/1.15.19rc6",
+ "update_link": "https://github.com/gorhill/uBlock/releases/download/1.15.19rc6/uBlock0.webext.signed.xpi"
}
]
}
From fd78f9b743741de7a37c9c7aa75602f0374b8856 Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Mon, 2 Apr 2018 04:47:24 -0400
Subject: [PATCH 61/65] remove experimental pseudo-redirector for the time
being
---
platform/webext/vapi-webrequest.js | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/platform/webext/vapi-webrequest.js b/platform/webext/vapi-webrequest.js
index 18d3dba954b86..30603f07d3007 100644
--- a/platform/webext/vapi-webrequest.js
+++ b/platform/webext/vapi-webrequest.js
@@ -200,18 +200,7 @@ vAPI.net.registerListeners = function() {
let onBeforeRequestClient = this.onBeforeRequest.callback;
let onBeforeRequest = function(details) {
normalizeRequestDetails(details);
- let r = onBeforeRequestClient(details);
- if (
- r !== undefined &&
- r.redirectUrl !== undefined &&
- details.type === 'xmlhttprequest'
- ) {
- r.redirectUrl = pseudoRedirector.start(
- details.requestId,
- r.redirectUrl
- );
- }
- return r;
+ return onBeforeRequestClient(details);
};
if ( onBeforeRequest ) {
From 852833843aaa1b742e6e1535c7b605f9e572afe0 Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Mon, 2 Apr 2018 05:35:17 -0400
Subject: [PATCH 62/65] new revision for release
---
dist/version | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dist/version b/dist/version
index 0d889378b0203..a006d41145e36 100644
--- a/dist/version
+++ b/dist/version
@@ -1 +1 @@
-1.15.19.106
+1.15.20
From 2b92f114bb02787901181ced1cc664af1a9940bc Mon Sep 17 00:00:00 2001
From: Raymond Hill
Date: Mon, 2 Apr 2018 06:51:57 -0400
Subject: [PATCH 63/65] fix dashboard icon issue for Pale Moon (#3665)
---
src/dashboard.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/dashboard.html b/src/dashboard.html
index 2b89b4d2b45ab..d5eddc789b252 100644
--- a/src/dashboard.html
+++ b/src/dashboard.html
@@ -12,7 +12,7 @@