Commit 58ad1463 authored by Devlin Cronin's avatar Devlin Cronin Committed by Commit Bot

[Extensions Menu] Add more user actions

Add user actions for:
- The menu being opened
- The pin button being pressed
- The user activating an extension from the menu
- The user activating an extension from the toolbar

Bug: 1064111
Change-Id: I6978c1ffefcbb4171e756375e9bc9798d2674be6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2116583Reviewed-by: default avatarMark Pearson <mpearson@chromium.org>
Reviewed-by: default avatarCaroline Rising <corising@chromium.org>
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#754805}
parent 29e93125
......@@ -4,6 +4,8 @@
#include "chrome/browser/ui/views/extensions/extensions_menu_button.h"
#include "base/metrics/user_metrics.h"
#include "base/metrics/user_metrics_action.h"
#include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h"
#include "chrome/browser/ui/views/bubble_menu_item_factory.h"
#include "chrome/browser/ui/views/extensions/extensions_menu_item_view.h"
......@@ -47,6 +49,8 @@ SkColor ExtensionsMenuButton::GetInkDropBaseColor() const {
void ExtensionsMenuButton::ButtonPressed(Button* sender,
const ui::Event& event) {
base::RecordAction(
base::UserMetricsAction("Extensions.Toolbar.ExtensionActivatedFromMenu"));
controller_->ExecuteAction(true);
}
......
......@@ -5,6 +5,7 @@
#include "chrome/browser/ui/views/extensions/extensions_menu_item_view.h"
#include "base/strings/utf_string_conversions.h"
#include "base/test/metrics/user_action_tester.h"
#include "base/test/scoped_feature_list.h"
#include "build/build_config.h"
#include "chrome/browser/ui/toolbar/test_toolbar_action_view_controller.h"
......@@ -84,7 +85,11 @@ TEST_F(ExtensionsMenuItemViewTest, UpdatesToDisplayCorrectActionTitle) {
}
TEST_F(ExtensionsMenuItemViewTest, NotifyClickExecutesAction) {
base::UserActionTester user_action_tester;
constexpr char kActivatedUserAction[] =
"Extensions.Toolbar.ExtensionActivatedFromMenu";
EXPECT_EQ(0, controller_->execute_action_count());
EXPECT_EQ(0, user_action_tester.GetActionCount(kActivatedUserAction));
primary_button()->SetBounds(0, 0, 100, 100);
ui::MouseEvent click_event(ui::ET_MOUSE_RELEASED,
......@@ -94,6 +99,7 @@ TEST_F(ExtensionsMenuItemViewTest, NotifyClickExecutesAction) {
primary_button()->button_controller()->OnMouseReleased(click_event);
EXPECT_EQ(1, controller_->execute_action_count());
EXPECT_EQ(1, user_action_tester.GetActionCount(kActivatedUserAction));
}
TEST_F(ExtensionsMenuItemViewTest, UpdatesToDisplayTooltip) {
......
......@@ -4,6 +4,8 @@
#include "chrome/browser/ui/views/extensions/extensions_menu_item_view.h"
#include "base/metrics/user_metrics.h"
#include "base/metrics/user_metrics_action.h"
#include "chrome/app/vector_icons/vector_icons.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
......@@ -91,6 +93,8 @@ ExtensionsMenuItemView::~ExtensionsMenuItemView() = default;
void ExtensionsMenuItemView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
if (sender->GetID() == EXTENSION_PINNING) {
base::RecordAction(
base::UserMetricsAction("Extensions.Toolbar.PinButtonPressed"));
model_->SetActionVisibility(controller_->GetId(), !IsPinned());
return;
} else if (sender->GetID() == EXTENSION_CONTEXT_MENU) {
......
......@@ -11,6 +11,7 @@
#include "base/files/file_path.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/test/metrics/user_action_tester.h"
#include "base/test/scoped_feature_list.h"
#include "build/build_config.h"
#include "chrome/browser/extensions/chrome_test_extension_loader.h"
......@@ -502,6 +503,21 @@ TEST_F(ExtensionsMenuViewUnitTest, ReloadExtensionFailed) {
EXPECT_EQ(0u, extensions_menu()->extensions_menu_items_for_testing().size());
}
TEST_F(ExtensionsMenuViewUnitTest, PinButtonUserAction) {
base::UserActionTester user_action_tester;
AddSimpleExtension("Test Extension");
ExtensionsMenuItemView* menu_item = GetOnlyMenuItem();
ASSERT_TRUE(menu_item);
constexpr char kPinButtonUserAction[] = "Extensions.Toolbar.PinButtonPressed";
EXPECT_EQ(0, user_action_tester.GetActionCount(kPinButtonUserAction));
ClickPinButton(menu_item);
EXPECT_EQ(1, user_action_tester.GetActionCount(kPinButtonUserAction));
ClickPinButton(menu_item); // Unpin.
EXPECT_EQ(2, user_action_tester.GetActionCount(kPinButtonUserAction));
}
// TODO(crbug.com/984654): When supported, add a test to verify the
// ExtensionsToolbarContainer shrinks when the window is too small to show all
// pinned extensions.
......
......@@ -4,6 +4,8 @@
#include "chrome/browser/ui/views/extensions/extensions_toolbar_button.h"
#include "base/metrics/user_metrics.h"
#include "base/metrics/user_metrics_action.h"
#include "chrome/browser/themes/theme_properties.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/views/extensions/extensions_menu_view.h"
......@@ -92,6 +94,7 @@ void ExtensionsToolbarButton::ButtonPressed(views::Button* sender,
return;
}
pressed_lock_ = menu_button_controller_->TakeLock();
base::RecordAction(base::UserMetricsAction("Extensions.Toolbar.MenuOpened"));
ExtensionsMenuView::ShowBubble(this, browser_, extensions_container_)
->AddObserver(this);
}
......
......@@ -8,6 +8,8 @@
#include "base/auto_reset.h"
#include "base/bind.h"
#include "base/metrics/user_metrics.h"
#include "base/metrics/user_metrics_action.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/themes/theme_properties.h"
#include "chrome/browser/ui/layout_constants.h"
......@@ -188,6 +190,8 @@ void ToolbarActionView::ButtonPressed(views::Button* sender,
context_menu_controller()->ShowContextMenuForView(this, GetMenuPosition(),
ui::MENU_SOURCE_NONE);
} else {
base::RecordAction(base::UserMetricsAction(
"Extensions.Toolbar.ExtensionActivatedFromToolbar"));
view_controller_->ExecuteAction(true);
}
}
......
......@@ -6110,6 +6110,43 @@ should be able to be added at any place in this file.
</description>
</action>
<action name="Extensions.Toolbar.ExtensionActivatedFromMenu">
<owner>rdevlin.cronin@chromium.org</owner>
<owner>extensions-core@chromium.org</owner>
<description>
The user activated an extension from the Extensions Menu in the toolbar.
This is recorded for both keyboard and mouse activation.
</description>
</action>
<action name="Extensions.Toolbar.ExtensionActivatedFromToolbar">
<owner>rdevlin.cronin@chromium.org</owner>
<owner>extensions-core@chromium.org</owner>
<description>
The user activated an extension from the toolbar. This is recorded for both
keyboard and mouse activation.
</description>
</action>
<action name="Extensions.Toolbar.MenuOpened">
<owner>rdevlin.cronin@chromium.org</owner>
<owner>extensions-core@chromium.org</owner>
<description>
The user opened the Extensions Menu in the toolbar. This is recorded for
both keyboard and mouse activation.
</description>
</action>
<action name="Extensions.Toolbar.PinButtonPressed">
<owner>rdevlin.cronin@chromium.org</owner>
<owner>extensions-core@chromium.org</owner>
<description>
The user changed the pin state for an extension by activating the pin button
in the Extensions Menu. This is recorded for both keyboard and mouse
activation.
</description>
</action>
<action name="Extensions.UninstallDialogCancelClick">
<owner>archanasimha@chromium.org</owner>
<description>
......
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