summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgbillock@chromium.org <gbillock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-14 00:16:54 +0000
committergbillock@chromium.org <gbillock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-14 00:16:54 +0000
commit9d0f4582efaed0de45710754df54c92830fe661e (patch)
tree380ca8a6a72d2f9f9b6af455e188c40710ce3bed
parent6ef67bd346790a24d3d37b97172588d24e6d566e (diff)
downloadchromium_src-9d0f4582efaed0de45710754df54c92830fe661e.zip
chromium_src-9d0f4582efaed0de45710754df54c92830fe661e.tar.gz
chromium_src-9d0f4582efaed0de45710754df54c92830fe661e.tar.bz2
Fix URLPattern to be re-usable after an all-urls setting.
R=aa@chromium.org BUG=None TEST=ExtensionURLPatternTest.CanReusePatternWithParse Review URL: http://codereview.chromium.org/9385016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121774 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/common/extensions/url_pattern.cc5
-rw-r--r--chrome/common/extensions/url_pattern_unittest.cc23
2 files changed, 26 insertions, 2 deletions
diff --git a/chrome/common/extensions/url_pattern.cc b/chrome/common/extensions/url_pattern.cc
index c72f98c..ac64811 100644
--- a/chrome/common/extensions/url_pattern.cc
+++ b/chrome/common/extensions/url_pattern.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -130,6 +130,9 @@ bool URLPattern::operator==(const URLPattern& other) const {
URLPattern::ParseResult URLPattern::Parse(const std::string& pattern) {
spec_.clear();
+ SetMatchAllURLs(false);
+ SetMatchSubdomains(false);
+ SetPort("*");
// Special case pattern to match every valid URL.
if (pattern == kAllUrlsPattern) {
diff --git a/chrome/common/extensions/url_pattern_unittest.cc b/chrome/common/extensions/url_pattern_unittest.cc
index 77af24c..3996b99 100644
--- a/chrome/common/extensions/url_pattern_unittest.cc
+++ b/chrome/common/extensions/url_pattern_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -621,3 +621,24 @@ TEST(ExtensionURLPatternTest, Equals) {
<< message;
}
}
+
+TEST(ExtensionURLPatternTest, CanReusePatternWithParse) {
+ URLPattern pattern1(URLPattern::SCHEME_ALL);
+ EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern1.Parse("http://aa.com/*"));
+ EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern1.Parse("http://bb.com/*"));
+
+ EXPECT_TRUE(pattern1.MatchesURL(GURL("http://bb.com/path")));
+ EXPECT_FALSE(pattern1.MatchesURL(GURL("http://aa.com/path")));
+
+ URLPattern pattern2(URLPattern::SCHEME_ALL, URLPattern::kAllUrlsPattern);
+ EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern2.Parse("http://aa.com/*"));
+
+ EXPECT_FALSE(pattern2.MatchesURL(GURL("http://bb.com/path")));
+ EXPECT_TRUE(pattern2.MatchesURL(GURL("http://aa.com/path")));
+ EXPECT_FALSE(pattern2.MatchesURL(GURL("http://sub.aa.com/path")));
+
+ URLPattern pattern3(URLPattern::SCHEME_ALL, "http://aa.com/*");
+ EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern3.Parse("http://aa.com:88/*"));
+ EXPECT_FALSE(pattern3.MatchesURL(GURL("http://aa.com/path")));
+ EXPECT_TRUE(pattern3.MatchesURL(GURL("http://aa.com:88/path")));
+}