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

Side by Side Diff: chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc

Issue 2124703002: Record metrics for permission prompt acceptance vs. user gesture. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add histograms Created 4 years, 5 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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
11 #include "base/test/histogram_tester.h" 11 #include "base/test/histogram_tester.h"
12 #include "chrome/browser/permissions/permission_uma_util.h" 12 #include "chrome/browser/permissions/permission_uma_util.h"
13 #include "chrome/browser/ui/website_settings/mock_permission_bubble_factory.h" 13 #include "chrome/browser/ui/website_settings/mock_permission_bubble_factory.h"
14 #include "chrome/browser/ui/website_settings/mock_permission_bubble_request.h" 14 #include "chrome/browser/ui/website_settings/mock_permission_bubble_request.h"
15 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h" 15 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
16 #include "chrome/browser/ui/website_settings/permission_bubble_request.h" 16 #include "chrome/browser/ui/website_settings/permission_bubble_request.h"
17 #include "chrome/common/chrome_switches.h" 17 #include "chrome/common/chrome_switches.h"
18 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 18 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
19 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
20 20
21 class PermissionBubbleManagerTest : public ChromeRenderViewHostTestHarness { 21 class PermissionBubbleManagerTest : public ChromeRenderViewHostTestHarness {
22 public: 22 public:
23 PermissionBubbleManagerTest() 23 PermissionBubbleManagerTest()
24 : ChromeRenderViewHostTestHarness(), 24 : ChromeRenderViewHostTestHarness(),
25 request1_("test1", PermissionBubbleType::QUOTA), 25 request1_("test1",
26 request2_("test2", PermissionBubbleType::DOWNLOAD), 26 PermissionBubbleType::QUOTA,
27 PermissionBubbleGestureType::GESTURE),
28 request2_("test2",
29 PermissionBubbleType::DOWNLOAD,
30 PermissionBubbleGestureType::NO_GESTURE),
27 iframe_request_same_domain_("iframe", 31 iframe_request_same_domain_("iframe",
28 GURL("http://www.google.com/some/url")), 32 GURL("http://www.google.com/some/url")),
29 iframe_request_other_domain_("iframe", 33 iframe_request_other_domain_("iframe", GURL("http://www.youtube.com")) {
30 GURL("http://www.youtube.com")) {} 34 }
31 ~PermissionBubbleManagerTest() override {} 35 ~PermissionBubbleManagerTest() override {}
32 36
33 void SetUp() override { 37 void SetUp() override {
34 ChromeRenderViewHostTestHarness::SetUp(); 38 ChromeRenderViewHostTestHarness::SetUp();
35 SetContents(CreateTestWebContents()); 39 SetContents(CreateTestWebContents());
36 NavigateAndCommit(GURL("http://www.google.com")); 40 NavigateAndCommit(GURL("http://www.google.com"));
37 41
38 manager_.reset(new PermissionBubbleManager(web_contents())); 42 manager_.reset(new PermissionBubbleManager(web_contents()));
39 view_factory_.reset(new MockPermissionBubbleFactory(false, manager_.get())); 43 view_factory_.reset(new MockPermissionBubbleFactory(false, manager_.get()));
40 } 44 }
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 WaitForFrameLoad(); 451 WaitForFrameLoad();
448 WaitForCoalescing(); 452 WaitForCoalescing();
449 manager_->AddRequest(&request1_); 453 manager_->AddRequest(&request1_);
450 manager_->AddRequest(&iframe_request_other_domain_); 454 manager_->AddRequest(&iframe_request_other_domain_);
451 manager_->AddRequest(&request2_); 455 manager_->AddRequest(&request2_);
452 base::RunLoop().RunUntilIdle(); 456 base::RunLoop().RunUntilIdle();
453 457
454 EXPECT_TRUE(view_factory_->is_visible()); 458 EXPECT_TRUE(view_factory_->is_visible());
455 } 459 }
456 460
457 TEST_F(PermissionBubbleManagerTest, UMAForSimpleAcceptedBubble) { 461 TEST_F(PermissionBubbleManagerTest, UMAForSimpleAcceptedGestureBubble) {
458 base::HistogramTester histograms; 462 base::HistogramTester histograms;
459 463
460 manager_->AddRequest(&request1_); 464 manager_->AddRequest(&request1_);
461 manager_->DisplayPendingRequests(); 465 manager_->DisplayPendingRequests();
462 WaitForCoalescing(); 466 WaitForCoalescing();
463 histograms.ExpectUniqueSample( 467 histograms.ExpectUniqueSample(
464 PermissionUmaUtil::kPermissionsPromptShown, 468 PermissionUmaUtil::kPermissionsPromptShown,
465 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 469 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
466 1); 470 1);
467 histograms.ExpectUniqueSample( 471 histograms.ExpectUniqueSample(
472 PermissionUmaUtil::kPermissionsPromptGestureShown,
473 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
474 1);
475 histograms.ExpectTotalCount(
476 PermissionUmaUtil::kPermissionsPromptNoGestureShown, 0);
477 histograms.ExpectUniqueSample(
468 PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt, 1, 1); 478 PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt, 1, 1);
469 479
470 ToggleAccept(0, true); 480 ToggleAccept(0, true);
471 Accept(); 481 Accept();
472 histograms.ExpectUniqueSample( 482 histograms.ExpectUniqueSample(
473 PermissionUmaUtil::kPermissionsPromptAccepted, 483 PermissionUmaUtil::kPermissionsPromptAccepted,
474 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 1); 484 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 1);
485 histograms.ExpectTotalCount(
486 PermissionUmaUtil::kPermissionsPromptDenied, 0);
487
488 histograms.ExpectUniqueSample(
489 PermissionUmaUtil::kPermissionsPromptGestureAccepted,
490 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 1);
491 histograms.ExpectTotalCount(
492 PermissionUmaUtil::kPermissionsPromptNoGestureAccepted, 0);
475 } 493 }
476 494
477 TEST_F(PermissionBubbleManagerTest, UMAForSimpleDeniedBubble) { 495 TEST_F(PermissionBubbleManagerTest, UMAForSimpleDeniedNoGestureBubble) {
478 base::HistogramTester histograms; 496 base::HistogramTester histograms;
479 497
480 manager_->AddRequest(&request1_); 498 manager_->AddRequest(&request2_);
481 manager_->DisplayPendingRequests(); 499 manager_->DisplayPendingRequests();
482 WaitForCoalescing(); 500 WaitForCoalescing();
483 // No need to test UMA for showing prompts again, they were tested in 501
484 // UMAForSimpleAcceptedBubble. 502 histograms.ExpectTotalCount(
503 PermissionUmaUtil::kPermissionsPromptGestureShown, 0);
504 histograms.ExpectUniqueSample(
505 PermissionUmaUtil::kPermissionsPromptNoGestureShown,
506 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
507 1);
508 // No need to test the other UMA for showing prompts again, they were tested
509 // in UMAForSimpleAcceptedBubble.
485 510
486 Deny(); 511 Deny();
512 histograms.ExpectTotalCount(
513 PermissionUmaUtil::kPermissionsPromptAccepted, 0);
487 histograms.ExpectUniqueSample( 514 histograms.ExpectUniqueSample(
488 PermissionUmaUtil::kPermissionsPromptDenied, 515 PermissionUmaUtil::kPermissionsPromptDenied,
489 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 1); 516 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
517 1);
518
519 histograms.ExpectUniqueSample(
520 PermissionUmaUtil::kPermissionsPromptNoGestureDenied,
521 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
522 1);
523 histograms.ExpectTotalCount(
524 PermissionUmaUtil::kPermissionsPromptGestureDenied, 0);
490 } 525 }
491 526
492 // This code path (calling Accept on a non-merged bubble, with no accepted 527 // This code path (calling Accept on a non-merged bubble, with no accepted
493 // permission) would never be used in actual Chrome, but its still tested for 528 // permission) would never be used in actual Chrome, but its still tested for
494 // completeness. 529 // completeness.
495 TEST_F(PermissionBubbleManagerTest, UMAForSimpleDeniedBubbleAlternatePath) { 530 TEST_F(PermissionBubbleManagerTest, UMAForSimpleDeniedBubbleAlternatePath) {
496 base::HistogramTester histograms; 531 base::HistogramTester histograms;
497 532
498 manager_->AddRequest(&request1_); 533 manager_->AddRequest(&request1_);
499 manager_->DisplayPendingRequests(); 534 manager_->DisplayPendingRequests();
(...skipping 23 matching lines...) Expand all
523 histograms.ExpectBucketCount( 558 histograms.ExpectBucketCount(
524 PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes, 559 PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes,
525 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 560 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
526 1); 561 1);
527 histograms.ExpectBucketCount( 562 histograms.ExpectBucketCount(
528 PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes, 563 PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes,
529 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD), 564 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
530 1); 565 1);
531 histograms.ExpectUniqueSample( 566 histograms.ExpectUniqueSample(
532 PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt, 2, 1); 567 PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt, 2, 1);
568 histograms.ExpectTotalCount(
569 PermissionUmaUtil::kPermissionsPromptGestureShown, 0);
570 histograms.ExpectTotalCount(
571 PermissionUmaUtil::kPermissionsPromptNoGestureShown, 0);
533 572
534 ToggleAccept(0, true); 573 ToggleAccept(0, true);
535 ToggleAccept(1, true); 574 ToggleAccept(1, true);
536 Accept(); 575 Accept();
537 576
538 histograms.ExpectUniqueSample( 577 histograms.ExpectUniqueSample(
539 PermissionUmaUtil::kPermissionsPromptAccepted, 578 PermissionUmaUtil::kPermissionsPromptAccepted,
540 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::MULTIPLE), 579 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::MULTIPLE),
541 1); 580 1);
542 histograms.ExpectBucketCount( 581 histograms.ExpectBucketCount(
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
597 1); 636 1);
598 histograms.ExpectBucketCount( 637 histograms.ExpectBucketCount(
599 PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied, 638 PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
600 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 639 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
601 1); 640 1);
602 histograms.ExpectBucketCount( 641 histograms.ExpectBucketCount(
603 PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied, 642 PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
604 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD), 643 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
605 1); 644 1);
606 } 645 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698