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

Side by Side Diff: ash/common/system/chromeos/ime_menu/ime_menu_tray.cc

Issue 2600173002: Add metrics to track buttons clicked in IME menu tray. (Closed)
Patch Set: sync Created 3 years, 11 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
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "ash/common/system/chromeos/ime_menu/ime_menu_tray.h" 5 #include "ash/common/system/chromeos/ime_menu/ime_menu_tray.h"
6 6
7 #include "ash/common/accessibility_delegate.h" 7 #include "ash/common/accessibility_delegate.h"
8 #include "ash/common/ash_constants.h" 8 #include "ash/common/ash_constants.h"
9 #include "ash/common/material_design/material_design_controller.h" 9 #include "ash/common/material_design/material_design_controller.h"
10 #include "ash/common/session/session_state_delegate.h" 10 #include "ash/common/session/session_state_delegate.h"
11 #include "ash/common/shelf/wm_shelf.h" 11 #include "ash/common/shelf/wm_shelf.h"
12 #include "ash/common/shelf/wm_shelf_util.h" 12 #include "ash/common/shelf/wm_shelf_util.h"
13 #include "ash/common/system/chromeos/ime_menu/ime_list_view.h" 13 #include "ash/common/system/chromeos/ime_menu/ime_list_view.h"
14 #include "ash/common/system/tray/fixed_sized_scroll_view.h" 14 #include "ash/common/system/tray/fixed_sized_scroll_view.h"
15 #include "ash/common/system/tray/hover_highlight_view.h" 15 #include "ash/common/system/tray/hover_highlight_view.h"
16 #include "ash/common/system/tray/system_menu_button.h" 16 #include "ash/common/system/tray/system_menu_button.h"
17 #include "ash/common/system/tray/system_tray_controller.h" 17 #include "ash/common/system/tray/system_tray_controller.h"
18 #include "ash/common/system/tray/system_tray_delegate.h" 18 #include "ash/common/system/tray/system_tray_delegate.h"
19 #include "ash/common/system/tray/system_tray_notifier.h" 19 #include "ash/common/system/tray/system_tray_notifier.h"
20 #include "ash/common/system/tray/tray_constants.h" 20 #include "ash/common/system/tray/tray_constants.h"
21 #include "ash/common/system/tray/tray_popup_item_style.h" 21 #include "ash/common/system/tray/tray_popup_item_style.h"
22 #include "ash/common/system/tray/tray_popup_utils.h" 22 #include "ash/common/system/tray/tray_popup_utils.h"
23 #include "ash/common/system/tray/tray_utils.h" 23 #include "ash/common/system/tray/tray_utils.h"
24 #include "ash/common/wm_lookup.h" 24 #include "ash/common/wm_lookup.h"
25 #include "ash/common/wm_root_window_controller.h" 25 #include "ash/common/wm_root_window_controller.h"
26 #include "ash/common/wm_shell.h" 26 #include "ash/common/wm_shell.h"
27 #include "ash/common/wm_window.h" 27 #include "ash/common/wm_window.h"
28 #include "ash/public/cpp/shell_window_ids.h" 28 #include "ash/public/cpp/shell_window_ids.h"
29 #include "base/metrics/histogram_macros.h"
29 #include "base/strings/utf_string_conversions.h" 30 #include "base/strings/utf_string_conversions.h"
30 #include "grit/ash_resources.h" 31 #include "grit/ash_resources.h"
31 #include "grit/ash_strings.h" 32 #include "grit/ash_strings.h"
32 #include "ui/base/ime/chromeos/input_method_manager.h" 33 #include "ui/base/ime/chromeos/input_method_manager.h"
33 #include "ui/base/l10n/l10n_util.h" 34 #include "ui/base/l10n/l10n_util.h"
34 #include "ui/base/resource/resource_bundle.h" 35 #include "ui/base/resource/resource_bundle.h"
35 #include "ui/gfx/paint_vector_icon.h" 36 #include "ui/gfx/paint_vector_icon.h"
36 #include "ui/gfx/range/range.h" 37 #include "ui/gfx/range/range.h"
37 #include "ui/gfx/vector_icons_public.h" 38 #include "ui/gfx/vector_icons_public.h"
38 #include "ui/keyboard/keyboard_controller.h" 39 #include "ui/keyboard/keyboard_controller.h"
(...skipping 22 matching lines...) Expand all
61 ? kTrayMenuMinimumWidthMd 62 ? kTrayMenuMinimumWidthMd
62 : kTrayMenuMinimumWidth; 63 : kTrayMenuMinimumWidth;
63 } 64 }
64 65
65 // Shows language and input settings page. 66 // Shows language and input settings page.
66 void ShowIMESettings() { 67 void ShowIMESettings() {
67 WmShell::Get()->RecordUserMetricsAction(UMA_STATUS_AREA_IME_SHOW_DETAILED); 68 WmShell::Get()->RecordUserMetricsAction(UMA_STATUS_AREA_IME_SHOW_DETAILED);
68 WmShell::Get()->system_tray_controller()->ShowIMESettings(); 69 WmShell::Get()->system_tray_controller()->ShowIMESettings();
69 } 70 }
70 71
72 // Records the number of times users click buttons in opt-in IME menu.
73 void RecordButtonsClicked(const std::string& button_name) {
74 enum {
75 UNKNOWN = 0,
76 EMOJI = 1,
77 HANDWRITING = 2,
78 VOICE = 3,
79 // SETTINGS is not used for now.
80 SETTINGS = 4,
81 BUTTON_MAX
82 } button = UNKNOWN;
83 if (button_name == "emoji") {
84 button = EMOJI;
85 } else if (button_name == "hwt") {
86 button = HANDWRITING;
87 } else if (button_name == "voice") {
88 button = VOICE;
89 }
90 UMA_HISTOGRAM_ENUMERATION("InputMethod.ImeMenu.EmojiHandwritingVoiceButton",
91 button, BUTTON_MAX);
92 }
93
71 // Returns true if the current screen is login or lock screen. 94 // Returns true if the current screen is login or lock screen.
72 bool IsInLoginOrLockScreen() { 95 bool IsInLoginOrLockScreen() {
73 LoginStatus login = 96 LoginStatus login =
74 WmShell::Get()->system_tray_delegate()->GetUserLoginStatus(); 97 WmShell::Get()->system_tray_delegate()->GetUserLoginStatus();
75 return !TrayPopupUtils::CanOpenWebUISettings(login); 98 return !TrayPopupUtils::CanOpenWebUISettings(login);
76 } 99 }
77 100
78 class ImeMenuLabel : public views::Label { 101 class ImeMenuLabel : public views::Label {
79 public: 102 public:
80 ImeMenuLabel() {} 103 ImeMenuLabel() {}
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 if (sender == settings_button_) { 218 if (sender == settings_button_) {
196 ime_menu_tray_->HideImeMenuBubble(); 219 ime_menu_tray_->HideImeMenuBubble();
197 ShowIMESettings(); 220 ShowIMESettings();
198 return; 221 return;
199 } 222 }
200 223
201 // The |keyset| will be used for drawing input view keyset in IME 224 // The |keyset| will be used for drawing input view keyset in IME
202 // extensions. InputMethodManager::ShowKeyboardWithKeyset() will deal with 225 // extensions. InputMethodManager::ShowKeyboardWithKeyset() will deal with
203 // the |keyset| string to generate the right input view url. 226 // the |keyset| string to generate the right input view url.
204 std::string keyset; 227 std::string keyset;
205 if (sender == emoji_button_) 228 if (sender == emoji_button_) {
206 keyset = "emoji"; 229 keyset = "emoji";
207 else if (sender == voice_button_) 230 RecordButtonsClicked(keyset);
231 } else if (sender == voice_button_) {
208 keyset = "voice"; 232 keyset = "voice";
209 else if (sender == handwriting_button_) 233 RecordButtonsClicked(keyset);
234 } else if (sender == handwriting_button_) {
210 keyset = "hwt"; 235 keyset = "hwt";
211 else 236 RecordButtonsClicked(keyset);
237 } else {
212 NOTREACHED(); 238 NOTREACHED();
239 }
213 240
214 ime_menu_tray_->ShowKeyboardWithKeyset(keyset); 241 ime_menu_tray_->ShowKeyboardWithKeyset(keyset);
215 } 242 }
216 243
217 // ViewClickListener: 244 // ViewClickListener:
218 void OnViewClicked(views::View* sender) override { 245 void OnViewClicked(views::View* sender) override {
219 if (one_settings_button_view_ && sender == one_settings_button_view_) { 246 if (one_settings_button_view_ && sender == one_settings_button_view_) {
220 ime_menu_tray_->HideImeMenuBubble(); 247 ime_menu_tray_->HideImeMenuBubble();
221 ShowIMESettings(); 248 ShowIMESettings();
222 } 249 }
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 WmShell::Get()->system_tray_delegate()->GetCurrentIME(&current_ime_); 655 WmShell::Get()->system_tray_delegate()->GetCurrentIME(&current_ime_);
629 656
630 // Updates the tray label based on the current input method. 657 // Updates the tray label based on the current input method.
631 if (current_ime_.third_party) 658 if (current_ime_.third_party)
632 label_->SetText(current_ime_.short_name + base::UTF8ToUTF16("*")); 659 label_->SetText(current_ime_.short_name + base::UTF8ToUTF16("*"));
633 else 660 else
634 label_->SetText(current_ime_.short_name); 661 label_->SetText(current_ime_.short_name);
635 } 662 }
636 663
637 } // namespace ash 664 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698