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

Unified Diff: chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc

Issue 2017873002: Add metrics for permission prompt acceptance / denial (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2743
Patch Set: Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc
diff --git a/chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc b/chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc
index ae72ce6b551b84db1af3574e286e7ce27e6f2b35..9629d0ae073b20fc7a95d20a0f95de8e7efd8840 100644
--- a/chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc
+++ b/chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc
@@ -8,6 +8,8 @@
#include "base/command_line.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/utf_string_conversions.h"
+#include "base/test/histogram_tester.h"
+#include "chrome/browser/permissions/permission_uma_util.h"
#include "chrome/browser/ui/website_settings/mock_permission_bubble_factory.h"
#include "chrome/browser/ui/website_settings/mock_permission_bubble_request.h"
#include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
@@ -20,8 +22,8 @@ class PermissionBubbleManagerTest : public ChromeRenderViewHostTestHarness {
public:
PermissionBubbleManagerTest()
: ChromeRenderViewHostTestHarness(),
- request1_("test1"),
- request2_("test2"),
+ request1_("test1", PermissionBubbleType::QUOTA),
+ request2_("test2", PermissionBubbleType::DOWNLOAD),
iframe_request_same_domain_("iframe",
GURL("http://www.google.com/some/url")),
iframe_request_other_domain_("iframe",
@@ -51,6 +53,10 @@ class PermissionBubbleManagerTest : public ChromeRenderViewHostTestHarness {
manager_->Accept();
}
+ void Deny() {
+ manager_->Deny();
+ }
+
void Closing() {
manager_->Closing();
}
@@ -447,3 +453,154 @@ TEST_F(PermissionBubbleManagerTest, RequestsDontNeedUserGesture) {
EXPECT_TRUE(view_factory_->is_visible());
}
+
+TEST_F(PermissionBubbleManagerTest, UMAForSimpleAcceptedBubble) {
+ base::HistogramTester histograms;
+
+ manager_->AddRequest(&request1_);
+ manager_->DisplayPendingRequests();
+ WaitForCoalescing();
+ histograms.ExpectUniqueSample(
+ PermissionUmaUtil::kPermissionsPromptShown,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
+ 1);
+ histograms.ExpectUniqueSample(
+ PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt, 1, 1);
+
+ ToggleAccept(0, true);
+ Accept();
+ histograms.ExpectUniqueSample(
+ PermissionUmaUtil::kPermissionsPromptAccepted,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 1);
+}
+
+TEST_F(PermissionBubbleManagerTest, UMAForSimpleDeniedBubble) {
+ base::HistogramTester histograms;
+
+ manager_->AddRequest(&request1_);
+ manager_->DisplayPendingRequests();
+ WaitForCoalescing();
+ // No need to test UMA for showing prompts again, they were tested in
+ // UMAForSimpleAcceptedBubble.
+
+ Deny();
+ histograms.ExpectUniqueSample(
+ PermissionUmaUtil::kPermissionsPromptDenied,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 1);
+}
+
+// This code path (calling Accept on a non-merged bubble, with no accepted
+// permission) would never be used in actual Chrome, but its still tested for
+// completeness.
+TEST_F(PermissionBubbleManagerTest, UMAForSimpleDeniedBubbleAlternatePath) {
+ base::HistogramTester histograms;
+
+ manager_->AddRequest(&request1_);
+ manager_->DisplayPendingRequests();
+ WaitForCoalescing();
+ // No need to test UMA for showing prompts again, they were tested in
+ // UMAForSimpleAcceptedBubble.
+
+ ToggleAccept(0, false);
+ Accept();
+ histograms.ExpectUniqueSample(
+ PermissionUmaUtil::kPermissionsPromptDenied,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 1);
+}
+
+TEST_F(PermissionBubbleManagerTest, UMAForMergedAcceptedBubble) {
+ base::HistogramTester histograms;
+
+ manager_->AddRequest(&request1_);
+ manager_->AddRequest(&request2_);
+ manager_->DisplayPendingRequests();
+ WaitForCoalescing();
+
+ histograms.ExpectUniqueSample(
+ PermissionUmaUtil::kPermissionsPromptShown,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::MULTIPLE),
+ 1);
+ histograms.ExpectBucketCount(
+ PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
+ 1);
+ histograms.ExpectBucketCount(
+ PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
+ 1);
+ histograms.ExpectUniqueSample(
+ PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt, 2, 1);
+
+ ToggleAccept(0, true);
+ ToggleAccept(1, true);
+ Accept();
+
+ histograms.ExpectUniqueSample(
+ PermissionUmaUtil::kPermissionsPromptAccepted,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::MULTIPLE),
+ 1);
+ histograms.ExpectBucketCount(
+ PermissionUmaUtil::kPermissionsPromptMergedBubbleAccepted,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
+ 1);
+ histograms.ExpectBucketCount(
+ PermissionUmaUtil::kPermissionsPromptMergedBubbleAccepted,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
+ 1);
+}
+
+TEST_F(PermissionBubbleManagerTest, UMAForMergedMixedBubble) {
+ base::HistogramTester histograms;
+
+ manager_->AddRequest(&request1_);
+ manager_->AddRequest(&request2_);
+ manager_->DisplayPendingRequests();
+ WaitForCoalescing();
+ // No need to test UMA for showing prompts again, they were tested in
+ // UMAForMergedAcceptedBubble.
+
+ ToggleAccept(0, true);
+ ToggleAccept(1, false);
+ Accept();
+
+ histograms.ExpectUniqueSample(
+ PermissionUmaUtil::kPermissionsPromptDenied,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::MULTIPLE),
+ 1);
+ histograms.ExpectBucketCount(
+ PermissionUmaUtil::kPermissionsPromptMergedBubbleAccepted,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
+ 1);
+ histograms.ExpectBucketCount(
+ PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
+ 1);
+}
+
+TEST_F(PermissionBubbleManagerTest, UMAForMergedDeniedBubble) {
+ base::HistogramTester histograms;
+
+ manager_->AddRequest(&request1_);
+ manager_->AddRequest(&request2_);
+ manager_->DisplayPendingRequests();
+ WaitForCoalescing();
+ // No need to test UMA for showing prompts again, they were tested in
+ // UMAForMergedAcceptedBubble.
+
+ ToggleAccept(0, false);
+ ToggleAccept(1, false);
+ Accept();
+
+ histograms.ExpectUniqueSample(
+ PermissionUmaUtil::kPermissionsPromptDenied,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::MULTIPLE),
+ 1);
+ histograms.ExpectBucketCount(
+ PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
+ 1);
+ histograms.ExpectBucketCount(
+ PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
+ 1);
+}

Powered by Google App Engine
This is Rietveld 408576698