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

Side by Side Diff: chrome/browser/geolocation/geolocation_content_settings_map_unittest.cc

Issue 1084005: Add GeolocationContentSettingsMap, a geolocation-specific variant of HostCont... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 9 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
Property Changes:
Added: svn:executable
+ *
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/geolocation/geolocation_content_settings_map.h"
6
7 #include "chrome/test/testing_profile.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10
11 namespace {
12
13 class GeolocationContentSettingsMapTests : public testing::Test {
14 public:
15 GeolocationContentSettingsMapTests()
16 : ui_thread_(ChromeThread::UI, &message_loop_) {
17 }
18
19 protected:
20 MessageLoop message_loop_;
21 ChromeThread ui_thread_;
22 };
23
24 TEST_F(GeolocationContentSettingsMapTests, DefaultValues) {
25 TestingProfile profile;
26 GeolocationContentSettingsMap* map =
27 profile.GetGeolocationContentSettingsMap();
28
29 // Check setting defaults.
30 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetDefaultContentSetting());
31 map->SetDefaultContentSetting(CONTENT_SETTING_BLOCK);
32 EXPECT_EQ(CONTENT_SETTING_BLOCK, map->GetDefaultContentSetting());
33 }
34
35 TEST_F(GeolocationContentSettingsMapTests, Embedder) {
36 TestingProfile profile;
37 GeolocationContentSettingsMap* map =
38 profile.GetGeolocationContentSettingsMap();
39 GURL top_level("http://www.toplevel0.com/foo/bar");
40 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(top_level, top_level));
41 // Now set the permission for requester_0.
42 map->SetContentSetting(top_level, top_level, CONTENT_SETTING_ALLOW);
43 EXPECT_EQ(CONTENT_SETTING_ALLOW,
44 map->GetContentSetting(top_level, top_level));
45
46 GURL requester_0("http://www.frame0.com/foo/bar");
47 EXPECT_EQ(CONTENT_SETTING_ASK,
48 map->GetContentSetting(requester_0, top_level));
49 // Now set the permission for only requester_1.
50 map->SetContentSetting(requester_0, top_level, CONTENT_SETTING_ALLOW);
51 EXPECT_EQ(CONTENT_SETTING_ALLOW,
52 map->GetContentSetting(top_level, top_level));
53 EXPECT_EQ(CONTENT_SETTING_ALLOW,
54 map->GetContentSetting(requester_0, top_level));
55 // Block only requester_1.
56 map->SetContentSetting(requester_0, top_level, CONTENT_SETTING_BLOCK);
57 EXPECT_EQ(CONTENT_SETTING_BLOCK,
58 map->GetContentSetting(requester_0, top_level));
59 EXPECT_EQ(CONTENT_SETTING_ALLOW,
60 map->GetContentSetting(top_level, top_level));
61 }
62
63 TEST_F(GeolocationContentSettingsMapTests, MultipleEmbeddersAndOrigins) {
64 TestingProfile profile;
65 GeolocationContentSettingsMap* map =
66 profile.GetGeolocationContentSettingsMap();
67 GURL requester_0("http://www.iframe0.com/foo/bar");
68 GURL requester_1("http://www.iframe1.co.uk/bar/foo");
69 GURL embedder_0("http://www.toplevel0.com/foo/bar");
70 EXPECT_EQ(CONTENT_SETTING_ASK,
71 map->GetContentSetting(requester_0, embedder_0));
72 EXPECT_EQ(CONTENT_SETTING_ASK,
73 map->GetContentSetting(requester_1, embedder_0));
74 // Now set the permission for only one origin.
75 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_ALLOW);
76 EXPECT_EQ(CONTENT_SETTING_ALLOW,
77 map->GetContentSetting(requester_0, embedder_0));
78 EXPECT_EQ(CONTENT_SETTING_ASK,
79 map->GetContentSetting(requester_1, embedder_0));
80 // Set the permission for the other origin.
81 map->SetContentSetting(requester_1, embedder_0, CONTENT_SETTING_ALLOW);
82 EXPECT_EQ(CONTENT_SETTING_ALLOW,
83 map->GetContentSetting(requester_1, embedder_0));
84 // Check they're not allowed on a different embedder.
85 GURL embedder_1("http://www.toplevel1.com/foo/bar");
86 EXPECT_EQ(CONTENT_SETTING_ASK,
87 map->GetContentSetting(requester_0, embedder_1));
88 EXPECT_EQ(CONTENT_SETTING_ASK,
89 map->GetContentSetting(requester_1, embedder_1));
90 // Check all settings are valid.
91 GeolocationContentSettingsMap::AllOriginsSettings content_settings(
92 map->GetAllOriginsSettings());
93 EXPECT_EQ(0U, content_settings.count(requester_0));
94 EXPECT_EQ(1U, content_settings.count(requester_0.GetOrigin()));
95 GeolocationContentSettingsMap::OneOriginSettings one_origin_settings(
96 content_settings[requester_0.GetOrigin()]);
97 EXPECT_EQ(CONTENT_SETTING_ALLOW, one_origin_settings[embedder_0.GetOrigin()]);
98
99 EXPECT_EQ(0U, content_settings.count(requester_1));
100 EXPECT_EQ(1U, content_settings.count(requester_1.GetOrigin()));
101 one_origin_settings = content_settings[requester_1.GetOrigin()];
102 EXPECT_EQ(CONTENT_SETTING_ALLOW, one_origin_settings[embedder_0.GetOrigin()]);
103 // Block requester_1 on the first embedder and add it to the second.
104 map->SetContentSetting(requester_1, embedder_0, CONTENT_SETTING_BLOCK);
105 map->SetContentSetting(requester_1, embedder_1, CONTENT_SETTING_ALLOW);
106 EXPECT_EQ(CONTENT_SETTING_BLOCK,
107 map->GetContentSetting(requester_1, embedder_0));
108 EXPECT_EQ(CONTENT_SETTING_ALLOW,
109 map->GetContentSetting(requester_1, embedder_1));
110 }
111
112 TEST_F(GeolocationContentSettingsMapTests, SetContentSettingDefault) {
113 TestingProfile profile;
114 GeolocationContentSettingsMap* map =
115 profile.GetGeolocationContentSettingsMap();
116 GURL top_level("http://www.toplevel0.com/foo/bar");
117 map->SetContentSetting(top_level, top_level, CONTENT_SETTING_ALLOW);
118 EXPECT_EQ(CONTENT_SETTING_ALLOW,
119 map->GetContentSetting(top_level, top_level));
120 // Set to CONTENT_SETTING_DEFAULT and check the actual value has changed.
121 map->SetContentSetting(top_level, top_level, CONTENT_SETTING_DEFAULT);
122 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(top_level, top_level));
123 }
124
125 TEST_F(GeolocationContentSettingsMapTests, ClearOneOrigin) {
126 TestingProfile profile;
127 GeolocationContentSettingsMap* map =
128 profile.GetGeolocationContentSettingsMap();
129 GURL requester_0("http://www.iframe0.com/foo/bar");
130 GURL requester_1("http://www.iframe1.com/foo/bar");
131 GURL embedder_0("http://www.toplevel0.com/foo/bar");
132 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_ALLOW);
133 map->SetContentSetting(requester_1, embedder_0, CONTENT_SETTING_ALLOW);
134 EXPECT_EQ(CONTENT_SETTING_ALLOW,
135 map->GetContentSetting(requester_0, embedder_0));
136 EXPECT_EQ(CONTENT_SETTING_ALLOW,
137 map->GetContentSetting(requester_1, embedder_0));
138
139 map->ClearOneRequestingOrigin(requester_0.GetOrigin());
140 EXPECT_EQ(CONTENT_SETTING_ASK,
141 map->GetContentSetting(requester_0, embedder_0));
142
143 // Passing a non-origin shouldn't do anything.
144 map->ClearOneRequestingOrigin(requester_1);
145 EXPECT_EQ(CONTENT_SETTING_ALLOW,
146 map->GetContentSetting(requester_1, embedder_0));
147 }
148
149 TEST_F(GeolocationContentSettingsMapTests, Reset) {
150 TestingProfile profile;
151 GeolocationContentSettingsMap* map =
152 profile.GetGeolocationContentSettingsMap();
153 GURL requester_0("http://www.iframe0.com/foo/bar");
154 GURL embedder_0("http://www.toplevel0.com/foo/bar");
155 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_ALLOW);
156 EXPECT_EQ(CONTENT_SETTING_ALLOW,
157 map->GetContentSetting(requester_0, embedder_0));
158 GeolocationContentSettingsMap::AllOriginsSettings content_settings(
159 map->GetAllOriginsSettings());
160 EXPECT_EQ(1U, content_settings.size());
161
162 // Set to CONTENT_SETTING_DEFAULT and check the actual value has changed.
163 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_DEFAULT);
164 EXPECT_EQ(CONTENT_SETTING_ASK,
165 map->GetContentSetting(requester_0, embedder_0));
166 content_settings = map->GetAllOriginsSettings();
167 EXPECT_TRUE(content_settings.empty());
168 }
169
170 TEST_F(GeolocationContentSettingsMapTests, ClearsWhenSettingBackToDefault) {
171 TestingProfile profile;
172 GeolocationContentSettingsMap* map =
173 profile.GetGeolocationContentSettingsMap();
174 GURL requester_0("http://www.iframe0.com/foo/bar");
175 GURL requester_1("http://www.iframe1.com/foo/bar");
176 GURL embedder_0("http://www.toplevel0.com/foo/bar");
177 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_ALLOW);
178 EXPECT_EQ(CONTENT_SETTING_ALLOW,
179 map->GetContentSetting(requester_0, embedder_0));
180 GeolocationContentSettingsMap::AllOriginsSettings content_settings(
181 map->GetAllOriginsSettings());
182 EXPECT_EQ(1U, content_settings.size());
183
184 map->SetContentSetting(requester_1, embedder_0, CONTENT_SETTING_ALLOW);
185 EXPECT_EQ(CONTENT_SETTING_ALLOW,
186 map->GetContentSetting(requester_1, embedder_0));
187 content_settings = map->GetAllOriginsSettings();
188 EXPECT_EQ(2U, content_settings.size());
189 EXPECT_EQ(1U, content_settings[requester_0.GetOrigin()].size());
190 EXPECT_EQ(1U, content_settings[requester_1.GetOrigin()].size());
191
192 // Set to default.
193 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_DEFAULT);
194 content_settings = map->GetAllOriginsSettings();
195 EXPECT_EQ(1U, content_settings.size());
196
197 map->SetContentSetting(requester_1, embedder_0, CONTENT_SETTING_DEFAULT);
198 content_settings = map->GetAllOriginsSettings();
199 EXPECT_TRUE(content_settings.empty());
200 }
201
202 TEST_F(GeolocationContentSettingsMapTests, WildCardForEmptyEmbedder) {
203 TestingProfile profile;
204 GeolocationContentSettingsMap* map =
205 profile.GetGeolocationContentSettingsMap();
206 GURL requester_0("http://www.iframe0.com/foo/bar");
207 GURL embedder_0("http://www.toplevel0.com/foo/bar");
208 GURL embedder_1("http://www.toplevel1.com/foo/bar");
209 GURL empty_url;
210 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_BLOCK);
211 map->SetContentSetting(requester_0, empty_url, CONTENT_SETTING_ALLOW);
212 EXPECT_EQ(CONTENT_SETTING_BLOCK,
213 map->GetContentSetting(requester_0, embedder_0));
214 EXPECT_EQ(CONTENT_SETTING_ALLOW,
215 map->GetContentSetting(requester_0, embedder_1));
216 EXPECT_EQ(CONTENT_SETTING_ASK,
217 map->GetContentSetting(requester_0, requester_0));
218
219 // Change the wildcard behavior.
220 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_ALLOW);
221 map->SetContentSetting(requester_0, empty_url, CONTENT_SETTING_BLOCK);
222 map->SetDefaultContentSetting(CONTENT_SETTING_ALLOW);
223 EXPECT_EQ(CONTENT_SETTING_ALLOW,
224 map->GetContentSetting(requester_0, embedder_0));
225 EXPECT_EQ(CONTENT_SETTING_BLOCK,
226 map->GetContentSetting(requester_0, embedder_1));
227 EXPECT_EQ(CONTENT_SETTING_ALLOW,
228 map->GetContentSetting(requester_0, requester_0));
229 }
230
231 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698