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

Side by Side Diff: chrome/browser/permissions/permission_manager_unittest.cc

Issue 1726323002: Have Permission{Manager,Service} use Origin. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 8 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/browser/permissions/permission_manager.h" 5 #include "chrome/browser/permissions/permission_manager.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "build/build_config.h" 8 #include "build/build_config.h"
9 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 9 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
10 #include "chrome/browser/permissions/permission_manager_factory.h" 10 #include "chrome/browser/permissions/permission_manager_factory.h"
11 #include "chrome/test/base/testing_profile.h" 11 #include "chrome/test/base/testing_profile.h"
12 #include "components/content_settings/core/browser/host_content_settings_map.h" 12 #include "components/content_settings/core/browser/host_content_settings_map.h"
13 #include "content/public/browser/permission_type.h" 13 #include "content/public/browser/permission_type.h"
14 #include "content/public/test/test_browser_thread_bundle.h" 14 #include "content/public/test/test_browser_thread_bundle.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "url/origin.h"
16 17
17 using content::PermissionType; 18 using content::PermissionType;
18 using content::mojom::PermissionStatus; 19 using content::mojom::PermissionStatus;
19 20
20 namespace { 21 namespace {
21 22
22 class PermissionManagerTestingProfile final : public TestingProfile { 23 class PermissionManagerTestingProfile final : public TestingProfile {
23 public: 24 public:
24 PermissionManagerTestingProfile() {} 25 PermissionManagerTestingProfile() {}
25 ~PermissionManagerTestingProfile() override {} 26 ~PermissionManagerTestingProfile() override {}
(...skipping 24 matching lines...) Expand all
50 PermissionManager* GetPermissionManager() { 51 PermissionManager* GetPermissionManager() {
51 return profile_.GetPermissionManager(); 52 return profile_.GetPermissionManager();
52 } 53 }
53 54
54 HostContentSettingsMap* GetHostContentSettingsMap() { 55 HostContentSettingsMap* GetHostContentSettingsMap() {
55 return HostContentSettingsMapFactory::GetForProfile(&profile_); 56 return HostContentSettingsMapFactory::GetForProfile(&profile_);
56 } 57 }
57 58
58 void CheckPermissionStatus(PermissionType type, 59 void CheckPermissionStatus(PermissionType type,
59 PermissionStatus expected) { 60 PermissionStatus expected) {
61 const url::Origin origin(url_);
60 EXPECT_EQ(expected, GetPermissionManager()->GetPermissionStatus( 62 EXPECT_EQ(expected, GetPermissionManager()->GetPermissionStatus(
61 type, url_.GetOrigin(), url_.GetOrigin())); 63 type, origin, origin));
62 } 64 }
63 65
64 void SetPermission(ContentSettingsType type, ContentSetting value) { 66 void SetPermission(ContentSettingsType type, ContentSetting value) {
65 HostContentSettingsMapFactory::GetForProfile(&profile_) 67 HostContentSettingsMapFactory::GetForProfile(&profile_)
66 ->SetContentSettingDefaultScope(url_, url_, type, std::string(), value); 68 ->SetContentSettingDefaultScope(url_, url_, type, std::string(), value);
67 } 69 }
68 70
69 const GURL& url() const { 71 const GURL& url() const {
70 return url_; 72 return url_;
71 } 73 }
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 130
129 #if defined(OS_ANDROID) 131 #if defined(OS_ANDROID)
130 SetPermission(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, 132 SetPermission(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
131 CONTENT_SETTING_ALLOW); 133 CONTENT_SETTING_ALLOW);
132 CheckPermissionStatus(PermissionType::PROTECTED_MEDIA_IDENTIFIER, 134 CheckPermissionStatus(PermissionType::PROTECTED_MEDIA_IDENTIFIER,
133 content::mojom::PermissionStatus::GRANTED); 135 content::mojom::PermissionStatus::GRANTED);
134 #endif 136 #endif
135 } 137 }
136 138
137 TEST_F(PermissionManagerTest, SameTypeChangeNotifies) { 139 TEST_F(PermissionManagerTest, SameTypeChangeNotifies) {
140 const url::Origin origin(url());
138 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 141 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
139 PermissionType::GEOLOCATION, url(), url(), 142 PermissionType::GEOLOCATION, origin, origin,
140 base::Bind(&PermissionManagerTest::OnPermissionChange, 143 base::Bind(&PermissionManagerTest::OnPermissionChange,
141 base::Unretained(this))); 144 base::Unretained(this)));
142 145
143 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 146 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
144 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 147 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
145 CONTENT_SETTING_ALLOW); 148 CONTENT_SETTING_ALLOW);
146 149
147 EXPECT_TRUE(callback_called()); 150 EXPECT_TRUE(callback_called());
148 EXPECT_EQ(content::mojom::PermissionStatus::GRANTED, callback_result()); 151 EXPECT_EQ(content::mojom::PermissionStatus::GRANTED, callback_result());
149 152
150 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 153 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
151 } 154 }
152 155
153 TEST_F(PermissionManagerTest, DifferentTypeChangeDoesNotNotify) { 156 TEST_F(PermissionManagerTest, DifferentTypeChangeDoesNotNotify) {
157 const url::Origin origin(url());
154 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 158 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
155 PermissionType::GEOLOCATION, url(), url(), 159 PermissionType::GEOLOCATION, origin, origin,
156 base::Bind(&PermissionManagerTest::OnPermissionChange, 160 base::Bind(&PermissionManagerTest::OnPermissionChange,
157 base::Unretained(this))); 161 base::Unretained(this)));
158 162
159 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 163 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
160 url(), GURL(), CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(), 164 url(), GURL(), CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(),
161 CONTENT_SETTING_ALLOW); 165 CONTENT_SETTING_ALLOW);
162 166
163 EXPECT_FALSE(callback_called()); 167 EXPECT_FALSE(callback_called());
164 168
165 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 169 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
166 } 170 }
167 171
168 TEST_F(PermissionManagerTest, ChangeAfterUnsubscribeDoesNotNotify) { 172 TEST_F(PermissionManagerTest, ChangeAfterUnsubscribeDoesNotNotify) {
173 const url::Origin origin(url());
169 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 174 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
170 PermissionType::GEOLOCATION, url(), url(), 175 PermissionType::GEOLOCATION, origin, origin,
171 base::Bind(&PermissionManagerTest::OnPermissionChange, 176 base::Bind(&PermissionManagerTest::OnPermissionChange,
172 base::Unretained(this))); 177 base::Unretained(this)));
173 178
174 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 179 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
175 180
176 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 181 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
177 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 182 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
178 CONTENT_SETTING_ALLOW); 183 CONTENT_SETTING_ALLOW);
179 184
180 EXPECT_FALSE(callback_called()); 185 EXPECT_FALSE(callback_called());
181 } 186 }
182 187
183 TEST_F(PermissionManagerTest, DifferentPrimaryUrlDoesNotNotify) { 188 TEST_F(PermissionManagerTest, DifferentPrimaryUrlDoesNotNotify) {
189 const url::Origin origin(url());
184 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 190 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
185 PermissionType::GEOLOCATION, url(), url(), 191 PermissionType::GEOLOCATION, origin, origin,
186 base::Bind(&PermissionManagerTest::OnPermissionChange, 192 base::Bind(&PermissionManagerTest::OnPermissionChange,
187 base::Unretained(this))); 193 base::Unretained(this)));
188 194
189 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 195 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
190 other_url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 196 other_url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
191 CONTENT_SETTING_ALLOW); 197 CONTENT_SETTING_ALLOW);
192 198
193 EXPECT_FALSE(callback_called()); 199 EXPECT_FALSE(callback_called());
194 200
195 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 201 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
196 } 202 }
197 203
198 TEST_F(PermissionManagerTest, DifferentSecondaryUrlDoesNotNotify) { 204 TEST_F(PermissionManagerTest, DifferentSecondaryUrlDoesNotNotify) {
205 const url::Origin origin(url());
199 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 206 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
200 PermissionType::GEOLOCATION, url(), url(), 207 PermissionType::GEOLOCATION, origin, origin,
201 base::Bind(&PermissionManagerTest::OnPermissionChange, 208 base::Bind(&PermissionManagerTest::OnPermissionChange,
202 base::Unretained(this))); 209 base::Unretained(this)));
203 210
204 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 211 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
205 url(), other_url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 212 url(), other_url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
206 CONTENT_SETTING_ALLOW); 213 CONTENT_SETTING_ALLOW);
207 214
208 EXPECT_FALSE(callback_called()); 215 EXPECT_FALSE(callback_called());
209 216
210 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 217 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
211 } 218 }
212 219
213 TEST_F(PermissionManagerTest, WildCardPatternNotifies) { 220 TEST_F(PermissionManagerTest, WildCardPatternNotifies) {
221 const url::Origin origin(url());
214 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 222 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
215 PermissionType::GEOLOCATION, url(), url(), 223 PermissionType::GEOLOCATION, origin, origin,
216 base::Bind(&PermissionManagerTest::OnPermissionChange, 224 base::Bind(&PermissionManagerTest::OnPermissionChange,
217 base::Unretained(this))); 225 base::Unretained(this)));
218 226
219 GetHostContentSettingsMap()->SetContentSetting( 227 GetHostContentSettingsMap()->SetContentSetting(
220 ContentSettingsPattern::Wildcard(), 228 ContentSettingsPattern::Wildcard(),
221 ContentSettingsPattern::Wildcard(), 229 ContentSettingsPattern::Wildcard(),
222 CONTENT_SETTINGS_TYPE_GEOLOCATION, 230 CONTENT_SETTINGS_TYPE_GEOLOCATION,
223 std::string(), 231 std::string(),
224 CONTENT_SETTING_ALLOW); 232 CONTENT_SETTING_ALLOW);
225 233
226 EXPECT_TRUE(callback_called()); 234 EXPECT_TRUE(callback_called());
227 EXPECT_EQ(content::mojom::PermissionStatus::GRANTED, callback_result()); 235 EXPECT_EQ(content::mojom::PermissionStatus::GRANTED, callback_result());
228 236
229 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 237 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
230 } 238 }
231 239
232 TEST_F(PermissionManagerTest, ClearSettingsNotifies) { 240 TEST_F(PermissionManagerTest, ClearSettingsNotifies) {
233 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 241 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
234 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 242 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
235 CONTENT_SETTING_ALLOW); 243 CONTENT_SETTING_ALLOW);
236 244
245 const url::Origin origin(url());
237 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 246 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
238 PermissionType::GEOLOCATION, url(), url(), 247 PermissionType::GEOLOCATION, origin, origin,
239 base::Bind(&PermissionManagerTest::OnPermissionChange, 248 base::Bind(&PermissionManagerTest::OnPermissionChange,
240 base::Unretained(this))); 249 base::Unretained(this)));
241 250
242 GetHostContentSettingsMap()->ClearSettingsForOneType( 251 GetHostContentSettingsMap()->ClearSettingsForOneType(
243 CONTENT_SETTINGS_TYPE_GEOLOCATION); 252 CONTENT_SETTINGS_TYPE_GEOLOCATION);
244 253
245 EXPECT_TRUE(callback_called()); 254 EXPECT_TRUE(callback_called());
246 EXPECT_EQ(content::mojom::PermissionStatus::ASK, callback_result()); 255 EXPECT_EQ(content::mojom::PermissionStatus::ASK, callback_result());
247 256
248 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 257 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
249 } 258 }
250 259
251 TEST_F(PermissionManagerTest, NewValueCorrectlyPassed) { 260 TEST_F(PermissionManagerTest, NewValueCorrectlyPassed) {
261 const url::Origin origin(url());
252 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 262 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
253 PermissionType::GEOLOCATION, url(), url(), 263 PermissionType::GEOLOCATION, origin, origin,
254 base::Bind(&PermissionManagerTest::OnPermissionChange, 264 base::Bind(&PermissionManagerTest::OnPermissionChange,
255 base::Unretained(this))); 265 base::Unretained(this)));
256 266
257 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 267 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
258 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 268 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
259 CONTENT_SETTING_BLOCK); 269 CONTENT_SETTING_BLOCK);
260 270
261 EXPECT_TRUE(callback_called()); 271 EXPECT_TRUE(callback_called());
262 EXPECT_EQ(content::mojom::PermissionStatus::DENIED, callback_result()); 272 EXPECT_EQ(content::mojom::PermissionStatus::DENIED, callback_result());
263 273
264 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 274 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
265 } 275 }
266 276
267 TEST_F(PermissionManagerTest, ChangeWithoutPermissionChangeDoesNotNotify) { 277 TEST_F(PermissionManagerTest, ChangeWithoutPermissionChangeDoesNotNotify) {
268 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 278 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
269 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 279 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
270 CONTENT_SETTING_ALLOW); 280 CONTENT_SETTING_ALLOW);
271 281
282 const url::Origin origin(url());
272 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 283 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
273 PermissionType::GEOLOCATION, url(), url(), 284 PermissionType::GEOLOCATION, origin, origin,
274 base::Bind(&PermissionManagerTest::OnPermissionChange, 285 base::Bind(&PermissionManagerTest::OnPermissionChange,
275 base::Unretained(this))); 286 base::Unretained(this)));
276 287
277 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 288 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
278 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 289 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
279 CONTENT_SETTING_ALLOW); 290 CONTENT_SETTING_ALLOW);
280 291
281 EXPECT_FALSE(callback_called()); 292 EXPECT_FALSE(callback_called());
282 293
283 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 294 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
284 } 295 }
285 296
286 TEST_F(PermissionManagerTest, ChangesBackAndForth) { 297 TEST_F(PermissionManagerTest, ChangesBackAndForth) {
287 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 298 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
288 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 299 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
289 CONTENT_SETTING_ASK); 300 CONTENT_SETTING_ASK);
290 301
302 const url::Origin origin(url());
291 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange( 303 int subscription_id = GetPermissionManager()->SubscribePermissionStatusChange(
292 PermissionType::GEOLOCATION, url(), url(), 304 PermissionType::GEOLOCATION, origin, origin,
293 base::Bind(&PermissionManagerTest::OnPermissionChange, 305 base::Bind(&PermissionManagerTest::OnPermissionChange,
294 base::Unretained(this))); 306 base::Unretained(this)));
295 307
296 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 308 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
297 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 309 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
298 CONTENT_SETTING_ALLOW); 310 CONTENT_SETTING_ALLOW);
299 311
300 EXPECT_TRUE(callback_called()); 312 EXPECT_TRUE(callback_called());
301 EXPECT_EQ(content::mojom::PermissionStatus::GRANTED, callback_result()); 313 EXPECT_EQ(content::mojom::PermissionStatus::GRANTED, callback_result());
302 314
303 Reset(); 315 Reset();
304 316
305 GetHostContentSettingsMap()->SetContentSettingDefaultScope( 317 GetHostContentSettingsMap()->SetContentSettingDefaultScope(
306 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), 318 url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
307 CONTENT_SETTING_ASK); 319 CONTENT_SETTING_ASK);
308 320
309 EXPECT_TRUE(callback_called()); 321 EXPECT_TRUE(callback_called());
310 EXPECT_EQ(content::mojom::PermissionStatus::ASK, callback_result()); 322 EXPECT_EQ(content::mojom::PermissionStatus::ASK, callback_result());
311 323
312 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id); 324 GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
313 } 325 }
OLDNEW
« no previous file with comments | « chrome/browser/permissions/permission_manager.cc ('k') | chrome/browser/permissions/permission_uma_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698