OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_context_base.h" | 5 #include "chrome/browser/permissions/permission_context_base.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 20 matching lines...) Expand all Loading... |
31 #include "chrome/common/chrome_switches.h" | 31 #include "chrome/common/chrome_switches.h" |
32 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 32 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
33 #include "chrome/test/base/testing_profile.h" | 33 #include "chrome/test/base/testing_profile.h" |
34 #include "components/content_settings/core/browser/host_content_settings_map.h" | 34 #include "components/content_settings/core/browser/host_content_settings_map.h" |
35 #include "components/content_settings/core/common/content_settings.h" | 35 #include "components/content_settings/core/common/content_settings.h" |
36 #include "components/content_settings/core/common/content_settings_types.h" | 36 #include "components/content_settings/core/common/content_settings_types.h" |
37 #include "components/safe_browsing_db/database_manager.h" | 37 #include "components/safe_browsing_db/database_manager.h" |
38 #include "components/safe_browsing_db/test_database_manager.h" | 38 #include "components/safe_browsing_db/test_database_manager.h" |
39 #include "components/variations/variations_associated_data.h" | 39 #include "components/variations/variations_associated_data.h" |
40 #include "content/public/browser/browser_thread.h" | 40 #include "content/public/browser/browser_thread.h" |
41 #include "content/public/browser/permission_type.h" | |
42 #include "content/public/browser/render_frame_host.h" | 41 #include "content/public/browser/render_frame_host.h" |
43 #include "content/public/browser/web_contents.h" | 42 #include "content/public/browser/web_contents.h" |
44 #include "content/public/test/mock_render_process_host.h" | 43 #include "content/public/test/mock_render_process_host.h" |
45 #include "testing/gtest/include/gtest/gtest.h" | 44 #include "testing/gtest/include/gtest/gtest.h" |
46 | 45 |
47 #if !defined(OS_ANDROID) | 46 #if !defined(OS_ANDROID) |
48 #include "chrome/browser/permissions/permission_request_manager.h" | 47 #include "chrome/browser/permissions/permission_request_manager.h" |
49 #endif | 48 #endif |
50 | 49 |
51 const char* const kPermissionsKillSwitchFieldStudy = | 50 const char* const kPermissionsKillSwitchFieldStudy = |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 std::map<GURL, std::set<std::string>> permissions_blacklist_; | 96 std::map<GURL, std::set<std::string>> permissions_blacklist_; |
98 | 97 |
99 DISALLOW_COPY_AND_ASSIGN(MockSafeBrowsingDatabaseManager); | 98 DISALLOW_COPY_AND_ASSIGN(MockSafeBrowsingDatabaseManager); |
100 }; | 99 }; |
101 | 100 |
102 } // namespace | 101 } // namespace |
103 | 102 |
104 class TestPermissionContext : public PermissionContextBase { | 103 class TestPermissionContext : public PermissionContextBase { |
105 public: | 104 public: |
106 TestPermissionContext(Profile* profile, | 105 TestPermissionContext(Profile* profile, |
107 const content::PermissionType permission_type, | |
108 const ContentSettingsType content_settings_type) | 106 const ContentSettingsType content_settings_type) |
109 : PermissionContextBase(profile, permission_type, content_settings_type), | 107 : PermissionContextBase(profile, content_settings_type), |
110 tab_context_updated_(false) {} | 108 tab_context_updated_(false) {} |
111 | 109 |
112 ~TestPermissionContext() override {} | 110 ~TestPermissionContext() override {} |
113 | 111 |
114 #if defined(OS_ANDROID) | 112 #if defined(OS_ANDROID) |
115 PermissionQueueController* GetInfoBarController() { | 113 PermissionQueueController* GetInfoBarController() { |
116 return GetQueueController(); | 114 return GetQueueController(); |
117 } | 115 } |
118 #endif | 116 #endif |
119 | 117 |
(...skipping 10 matching lines...) Expand all Loading... |
130 if (quit_closure_) { | 128 if (quit_closure_) { |
131 quit_closure_.Run(); | 129 quit_closure_.Run(); |
132 quit_closure_.Reset(); | 130 quit_closure_.Reset(); |
133 } | 131 } |
134 } | 132 } |
135 | 133 |
136 ContentSetting GetContentSettingFromMap(const GURL& url_a, | 134 ContentSetting GetContentSettingFromMap(const GURL& url_a, |
137 const GURL& url_b) { | 135 const GURL& url_b) { |
138 auto* map = HostContentSettingsMapFactory::GetForProfile(profile()); | 136 auto* map = HostContentSettingsMapFactory::GetForProfile(profile()); |
139 return map->GetContentSetting(url_a.GetOrigin(), url_b.GetOrigin(), | 137 return map->GetContentSetting(url_a.GetOrigin(), url_b.GetOrigin(), |
140 content_settings_type(), std::string()); | 138 content_settings_storage_type(), |
| 139 std::string()); |
141 } | 140 } |
142 | 141 |
143 void RequestPermission(content::WebContents* web_contents, | 142 void RequestPermission(content::WebContents* web_contents, |
144 const PermissionRequestID& id, | 143 const PermissionRequestID& id, |
145 const GURL& requesting_frame, | 144 const GURL& requesting_frame, |
146 bool user_gesture, | 145 bool user_gesture, |
147 const BrowserPermissionCallback& callback) override { | 146 const BrowserPermissionCallback& callback) override { |
148 base::RunLoop run_loop; | 147 base::RunLoop run_loop; |
149 quit_closure_ = run_loop.QuitClosure(); | 148 quit_closure_ = run_loop.QuitClosure(); |
150 PermissionContextBase::RequestPermission(web_contents, id, requesting_frame, | 149 PermissionContextBase::RequestPermission(web_contents, id, requesting_frame, |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 // Callback for responding to a permission once the request has been completed | 196 // Callback for responding to a permission once the request has been completed |
198 // (valid URL, kill switch disabled, not blacklisted) | 197 // (valid URL, kill switch disabled, not blacklisted) |
199 base::Closure respond_permission_; | 198 base::Closure respond_permission_; |
200 DISALLOW_COPY_AND_ASSIGN(TestPermissionContext); | 199 DISALLOW_COPY_AND_ASSIGN(TestPermissionContext); |
201 }; | 200 }; |
202 | 201 |
203 class TestKillSwitchPermissionContext : public TestPermissionContext { | 202 class TestKillSwitchPermissionContext : public TestPermissionContext { |
204 public: | 203 public: |
205 TestKillSwitchPermissionContext( | 204 TestKillSwitchPermissionContext( |
206 Profile* profile, | 205 Profile* profile, |
207 const content::PermissionType permission_type, | |
208 const ContentSettingsType content_settings_type) | 206 const ContentSettingsType content_settings_type) |
209 : TestPermissionContext(profile, permission_type, content_settings_type), | 207 : TestPermissionContext(profile, content_settings_type), |
210 field_trial_list_(base::MakeUnique<base::FieldTrialList>( | 208 field_trial_list_(base::MakeUnique<base::FieldTrialList>( |
211 base::MakeUnique<base::MockEntropyProvider>())) {} | 209 base::MakeUnique<base::MockEntropyProvider>())) {} |
212 | 210 |
213 void ResetFieldTrialList() { | 211 void ResetFieldTrialList() { |
214 // Destroy the existing FieldTrialList before creating a new one to avoid | 212 // Destroy the existing FieldTrialList before creating a new one to avoid |
215 // a DCHECK. | 213 // a DCHECK. |
216 field_trial_list_.reset(); | 214 field_trial_list_.reset(); |
217 field_trial_list_ = base::MakeUnique<base::FieldTrialList>( | 215 field_trial_list_ = base::MakeUnique<base::FieldTrialList>( |
218 base::MakeUnique<base::MockEntropyProvider>()); | 216 base::MakeUnique<base::MockEntropyProvider>()); |
219 variations::testing::ClearAllVariationParams(); | 217 variations::testing::ClearAllVariationParams(); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 break; | 258 break; |
261 case CONTENT_SETTING_ASK: | 259 case CONTENT_SETTING_ASK: |
262 manager->Closing(); | 260 manager->Closing(); |
263 break; | 261 break; |
264 default: | 262 default: |
265 NOTREACHED(); | 263 NOTREACHED(); |
266 } | 264 } |
267 #endif | 265 #endif |
268 } | 266 } |
269 | 267 |
270 void TestAskAndDecide_TestContent(content::PermissionType permission, | 268 void TestAskAndDecide_TestContent(ContentSettingsType content_settings_type, |
271 ContentSettingsType content_settings_type, | |
272 ContentSetting decision, | 269 ContentSetting decision, |
273 bool persist) { | 270 bool persist) { |
274 TestPermissionContext permission_context(profile(), permission, | 271 TestPermissionContext permission_context(profile(), content_settings_type); |
275 content_settings_type); | |
276 GURL url("https://www.google.com"); | 272 GURL url("https://www.google.com"); |
277 NavigateAndCommit(url); | 273 NavigateAndCommit(url); |
278 base::HistogramTester histograms; | 274 base::HistogramTester histograms; |
279 | 275 |
280 const PermissionRequestID id( | 276 const PermissionRequestID id( |
281 web_contents()->GetRenderProcessHost()->GetID(), | 277 web_contents()->GetRenderProcessHost()->GetID(), |
282 web_contents()->GetMainFrame()->GetRoutingID(), | 278 web_contents()->GetMainFrame()->GetRoutingID(), |
283 -1); | 279 -1); |
284 permission_context.SetRespondPermissionCallback( | 280 permission_context.SetRespondPermissionCallback( |
285 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 281 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
(...skipping 12 matching lines...) Expand all Loading... |
298 if (decision == CONTENT_SETTING_ALLOW) | 294 if (decision == CONTENT_SETTING_ALLOW) |
299 decision_string = "Accepted"; | 295 decision_string = "Accepted"; |
300 else if (decision == CONTENT_SETTING_BLOCK) | 296 else if (decision == CONTENT_SETTING_BLOCK) |
301 decision_string = "Denied"; | 297 decision_string = "Denied"; |
302 else if (decision == CONTENT_SETTING_ASK) | 298 else if (decision == CONTENT_SETTING_ASK) |
303 decision_string = "Dismissed"; | 299 decision_string = "Dismissed"; |
304 | 300 |
305 if (decision_string.size()) { | 301 if (decision_string.size()) { |
306 histograms.ExpectUniqueSample( | 302 histograms.ExpectUniqueSample( |
307 "Permissions.Prompt." + decision_string + ".PriorDismissCount." + | 303 "Permissions.Prompt." + decision_string + ".PriorDismissCount." + |
308 PermissionUtil::GetPermissionString(permission), | 304 PermissionUtil::GetPermissionString(content_settings_type), |
309 0, 1); | 305 0, 1); |
310 histograms.ExpectUniqueSample( | 306 histograms.ExpectUniqueSample( |
311 "Permissions.Prompt." + decision_string + ".PriorIgnoreCount." + | 307 "Permissions.Prompt." + decision_string + ".PriorIgnoreCount." + |
312 PermissionUtil::GetPermissionString(permission), | 308 PermissionUtil::GetPermissionString(content_settings_type), |
313 0, 1); | 309 0, 1); |
314 } | 310 } |
315 | 311 |
316 if (persist) { | 312 if (persist) { |
317 EXPECT_EQ(decision, | 313 EXPECT_EQ(decision, |
318 permission_context.GetContentSettingFromMap(url, url)); | 314 permission_context.GetContentSettingFromMap(url, url)); |
319 } else { | 315 } else { |
320 EXPECT_EQ(CONTENT_SETTING_ASK, | 316 EXPECT_EQ(CONTENT_SETTING_ASK, |
321 permission_context.GetContentSettingFromMap(url, url)); | 317 permission_context.GetContentSettingFromMap(url, url)); |
322 } | 318 } |
323 | 319 |
324 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", | 320 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", |
325 PermissionEmbargoStatus::NOT_EMBARGOED, 1); | 321 PermissionEmbargoStatus::NOT_EMBARGOED, 1); |
326 } | 322 } |
327 | 323 |
328 void DismissMultipleTimesAndExpectBlock( | 324 void DismissMultipleTimesAndExpectBlock( |
329 const GURL& url, | 325 const GURL& url, |
330 content::PermissionType permission_type, | |
331 ContentSettingsType content_settings_type, | 326 ContentSettingsType content_settings_type, |
332 uint32_t iterations) { | 327 uint32_t iterations) { |
333 base::HistogramTester histograms; | 328 base::HistogramTester histograms; |
334 | 329 |
335 // Dismiss |iterations| times. The final dismiss should change the decision | 330 // Dismiss |iterations| times. The final dismiss should change the decision |
336 // from dismiss to block, and hence change the persisted content setting. | 331 // from dismiss to block, and hence change the persisted content setting. |
337 for (uint32_t i = 0; i < iterations; ++i) { | 332 for (uint32_t i = 0; i < iterations; ++i) { |
338 ContentSetting expected = | 333 ContentSetting expected = |
339 (i < 2) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK; | 334 (i < 2) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK; |
340 TestPermissionContext permission_context( | 335 TestPermissionContext permission_context(profile(), |
341 profile(), permission_type, content_settings_type); | 336 content_settings_type); |
342 const PermissionRequestID id( | 337 const PermissionRequestID id( |
343 web_contents()->GetRenderProcessHost()->GetID(), | 338 web_contents()->GetRenderProcessHost()->GetID(), |
344 web_contents()->GetMainFrame()->GetRoutingID(), i); | 339 web_contents()->GetMainFrame()->GetRoutingID(), i); |
345 | 340 |
346 permission_context.SetRespondPermissionCallback( | 341 permission_context.SetRespondPermissionCallback( |
347 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 342 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
348 base::Unretained(this), &permission_context, id, url, | 343 base::Unretained(this), &permission_context, id, url, |
349 false, CONTENT_SETTING_ASK)); | 344 false, CONTENT_SETTING_ASK)); |
350 | 345 |
351 permission_context.RequestPermission( | 346 permission_context.RequestPermission( |
352 web_contents(), id, url, true /* user_gesture */, | 347 web_contents(), id, url, true /* user_gesture */, |
353 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 348 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
354 base::Unretained(&permission_context))); | 349 base::Unretained(&permission_context))); |
355 histograms.ExpectTotalCount( | 350 histograms.ExpectTotalCount( |
356 "Permissions.Prompt.Dismissed.PriorDismissCount." + | 351 "Permissions.Prompt.Dismissed.PriorDismissCount." + |
357 PermissionUtil::GetPermissionString(permission_type), | 352 PermissionUtil::GetPermissionString(content_settings_type), |
358 i + 1); | 353 i + 1); |
359 histograms.ExpectBucketCount( | 354 histograms.ExpectBucketCount( |
360 "Permissions.Prompt.Dismissed.PriorDismissCount." + | 355 "Permissions.Prompt.Dismissed.PriorDismissCount." + |
361 PermissionUtil::GetPermissionString(permission_type), | 356 PermissionUtil::GetPermissionString(content_settings_type), |
362 i, 1); | 357 i, 1); |
363 histograms.ExpectTotalCount("Permissions.AutoBlocker.EmbargoStatus", | 358 histograms.ExpectTotalCount("Permissions.AutoBlocker.EmbargoStatus", |
364 i + 1); | 359 i + 1); |
365 if (i < 2) { | 360 if (i < 2) { |
366 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", | 361 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", |
367 PermissionEmbargoStatus::NOT_EMBARGOED, | 362 PermissionEmbargoStatus::NOT_EMBARGOED, |
368 i + 1); | 363 i + 1); |
369 } else { | 364 } else { |
370 histograms.ExpectBucketCount( | 365 histograms.ExpectBucketCount( |
371 "Permissions.AutoBlocker.EmbargoStatus", | 366 "Permissions.AutoBlocker.EmbargoStatus", |
372 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1); | 367 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1); |
373 } | 368 } |
374 | 369 |
375 ASSERT_EQ(1u, permission_context.decisions().size()); | 370 ASSERT_EQ(1u, permission_context.decisions().size()); |
376 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); | 371 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); |
377 EXPECT_TRUE(permission_context.tab_context_updated()); | 372 EXPECT_TRUE(permission_context.tab_context_updated()); |
378 PermissionResult result = | 373 PermissionResult result = |
379 permission_context.GetPermissionStatus(url, url); | 374 permission_context.GetPermissionStatus(url, url); |
380 EXPECT_EQ(expected, result.content_setting); | 375 EXPECT_EQ(expected, result.content_setting); |
381 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); | 376 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); |
382 } | 377 } |
383 | 378 |
384 TestPermissionContext permission_context(profile(), permission_type, | 379 TestPermissionContext permission_context(profile(), content_settings_type); |
385 content_settings_type); | |
386 const PermissionRequestID id( | 380 const PermissionRequestID id( |
387 web_contents()->GetRenderProcessHost()->GetID(), | 381 web_contents()->GetRenderProcessHost()->GetID(), |
388 web_contents()->GetMainFrame()->GetRoutingID(), -1); | 382 web_contents()->GetMainFrame()->GetRoutingID(), -1); |
389 | 383 |
390 permission_context.SetRespondPermissionCallback( | 384 permission_context.SetRespondPermissionCallback( |
391 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 385 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
392 base::Unretained(this), &permission_context, id, url, false, | 386 base::Unretained(this), &permission_context, id, url, false, |
393 CONTENT_SETTING_ASK)); | 387 CONTENT_SETTING_ASK)); |
394 | 388 |
395 permission_context.RequestPermission( | 389 permission_context.RequestPermission( |
396 web_contents(), id, url, true /* user_gesture */, | 390 web_contents(), id, url, true /* user_gesture */, |
397 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 391 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
398 base::Unretained(&permission_context))); | 392 base::Unretained(&permission_context))); |
399 | 393 |
400 PermissionResult result = permission_context.GetPermissionStatus(url, url); | 394 PermissionResult result = permission_context.GetPermissionStatus(url, url); |
401 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); | 395 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); |
402 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); | 396 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); |
403 } | 397 } |
404 | 398 |
405 void TestBlockOnSeveralDismissals_TestContent() { | 399 void TestBlockOnSeveralDismissals_TestContent() { |
406 GURL url("https://www.google.com"); | 400 GURL url("https://www.google.com"); |
407 NavigateAndCommit(url); | 401 NavigateAndCommit(url); |
408 base::HistogramTester histograms; | 402 base::HistogramTester histograms; |
409 | 403 |
410 // First, ensure that > 3 dismissals behaves correctly. | 404 // First, ensure that > 3 dismissals behaves correctly. |
411 for (uint32_t i = 0; i < 4; ++i) { | 405 for (uint32_t i = 0; i < 4; ++i) { |
412 TestPermissionContext permission_context( | 406 TestPermissionContext permission_context( |
413 profile(), content::PermissionType::GEOLOCATION, | 407 profile(), CONTENT_SETTINGS_TYPE_GEOLOCATION); |
414 CONTENT_SETTINGS_TYPE_GEOLOCATION); | |
415 | 408 |
416 const PermissionRequestID id( | 409 const PermissionRequestID id( |
417 web_contents()->GetRenderProcessHost()->GetID(), | 410 web_contents()->GetRenderProcessHost()->GetID(), |
418 web_contents()->GetMainFrame()->GetRoutingID(), i); | 411 web_contents()->GetMainFrame()->GetRoutingID(), i); |
419 | 412 |
420 permission_context.SetRespondPermissionCallback( | 413 permission_context.SetRespondPermissionCallback( |
421 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 414 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
422 base::Unretained(this), &permission_context, id, url, | 415 base::Unretained(this), &permission_context, id, url, |
423 false, CONTENT_SETTING_ASK)); | 416 false, CONTENT_SETTING_ASK)); |
424 permission_context.RequestPermission( | 417 permission_context.RequestPermission( |
(...skipping 23 matching lines...) Expand all Loading... |
448 CONTENT_SETTINGS_TYPE_PERMISSION_AUTOBLOCKER_DATA); | 441 CONTENT_SETTINGS_TYPE_PERMISSION_AUTOBLOCKER_DATA); |
449 | 442 |
450 base::test::ScopedFeatureList feature_list; | 443 base::test::ScopedFeatureList feature_list; |
451 feature_list.InitAndEnableFeature(features::kBlockPromptsIfDismissedOften); | 444 feature_list.InitAndEnableFeature(features::kBlockPromptsIfDismissedOften); |
452 | 445 |
453 EXPECT_TRUE( | 446 EXPECT_TRUE( |
454 base::FeatureList::IsEnabled(features::kBlockPromptsIfDismissedOften)); | 447 base::FeatureList::IsEnabled(features::kBlockPromptsIfDismissedOften)); |
455 | 448 |
456 // Sanity check independence per permission type by checking two of them. | 449 // Sanity check independence per permission type by checking two of them. |
457 DismissMultipleTimesAndExpectBlock(url, | 450 DismissMultipleTimesAndExpectBlock(url, |
458 content::PermissionType::GEOLOCATION, | |
459 CONTENT_SETTINGS_TYPE_GEOLOCATION, 3); | 451 CONTENT_SETTINGS_TYPE_GEOLOCATION, 3); |
460 DismissMultipleTimesAndExpectBlock(url, | 452 DismissMultipleTimesAndExpectBlock(url, |
461 content::PermissionType::NOTIFICATIONS, | |
462 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 3); | 453 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 3); |
463 } | 454 } |
464 | 455 |
465 void TestVariationBlockOnSeveralDismissals_TestContent() { | 456 void TestVariationBlockOnSeveralDismissals_TestContent() { |
466 GURL url("https://www.google.com"); | 457 GURL url("https://www.google.com"); |
467 NavigateAndCommit(url); | 458 NavigateAndCommit(url); |
468 base::HistogramTester histograms; | 459 base::HistogramTester histograms; |
469 | 460 |
470 // Set up the custom parameter and custom value. | 461 // Set up the custom parameter and custom value. |
471 base::FieldTrialList field_trials(nullptr); | 462 base::FieldTrialList field_trials(nullptr); |
(...skipping 19 matching lines...) Expand all Loading... |
491 | 482 |
492 { | 483 { |
493 std::map<std::string, std::string> actual_params; | 484 std::map<std::string, std::string> actual_params; |
494 EXPECT_TRUE(variations::GetVariationParamsByFeature( | 485 EXPECT_TRUE(variations::GetVariationParamsByFeature( |
495 features::kBlockPromptsIfDismissedOften, &actual_params)); | 486 features::kBlockPromptsIfDismissedOften, &actual_params)); |
496 EXPECT_EQ(params, actual_params); | 487 EXPECT_EQ(params, actual_params); |
497 } | 488 } |
498 | 489 |
499 for (uint32_t i = 0; i < 5; ++i) { | 490 for (uint32_t i = 0; i < 5; ++i) { |
500 TestPermissionContext permission_context( | 491 TestPermissionContext permission_context( |
501 profile(), content::PermissionType::MIDI_SYSEX, | 492 profile(), CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
502 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | |
503 | 493 |
504 ContentSetting expected = | 494 ContentSetting expected = |
505 (i < 4) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK; | 495 (i < 4) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK; |
506 const PermissionRequestID id( | 496 const PermissionRequestID id( |
507 web_contents()->GetRenderProcessHost()->GetID(), | 497 web_contents()->GetRenderProcessHost()->GetID(), |
508 web_contents()->GetMainFrame()->GetRoutingID(), i); | 498 web_contents()->GetMainFrame()->GetRoutingID(), i); |
509 permission_context.SetRespondPermissionCallback( | 499 permission_context.SetRespondPermissionCallback( |
510 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 500 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
511 base::Unretained(this), &permission_context, id, url, | 501 base::Unretained(this), &permission_context, id, url, |
512 false, CONTENT_SETTING_ASK)); | 502 false, CONTENT_SETTING_ASK)); |
(...skipping 22 matching lines...) Expand all Loading... |
535 PermissionEmbargoStatus::NOT_EMBARGOED, | 525 PermissionEmbargoStatus::NOT_EMBARGOED, |
536 i + 1); | 526 i + 1); |
537 } else { | 527 } else { |
538 histograms.ExpectBucketCount( | 528 histograms.ExpectBucketCount( |
539 "Permissions.AutoBlocker.EmbargoStatus", | 529 "Permissions.AutoBlocker.EmbargoStatus", |
540 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1); | 530 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1); |
541 } | 531 } |
542 } | 532 } |
543 | 533 |
544 // Ensure that we finish in the block state. | 534 // Ensure that we finish in the block state. |
545 TestPermissionContext permission_context( | 535 TestPermissionContext permission_context(profile(), |
546 profile(), content::PermissionType::MIDI_SYSEX, | 536 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
547 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | |
548 PermissionResult result = permission_context.GetPermissionStatus(url, url); | 537 PermissionResult result = permission_context.GetPermissionStatus(url, url); |
549 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); | 538 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); |
550 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); | 539 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); |
551 | 540 |
552 variations::testing::ClearAllVariationParams(); | 541 variations::testing::ClearAllVariationParams(); |
553 } | 542 } |
554 | 543 |
555 void TestRequestPermissionInvalidUrl( | 544 void TestRequestPermissionInvalidUrl( |
556 content::PermissionType permission_type, | |
557 ContentSettingsType content_settings_type) { | 545 ContentSettingsType content_settings_type) { |
558 TestPermissionContext permission_context(profile(), permission_type, | 546 TestPermissionContext permission_context(profile(), content_settings_type); |
559 content_settings_type); | |
560 GURL url; | 547 GURL url; |
561 ASSERT_FALSE(url.is_valid()); | 548 ASSERT_FALSE(url.is_valid()); |
562 NavigateAndCommit(url); | 549 NavigateAndCommit(url); |
563 | 550 |
564 const PermissionRequestID id( | 551 const PermissionRequestID id( |
565 web_contents()->GetRenderProcessHost()->GetID(), | 552 web_contents()->GetRenderProcessHost()->GetID(), |
566 web_contents()->GetMainFrame()->GetRoutingID(), | 553 web_contents()->GetMainFrame()->GetRoutingID(), |
567 -1); | 554 -1); |
568 permission_context.RequestPermission( | 555 permission_context.RequestPermission( |
569 web_contents(), | 556 web_contents(), |
570 id, url, true /* user_gesture */, | 557 id, url, true /* user_gesture */, |
571 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 558 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
572 base::Unretained(&permission_context))); | 559 base::Unretained(&permission_context))); |
573 | 560 |
574 ASSERT_EQ(1u, permission_context.decisions().size()); | 561 ASSERT_EQ(1u, permission_context.decisions().size()); |
575 EXPECT_EQ(CONTENT_SETTING_BLOCK, permission_context.decisions()[0]); | 562 EXPECT_EQ(CONTENT_SETTING_BLOCK, permission_context.decisions()[0]); |
576 EXPECT_TRUE(permission_context.tab_context_updated()); | 563 EXPECT_TRUE(permission_context.tab_context_updated()); |
577 EXPECT_EQ(CONTENT_SETTING_ASK, | 564 EXPECT_EQ(CONTENT_SETTING_ASK, |
578 permission_context.GetContentSettingFromMap(url, url)); | 565 permission_context.GetContentSettingFromMap(url, url)); |
579 } | 566 } |
580 | 567 |
581 void TestGrantAndRevoke_TestContent(content::PermissionType permission_type, | 568 void TestGrantAndRevoke_TestContent(ContentSettingsType content_settings_type, |
582 ContentSettingsType content_settings_type, | |
583 ContentSetting expected_default) { | 569 ContentSetting expected_default) { |
584 TestPermissionContext permission_context(profile(), permission_type, | 570 TestPermissionContext permission_context(profile(), content_settings_type); |
585 content_settings_type); | |
586 GURL url("https://www.google.com"); | 571 GURL url("https://www.google.com"); |
587 NavigateAndCommit(url); | 572 NavigateAndCommit(url); |
588 | 573 |
589 const PermissionRequestID id( | 574 const PermissionRequestID id( |
590 web_contents()->GetRenderProcessHost()->GetID(), | 575 web_contents()->GetRenderProcessHost()->GetID(), |
591 web_contents()->GetMainFrame()->GetRoutingID(), | 576 web_contents()->GetMainFrame()->GetRoutingID(), |
592 -1); | 577 -1); |
593 permission_context.SetRespondPermissionCallback( | 578 permission_context.SetRespondPermissionCallback( |
594 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 579 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
595 base::Unretained(this), &permission_context, id, url, true, | 580 base::Unretained(this), &permission_context, id, url, true, |
(...skipping 15 matching lines...) Expand all Loading... |
611 permission_context.ResetPermission(url.GetOrigin(), url.GetOrigin()); | 596 permission_context.ResetPermission(url.GetOrigin(), url.GetOrigin()); |
612 ContentSetting setting_after_reset = | 597 ContentSetting setting_after_reset = |
613 permission_context.GetContentSettingFromMap(url, url); | 598 permission_context.GetContentSettingFromMap(url, url); |
614 ContentSetting default_setting = | 599 ContentSetting default_setting = |
615 HostContentSettingsMapFactory::GetForProfile(profile()) | 600 HostContentSettingsMapFactory::GetForProfile(profile()) |
616 ->GetDefaultContentSetting(content_settings_type, nullptr); | 601 ->GetDefaultContentSetting(content_settings_type, nullptr); |
617 EXPECT_EQ(default_setting, setting_after_reset); | 602 EXPECT_EQ(default_setting, setting_after_reset); |
618 } | 603 } |
619 | 604 |
620 void TestGlobalPermissionsKillSwitch( | 605 void TestGlobalPermissionsKillSwitch( |
621 content::PermissionType permission_type, | |
622 ContentSettingsType content_settings_type) { | 606 ContentSettingsType content_settings_type) { |
623 TestKillSwitchPermissionContext permission_context( | 607 TestKillSwitchPermissionContext permission_context(profile(), |
624 profile(), permission_type, content_settings_type); | 608 content_settings_type); |
625 permission_context.ResetFieldTrialList(); | 609 permission_context.ResetFieldTrialList(); |
626 | 610 |
627 EXPECT_FALSE(permission_context.IsPermissionKillSwitchOn()); | 611 EXPECT_FALSE(permission_context.IsPermissionKillSwitchOn()); |
628 std::map<std::string, std::string> params; | 612 std::map<std::string, std::string> params; |
629 params[PermissionUtil::GetPermissionString(permission_type)] = | 613 params[PermissionUtil::GetPermissionString(content_settings_type)] = |
630 kPermissionsKillSwitchBlockedValue; | 614 kPermissionsKillSwitchBlockedValue; |
631 variations::AssociateVariationParams( | 615 variations::AssociateVariationParams( |
632 kPermissionsKillSwitchFieldStudy, kPermissionsKillSwitchTestGroup, | 616 kPermissionsKillSwitchFieldStudy, kPermissionsKillSwitchTestGroup, |
633 params); | 617 params); |
634 base::FieldTrialList::CreateFieldTrial(kPermissionsKillSwitchFieldStudy, | 618 base::FieldTrialList::CreateFieldTrial(kPermissionsKillSwitchFieldStudy, |
635 kPermissionsKillSwitchTestGroup); | 619 kPermissionsKillSwitchTestGroup); |
636 EXPECT_TRUE(permission_context.IsPermissionKillSwitchOn()); | 620 EXPECT_TRUE(permission_context.IsPermissionKillSwitchOn()); |
637 } | 621 } |
638 | 622 |
639 // Don't call this more than once in the same test, as it persists data to | 623 // Don't call this more than once in the same test, as it persists data to |
640 // HostContentSettingsMap. | 624 // HostContentSettingsMap. |
641 void TestParallelRequests(ContentSetting response) { | 625 void TestParallelRequests(ContentSetting response) { |
642 TestPermissionContext permission_context( | 626 TestPermissionContext permission_context( |
643 profile(), content::PermissionType::NOTIFICATIONS, | 627 profile(), CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
644 CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | |
645 GURL url("http://www.google.com"); | 628 GURL url("http://www.google.com"); |
646 NavigateAndCommit(url); | 629 NavigateAndCommit(url); |
647 | 630 |
648 const PermissionRequestID id0( | 631 const PermissionRequestID id0( |
649 web_contents()->GetRenderProcessHost()->GetID(), | 632 web_contents()->GetRenderProcessHost()->GetID(), |
650 web_contents()->GetMainFrame()->GetRoutingID(), 0); | 633 web_contents()->GetMainFrame()->GetRoutingID(), 0); |
651 const PermissionRequestID id1( | 634 const PermissionRequestID id1( |
652 web_contents()->GetRenderProcessHost()->GetID(), | 635 web_contents()->GetRenderProcessHost()->GetID(), |
653 web_contents()->GetMainFrame()->GetRoutingID(), 1); | 636 web_contents()->GetMainFrame()->GetRoutingID(), 1); |
654 | 637 |
(...skipping 20 matching lines...) Expand all Loading... |
675 | 658 |
676 ASSERT_EQ(2u, permission_context.decisions().size()); | 659 ASSERT_EQ(2u, permission_context.decisions().size()); |
677 EXPECT_EQ(response, permission_context.decisions()[0]); | 660 EXPECT_EQ(response, permission_context.decisions()[0]); |
678 EXPECT_EQ(response, permission_context.decisions()[1]); | 661 EXPECT_EQ(response, permission_context.decisions()[1]); |
679 EXPECT_TRUE(permission_context.tab_context_updated()); | 662 EXPECT_TRUE(permission_context.tab_context_updated()); |
680 | 663 |
681 EXPECT_EQ(response, permission_context.GetContentSettingFromMap(url, url)); | 664 EXPECT_EQ(response, permission_context.GetContentSettingFromMap(url, url)); |
682 } | 665 } |
683 | 666 |
684 void TestPermissionsBlacklisting( | 667 void TestPermissionsBlacklisting( |
685 content::PermissionType permission_type, | |
686 ContentSettingsType content_settings_type, | 668 ContentSettingsType content_settings_type, |
687 scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager, | 669 scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager, |
688 const GURL& url, | 670 const GURL& url, |
689 int timeout, | 671 int timeout, |
690 ContentSetting expected_permission_status, | 672 ContentSetting expected_permission_status, |
691 PermissionEmbargoStatus expected_embargo_reason) { | 673 PermissionEmbargoStatus expected_embargo_reason) { |
692 NavigateAndCommit(url); | 674 NavigateAndCommit(url); |
693 base::HistogramTester histograms; | 675 base::HistogramTester histograms; |
694 base::test::ScopedFeatureList scoped_feature_list; | 676 base::test::ScopedFeatureList scoped_feature_list; |
695 scoped_feature_list.InitAndEnableFeature(features::kPermissionsBlacklist); | 677 scoped_feature_list.InitAndEnableFeature(features::kPermissionsBlacklist); |
696 TestPermissionContext permission_context(profile(), permission_type, | 678 TestPermissionContext permission_context(profile(), content_settings_type); |
697 content_settings_type); | |
698 PermissionDecisionAutoBlocker::GetForProfile(profile()) | 679 PermissionDecisionAutoBlocker::GetForProfile(profile()) |
699 ->SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, | 680 ->SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, |
700 timeout); | 681 timeout); |
701 const PermissionRequestID id( | 682 const PermissionRequestID id( |
702 web_contents()->GetRenderProcessHost()->GetID(), | 683 web_contents()->GetRenderProcessHost()->GetID(), |
703 web_contents()->GetMainFrame()->GetRoutingID(), -1); | 684 web_contents()->GetMainFrame()->GetRoutingID(), -1); |
704 | 685 |
705 // A response only needs to be made to the permission request if we do not | 686 // A response only needs to be made to the permission request if we do not |
706 // expect he permission to be blacklisted, therefore set the response | 687 // expect he permission to be blacklisted, therefore set the response |
707 // callback. | 688 // callback. |
(...skipping 30 matching lines...) Expand all Loading... |
738 PermissionRequestManager::CreateForWebContents(web_contents()); | 719 PermissionRequestManager::CreateForWebContents(web_contents()); |
739 #endif | 720 #endif |
740 } | 721 } |
741 | 722 |
742 DISALLOW_COPY_AND_ASSIGN(PermissionContextBaseTests); | 723 DISALLOW_COPY_AND_ASSIGN(PermissionContextBaseTests); |
743 }; | 724 }; |
744 | 725 |
745 // Simulates clicking Accept. The permission should be granted and | 726 // Simulates clicking Accept. The permission should be granted and |
746 // saved for future use. | 727 // saved for future use. |
747 TEST_F(PermissionContextBaseTests, TestAskAndGrantPersist) { | 728 TEST_F(PermissionContextBaseTests, TestAskAndGrantPersist) { |
748 TestAskAndDecide_TestContent(content::PermissionType::NOTIFICATIONS, | 729 TestAskAndDecide_TestContent(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
749 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | |
750 CONTENT_SETTING_ALLOW, true); | 730 CONTENT_SETTING_ALLOW, true); |
751 } | 731 } |
752 | 732 |
753 // Simulates clicking Accept. The permission should be granted, but not | 733 // Simulates clicking Accept. The permission should be granted, but not |
754 // persisted. | 734 // persisted. |
755 TEST_F(PermissionContextBaseTests, TestAskAndGrantNoPersist) { | 735 TEST_F(PermissionContextBaseTests, TestAskAndGrantNoPersist) { |
756 TestAskAndDecide_TestContent(content::PermissionType::NOTIFICATIONS, | 736 TestAskAndDecide_TestContent(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
757 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | |
758 CONTENT_SETTING_ALLOW, false); | 737 CONTENT_SETTING_ALLOW, false); |
759 } | 738 } |
760 | 739 |
761 // Simulates clicking Block. The permission should be denied and | 740 // Simulates clicking Block. The permission should be denied and |
762 // saved for future use. | 741 // saved for future use. |
763 TEST_F(PermissionContextBaseTests, TestAskAndBlockPersist) { | 742 TEST_F(PermissionContextBaseTests, TestAskAndBlockPersist) { |
764 TestAskAndDecide_TestContent(content::PermissionType::GEOLOCATION, | 743 TestAskAndDecide_TestContent(CONTENT_SETTINGS_TYPE_GEOLOCATION, |
765 CONTENT_SETTINGS_TYPE_GEOLOCATION, | |
766 CONTENT_SETTING_BLOCK, true); | 744 CONTENT_SETTING_BLOCK, true); |
767 } | 745 } |
768 | 746 |
769 // Simulates clicking Block. The permission should be denied, but not persisted. | 747 // Simulates clicking Block. The permission should be denied, but not persisted. |
770 TEST_F(PermissionContextBaseTests, TestAskAndBlockNoPersist) { | 748 TEST_F(PermissionContextBaseTests, TestAskAndBlockNoPersist) { |
771 TestAskAndDecide_TestContent(content::PermissionType::GEOLOCATION, | 749 TestAskAndDecide_TestContent(CONTENT_SETTINGS_TYPE_GEOLOCATION, |
772 CONTENT_SETTINGS_TYPE_GEOLOCATION, | |
773 CONTENT_SETTING_BLOCK, false); | 750 CONTENT_SETTING_BLOCK, false); |
774 } | 751 } |
775 | 752 |
776 // Simulates clicking Dismiss (X) in the infobar/bubble. | 753 // Simulates clicking Dismiss (X) in the infobar/bubble. |
777 // The permission should be denied but not saved for future use. | 754 // The permission should be denied but not saved for future use. |
778 TEST_F(PermissionContextBaseTests, TestAskAndDismiss) { | 755 TEST_F(PermissionContextBaseTests, TestAskAndDismiss) { |
779 TestAskAndDecide_TestContent(content::PermissionType::MIDI_SYSEX, | 756 TestAskAndDecide_TestContent(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, |
780 CONTENT_SETTINGS_TYPE_MIDI_SYSEX, | |
781 CONTENT_SETTING_ASK, false); | 757 CONTENT_SETTING_ASK, false); |
782 } | 758 } |
783 | 759 |
784 // Simulates clicking Dismiss (X) in the infobar/bubble with the block on too | 760 // Simulates clicking Dismiss (X) in the infobar/bubble with the block on too |
785 // many dismissals feature active. The permission should be blocked after | 761 // many dismissals feature active. The permission should be blocked after |
786 // several dismissals. | 762 // several dismissals. |
787 TEST_F(PermissionContextBaseTests, TestDismissUntilBlocked) { | 763 TEST_F(PermissionContextBaseTests, TestDismissUntilBlocked) { |
788 TestBlockOnSeveralDismissals_TestContent(); | 764 TestBlockOnSeveralDismissals_TestContent(); |
789 } | 765 } |
790 | 766 |
791 // Test setting a custom number of dismissals before block via variations. | 767 // Test setting a custom number of dismissals before block via variations. |
792 TEST_F(PermissionContextBaseTests, TestDismissVariations) { | 768 TEST_F(PermissionContextBaseTests, TestDismissVariations) { |
793 TestVariationBlockOnSeveralDismissals_TestContent(); | 769 TestVariationBlockOnSeveralDismissals_TestContent(); |
794 } | 770 } |
795 | 771 |
796 // Simulates non-valid requesting URL. | 772 // Simulates non-valid requesting URL. |
797 // The permission should be denied but not saved for future use. | 773 // The permission should be denied but not saved for future use. |
798 TEST_F(PermissionContextBaseTests, TestNonValidRequestingUrl) { | 774 TEST_F(PermissionContextBaseTests, TestNonValidRequestingUrl) { |
799 TestRequestPermissionInvalidUrl(content::PermissionType::GEOLOCATION, | 775 TestRequestPermissionInvalidUrl(CONTENT_SETTINGS_TYPE_GEOLOCATION); |
800 CONTENT_SETTINGS_TYPE_GEOLOCATION); | 776 TestRequestPermissionInvalidUrl(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
801 TestRequestPermissionInvalidUrl(content::PermissionType::NOTIFICATIONS, | 777 TestRequestPermissionInvalidUrl(CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
802 CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 778 TestRequestPermissionInvalidUrl(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING); |
803 TestRequestPermissionInvalidUrl(content::PermissionType::MIDI_SYSEX, | |
804 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | |
805 TestRequestPermissionInvalidUrl(content::PermissionType::PUSH_MESSAGING, | |
806 CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | |
807 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) | 779 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) |
808 TestRequestPermissionInvalidUrl( | 780 TestRequestPermissionInvalidUrl( |
809 content::PermissionType::PROTECTED_MEDIA_IDENTIFIER, | |
810 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER); | 781 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER); |
811 #endif | 782 #endif |
812 } | 783 } |
813 | 784 |
814 #if defined(OS_ANDROID) | 785 #if defined(OS_ANDROID) |
815 // This test is specific to Android because other platforms use bubbles. | 786 // This test is specific to Android because other platforms use bubbles. |
816 TEST_F(PermissionContextBaseTests, TestGrantAndRevokeWithInfobars) { | 787 TEST_F(PermissionContextBaseTests, TestGrantAndRevokeWithInfobars) { |
817 TestGrantAndRevoke_TestContent(content::PermissionType::GEOLOCATION, | 788 TestGrantAndRevoke_TestContent(CONTENT_SETTINGS_TYPE_GEOLOCATION, |
818 CONTENT_SETTINGS_TYPE_GEOLOCATION, | |
819 CONTENT_SETTING_ASK); | 789 CONTENT_SETTING_ASK); |
820 TestGrantAndRevoke_TestContent(content::PermissionType::MIDI_SYSEX, | 790 TestGrantAndRevoke_TestContent(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, |
821 CONTENT_SETTINGS_TYPE_MIDI_SYSEX, | |
822 CONTENT_SETTING_ASK); | 791 CONTENT_SETTING_ASK); |
823 TestGrantAndRevoke_TestContent( | 792 TestGrantAndRevoke_TestContent( |
824 content::PermissionType::PROTECTED_MEDIA_IDENTIFIER, | |
825 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, CONTENT_SETTING_ASK); | 793 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, CONTENT_SETTING_ASK); |
826 // TODO(timvolodine): currently no test for | 794 // TODO(timvolodine): currently no test for |
827 // CONTENT_SETTINGS_TYPE_NOTIFICATIONS because notification permissions work | 795 // CONTENT_SETTINGS_TYPE_NOTIFICATIONS because notification permissions work |
828 // differently with infobars as compared to bubbles (crbug.com/453784). | 796 // differently with infobars as compared to bubbles (crbug.com/453784). |
829 } | 797 } |
830 #endif | 798 #endif |
831 | 799 |
832 #if !defined(OS_ANDROID) | 800 #if !defined(OS_ANDROID) |
833 // Simulates granting and revoking of permissions using permission bubbles. | 801 // Simulates granting and revoking of permissions using permission bubbles. |
834 // This test shouldn't run on mobile because mobile platforms use infobars. | 802 // This test shouldn't run on mobile because mobile platforms use infobars. |
835 TEST_F(PermissionContextBaseTests, TestGrantAndRevokeWithBubbles) { | 803 TEST_F(PermissionContextBaseTests, TestGrantAndRevokeWithBubbles) { |
836 TestGrantAndRevoke_TestContent(content::PermissionType::GEOLOCATION, | 804 TestGrantAndRevoke_TestContent(CONTENT_SETTINGS_TYPE_GEOLOCATION, |
837 CONTENT_SETTINGS_TYPE_GEOLOCATION, | |
838 CONTENT_SETTING_ASK); | 805 CONTENT_SETTING_ASK); |
839 TestGrantAndRevoke_TestContent(content::PermissionType::NOTIFICATIONS, | 806 TestGrantAndRevoke_TestContent(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
840 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | |
841 CONTENT_SETTING_ASK); | 807 CONTENT_SETTING_ASK); |
842 TestGrantAndRevoke_TestContent(content::PermissionType::MIDI_SYSEX, | 808 TestGrantAndRevoke_TestContent(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, |
843 CONTENT_SETTINGS_TYPE_MIDI_SYSEX, | |
844 CONTENT_SETTING_ASK); | |
845 TestGrantAndRevoke_TestContent(content::PermissionType::PUSH_MESSAGING, | |
846 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | |
847 CONTENT_SETTING_ASK); | 809 CONTENT_SETTING_ASK); |
848 } | 810 } |
849 #endif | 811 #endif |
850 | 812 |
851 // Tests the global kill switch by enabling/disabling the Field Trials. | 813 // Tests the global kill switch by enabling/disabling the Field Trials. |
852 TEST_F(PermissionContextBaseTests, TestGlobalKillSwitch) { | 814 TEST_F(PermissionContextBaseTests, TestGlobalKillSwitch) { |
853 TestGlobalPermissionsKillSwitch(content::PermissionType::GEOLOCATION, | 815 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_GEOLOCATION); |
854 CONTENT_SETTINGS_TYPE_GEOLOCATION); | 816 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
855 TestGlobalPermissionsKillSwitch(content::PermissionType::NOTIFICATIONS, | 817 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
856 CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 818 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING); |
857 TestGlobalPermissionsKillSwitch(content::PermissionType::MIDI_SYSEX, | 819 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_DURABLE_STORAGE); |
858 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | |
859 TestGlobalPermissionsKillSwitch(content::PermissionType::PUSH_MESSAGING, | |
860 CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | |
861 TestGlobalPermissionsKillSwitch(content::PermissionType::DURABLE_STORAGE, | |
862 CONTENT_SETTINGS_TYPE_DURABLE_STORAGE); | |
863 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) | 820 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) |
864 TestGlobalPermissionsKillSwitch( | 821 TestGlobalPermissionsKillSwitch( |
865 content::PermissionType::PROTECTED_MEDIA_IDENTIFIER, | |
866 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER); | 822 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER); |
867 #endif | 823 #endif |
868 TestGlobalPermissionsKillSwitch(content::PermissionType::AUDIO_CAPTURE, | 824 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC); |
869 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC); | 825 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA); |
870 TestGlobalPermissionsKillSwitch(content::PermissionType::VIDEO_CAPTURE, | |
871 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA); | |
872 } | 826 } |
873 | 827 |
874 TEST_F(PermissionContextBaseTests, TestParallelRequestsAllowed) { | 828 TEST_F(PermissionContextBaseTests, TestParallelRequestsAllowed) { |
875 TestParallelRequests(CONTENT_SETTING_ALLOW); | 829 TestParallelRequests(CONTENT_SETTING_ALLOW); |
876 } | 830 } |
877 | 831 |
878 TEST_F(PermissionContextBaseTests, TestParallelRequestsBlocked) { | 832 TEST_F(PermissionContextBaseTests, TestParallelRequestsBlocked) { |
879 TestParallelRequests(CONTENT_SETTING_BLOCK); | 833 TestParallelRequests(CONTENT_SETTING_BLOCK); |
880 } | 834 } |
881 | 835 |
882 TEST_F(PermissionContextBaseTests, TestParallelRequestsDismissed) { | 836 TEST_F(PermissionContextBaseTests, TestParallelRequestsDismissed) { |
883 TestParallelRequests(CONTENT_SETTING_ASK); | 837 TestParallelRequests(CONTENT_SETTING_ASK); |
884 } | 838 } |
885 | 839 |
886 // Tests a blacklisted (URL, permission) pair has had its permission request | 840 // Tests a blacklisted (URL, permission) pair has had its permission request |
887 // blocked. | 841 // blocked. |
888 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingBlocked) { | 842 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingBlocked) { |
889 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = | 843 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = |
890 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); | 844 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); |
891 const GURL url("https://www.example.com"); | 845 const GURL url("https://www.example.com"); |
892 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; | 846 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; |
893 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); | 847 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); |
894 TestPermissionsBlacklisting( | 848 TestPermissionsBlacklisting( |
895 content::PermissionType::GEOLOCATION, CONTENT_SETTINGS_TYPE_GEOLOCATION, | 849 CONTENT_SETTINGS_TYPE_GEOLOCATION, |
896 db_manager, url, 2000 /* timeout */, CONTENT_SETTING_BLOCK, | 850 db_manager, url, 2000 /* timeout */, CONTENT_SETTING_BLOCK, |
897 PermissionEmbargoStatus::PERMISSIONS_BLACKLISTING); | 851 PermissionEmbargoStatus::PERMISSIONS_BLACKLISTING); |
898 } | 852 } |
899 | 853 |
900 // Tests that a URL that is blacklisted for one permission can still request | 854 // Tests that a URL that is blacklisted for one permission can still request |
901 // another and grant another. | 855 // another and grant another. |
902 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) { | 856 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) { |
903 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = | 857 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = |
904 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); | 858 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); |
905 const GURL url("https://www.example.com"); | 859 const GURL url("https://www.example.com"); |
906 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; | 860 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; |
907 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); | 861 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); |
908 TestPermissionsBlacklisting(content::PermissionType::NOTIFICATIONS, | 862 TestPermissionsBlacklisting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, |
909 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, | |
910 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW, | 863 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW, |
911 PermissionEmbargoStatus::NOT_EMBARGOED); | 864 PermissionEmbargoStatus::NOT_EMBARGOED); |
912 } | 865 } |
OLD | NEW |