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

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

Issue 2701343002: Implement permission embargo suppression metrics. (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 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 } 310 }
311 311
312 if (persist) { 312 if (persist) {
313 EXPECT_EQ(decision, 313 EXPECT_EQ(decision,
314 permission_context.GetContentSettingFromMap(url, url)); 314 permission_context.GetContentSettingFromMap(url, url));
315 } else { 315 } else {
316 EXPECT_EQ(CONTENT_SETTING_ASK, 316 EXPECT_EQ(CONTENT_SETTING_ASK,
317 permission_context.GetContentSettingFromMap(url, url)); 317 permission_context.GetContentSettingFromMap(url, url));
318 } 318 }
319 319
320 histograms.ExpectUniqueSample(
321 "Permissions.AutoBlocker.EmbargoPromptSuppression",
322 PermissionEmbargoStatus::NOT_EMBARGOED, 1);
320 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", 323 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus",
321 PermissionEmbargoStatus::NOT_EMBARGOED, 1); 324 PermissionEmbargoStatus::NOT_EMBARGOED, 1);
322 } 325 }
323 326
324 void DismissMultipleTimesAndExpectBlock( 327 void DismissMultipleTimesAndExpectBlock(
325 const GURL& url, 328 const GURL& url,
326 ContentSettingsType content_settings_type, 329 ContentSettingsType content_settings_type,
327 uint32_t iterations) { 330 uint32_t iterations) {
328 base::HistogramTester histograms; 331 base::HistogramTester histograms;
329 332
330 // Dismiss |iterations| times. The final dismiss should change the decision 333 // Dismiss |iterations| times. The final dismiss should change the decision
331 // from dismiss to block, and hence change the persisted content setting. 334 // from dismiss to block, and hence change the persisted content setting.
332 for (uint32_t i = 0; i < iterations; ++i) { 335 for (uint32_t i = 0; i < iterations; ++i) {
333 ContentSetting expected =
334 (i < 2) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK;
335 TestPermissionContext permission_context(profile(), 336 TestPermissionContext permission_context(profile(),
336 content_settings_type); 337 content_settings_type);
337 const PermissionRequestID id( 338 const PermissionRequestID id(
338 web_contents()->GetRenderProcessHost()->GetID(), 339 web_contents()->GetRenderProcessHost()->GetID(),
339 web_contents()->GetMainFrame()->GetRoutingID(), i); 340 web_contents()->GetMainFrame()->GetRoutingID(), i);
340 341
341 permission_context.SetRespondPermissionCallback( 342 permission_context.SetRespondPermissionCallback(
342 base::Bind(&PermissionContextBaseTests::RespondToPermission, 343 base::Bind(&PermissionContextBaseTests::RespondToPermission,
343 base::Unretained(this), &permission_context, id, url, 344 base::Unretained(this), &permission_context, id, url,
344 false, CONTENT_SETTING_ASK)); 345 false, CONTENT_SETTING_ASK));
345 346
346 permission_context.RequestPermission( 347 permission_context.RequestPermission(
347 web_contents(), id, url, true /* user_gesture */, 348 web_contents(), id, url, true /* user_gesture */,
348 base::Bind(&TestPermissionContext::TrackPermissionDecision, 349 base::Bind(&TestPermissionContext::TrackPermissionDecision,
349 base::Unretained(&permission_context))); 350 base::Unretained(&permission_context)));
350 histograms.ExpectTotalCount( 351 histograms.ExpectTotalCount(
351 "Permissions.Prompt.Dismissed.PriorDismissCount." + 352 "Permissions.Prompt.Dismissed.PriorDismissCount." +
352 PermissionUtil::GetPermissionString(content_settings_type), 353 PermissionUtil::GetPermissionString(content_settings_type),
353 i + 1); 354 i + 1);
354 histograms.ExpectBucketCount( 355 histograms.ExpectBucketCount(
355 "Permissions.Prompt.Dismissed.PriorDismissCount." + 356 "Permissions.Prompt.Dismissed.PriorDismissCount." +
356 PermissionUtil::GetPermissionString(content_settings_type), 357 PermissionUtil::GetPermissionString(content_settings_type),
357 i, 1); 358 i, 1);
359
360 // On Android, repeatedly requesting and deciding permissions has the side
361 // effect of overcounting any metrics recorded in the PermissionInfoBarDelegate
362 // destructor. This is because we directly call
363 // PermissionQueueController::OnPermissionSet without setting the action_taken
364 // bit in PermissionInfoBarDelegate. When PermissionQueueController is deleted
365 // all OS_ANDROID ifdefs in this test can be removed.
366 #if !defined(OS_ANDROID)
358 histograms.ExpectTotalCount("Permissions.AutoBlocker.EmbargoStatus", 367 histograms.ExpectTotalCount("Permissions.AutoBlocker.EmbargoStatus",
359 i + 1); 368 i + 1);
369 #endif
370
371 PermissionResult result =
372 permission_context.GetPermissionStatus(url, url);
373
374 histograms.ExpectUniqueSample(
375 "Permissions.AutoBlocker.EmbargoPromptSuppression",
376 PermissionEmbargoStatus::NOT_EMBARGOED, i + 1);
360 if (i < 2) { 377 if (i < 2) {
378 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
379 EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting);
380 #if !defined(OS_ANDROID)
361 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", 381 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus",
362 PermissionEmbargoStatus::NOT_EMBARGOED, 382 PermissionEmbargoStatus::NOT_EMBARGOED,
363 i + 1); 383 i + 1);
384 #endif
364 } else { 385 } else {
386 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
387 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
388 #if !defined(OS_ANDROID)
365 histograms.ExpectBucketCount( 389 histograms.ExpectBucketCount(
366 "Permissions.AutoBlocker.EmbargoStatus", 390 "Permissions.AutoBlocker.EmbargoStatus",
367 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1); 391 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1);
392 #endif
368 } 393 }
369 394
370 ASSERT_EQ(1u, permission_context.decisions().size()); 395 ASSERT_EQ(1u, permission_context.decisions().size());
371 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); 396 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]);
372 EXPECT_TRUE(permission_context.tab_context_updated()); 397 EXPECT_TRUE(permission_context.tab_context_updated());
373 PermissionResult result =
374 permission_context.GetPermissionStatus(url, url);
375 EXPECT_EQ(expected, result.content_setting);
376 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
377 } 398 }
378 399
379 TestPermissionContext permission_context(profile(), content_settings_type); 400 TestPermissionContext permission_context(profile(), content_settings_type);
380 const PermissionRequestID id( 401 const PermissionRequestID id(
381 web_contents()->GetRenderProcessHost()->GetID(), 402 web_contents()->GetRenderProcessHost()->GetID(),
382 web_contents()->GetMainFrame()->GetRoutingID(), -1); 403 web_contents()->GetMainFrame()->GetRoutingID(), -1);
383 404
384 permission_context.SetRespondPermissionCallback( 405 permission_context.SetRespondPermissionCallback(
385 base::Bind(&PermissionContextBaseTests::RespondToPermission, 406 base::Bind(&PermissionContextBaseTests::RespondToPermission,
386 base::Unretained(this), &permission_context, id, url, false, 407 base::Unretained(this), &permission_context, id, url, false,
387 CONTENT_SETTING_ASK)); 408 CONTENT_SETTING_ASK));
388 409
389 permission_context.RequestPermission( 410 permission_context.RequestPermission(
390 web_contents(), id, url, true /* user_gesture */, 411 web_contents(), id, url, true /* user_gesture */,
391 base::Bind(&TestPermissionContext::TrackPermissionDecision, 412 base::Bind(&TestPermissionContext::TrackPermissionDecision,
392 base::Unretained(&permission_context))); 413 base::Unretained(&permission_context)));
393 414
394 PermissionResult result = permission_context.GetPermissionStatus(url, url); 415 PermissionResult result = permission_context.GetPermissionStatus(url, url);
395 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); 416 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
396 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); 417 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
418 histograms.ExpectBucketCount(
419 "Permissions.AutoBlocker.EmbargoPromptSuppression",
420 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1);
397 } 421 }
398 422
399 void TestBlockOnSeveralDismissals_TestContent() { 423 void TestBlockOnSeveralDismissals_TestContent() {
400 GURL url("https://www.google.com"); 424 GURL url("https://www.google.com");
401 NavigateAndCommit(url); 425 NavigateAndCommit(url);
402 base::HistogramTester histograms; 426 base::HistogramTester histograms;
403 427
404 // First, ensure that > 3 dismissals behaves correctly. 428 // First, ensure that > 3 dismissals behaves correctly.
405 for (uint32_t i = 0; i < 4; ++i) { 429 for (uint32_t i = 0; i < 4; ++i) {
406 TestPermissionContext permission_context( 430 TestPermissionContext permission_context(
407 profile(), CONTENT_SETTINGS_TYPE_GEOLOCATION); 431 profile(), CONTENT_SETTINGS_TYPE_GEOLOCATION);
408 432
409 const PermissionRequestID id( 433 const PermissionRequestID id(
410 web_contents()->GetRenderProcessHost()->GetID(), 434 web_contents()->GetRenderProcessHost()->GetID(),
411 web_contents()->GetMainFrame()->GetRoutingID(), i); 435 web_contents()->GetMainFrame()->GetRoutingID(), i);
412 436
413 permission_context.SetRespondPermissionCallback( 437 permission_context.SetRespondPermissionCallback(
414 base::Bind(&PermissionContextBaseTests::RespondToPermission, 438 base::Bind(&PermissionContextBaseTests::RespondToPermission,
415 base::Unretained(this), &permission_context, id, url, 439 base::Unretained(this), &permission_context, id, url,
416 false, CONTENT_SETTING_ASK)); 440 false, CONTENT_SETTING_ASK));
417 permission_context.RequestPermission( 441 permission_context.RequestPermission(
418 web_contents(), id, url, true /* user_gesture */, 442 web_contents(), id, url, true /* user_gesture */,
419 base::Bind(&TestPermissionContext::TrackPermissionDecision, 443 base::Bind(&TestPermissionContext::TrackPermissionDecision,
420 base::Unretained(&permission_context))); 444 base::Unretained(&permission_context)));
421 histograms.ExpectTotalCount( 445 histograms.ExpectTotalCount(
422 "Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation", 446 "Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation",
423 i + 1); 447 i + 1);
424 histograms.ExpectBucketCount( 448 histograms.ExpectBucketCount(
425 "Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation", i, 1); 449 "Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation", i, 1);
450 histograms.ExpectUniqueSample(
451 "Permissions.AutoBlocker.EmbargoPromptSuppression",
452 PermissionEmbargoStatus::NOT_EMBARGOED, i + 1);
453
454 // On Android, repeatedly requesting and deciding permissions has the side
455 // effect of overcounting any metrics recorded in the PermissionInfoBarDelegate
456 // destructor. This is because we directly call
457 // PermissionQueueController::OnPermissionSet without setting the action_taken
458 // bit in PermissionInfoBarDelegate. When PermissionQueueController is deleted
459 // all OS_ANDROID ifdefs in this test can be removed.
460 #if !defined(OS_ANDROID)
426 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", 461 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus",
427 PermissionEmbargoStatus::NOT_EMBARGOED, 462 PermissionEmbargoStatus::NOT_EMBARGOED,
428 i + 1); 463 i + 1);
464 #endif
429 465
430 ASSERT_EQ(1u, permission_context.decisions().size()); 466 ASSERT_EQ(1u, permission_context.decisions().size());
431 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); 467 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]);
432 EXPECT_TRUE(permission_context.tab_context_updated()); 468 EXPECT_TRUE(permission_context.tab_context_updated());
433 EXPECT_EQ(CONTENT_SETTING_ASK, 469 EXPECT_EQ(CONTENT_SETTING_ASK,
434 permission_context.GetContentSettingFromMap(url, url)); 470 permission_context.GetContentSettingFromMap(url, url));
435 } 471 }
436 472
437 // Flush the dismissal counts. Enable the block on too many dismissals 473 // Flush the dismissal counts. Enable the block on too many dismissals
438 // feature, which is disabled by default. 474 // feature, which is disabled by default.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 std::map<std::string, std::string> actual_params; 520 std::map<std::string, std::string> actual_params;
485 EXPECT_TRUE(variations::GetVariationParamsByFeature( 521 EXPECT_TRUE(variations::GetVariationParamsByFeature(
486 features::kBlockPromptsIfDismissedOften, &actual_params)); 522 features::kBlockPromptsIfDismissedOften, &actual_params));
487 EXPECT_EQ(params, actual_params); 523 EXPECT_EQ(params, actual_params);
488 } 524 }
489 525
490 for (uint32_t i = 0; i < 5; ++i) { 526 for (uint32_t i = 0; i < 5; ++i) {
491 TestPermissionContext permission_context( 527 TestPermissionContext permission_context(
492 profile(), CONTENT_SETTINGS_TYPE_MIDI_SYSEX); 528 profile(), CONTENT_SETTINGS_TYPE_MIDI_SYSEX);
493 529
494 ContentSetting expected =
495 (i < 4) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK;
496 const PermissionRequestID id( 530 const PermissionRequestID id(
497 web_contents()->GetRenderProcessHost()->GetID(), 531 web_contents()->GetRenderProcessHost()->GetID(),
498 web_contents()->GetMainFrame()->GetRoutingID(), i); 532 web_contents()->GetMainFrame()->GetRoutingID(), i);
499 permission_context.SetRespondPermissionCallback( 533 permission_context.SetRespondPermissionCallback(
500 base::Bind(&PermissionContextBaseTests::RespondToPermission, 534 base::Bind(&PermissionContextBaseTests::RespondToPermission,
501 base::Unretained(this), &permission_context, id, url, 535 base::Unretained(this), &permission_context, id, url,
502 false, CONTENT_SETTING_ASK)); 536 false, CONTENT_SETTING_ASK));
503 permission_context.RequestPermission( 537 permission_context.RequestPermission(
504 web_contents(), id, url, true /* user_gesture */, 538 web_contents(), id, url, true /* user_gesture */,
505 base::Bind(&TestPermissionContext::TrackPermissionDecision, 539 base::Bind(&TestPermissionContext::TrackPermissionDecision,
506 base::Unretained(&permission_context))); 540 base::Unretained(&permission_context)));
507 541
508 EXPECT_EQ(1u, permission_context.decisions().size()); 542 EXPECT_EQ(1u, permission_context.decisions().size());
509 ASSERT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); 543 ASSERT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]);
510 EXPECT_TRUE(permission_context.tab_context_updated()); 544 EXPECT_TRUE(permission_context.tab_context_updated());
511 PermissionResult result = 545 PermissionResult result =
512 permission_context.GetPermissionStatus(url, url); 546 permission_context.GetPermissionStatus(url, url);
513 EXPECT_EQ(expected, result.content_setting);
514 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
515 547
516 histograms.ExpectTotalCount( 548 histograms.ExpectTotalCount(
517 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); 549 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1);
518 histograms.ExpectBucketCount( 550 histograms.ExpectBucketCount(
519 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); 551 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1);
552 histograms.ExpectUniqueSample(
553 "Permissions.AutoBlocker.EmbargoPromptSuppression",
554 PermissionEmbargoStatus::NOT_EMBARGOED, i + 1);
520 555
556 // On Android, repeatedly requesting and deciding permissions has the side
557 // effect of overcounting any metrics recorded in the PermissionInfoBarDelegate
558 // destructor. This is because we directly call
559 // PermissionQueueController::OnPermissionSet without setting the action_taken
560 // bit in PermissionInfoBarDelegate. When PermissionQueueController is deleted
561 // all OS_ANDROID ifdefs in this test can be removed.
562 #if !defined(OS_ANDROID)
521 histograms.ExpectTotalCount("Permissions.AutoBlocker.EmbargoStatus", 563 histograms.ExpectTotalCount("Permissions.AutoBlocker.EmbargoStatus",
522 i + 1); 564 i + 1);
565 #endif
523 if (i < 4) { 566 if (i < 4) {
567 EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting);
568 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
569 #if !defined(OS_ANDROID)
524 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", 570 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus",
525 PermissionEmbargoStatus::NOT_EMBARGOED, 571 PermissionEmbargoStatus::NOT_EMBARGOED,
526 i + 1); 572 i + 1);
573 #endif
527 } else { 574 } else {
575 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
576 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
577 #if !defined(OS_ANDROID)
528 histograms.ExpectBucketCount( 578 histograms.ExpectBucketCount(
529 "Permissions.AutoBlocker.EmbargoStatus", 579 "Permissions.AutoBlocker.EmbargoStatus",
530 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1); 580 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1);
581 #endif
531 } 582 }
532 } 583 }
533 584
534 // Ensure that we finish in the block state. 585 // Ensure that we finish in the block state.
535 TestPermissionContext permission_context(profile(), 586 TestPermissionContext permission_context(profile(),
536 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); 587 CONTENT_SETTINGS_TYPE_MIDI_SYSEX);
537 PermissionResult result = permission_context.GetPermissionStatus(url, url); 588 PermissionResult result = permission_context.GetPermissionStatus(url, url);
538 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); 589 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
539 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); 590 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
540
541 variations::testing::ClearAllVariationParams(); 591 variations::testing::ClearAllVariationParams();
542 } 592 }
543 593
544 void TestRequestPermissionInvalidUrl( 594 void TestRequestPermissionInvalidUrl(
545 ContentSettingsType content_settings_type) { 595 ContentSettingsType content_settings_type) {
596 base::HistogramTester histograms;
546 TestPermissionContext permission_context(profile(), content_settings_type); 597 TestPermissionContext permission_context(profile(), content_settings_type);
547 GURL url; 598 GURL url;
548 ASSERT_FALSE(url.is_valid()); 599 ASSERT_FALSE(url.is_valid());
549 NavigateAndCommit(url); 600 NavigateAndCommit(url);
550 601
551 const PermissionRequestID id( 602 const PermissionRequestID id(
552 web_contents()->GetRenderProcessHost()->GetID(), 603 web_contents()->GetRenderProcessHost()->GetID(),
553 web_contents()->GetMainFrame()->GetRoutingID(), 604 web_contents()->GetMainFrame()->GetRoutingID(),
554 -1); 605 -1);
555 permission_context.RequestPermission( 606 permission_context.RequestPermission(
556 web_contents(), 607 web_contents(),
557 id, url, true /* user_gesture */, 608 id, url, true /* user_gesture */,
558 base::Bind(&TestPermissionContext::TrackPermissionDecision, 609 base::Bind(&TestPermissionContext::TrackPermissionDecision,
559 base::Unretained(&permission_context))); 610 base::Unretained(&permission_context)));
560 611
561 ASSERT_EQ(1u, permission_context.decisions().size()); 612 ASSERT_EQ(1u, permission_context.decisions().size());
562 EXPECT_EQ(CONTENT_SETTING_BLOCK, permission_context.decisions()[0]); 613 EXPECT_EQ(CONTENT_SETTING_BLOCK, permission_context.decisions()[0]);
563 EXPECT_TRUE(permission_context.tab_context_updated()); 614 EXPECT_TRUE(permission_context.tab_context_updated());
564 EXPECT_EQ(CONTENT_SETTING_ASK, 615 EXPECT_EQ(CONTENT_SETTING_ASK,
565 permission_context.GetContentSettingFromMap(url, url)); 616 permission_context.GetContentSettingFromMap(url, url));
617 histograms.ExpectTotalCount(
618 "Permissions.AutoBlocker.EmbargoPromptSuppression", 0);
566 } 619 }
567 620
568 void TestGrantAndRevoke_TestContent(ContentSettingsType content_settings_type, 621 void TestGrantAndRevoke_TestContent(ContentSettingsType content_settings_type,
569 ContentSetting expected_default) { 622 ContentSetting expected_default) {
570 TestPermissionContext permission_context(profile(), content_settings_type); 623 TestPermissionContext permission_context(profile(), content_settings_type);
571 GURL url("https://www.google.com"); 624 GURL url("https://www.google.com");
572 NavigateAndCommit(url); 625 NavigateAndCommit(url);
573 626
574 const PermissionRequestID id( 627 const PermissionRequestID id(
575 web_contents()->GetRenderProcessHost()->GetID(), 628 web_contents()->GetRenderProcessHost()->GetID(),
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 scoped_feature_list.InitAndEnableFeature(features::kPermissionsBlacklist); 730 scoped_feature_list.InitAndEnableFeature(features::kPermissionsBlacklist);
678 TestPermissionContext permission_context(profile(), content_settings_type); 731 TestPermissionContext permission_context(profile(), content_settings_type);
679 PermissionDecisionAutoBlocker::GetForProfile(profile()) 732 PermissionDecisionAutoBlocker::GetForProfile(profile())
680 ->SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, 733 ->SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager,
681 timeout); 734 timeout);
682 const PermissionRequestID id( 735 const PermissionRequestID id(
683 web_contents()->GetRenderProcessHost()->GetID(), 736 web_contents()->GetRenderProcessHost()->GetID(),
684 web_contents()->GetMainFrame()->GetRoutingID(), -1); 737 web_contents()->GetMainFrame()->GetRoutingID(), -1);
685 738
686 // A response only needs to be made to the permission request if we do not 739 // A response only needs to be made to the permission request if we do not
687 // expect he permission to be blacklisted, therefore set the response 740 // expect the permission to be blacklisted.
688 // callback.
689 if (expected_permission_status == CONTENT_SETTING_ALLOW) { 741 if (expected_permission_status == CONTENT_SETTING_ALLOW) {
690 permission_context.SetRespondPermissionCallback( 742 permission_context.SetRespondPermissionCallback(
691 base::Bind(&PermissionContextBaseTests::RespondToPermission, 743 base::Bind(&PermissionContextBaseTests::RespondToPermission,
692 base::Unretained(this), &permission_context, id, url, 744 base::Unretained(this), &permission_context, id, url,
693 true /* persist */, expected_permission_status)); 745 true /* persist */, expected_permission_status));
694 } 746 }
695 747
696 permission_context.RequestPermission( 748 permission_context.RequestPermission(
697 web_contents(), id, url, true /* user_gesture */, 749 web_contents(), id, url, true /* user_gesture */,
698 base::Bind(&TestPermissionContext::TrackPermissionDecision, 750 base::Bind(&TestPermissionContext::TrackPermissionDecision,
699 base::Unretained(&permission_context))); 751 base::Unretained(&permission_context)));
700 PermissionResult result = permission_context.GetPermissionStatus(url, url); 752 PermissionResult result = permission_context.GetPermissionStatus(url, url);
701 EXPECT_EQ(expected_permission_status, result.content_setting); 753 EXPECT_EQ(expected_permission_status, result.content_setting);
702 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
703 754
704 if (expected_permission_status == CONTENT_SETTING_ALLOW) { 755 if (expected_permission_status == CONTENT_SETTING_ALLOW) {
705 ASSERT_EQ(1u, permission_context.decisions().size()); 756 ASSERT_EQ(1u, permission_context.decisions().size());
706 EXPECT_EQ(expected_permission_status, permission_context.decisions()[0]); 757 EXPECT_EQ(expected_permission_status, permission_context.decisions()[0]);
758 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
759 } else {
760 EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source);
707 } 761 }
762 histograms.ExpectUniqueSample(
763 "Permissions.AutoBlocker.EmbargoPromptSuppression",
764 expected_embargo_reason, 1);
708 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", 765 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus",
709 expected_embargo_reason, 1); 766 expected_embargo_reason, 1);
710 } 767 }
711 768
712 private: 769 private:
713 // ChromeRenderViewHostTestHarness: 770 // ChromeRenderViewHostTestHarness:
714 void SetUp() override { 771 void SetUp() override {
715 ChromeRenderViewHostTestHarness::SetUp(); 772 ChromeRenderViewHostTestHarness::SetUp();
716 #if defined(OS_ANDROID) 773 #if defined(OS_ANDROID)
717 InfoBarService::CreateForWebContents(web_contents()); 774 InfoBarService::CreateForWebContents(web_contents());
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) { 913 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) {
857 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = 914 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager =
858 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); 915 new MockSafeBrowsingDatabaseManager(true /* perform_callback */);
859 const GURL url("https://www.example.com"); 916 const GURL url("https://www.example.com");
860 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; 917 std::set<std::string> blacklisted_permissions{"GEOLOCATION"};
861 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); 918 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions);
862 TestPermissionsBlacklisting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, 919 TestPermissionsBlacklisting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager,
863 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW, 920 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW,
864 PermissionEmbargoStatus::NOT_EMBARGOED); 921 PermissionEmbargoStatus::NOT_EMBARGOED);
865 } 922 }
OLDNEW
« no previous file with comments | « chrome/browser/permissions/permission_context_base.cc ('k') | chrome/browser/permissions/permission_decision_auto_blocker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698