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

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

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

Powered by Google App Engine
This is Rietveld 408576698