Index: chrome/common/extensions/url_pattern_unittest.cc |
diff --git a/chrome/common/extensions/url_pattern_unittest.cc b/chrome/common/extensions/url_pattern_unittest.cc |
index 8686a0f924986a78f426c0b41a1fd01586e0c5f4..4554f1efd5dc095b6e4d086de8d5abc119d7ff8d 100644 |
--- a/chrome/common/extensions/url_pattern_unittest.cc |
+++ b/chrome/common/extensions/url_pattern_unittest.cc |
@@ -2,6 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/scoped_ptr.h" |
#include "chrome/common/extensions/url_pattern.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -132,3 +133,34 @@ TEST(URLPatternTest, Match9) { |
EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/https://google.com"))); |
EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://history"))); |
}; |
+ |
+void TestPatternOverlap(URLPattern* pattern1, URLPattern* pattern2, |
+ bool expect_overlap) { |
+ EXPECT_EQ(expect_overlap, pattern1->OverlapsWith(*pattern2)) |
+ << pattern1->GetAsString() << ", " << pattern2->GetAsString(); |
+ EXPECT_EQ(expect_overlap, pattern2->OverlapsWith(*pattern1)) |
+ << pattern2->GetAsString() << ", " << pattern1->GetAsString(); |
+} |
+ |
+TEST(URLPatternTest, OverlapsWith) { |
+ scoped_ptr<URLPattern> pattern1( |
+ URLPattern::CreateFromString("http://www.google.com/foo/*")); |
+ scoped_ptr<URLPattern> pattern2( |
+ URLPattern::CreateFromString("https://www.google.com/foo/*")); |
+ scoped_ptr<URLPattern> pattern3( |
+ URLPattern::CreateFromString("http://*.google.com/foo/*")); |
+ scoped_ptr<URLPattern> pattern4( |
+ URLPattern::CreateFromString("http://*.yahooo.com/foo/*")); |
+ scoped_ptr<URLPattern> pattern5( |
+ URLPattern::CreateFromString("http://www.yahooo.com/bar/*")); |
+ scoped_ptr<URLPattern> pattern6( |
+ URLPattern::CreateFromString("http://www.yahooo.com/bar/baz/*")); |
+ |
+ TestPatternOverlap(pattern1.get(), pattern1.get(), true); |
+ TestPatternOverlap(pattern1.get(), pattern2.get(), false); |
+ TestPatternOverlap(pattern1.get(), pattern3.get(), true); |
+ TestPatternOverlap(pattern1.get(), pattern4.get(), false); |
+ TestPatternOverlap(pattern3.get(), pattern4.get(), false); |
+ TestPatternOverlap(pattern4.get(), pattern5.get(), false); |
+ TestPatternOverlap(pattern5.get(), pattern6.get(), true); |
+} |