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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/extensions/extension.h" 5 #include "chrome/common/extensions/extension.h"
6 6
7 #include "googleurl/src/gurl.h" 7 #include "googleurl/src/gurl.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 static const int kAllSchemes = 10 namespace {
11 URLPattern::SCHEME_HTTP |
12 URLPattern::SCHEME_HTTPS |
13 URLPattern::SCHEME_FILE |
14 URLPattern::SCHEME_FTP |
15 URLPattern::SCHEME_CHROMEUI;
16 11
12 static void AddPattern(URLPatternSet* set, const std::string& pattern) {
13 int schemes = URLPattern::SCHEME_ALL;
14 set->AddPattern(URLPattern(schemes, pattern));
15 }
16
17 }
17 TEST(URLPatternSetTest, Empty) { 18 TEST(URLPatternSetTest, Empty) {
18 URLPatternSet extent; 19 URLPatternSet set;
19 EXPECT_FALSE(extent.MatchesURL(GURL("http://www.foo.com/bar"))); 20 EXPECT_FALSE(set.MatchesURL(GURL("http://www.foo.com/bar")));
20 EXPECT_FALSE(extent.MatchesURL(GURL())); 21 EXPECT_FALSE(set.MatchesURL(GURL()));
21 EXPECT_FALSE(extent.MatchesURL(GURL("invalid"))); 22 EXPECT_FALSE(set.MatchesURL(GURL("invalid")));
22 } 23 }
23 24
24 TEST(URLPatternSetTest, One) { 25 TEST(URLPatternSetTest, One) {
25 URLPatternSet extent; 26 URLPatternSet set;
26 extent.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/*")); 27 AddPattern(&set, "http://www.google.com/*");
27 28
28 EXPECT_TRUE(extent.MatchesURL(GURL("http://www.google.com/"))); 29 EXPECT_TRUE(set.MatchesURL(GURL("http://www.google.com/")));
29 EXPECT_TRUE(extent.MatchesURL(GURL("http://www.google.com/monkey"))); 30 EXPECT_TRUE(set.MatchesURL(GURL("http://www.google.com/monkey")));
30 EXPECT_FALSE(extent.MatchesURL(GURL("https://www.google.com/"))); 31 EXPECT_FALSE(set.MatchesURL(GURL("https://www.google.com/")));
31 EXPECT_FALSE(extent.MatchesURL(GURL("https://www.microsoft.com/"))); 32 EXPECT_FALSE(set.MatchesURL(GURL("https://www.microsoft.com/")));
32 } 33 }
33 34
34 TEST(URLPatternSetTest, Two) { 35 TEST(URLPatternSetTest, Two) {
35 URLPatternSet extent; 36 URLPatternSet set;
36 extent.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/*")); 37 AddPattern(&set, "http://www.google.com/*");
37 extent.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/*")); 38 AddPattern(&set, "http://www.yahoo.com/*");
38 39
39 EXPECT_TRUE(extent.MatchesURL(GURL("http://www.google.com/monkey"))); 40 EXPECT_TRUE(set.MatchesURL(GURL("http://www.google.com/monkey")));
40 EXPECT_TRUE(extent.MatchesURL(GURL("http://www.yahoo.com/monkey"))); 41 EXPECT_TRUE(set.MatchesURL(GURL("http://www.yahoo.com/monkey")));
41 EXPECT_FALSE(extent.MatchesURL(GURL("https://www.apple.com/monkey"))); 42 EXPECT_FALSE(set.MatchesURL(GURL("https://www.apple.com/monkey")));
42 } 43 }
43 44
44 TEST(URLPatternSetTest, OverlapsWith) { 45 TEST(URLPatternSetTest, OverlapsWith) {
45 URLPatternSet extent1; 46 URLPatternSet set1;
46 extent1.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/f*")); 47 AddPattern(&set1, "http://www.google.com/f*");
47 extent1.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/b*")); 48 AddPattern(&set1, "http://www.yahoo.com/b*");
48 49
49 URLPatternSet extent2; 50 URLPatternSet set2;
50 extent2.AddPattern(URLPattern(kAllSchemes, "http://www.reddit.com/f*")); 51 AddPattern(&set2, "http://www.reddit.com/f*");
51 extent2.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/z*")); 52 AddPattern(&set2, "http://www.yahoo.com/z*");
52 53
53 URLPatternSet extent3; 54 URLPatternSet set3;
54 extent3.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/q/*")); 55 AddPattern(&set3, "http://www.google.com/q/*");
55 extent3.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/b/*")); 56 AddPattern(&set3, "http://www.yahoo.com/b/*");
56 57
57 EXPECT_FALSE(extent1.OverlapsWith(extent2)); 58 EXPECT_FALSE(set1.OverlapsWith(set2));
58 EXPECT_FALSE(extent2.OverlapsWith(extent1)); 59 EXPECT_FALSE(set2.OverlapsWith(set1));
59 60
60 EXPECT_TRUE(extent1.OverlapsWith(extent3)); 61 EXPECT_TRUE(set1.OverlapsWith(set3));
61 EXPECT_TRUE(extent3.OverlapsWith(extent1)); 62 EXPECT_TRUE(set3.OverlapsWith(set1));
63 }
64
65 TEST(URLPatternSetTest, CreateDifference) {
66 URLPatternSet expected;
67 URLPatternSet set1;
68 URLPatternSet set2;
69 AddPattern(&set1, "http://www.google.com/f*");
70 AddPattern(&set1, "http://www.yahoo.com/b*");
71
72 // Subtract an empty set.
73 URLPatternSet result;
74 URLPatternSet::CreateDifference(set1, set2, &result);
75 EXPECT_EQ(set1, result);
76
77 // Subtract a real set.
78 AddPattern(&set2, "http://www.reddit.com/f*");
79 AddPattern(&set2, "http://www.yahoo.com/z*");
80 AddPattern(&set2, "http://www.google.com/f*");
81
82 AddPattern(&expected, "http://www.yahoo.com/b*");
83
84 result.ClearPatterns();
85 URLPatternSet::CreateDifference(set1, set2, &result);
86 EXPECT_EQ(expected, result);
87 EXPECT_FALSE(result.is_empty());
88 EXPECT_TRUE(set1.Contains(result));
89 EXPECT_FALSE(result.Contains(set2));
90 EXPECT_FALSE(set2.Contains(result));
91
92 URLPatternSet intersection;
93 URLPatternSet::CreateIntersection(result, set2, &intersection);
94 EXPECT_TRUE(intersection.is_empty());
95 }
96
97 TEST(URLPatternSetTest, CreateIntersection) {
98 URLPatternSet empty_set;
99 URLPatternSet expected;
100 URLPatternSet set1;
101 AddPattern(&set1, "http://www.google.com/f*");
102 AddPattern(&set1, "http://www.yahoo.com/b*");
103
104 // Intersection with an empty set.
105 URLPatternSet result;
106 URLPatternSet::CreateIntersection(set1, empty_set, &result);
107 EXPECT_EQ(expected, result);
108 EXPECT_TRUE(result.is_empty());
109 EXPECT_TRUE(empty_set.Contains(result));
110 EXPECT_TRUE(result.Contains(empty_set));
111 EXPECT_TRUE(set1.Contains(result));
112
113 // Intersection with a real set.
114 URLPatternSet set2;
115 AddPattern(&set2, "http://www.reddit.com/f*");
116 AddPattern(&set2, "http://www.yahoo.com/z*");
117 AddPattern(&set2, "http://www.google.com/f*");
118
119 AddPattern(&expected, "http://www.google.com/f*");
120
121 result.ClearPatterns();
122 URLPatternSet::CreateIntersection(set1, set2, &result);
123 EXPECT_EQ(expected, result);
124 EXPECT_FALSE(result.is_empty());
125 EXPECT_TRUE(set1.Contains(result));
126 EXPECT_TRUE(set2.Contains(result));
62 } 127 }
63 128
64 TEST(URLPatternSetTest, CreateUnion) { 129 TEST(URLPatternSetTest, CreateUnion) {
65 URLPatternSet empty_extent; 130 URLPatternSet empty_set;
66 131
67 URLPatternSet extent1; 132 URLPatternSet set1;
68 extent1.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/f*")); 133 AddPattern(&set1, "http://www.google.com/f*");
69 extent1.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/b*")); 134 AddPattern(&set1, "http://www.yahoo.com/b*");
70 135
71 URLPatternSet expected; 136 URLPatternSet expected;
72 expected.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/f*")); 137 AddPattern(&expected, "http://www.google.com/f*");
73 expected.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/b*")); 138 AddPattern(&expected, "http://www.yahoo.com/b*");
74 139
75 // Union with an empty set. 140 // Union with an empty set.
76 URLPatternSet result; 141 URLPatternSet result;
77 URLPatternSet::CreateUnion(extent1, empty_extent, &result); 142 URLPatternSet::CreateUnion(set1, empty_set, &result);
78 EXPECT_EQ(expected, result); 143 EXPECT_EQ(expected, result);
79 144
80 // Union with a real set (including a duplicate). 145 // Union with a real set.
81 URLPatternSet extent2; 146 URLPatternSet set2;
82 extent2.AddPattern(URLPattern(kAllSchemes, "http://www.reddit.com/f*")); 147 AddPattern(&set2, "http://www.reddit.com/f*");
83 extent2.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/z*")); 148 AddPattern(&set2, "http://www.yahoo.com/z*");
84 extent2.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/f*")); 149 AddPattern(&set2, "http://www.google.com/f*");
85 150
86 expected.AddPattern(URLPattern(kAllSchemes, "http://www.reddit.com/f*")); 151 AddPattern(&expected, "http://www.reddit.com/f*");
87 expected.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/z*")); 152 AddPattern(&expected, "http://www.yahoo.com/z*");
88 // CreateUnion does not filter out duplicates right now.
89 expected.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/f*"));
90 153
91 result.ClearPatterns(); 154 result.ClearPatterns();
92 URLPatternSet::CreateUnion(extent1, extent2, &result); 155 URLPatternSet::CreateUnion(set1, set2, &result);
93 EXPECT_EQ(expected, result); 156 EXPECT_EQ(expected, result);
94 } 157 }
158
159 TEST(URLPatternSetTest, Contains) {
160 URLPatternSet set1;
161 URLPatternSet set2;
162 URLPatternSet empty_set;
163
164 AddPattern(&set1, "http://www.google.com/*");
165 AddPattern(&set1, "http://www.yahoo.com/*");
166
167 AddPattern(&set2, "http://www.reddit.com/*");
168
169 EXPECT_FALSE(set1.Contains(set2));
170 EXPECT_TRUE(set1.Contains(empty_set));
171 EXPECT_FALSE(empty_set.Contains(set1));
172
173 AddPattern(&set2, "http://www.yahoo.com/*");
174
175 EXPECT_FALSE(set1.Contains(set2));
176 EXPECT_FALSE(set2.Contains(set1));
177
178 AddPattern(&set2, "http://www.google.com/*");
179
180 EXPECT_FALSE(set1.Contains(set2));
181 EXPECT_TRUE(set2.Contains(set1));
182
183 // Note that this just checks pattern equality, and not if individual patterns
184 // contain other patterns. For example:
185 AddPattern(&set1, "http://*.reddit.com/*");
186 EXPECT_FALSE(set1.Contains(set2));
187 EXPECT_FALSE(set2.Contains(set1));
188 }
189
190 TEST(URLPatternSetTest, Duplicates) {
191 URLPatternSet set1;
192 URLPatternSet set2;
193
194 AddPattern(&set1, "http://www.google.com/*");
195 AddPattern(&set2, "http://www.google.com/*");
196
197 AddPattern(&set1, "http://www.google.com/*");
198
199 // The sets should still be equal after adding a duplicate.
200 EXPECT_EQ(set2, set1);
201 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698