Commit 5193a5a9 authored by Elaine Chien's avatar Elaine Chien Committed by Chromium LUCI CQ

ChromeLabs: Adding Uma histograms to track labs usage

Bug: 1145666
Change-Id: I7ba3301d7c5216d358953bb3223dee9992f139c1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2580340
Commit-Queue: Elaine Chien <elainechien@chromium.org>
Reviewed-by: default avatarRobert Kaplow <rkaplow@chromium.org>
Reviewed-by: default avatarThomas Lukaszewicz <tluk@chromium.org>
Reviewed-by: default avatarDana Fried <dfried@chromium.org>
Cr-Commit-Position: refs/heads/master@{#835900}
parent 37b8843a
...@@ -4,8 +4,10 @@ ...@@ -4,8 +4,10 @@
#include "chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.h" #include "chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/metrics/histogram_functions.h"
#include "chrome/browser/about_flags.h" #include "chrome/browser/about_flags.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/flag_descriptions.h"
#include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/lifetime/application_lifetime.h"
#include "chrome/browser/ui/webui/flags/flags_ui.h" #include "chrome/browser/ui/webui/flags/flags_ui.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
...@@ -19,6 +21,49 @@ ...@@ -19,6 +21,49 @@
namespace { namespace {
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
enum class ChromeLabsSelectedLab {
kUnspecifiedSelected = 0,
kReadLaterSelected = 1,
kTabSearchSelected = 2,
kMaxValue = kTabSearchSelected,
};
void EmitToHistogram(const base::string16& selected_lab_state,
const std::string& internal_name) {
const auto get_histogram_name = [](const base::string16& selected_lab_state) {
if (selected_lab_state == base::ASCIIToUTF16(base::StringPiece(
flags_ui::kGenericExperimentChoiceDefault))) {
return "Toolbar.ChromeLabs.DefaultLabAction";
} else if (selected_lab_state ==
base::ASCIIToUTF16(base::StringPiece(
flags_ui::kGenericExperimentChoiceEnabled))) {
return "Toolbar.ChromeLabs.EnableLabAction";
} else if (selected_lab_state ==
base::ASCIIToUTF16(base::StringPiece(
flags_ui::kGenericExperimentChoiceDisabled))) {
return "Toolbar.ChromeLabs.DisableLabAction";
} else {
return "";
}
};
const auto get_enum = [](const std::string& internal_name) {
if (internal_name == flag_descriptions::kReadLaterFlagId) {
return ChromeLabsSelectedLab::kReadLaterSelected;
} else if (internal_name == flag_descriptions::kEnableTabSearchFlagId) {
return ChromeLabsSelectedLab::kTabSearchSelected;
} else {
return ChromeLabsSelectedLab::kUnspecifiedSelected;
}
};
const std::string histogram_name = get_histogram_name(selected_lab_state);
if (!histogram_name.empty())
base::UmaHistogramEnumeration(histogram_name, get_enum(internal_name));
}
ChromeLabsBubbleView* g_chrome_labs_bubble = nullptr; ChromeLabsBubbleView* g_chrome_labs_bubble = nullptr;
class ChromeLabsFooter : public views::View { class ChromeLabsFooter : public views::View {
...@@ -130,6 +175,9 @@ std::unique_ptr<ChromeLabsItemView> ChromeLabsBubbleView::CreateLabItem( ...@@ -130,6 +175,9 @@ std::unique_ptr<ChromeLabsItemView> ChromeLabsBubbleView::CreateLabItem(
bubble_view->flags_storage_.get(), bubble_view->flags_storage_.get(),
internal_name + "@" + base::NumberToString(selected_index), true); internal_name + "@" + base::NumberToString(selected_index), true);
bubble_view->ShowRelaunchPrompt(); bubble_view->ShowRelaunchPrompt();
EmitToHistogram(
item_view->GetFeatureEntry()->DescriptionForOption(selected_index),
internal_name);
}; };
std::unique_ptr<ChromeLabsItemView> item_view = std::unique_ptr<ChromeLabsItemView> item_view =
......
...@@ -9806,6 +9806,12 @@ histogram as enum --> ...@@ -9806,6 +9806,12 @@ histogram as enum -->
<int value="2" label="Startup"/> <int value="2" label="Startup"/>
</enum> </enum>
<enum name="ChromeLabsSelectedLab">
<int value="0" label="User selected an unspecified lab"/>
<int value="1" label="User selected the Read Later lab"/>
<int value="2" label="User selected the Tab Search lab"/>
</enum>
<enum name="ChromeMLServiceDecisionTreePredictionResult"> <enum name="ChromeMLServiceDecisionTreePredictionResult">
<int value="0" label="Unknown"/> <int value="0" label="Unknown"/>
<int value="1" label="True"/> <int value="1" label="True"/>
...@@ -16004,6 +16004,25 @@ should be kept until we use this API. --> ...@@ -16004,6 +16004,25 @@ should be kept until we use this API. -->
<summary>Number of retries until the final response was recorded.</summary> <summary>Number of retries until the final response was recorded.</summary>
</histogram> </histogram>
<histogram name="Toolbar.ChromeLabs.{State}LabAction"
enum="ChromeLabsSelectedLab" expires_after="M96">
<owner>elainechien@chromium.org</owner>
<owner>robliao@chromium.org</owner>
<summary>
Chrome Labs features user-facing experiments through a button in the
toolbar.
This metric tracks which experiment (also called lab in the context of
Chrome Labs) a user selects {State} for. This histogram is emitted to when
{State} is selected in the combobox of the ChromeLabs dialog.
</summary>
<token key="State">
<variant name="Default" summary="Default state selected for lab"/>
<variant name="Disable" summary="Disabled state selected for lab"/>
<variant name="Enable" summary="Enabled state selected for lab"/>
</token>
</histogram>
<histogram name="Toolbar.Menu.NewIncognitoTabPresentationDuration" units="ms" <histogram name="Toolbar.Menu.NewIncognitoTabPresentationDuration" units="ms"
expires_after="M85"> expires_after="M85">
<owner>peterlaurens@chromium.org</owner> <owner>peterlaurens@chromium.org</owner>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment