Bug 1466349 part 3 - Ignore ignorePath for privileged about: MatchPatterns
Paths are all about: URIs have, so ignoring them doesn't make sense.
MozReview-Commit-ID: ATwAeI7m61z
--- a/toolkit/components/extensions/MatchPattern.cpp
+++ b/toolkit/components/extensions/MatchPattern.cpp
@@ -326,16 +326,18 @@ MatchPattern::Init(JSContext* aCx, const
***************************************************************************/
offset = index + 1;
tail.Rebind(aPattern, offset);
if (scheme == nsGkAtoms::about) {
// about: URIs don't have hosts, so just treat the host as a wildcard and
// match on the path.
mMatchSubdomain = true;
+ // And so, ignorePath doesn't make sense for about: matchers.
+ aIgnorePath = false;
} else {
if (!StringHead(tail, 2).EqualsLiteral("//")) {
aRv.Throw(NS_ERROR_INVALID_ARG);
return;
}
offset += 2;
tail.Rebind(aPattern, offset);
--- a/toolkit/components/extensions/test/xpcshell/test_MatchPattern.js
+++ b/toolkit/components/extensions/test/xpcshell/test_MatchPattern.js
@@ -114,19 +114,23 @@ add_task(async function test_MatchPatter
// Privileged matchers:
invalid({pattern: "about:foo"});
invalid({pattern: "resource://foo/*"});
pass({url: "about:foo", pattern: ["about:foo", "about:foo*"], options: {restrictSchemes: false}});
pass({url: "about:foo", pattern: ["about:foo*"], options: {restrictSchemes: false}});
pass({url: "about:foobar", pattern: ["about:foo*"], options: {restrictSchemes: false}});
+
pass({url: "resource://foo/bar", pattern: ["resource://foo/bar"], options: {restrictSchemes: false}});
fail({url: "resource://fog/bar", pattern: ["resource://foo/bar"], options: {restrictSchemes: false}});
fail({url: "about:foo", pattern: ["about:meh"], options: {restrictSchemes: false}});
+
+ // about: matchers should ignore ignorePath.
+ pass({url: "about:reader?http://e.com/", pattern: ["about:reader*"], options: {ignorePath: true, restrictSchemes: false}});
});
add_task(async function test_MatchPattern_overlaps() {
function test(filter, hosts, optional) {
filter = Array.concat(filter);
hosts = Array.concat(hosts);
optional = Array.concat(optional);