| Left: | ||
| Right: |
| LEFT | RIGHT |
|---|---|
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
| 3 * Copyright (C) 2006-present eyeo GmbH | 3 * Copyright (C) 2006-present eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 889 * @param {string} regexpSource see RegExpFilter() | 889 * @param {string} regexpSource see RegExpFilter() |
| 890 * @param {number} [contentType] see RegExpFilter() | 890 * @param {number} [contentType] see RegExpFilter() |
| 891 * @param {boolean} [matchCase] see RegExpFilter() | 891 * @param {boolean} [matchCase] see RegExpFilter() |
| 892 * @param {string} [domains] see RegExpFilter() | 892 * @param {string} [domains] see RegExpFilter() |
| 893 * @param {boolean} [thirdParty] see RegExpFilter() | 893 * @param {boolean} [thirdParty] see RegExpFilter() |
| 894 * @param {string} [sitekeys] see RegExpFilter() | 894 * @param {string} [sitekeys] see RegExpFilter() |
| 895 * @param {boolean} [collapse] | 895 * @param {boolean} [collapse] |
| 896 * defines whether the filter should collapse blocked content, can be null | 896 * defines whether the filter should collapse blocked content, can be null |
| 897 * @param {string} [csp] | 897 * @param {string} [csp] |
| 898 * Content Security Policy to inject when the filter matches | 898 * Content Security Policy to inject when the filter matches |
| 899 * @param {string} [rewrite] | 899 * @param {?string} [rewrite] |
| 900 * The rewrite expression | 900 * The (optional) rule specifying how to rewrite the URL. See |
|
kzar
2018/05/15 14:08:58
Mind making this comment useful? (Same below.)
hub
2018/05/15 16:16:31
Done.
kzar
2018/05/16 09:22:40
Thanks, looking way better now.
| |
| 901 * BlockingFilter.prototype.rewrite. | |
| 901 * @constructor | 902 * @constructor |
| 902 * @augments RegExpFilter | 903 * @augments RegExpFilter |
| 903 */ | 904 */ |
| 904 function BlockingFilter(text, regexpSource, contentType, matchCase, domains, | 905 function BlockingFilter(text, regexpSource, contentType, matchCase, domains, |
| 905 thirdParty, sitekeys, collapse, csp, rewrite) | 906 thirdParty, sitekeys, collapse, csp, rewrite) |
| 906 { | 907 { |
| 907 RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, | 908 RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, |
| 908 thirdParty, sitekeys); | 909 thirdParty, sitekeys); |
| 909 | 910 |
| 910 this.collapse = collapse; | 911 this.collapse = collapse; |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 923 */ | 924 */ |
| 924 collapse: null, | 925 collapse: null, |
| 925 | 926 |
| 926 /** | 927 /** |
| 927 * Content Security Policy to inject for matching requests. | 928 * Content Security Policy to inject for matching requests. |
| 928 * @type {?string} | 929 * @type {?string} |
| 929 */ | 930 */ |
| 930 csp: null, | 931 csp: null, |
| 931 | 932 |
| 932 /** | 933 /** |
| 933 * The rewrite expression | 934 * The rule specifying how to rewrite the URL. |
| 935 * The syntax is similar to the one of String.prototype.replace(). | |
| 934 * @type {?string} | 936 * @type {?string} |
| 935 */ | 937 */ |
| 936 rewrite: null, | 938 rewrite: null, |
| 937 | 939 |
| 938 /** | 940 /** |
| 939 * Rewrites an URL. | 941 * Rewrites an URL. |
| 940 * @param {string} url the URL to rewrite | 942 * @param {string} url the URL to rewrite |
| 941 * @return {string} the rewritten URL, or the original in case of failure | 943 * @return {string} the rewritten URL, or the original in case of failure |
| 942 */ | 944 */ |
| 943 rewriteUrl(url) | 945 rewriteUrl(url) |
| 944 { | 946 { |
| 945 try | 947 try |
| 946 { | 948 { |
| 947 let rewrittenUrl = new URL(url.replace(this.regexp, this.rewrite), url); | 949 let rewrittenUrl = new URL(url.replace(this.regexp, this.rewrite), url); |
|
kzar
2018/05/17 12:56:06
I forgot to mention before, I thought how you did
hub
2018/05/17 12:58:39
thanks!
| |
| 948 if (rewrittenUrl.origin == new URL(url).origin) | 950 if (rewrittenUrl.origin == new URL(url).origin) |
| 949 return rewrittenUrl.href; | 951 return rewrittenUrl.href; |
| 950 } | 952 } |
| 951 catch (e) | 953 catch (e) |
| 952 { | 954 { |
| 953 } | 955 } |
| 954 | 956 |
| 955 return url; | 957 return url; |
|
kzar
2018/05/15 14:24:57
Why do we return `url` on failure? Shouldn't we re
Sebastian Noack
2018/05/15 14:40:34
Even if no error is thrown and no origin change wa
kzar
2018/05/15 14:44:23
Not if we tweak the above logic, so we don't retur
Sebastian Noack
2018/05/15 14:51:02
Sure, we could add another check here, in order to
kzar
2018/05/15 14:53:58
Well it seems pointless to return the existing URL
Manish Jethani
2018/05/15 15:18:12
These are not the only cases in which the rewrite
hub
2018/05/15 16:16:31
The original idea is to not block the request in c
| |
| 956 } | 958 } |
| 957 }); | 959 }); |
| 958 | 960 |
| 959 /** | 961 /** |
| 960 * Class for whitelist filters | 962 * Class for whitelist filters |
| 961 * @param {string} text see Filter() | 963 * @param {string} text see Filter() |
| 962 * @param {string} regexpSource see RegExpFilter() | 964 * @param {string} regexpSource see RegExpFilter() |
| 963 * @param {number} [contentType] see RegExpFilter() | 965 * @param {number} [contentType] see RegExpFilter() |
| 964 * @param {boolean} [matchCase] see RegExpFilter() | 966 * @param {boolean} [matchCase] see RegExpFilter() |
| 965 * @param {string} [domains] see RegExpFilter() | 967 * @param {string} [domains] see RegExpFilter() |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1111 */ | 1113 */ |
| 1112 function ElemHideEmulationFilter(text, domains, selector) | 1114 function ElemHideEmulationFilter(text, domains, selector) |
| 1113 { | 1115 { |
| 1114 ElemHideBase.call(this, text, domains, selector); | 1116 ElemHideBase.call(this, text, domains, selector); |
| 1115 } | 1117 } |
| 1116 exports.ElemHideEmulationFilter = ElemHideEmulationFilter; | 1118 exports.ElemHideEmulationFilter = ElemHideEmulationFilter; |
| 1117 | 1119 |
| 1118 ElemHideEmulationFilter.prototype = extend(ElemHideBase, { | 1120 ElemHideEmulationFilter.prototype = extend(ElemHideBase, { |
| 1119 type: "elemhideemulation" | 1121 type: "elemhideemulation" |
| 1120 }); | 1122 }); |
| LEFT | RIGHT |