Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4970)

Unified Diff: chrome/common/extensions/url_pattern_set_unittest.cc

Issue 7432006: Add an experimental permissions API for extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
+}

Powered by Google App Engine
This is Rietveld 408576698