Bug 1466349 part 3 - Ignore ignorePath for privileged about: MatchPatterns draft
authorTomislav Jovanovic <tomica@gmail.com>
Sun, 03 Jun 2018 19:38:29 +0200
changeset 804314 8a8150c9f8c64fcdcbbefd28f849f2d3d6d98701
parent 804313 fbe7ca62cafe2727c8b2a816555986a8e796e097
push id112338
push userbmo:tomica@gmail.com
push dateTue, 05 Jun 2018 18:32:54 +0000
bugs1466349
milestone62.0a1
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
toolkit/components/extensions/MatchPattern.cpp
toolkit/components/extensions/test/xpcshell/test_MatchPattern.js
--- 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);