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

Side by Side Diff: chrome/browser/permissions/permission_request_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: wups 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/mock_permission_request.h" 12 #include "chrome/browser/permissions/mock_permission_request.h"
13 #include "chrome/browser/permissions/permission_request.h" 13 #include "chrome/browser/permissions/permission_request.h"
14 #include "chrome/browser/permissions/permission_request_manager.h" 14 #include "chrome/browser/permissions/permission_request_manager.h"
15 #include "chrome/browser/permissions/permission_uma_util.h" 15 #include "chrome/browser/permissions/permission_uma_util.h"
16 #include "chrome/browser/ui/website_settings/mock_permission_bubble_factory.h" 16 #include "chrome/browser/ui/website_settings/mock_permission_bubble_factory.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 PermissionRequestManagerTest : public ChromeRenderViewHostTestHarness { 21 class PermissionRequestManagerTest : public ChromeRenderViewHostTestHarness {
22 public: 22 public:
23 PermissionRequestManagerTest() 23 PermissionRequestManagerTest()
24 : ChromeRenderViewHostTestHarness(), 24 : ChromeRenderViewHostTestHarness(),
25 request1_("test1", PermissionRequestType::QUOTA), 25 request1_("test1",
26 request2_("test2", PermissionRequestType::DOWNLOAD), 26 PermissionRequestType::QUOTA,
27 PermissionRequestGestureType::GESTURE),
28 request2_("test2",
29 PermissionRequestType::DOWNLOAD,
30 PermissionRequestGestureType::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 ~PermissionRequestManagerTest() override {} 35 ~PermissionRequestManagerTest() 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 PermissionRequestManager(web_contents())); 42 manager_.reset(new PermissionRequestManager(web_contents()));
39 view_factory_.reset(new MockPermissionBubbleFactory(manager_.get())); 43 view_factory_.reset(new MockPermissionBubbleFactory(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(PermissionRequestManagerTest, UMAForSimpleAcceptedBubble) { 461 TEST_F(PermissionRequestManagerTest, 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>(PermissionRequestType::QUOTA), 469 static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA),
466 1); 470 1);
467 histograms.ExpectUniqueSample( 471 histograms.ExpectUniqueSample(
472 PermissionUmaUtil::kPermissionsPromptShownGesture,
473 static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA),
474 1);
475 histograms.ExpectTotalCount(
476 PermissionUmaUtil::kPermissionsPromptShownNoGesture, 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>(PermissionRequestType::QUOTA), 484 static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA),
475 1); 485 1);
486 histograms.ExpectTotalCount(
487 PermissionUmaUtil::kPermissionsPromptDenied, 0);
488
489 histograms.ExpectUniqueSample(
490 PermissionUmaUtil::kPermissionsPromptAcceptedGesture,
491 static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA),
492 1);
493 histograms.ExpectTotalCount(
494 PermissionUmaUtil::kPermissionsPromptAcceptedNoGesture, 0);
476 } 495 }
477 496
478 TEST_F(PermissionRequestManagerTest, UMAForSimpleDeniedBubble) { 497 TEST_F(PermissionRequestManagerTest, UMAForSimpleDeniedNoGestureBubble) {
479 base::HistogramTester histograms; 498 base::HistogramTester histograms;
480 499
481 manager_->AddRequest(&request1_); 500 manager_->AddRequest(&request2_);
482 manager_->DisplayPendingRequests(); 501 manager_->DisplayPendingRequests();
483 WaitForCoalescing(); 502 WaitForCoalescing();
484 // No need to test UMA for showing prompts again, they were tested in 503
485 // UMAForSimpleAcceptedBubble. 504 histograms.ExpectTotalCount(
505 PermissionUmaUtil::kPermissionsPromptShownGesture, 0);
506 histograms.ExpectUniqueSample(
507 PermissionUmaUtil::kPermissionsPromptShownNoGesture,
508 static_cast<base::HistogramBase::Sample>(PermissionRequestType::DOWNLOAD),
509 1);
510 // No need to test the other UMA for showing prompts again, they were tested
511 // in UMAForSimpleAcceptedBubble.
486 512
487 Deny(); 513 Deny();
514 histograms.ExpectTotalCount(
515 PermissionUmaUtil::kPermissionsPromptAccepted, 0);
488 histograms.ExpectUniqueSample( 516 histograms.ExpectUniqueSample(
489 PermissionUmaUtil::kPermissionsPromptDenied, 517 PermissionUmaUtil::kPermissionsPromptDenied,
490 static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA), 518 static_cast<base::HistogramBase::Sample>(PermissionRequestType::DOWNLOAD),
491 1); 519 1);
520
521 histograms.ExpectUniqueSample(
522 PermissionUmaUtil::kPermissionsPromptDeniedNoGesture,
523 static_cast<base::HistogramBase::Sample>(PermissionRequestType::DOWNLOAD),
524 1);
525 histograms.ExpectTotalCount(
526 PermissionUmaUtil::kPermissionsPromptDeniedGesture, 0);
492 } 527 }
493 528
494 // This code path (calling Accept on a non-merged bubble, with no accepted 529 // This code path (calling Accept on a non-merged bubble, with no accepted
495 // permission) would never be used in actual Chrome, but its still tested for 530 // permission) would never be used in actual Chrome, but its still tested for
496 // completeness. 531 // completeness.
497 TEST_F(PermissionRequestManagerTest, UMAForSimpleDeniedBubbleAlternatePath) { 532 TEST_F(PermissionRequestManagerTest, UMAForSimpleDeniedBubbleAlternatePath) {
498 base::HistogramTester histograms; 533 base::HistogramTester histograms;
499 534
500 manager_->AddRequest(&request1_); 535 manager_->AddRequest(&request1_);
501 manager_->DisplayPendingRequests(); 536 manager_->DisplayPendingRequests();
(...skipping 24 matching lines...) Expand all
526 histograms.ExpectBucketCount( 561 histograms.ExpectBucketCount(
527 PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes, 562 PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes,
528 static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA), 563 static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA),
529 1); 564 1);
530 histograms.ExpectBucketCount( 565 histograms.ExpectBucketCount(
531 PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes, 566 PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes,
532 static_cast<base::HistogramBase::Sample>(PermissionRequestType::DOWNLOAD), 567 static_cast<base::HistogramBase::Sample>(PermissionRequestType::DOWNLOAD),
533 1); 568 1);
534 histograms.ExpectUniqueSample( 569 histograms.ExpectUniqueSample(
535 PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt, 2, 1); 570 PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt, 2, 1);
571 histograms.ExpectTotalCount(
572 PermissionUmaUtil::kPermissionsPromptShownGesture, 0);
573 histograms.ExpectTotalCount(
574 PermissionUmaUtil::kPermissionsPromptShownNoGesture, 0);
536 575
537 ToggleAccept(0, true); 576 ToggleAccept(0, true);
538 ToggleAccept(1, true); 577 ToggleAccept(1, true);
539 Accept(); 578 Accept();
540 579
541 histograms.ExpectUniqueSample( 580 histograms.ExpectUniqueSample(
542 PermissionUmaUtil::kPermissionsPromptAccepted, 581 PermissionUmaUtil::kPermissionsPromptAccepted,
543 static_cast<base::HistogramBase::Sample>(PermissionRequestType::MULTIPLE), 582 static_cast<base::HistogramBase::Sample>(PermissionRequestType::MULTIPLE),
544 1); 583 1);
545 histograms.ExpectBucketCount( 584 histograms.ExpectBucketCount(
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 1); 639 1);
601 histograms.ExpectBucketCount( 640 histograms.ExpectBucketCount(
602 PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied, 641 PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
603 static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA), 642 static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA),
604 1); 643 1);
605 histograms.ExpectBucketCount( 644 histograms.ExpectBucketCount(
606 PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied, 645 PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
607 static_cast<base::HistogramBase::Sample>(PermissionRequestType::DOWNLOAD), 646 static_cast<base::HistogramBase::Sample>(PermissionRequestType::DOWNLOAD),
608 1); 647 1);
609 } 648 }
OLDNEW
« no previous file with comments | « chrome/browser/permissions/permission_request_impl.cc ('k') | chrome/browser/permissions/permission_uma_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698