| Index: chrome/common/extensions/url_pattern_set_unittest.cc
|
| diff --git a/chrome/common/extensions/url_pattern_set_unittest.cc b/chrome/common/extensions/url_pattern_set_unittest.cc
|
| index f9717ef36d572e85e9e9d53d7aeb41b313e57181..ff78d900aaa55dcc60ce597de8b00cad204ebcc3 100644
|
| --- a/chrome/common/extensions/url_pattern_set_unittest.cc
|
| +++ b/chrome/common/extensions/url_pattern_set_unittest.cc
|
| @@ -7,88 +7,195 @@
|
| #include "googleurl/src/gurl.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| -static const int kAllSchemes =
|
| - URLPattern::SCHEME_HTTP |
|
| - URLPattern::SCHEME_HTTPS |
|
| - URLPattern::SCHEME_FILE |
|
| - URLPattern::SCHEME_FTP |
|
| - URLPattern::SCHEME_CHROMEUI;
|
| +namespace {
|
|
|
| +static void AddPattern(URLPatternSet* set, const std::string& pattern) {
|
| + int schemes = URLPattern::SCHEME_ALL;
|
| + set->AddPattern(URLPattern(schemes, pattern));
|
| +}
|
| +
|
| +}
|
| TEST(URLPatternSetTest, Empty) {
|
| - URLPatternSet extent;
|
| - EXPECT_FALSE(extent.MatchesURL(GURL("http://www.foo.com/bar")));
|
| - EXPECT_FALSE(extent.MatchesURL(GURL()));
|
| - EXPECT_FALSE(extent.MatchesURL(GURL("invalid")));
|
| + URLPatternSet set;
|
| + EXPECT_FALSE(set.MatchesURL(GURL("http://www.foo.com/bar")));
|
| + EXPECT_FALSE(set.MatchesURL(GURL()));
|
| + EXPECT_FALSE(set.MatchesURL(GURL("invalid")));
|
| }
|
|
|
| TEST(URLPatternSetTest, One) {
|
| - URLPatternSet extent;
|
| - extent.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/*"));
|
| + URLPatternSet set;
|
| + AddPattern(&set, "http://www.google.com/*");
|
|
|
| - EXPECT_TRUE(extent.MatchesURL(GURL("http://www.google.com/")));
|
| - EXPECT_TRUE(extent.MatchesURL(GURL("http://www.google.com/monkey")));
|
| - EXPECT_FALSE(extent.MatchesURL(GURL("https://www.google.com/")));
|
| - EXPECT_FALSE(extent.MatchesURL(GURL("https://www.microsoft.com/")));
|
| + EXPECT_TRUE(set.MatchesURL(GURL("http://www.google.com/")));
|
| + EXPECT_TRUE(set.MatchesURL(GURL("http://www.google.com/monkey")));
|
| + EXPECT_FALSE(set.MatchesURL(GURL("https://www.google.com/")));
|
| + EXPECT_FALSE(set.MatchesURL(GURL("https://www.microsoft.com/")));
|
| }
|
|
|
| TEST(URLPatternSetTest, Two) {
|
| - URLPatternSet extent;
|
| - extent.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/*"));
|
| - extent.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/*"));
|
| + URLPatternSet set;
|
| + AddPattern(&set, "http://www.google.com/*");
|
| + AddPattern(&set, "http://www.yahoo.com/*");
|
|
|
| - EXPECT_TRUE(extent.MatchesURL(GURL("http://www.google.com/monkey")));
|
| - EXPECT_TRUE(extent.MatchesURL(GURL("http://www.yahoo.com/monkey")));
|
| - EXPECT_FALSE(extent.MatchesURL(GURL("https://www.apple.com/monkey")));
|
| + EXPECT_TRUE(set.MatchesURL(GURL("http://www.google.com/monkey")));
|
| + EXPECT_TRUE(set.MatchesURL(GURL("http://www.yahoo.com/monkey")));
|
| + EXPECT_FALSE(set.MatchesURL(GURL("https://www.apple.com/monkey")));
|
| }
|
|
|
| TEST(URLPatternSetTest, OverlapsWith) {
|
| - URLPatternSet extent1;
|
| - extent1.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/f*"));
|
| - extent1.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/b*"));
|
| + URLPatternSet set1;
|
| + AddPattern(&set1, "http://www.google.com/f*");
|
| + AddPattern(&set1, "http://www.yahoo.com/b*");
|
| +
|
| + URLPatternSet set2;
|
| + AddPattern(&set2, "http://www.reddit.com/f*");
|
| + AddPattern(&set2, "http://www.yahoo.com/z*");
|
| +
|
| + URLPatternSet set3;
|
| + AddPattern(&set3, "http://www.google.com/q/*");
|
| + AddPattern(&set3, "http://www.yahoo.com/b/*");
|
| +
|
| + EXPECT_FALSE(set1.OverlapsWith(set2));
|
| + EXPECT_FALSE(set2.OverlapsWith(set1));
|
| +
|
| + EXPECT_TRUE(set1.OverlapsWith(set3));
|
| + EXPECT_TRUE(set3.OverlapsWith(set1));
|
| +}
|
| +
|
| +TEST(URLPatternSetTest, CreateDifference) {
|
| + URLPatternSet expected;
|
| + URLPatternSet set1;
|
| + URLPatternSet set2;
|
| + AddPattern(&set1, "http://www.google.com/f*");
|
| + AddPattern(&set1, "http://www.yahoo.com/b*");
|
|
|
| - URLPatternSet extent2;
|
| - extent2.AddPattern(URLPattern(kAllSchemes, "http://www.reddit.com/f*"));
|
| - extent2.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/z*"));
|
| + // Subtract an empty set.
|
| + URLPatternSet result;
|
| + URLPatternSet::CreateDifference(set1, set2, &result);
|
| + EXPECT_EQ(set1, result);
|
|
|
| - URLPatternSet extent3;
|
| - extent3.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/q/*"));
|
| - extent3.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/b/*"));
|
| + // Subtract a real set.
|
| + AddPattern(&set2, "http://www.reddit.com/f*");
|
| + AddPattern(&set2, "http://www.yahoo.com/z*");
|
| + AddPattern(&set2, "http://www.google.com/f*");
|
|
|
| - EXPECT_FALSE(extent1.OverlapsWith(extent2));
|
| - EXPECT_FALSE(extent2.OverlapsWith(extent1));
|
| + AddPattern(&expected, "http://www.yahoo.com/b*");
|
|
|
| - EXPECT_TRUE(extent1.OverlapsWith(extent3));
|
| - EXPECT_TRUE(extent3.OverlapsWith(extent1));
|
| + result.ClearPatterns();
|
| + URLPatternSet::CreateDifference(set1, set2, &result);
|
| + EXPECT_EQ(expected, result);
|
| + EXPECT_FALSE(result.is_empty());
|
| + EXPECT_TRUE(set1.Contains(result));
|
| + EXPECT_FALSE(result.Contains(set2));
|
| + EXPECT_FALSE(set2.Contains(result));
|
| +
|
| + URLPatternSet intersection;
|
| + URLPatternSet::CreateIntersection(result, set2, &intersection);
|
| + EXPECT_TRUE(intersection.is_empty());
|
| +}
|
| +
|
| +TEST(URLPatternSetTest, CreateIntersection) {
|
| + URLPatternSet empty_set;
|
| + URLPatternSet expected;
|
| + URLPatternSet set1;
|
| + AddPattern(&set1, "http://www.google.com/f*");
|
| + AddPattern(&set1, "http://www.yahoo.com/b*");
|
| +
|
| + // Intersection with an empty set.
|
| + URLPatternSet result;
|
| + URLPatternSet::CreateIntersection(set1, empty_set, &result);
|
| + EXPECT_EQ(expected, result);
|
| + EXPECT_TRUE(result.is_empty());
|
| + EXPECT_TRUE(empty_set.Contains(result));
|
| + EXPECT_TRUE(result.Contains(empty_set));
|
| + EXPECT_TRUE(set1.Contains(result));
|
| +
|
| + // Intersection with a real set.
|
| + URLPatternSet set2;
|
| + AddPattern(&set2, "http://www.reddit.com/f*");
|
| + AddPattern(&set2, "http://www.yahoo.com/z*");
|
| + AddPattern(&set2, "http://www.google.com/f*");
|
| +
|
| + AddPattern(&expected, "http://www.google.com/f*");
|
| +
|
| + result.ClearPatterns();
|
| + URLPatternSet::CreateIntersection(set1, set2, &result);
|
| + EXPECT_EQ(expected, result);
|
| + EXPECT_FALSE(result.is_empty());
|
| + EXPECT_TRUE(set1.Contains(result));
|
| + EXPECT_TRUE(set2.Contains(result));
|
| }
|
|
|
| TEST(URLPatternSetTest, CreateUnion) {
|
| - URLPatternSet empty_extent;
|
| + URLPatternSet empty_set;
|
|
|
| - URLPatternSet extent1;
|
| - extent1.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/f*"));
|
| - extent1.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/b*"));
|
| + URLPatternSet set1;
|
| + AddPattern(&set1, "http://www.google.com/f*");
|
| + AddPattern(&set1, "http://www.yahoo.com/b*");
|
|
|
| URLPatternSet expected;
|
| - expected.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/f*"));
|
| - expected.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/b*"));
|
| + AddPattern(&expected, "http://www.google.com/f*");
|
| + AddPattern(&expected, "http://www.yahoo.com/b*");
|
|
|
| // Union with an empty set.
|
| URLPatternSet result;
|
| - URLPatternSet::CreateUnion(extent1, empty_extent, &result);
|
| + URLPatternSet::CreateUnion(set1, empty_set, &result);
|
| EXPECT_EQ(expected, result);
|
|
|
| - // Union with a real set (including a duplicate).
|
| - URLPatternSet extent2;
|
| - extent2.AddPattern(URLPattern(kAllSchemes, "http://www.reddit.com/f*"));
|
| - extent2.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/z*"));
|
| - extent2.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/f*"));
|
| + // Union with a real set.
|
| + URLPatternSet set2;
|
| + AddPattern(&set2, "http://www.reddit.com/f*");
|
| + AddPattern(&set2, "http://www.yahoo.com/z*");
|
| + AddPattern(&set2, "http://www.google.com/f*");
|
|
|
| - expected.AddPattern(URLPattern(kAllSchemes, "http://www.reddit.com/f*"));
|
| - expected.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/z*"));
|
| - // CreateUnion does not filter out duplicates right now.
|
| - expected.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/f*"));
|
| + AddPattern(&expected, "http://www.reddit.com/f*");
|
| + AddPattern(&expected, "http://www.yahoo.com/z*");
|
|
|
| result.ClearPatterns();
|
| - URLPatternSet::CreateUnion(extent1, extent2, &result);
|
| + URLPatternSet::CreateUnion(set1, set2, &result);
|
| EXPECT_EQ(expected, result);
|
| }
|
| +
|
| +TEST(URLPatternSetTest, Contains) {
|
| + URLPatternSet set1;
|
| + URLPatternSet set2;
|
| + URLPatternSet empty_set;
|
| +
|
| + AddPattern(&set1, "http://www.google.com/*");
|
| + AddPattern(&set1, "http://www.yahoo.com/*");
|
| +
|
| + AddPattern(&set2, "http://www.reddit.com/*");
|
| +
|
| + EXPECT_FALSE(set1.Contains(set2));
|
| + EXPECT_TRUE(set1.Contains(empty_set));
|
| + EXPECT_FALSE(empty_set.Contains(set1));
|
| +
|
| + AddPattern(&set2, "http://www.yahoo.com/*");
|
| +
|
| + EXPECT_FALSE(set1.Contains(set2));
|
| + EXPECT_FALSE(set2.Contains(set1));
|
| +
|
| + AddPattern(&set2, "http://www.google.com/*");
|
| +
|
| + EXPECT_FALSE(set1.Contains(set2));
|
| + EXPECT_TRUE(set2.Contains(set1));
|
| +
|
| + // Note that this just checks pattern equality, and not if individual patterns
|
| + // contain other patterns. For example:
|
| + AddPattern(&set1, "http://*.reddit.com/*");
|
| + EXPECT_FALSE(set1.Contains(set2));
|
| + EXPECT_FALSE(set2.Contains(set1));
|
| +}
|
| +
|
| +TEST(URLPatternSetTest, Duplicates) {
|
| + URLPatternSet set1;
|
| + URLPatternSet set2;
|
| +
|
| + AddPattern(&set1, "http://www.google.com/*");
|
| + AddPattern(&set2, "http://www.google.com/*");
|
| +
|
| + AddPattern(&set1, "http://www.google.com/*");
|
| +
|
| + // The sets should still be equal after adding a duplicate.
|
| + EXPECT_EQ(set2, set1);
|
| +}
|
|
|