summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormelandory <melandory@chromium.org>2015-01-07 09:01:59 -0800
committerCommit bot <commit-bot@chromium.org>2015-01-07 17:03:22 +0000
commitf25c0cac19485073965e907f151dc9bc0b85996a (patch)
treeef2a22878ee54e8de2f22fe985c8d153d7db6b05
parent2371d8ac0680aa6fa7ccb36e2ad1fcfb979f1f84 (diff)
downloadchromium_src-f25c0cac19485073965e907f151dc9bc0b85996a.zip
chromium_src-f25c0cac19485073965e907f151dc9bc0b85996a.tar.gz
chromium_src-f25c0cac19485073965e907f151dc9bc0b85996a.tar.bz2
Collects data about interaction with "Allow to collect URL?" bubble.
Add histogram which collects data on how user interacted with "Allow to collect URL?". BUG=435080 R=vabr@chromium.org,jar@chromium.org Review URL: https://codereview.chromium.org/816353003 Cr-Commit-Position: refs/heads/master@{#310307}
-rw-r--r--chrome/browser/ui/passwords/manage_passwords_bubble_model.cc6
-rw-r--r--chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc26
-rw-r--r--components/password_manager/core/browser/password_manager_metrics_util.cc11
-rw-r--r--components/password_manager/core/browser/password_manager_metrics_util.h11
-rw-r--r--tools/metrics/histograms/histograms.xml14
5 files changed, 56 insertions, 12 deletions
diff --git a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
index 0a4cf08..a73851c 100644
--- a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
@@ -205,7 +205,13 @@ void ManagePasswordsBubbleModel::OnBubbleHidden() {
if (password_manager::ui::IsAskSubmitURLState(state_)) {
state_ = password_manager::ui::ASK_USER_REPORT_URL_BUBBLE_SHOWN_STATE;
+ metrics_util::LogAllowToCollectURLBubbleUIDismissalReason(
+ dismissal_reason_);
+ // Return since we do not want to include "Allow to collect URL?" bubble
+ // data in other PasswordManager metrics.
+ return;
}
+
metrics_util::LogUIDismissalReason(dismissal_reason_);
// Other use cases have been reported in the callbacks like OnSaveClicked().
if (dismissal_reason_ == metrics_util::NO_DIRECT_INTERACTION)
diff --git a/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
index ee8a2ca..debc516 100644
--- a/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
@@ -19,6 +19,8 @@
#include "testing/gtest/include/gtest/gtest.h"
const char kUIDismissalReasonMetric[] = "PasswordManager.UIDismissalReason";
+const char kAllowToCollectURLBubbleUIDismissalReasonMetric[] =
+ "PasswordManager.AllowToCollectURLBubble.UIDismissalReason";
class ManagePasswordsBubbleModelTest : public testing::Test {
public:
@@ -298,8 +300,8 @@ TEST_F(ManagePasswordsBubbleModelTest, ClickCollectURL) {
model_->state());
histogram_tester.ExpectUniqueSample(
- kUIDismissalReasonMetric,
- password_manager::metrics_util::CLICKED_COLLECT_URL, 1);
+ kAllowToCollectURLBubbleUIDismissalReasonMetric,
+ password_manager::metrics_util::COLLECT_URL, 1);
}
TEST_F(ManagePasswordsBubbleModelTest, ClickDoNotCollectURL) {
@@ -313,8 +315,8 @@ TEST_F(ManagePasswordsBubbleModelTest, ClickDoNotCollectURL) {
model_->state());
histogram_tester.ExpectUniqueSample(
- kUIDismissalReasonMetric,
- password_manager::metrics_util::CLICKED_DO_NOT_COLLECT_URL, 1);
+ kAllowToCollectURLBubbleUIDismissalReasonMetric,
+ password_manager::metrics_util::DO_NOT_COLLECT_URL, 1);
}
TEST_F(ManagePasswordsBubbleModelTest,
@@ -327,8 +329,8 @@ TEST_F(ManagePasswordsBubbleModelTest,
EXPECT_EQ(password_manager::ui::ASK_USER_REPORT_URL_BUBBLE_SHOWN_STATE,
model_->state());
histogram_tester.ExpectUniqueSample(
- kUIDismissalReasonMetric,
- password_manager::metrics_util::NO_DIRECT_INTERACTION, 1);
+ kAllowToCollectURLBubbleUIDismissalReasonMetric,
+ password_manager::metrics_util::NO_INTERACTION, 1);
}
TEST_F(ManagePasswordsBubbleModelTest, ClickCollectURLBeforeNavigation) {
@@ -344,8 +346,8 @@ TEST_F(ManagePasswordsBubbleModelTest, ClickCollectURLBeforeNavigation) {
model_->state());
histogram_tester.ExpectUniqueSample(
- kUIDismissalReasonMetric,
- password_manager::metrics_util::CLICKED_COLLECT_URL, 1);
+ kAllowToCollectURLBubbleUIDismissalReasonMetric,
+ password_manager::metrics_util::COLLECT_URL, 1);
}
TEST_F(ManagePasswordsBubbleModelTest, ClickDoNotCollectURLBeforeNavigation) {
@@ -361,8 +363,8 @@ TEST_F(ManagePasswordsBubbleModelTest, ClickDoNotCollectURLBeforeNavigation) {
model_->state());
histogram_tester.ExpectUniqueSample(
- kUIDismissalReasonMetric,
- password_manager::metrics_util::CLICKED_DO_NOT_COLLECT_URL, 1);
+ kAllowToCollectURLBubbleUIDismissalReasonMetric,
+ password_manager::metrics_util::DO_NOT_COLLECT_URL, 1);
}
TEST_F(ManagePasswordsBubbleModelTest,
@@ -377,8 +379,8 @@ TEST_F(ManagePasswordsBubbleModelTest,
EXPECT_EQ(password_manager::ui::ASK_USER_REPORT_URL_BUBBLE_SHOWN_STATE,
model_->state());
histogram_tester.ExpectUniqueSample(
- kUIDismissalReasonMetric,
- password_manager::metrics_util::NO_DIRECT_INTERACTION, 1);
+ kAllowToCollectURLBubbleUIDismissalReasonMetric,
+ password_manager::metrics_util::NO_INTERACTION, 1);
}
TEST_F(ManagePasswordsBubbleModelTest, DismissCredential) {
diff --git a/components/password_manager/core/browser/password_manager_metrics_util.cc b/components/password_manager/core/browser/password_manager_metrics_util.cc
index bc2b317..5794d51 100644
--- a/components/password_manager/core/browser/password_manager_metrics_util.cc
+++ b/components/password_manager/core/browser/password_manager_metrics_util.cc
@@ -85,6 +85,17 @@ size_t MonitoredDomainGroupId(const std::string& url_host,
return 0;
}
+void LogAllowToCollectURLBubbleUIDismissalReason(UIDismissalReason reason) {
+ AllowToCollectURLBubbleUIDismissalReason dismissal_reason = NO_INTERACTION;
+ if (reason == CLICKED_COLLECT_URL)
+ dismissal_reason = COLLECT_URL;
+ else if (reason == CLICKED_DO_NOT_COLLECT_URL)
+ dismissal_reason = DO_NOT_COLLECT_URL;
+ UMA_HISTOGRAM_ENUMERATION(
+ "PasswordManager.AllowToCollectURLBubble.UIDismissalReason",
+ dismissal_reason, NUM_ALLOW_TO_COLLECT_BUBBLE_DISMISSAL_REASON);
+}
+
void LogUMAHistogramEnumeration(const std::string& name,
int sample,
int boundary_value) {
diff --git a/components/password_manager/core/browser/password_manager_metrics_util.h b/components/password_manager/core/browser/password_manager_metrics_util.h
index 7eefde2..d4ea6c3 100644
--- a/components/password_manager/core/browser/password_manager_metrics_util.h
+++ b/components/password_manager/core/browser/password_manager_metrics_util.h
@@ -56,6 +56,14 @@ enum UIDismissalReason {
NOT_DISPLAYED
};
+// Metrics: "PasswordManager.AllowToCollectURLBubble.UIDismissalReason"
+enum AllowToCollectURLBubbleUIDismissalReason {
+ NO_INTERACTION = 0,
+ COLLECT_URL,
+ DO_NOT_COLLECT_URL,
+ NUM_ALLOW_TO_COLLECT_BUBBLE_DISMISSAL_REASON,
+};
+
// We monitor the performance of the save password heuristic for a handful of
// domains. For privacy reasons we are not reporting UMA signals by domain, but
// by a domain group. A domain group can contain multiple domains, and a domain
@@ -72,6 +80,9 @@ const size_t kGroupsPerDomain = 10u;
size_t MonitoredDomainGroupId(const std::string& url_host,
PrefService* pref_service);
+// Log the |reason| a user dismissed the "Allow to collect URL?" bubble.
+void LogAllowToCollectURLBubbleUIDismissalReason(UIDismissalReason reason);
+
// A version of the UMA_HISTOGRAM_ENUMERATION macro that allows the |name|
// to vary over the program's runtime.
void LogUMAHistogramEnumeration(const std::string& name,
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index c083678..d26292e 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -23006,6 +23006,13 @@ Therefore, the affected-histogram name has to have at least one dot in it.
</summary>
</histogram>
+<histogram name="PasswordManager.AllowToCollectURLBubble.UIDismissalReason"
+ enum="PasswordManagerAllowToCollectURLBubble.UIDismissalReason">
+ <owner>melandory@chromium.org</owner>
+ <owner>vasilii@chromium.org</owner>
+ <summary>Why was &quot;Allow to collect URL?&quot; bubble closed?</summary>
+</histogram>
+
<histogram name="PasswordManager.BlacklistedSites">
<owner>gcasto@chromium.org</owner>
<owner>vabr@chromium.org</owner>
@@ -53060,6 +53067,13 @@ To add a new entry, add it with any value and run test to compute valid value.
/ form submit succeeded"/>
</enum>
+<enum name="PasswordManagerAllowToCollectURLBubble.UIDismissalReason"
+ type="int">
+ <int value="0" label="Bubble lost focus / No infobar interaction"/>
+ <int value="1" label="Clicked collect URL"/>
+ <int value="2" label="Clicked do not collect URL"/>
+</enum>
+
<enum name="PasswordManagerOsPasswordStatus" type="int">
<int value="0" label="Unknown"/>
<int value="1" label="Unsupported platform"/>