diff options
author | gbillock@chromium.org <gbillock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-14 00:16:54 +0000 |
---|---|---|
committer | gbillock@chromium.org <gbillock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-14 00:16:54 +0000 |
commit | 9d0f4582efaed0de45710754df54c92830fe661e (patch) | |
tree | 380ca8a6a72d2f9f9b6af455e188c40710ce3bed | |
parent | 6ef67bd346790a24d3d37b97172588d24e6d566e (diff) | |
download | chromium_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.cc | 5 | ||||
-rw-r--r-- | chrome/common/extensions/url_pattern_unittest.cc | 23 |
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"))); +} |