Chromium Code Reviews| Index: chrome/browser/ui/cocoa/translate/translate_bubble_controller.mm |
| diff --git a/chrome/browser/ui/cocoa/translate/translate_bubble_controller.mm b/chrome/browser/ui/cocoa/translate/translate_bubble_controller.mm |
| index 57b25d066fd8301325fa6991d5e2b715f3f3cd2c..f0e272de7776c9031ffdd7f27fd2e51e23a14490 100644 |
| --- a/chrome/browser/ui/cocoa/translate/translate_bubble_controller.mm |
| +++ b/chrome/browser/ui/cocoa/translate/translate_bubble_controller.mm |
| @@ -9,6 +9,7 @@ |
| #include "base/mac/foundation_util.h" |
| #include "base/mac/scoped_nsobject.h" |
| #include "base/macros.h" |
| +#include "base/metrics/histogram_macros.h" |
| #include "base/strings/sys_string_conversions.h" |
| #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
| #import "chrome/browser/ui/cocoa/bubble_combobox.h" |
| @@ -17,6 +18,7 @@ |
| #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h" |
| #include "chrome/browser/ui/translate/language_combobox_model.h" |
| #include "chrome/browser/ui/translate/translate_bubble_model_impl.h" |
| +#include "chrome/browser/ui/translate/translate_bubble_view_state_transition.h" |
| #include "chrome/grit/generated_resources.h" |
| #include "components/translate/core/browser/translate_ui_delegate.h" |
| #include "content/public/browser/browser_context.h" |
| @@ -91,11 +93,12 @@ const CGFloat kContentWidth = kWindowWidth - 2 * kFramePadding; |
| action:(SEL)action |
| toView:(NSView*)view; |
| - (NSButton*)addCheckbox:(NSString*)title |
| + action:(SEL)action |
| toView:(NSView*)view; |
| - (NSPopUpButton*)addPopUpButton:(ui::ComboboxModel*)model |
| action:(SEL)action |
| toView:(NSView*)view; |
| -- (void)handleNopeButtonPressed; |
| +- (void)handleAlwaysTranslateCheckboxPressed; |
| - (void)handleDoneButtonPressed; |
| - (void)handleCancelButtonPressed; |
| - (void)handleShowOriginalButtonPressed; |
| @@ -105,6 +108,7 @@ const CGFloat kContentWidth = kWindowWidth - 2 * kFramePadding; |
| - (void)handleDenialPopUpButtonNeverTranslateSiteSelected; |
| - (void)handleSourceLanguagePopUpButtonSelectedItemChanged:(id)sender; |
| - (void)handleTargetLanguagePopUpButtonSelectedItemChanged:(id)sender; |
| +- (void)reportUiAction:(translate::TranslateBubbleUiEvent)action; |
| @end |
| @@ -422,7 +426,9 @@ const CGFloat kContentWidth = kWindowWidth - 2 * kFramePadding; |
| if (!isIncognitoWindow) { |
| NSString* title = |
| l10n_util::GetNSStringWithFixup(IDS_TRANSLATE_BUBBLE_ALWAYS); |
| + action = @selector(handleAlwaysTranslateCheckboxPressed); |
| alwaysTranslateCheckbox_ = [self addCheckbox:title |
| + action:action |
| toView:view]; |
| } |
| @@ -563,6 +569,7 @@ const CGFloat kContentWidth = kWindowWidth - 2 * kFramePadding; |
| } |
| - (NSButton*)addCheckbox:(NSString*)title |
| + action:(SEL)action |
| toView:(NSView*)view { |
| base::scoped_nsobject<NSButton> button( |
| [[NSButton alloc] initWithFrame:NSZeroRect]); |
| @@ -571,6 +578,8 @@ const CGFloat kContentWidth = kWindowWidth - 2 * kFramePadding; |
| [[button cell] setControlSize:NSSmallControlSize]; |
| [button setButtonType:NSSwitchButton]; |
| [button sizeToFit]; |
| + [button setTarget:self]; |
| + [button setAction:action]; |
| [view addSubview:button.get()]; |
| @@ -592,16 +601,19 @@ const CGFloat kContentWidth = kWindowWidth - 2 * kFramePadding; |
| } |
| - (void)handleTranslateButtonPressed { |
| + [self reportUiAction:translate::TRANSLATE_BUTTON_CLICKED]; |
| translateExecuted_ = YES; |
| model_->Translate(); |
| } |
| -- (void)handleNopeButtonPressed { |
| - model_->DeclineTranslation(); |
| - [self close]; |
| +- (void)handleAlwaysTranslateCheckboxPressed { |
| + [self reportUiAction:[alwaysTranslateCheckbox_ state] == NSOnState |
| + ? translate::ALWAYS_TRANSLATE_CHECKED |
|
groby-ooo-7-16
2016/05/11 20:32:45
Does that match views semantics? (I.e. are we reco
ftang
2016/05/14 04:50:24
yes, this record the user's action, not their fina
|
| + : translate::ALWAYS_TRANSLATE_UNCHECKED]; |
| } |
| - (void)handleDoneButtonPressed { |
| + [self reportUiAction:translate::DONE_BUTTON_CLICKED]; |
| if (alwaysTranslateCheckbox_) { |
| model_->SetAlwaysTranslate( |
| [alwaysTranslateCheckbox_ state] == NSOnState); |
| @@ -617,46 +629,59 @@ const CGFloat kContentWidth = kWindowWidth - 2 * kFramePadding; |
| } |
| - (void)handleCancelButtonPressed { |
| + [self reportUiAction:translate::CANCEL_BUTTON_CLICKED]; |
| model_->GoBackFromAdvanced(); |
| [self performLayout]; |
| } |
| - (void)handleShowOriginalButtonPressed { |
| + [self reportUiAction:translate::SHOW_ORIGINAL_BUTTON_CLICKED]; |
| model_->RevertTranslation(); |
| [self close]; |
| } |
| - (void)handleAdvancedLinkButtonPressed { |
| + [self reportUiAction:translate::ADVANCED_LINK_CLICKED]; |
| [self switchView:TranslateBubbleModel::VIEW_STATE_ADVANCED]; |
| } |
| - (void)handleDenialPopUpButtonNopeSelected { |
| + [self reportUiAction:translate::NOPE_MENU_CLICKED]; |
| model_->DeclineTranslation(); |
| [self close]; |
| } |
| - (void)handleDenialPopUpButtonNeverTranslateLanguageSelected { |
| + [self reportUiAction:translate::NEVER_TRANSLATE_LANGUAGE_MENU_CLICKED]; |
| model_->DeclineTranslation(); |
| model_->SetNeverTranslateLanguage(true); |
| [self close]; |
| } |
| - (void)handleDenialPopUpButtonNeverTranslateSiteSelected { |
| + [self reportUiAction:translate::NEVER_TRANSLATE_SITE_MENU_CLICKED]; |
| model_->DeclineTranslation(); |
| model_->SetNeverTranslateSite(true); |
| [self close]; |
| } |
| - (void)handleSourceLanguagePopUpButtonSelectedItemChanged:(id)sender { |
| + [self reportUiAction:translate::SOURCE_LANGUAGE_MENU_CLICKED]; |
| NSPopUpButton* button = base::mac::ObjCCastStrict<NSPopUpButton>(sender); |
| model_->UpdateOriginalLanguageIndex([button indexOfSelectedItem]); |
| [self updateAdvancedView]; |
| } |
| - (void)handleTargetLanguagePopUpButtonSelectedItemChanged:(id)sender { |
| + [self reportUiAction:translate::TARGET_LANGUAGE_MENU_CLICKED]; |
| NSPopUpButton* button = base::mac::ObjCCastStrict<NSPopUpButton>(sender); |
| model_->UpdateTargetLanguageIndex([button indexOfSelectedItem]); |
| [self updateAdvancedView]; |
| } |
| +- (void)reportUiAction:(translate::TranslateBubbleUiEvent)action { |
|
groby-ooo-7-16
2016/05/11 20:32:45
Please make this shared between Views and OSX - no
ftang
2016/05/14 04:50:24
Done.
|
| + UMA_HISTOGRAM_ENUMERATION("Translate.BubbleUiEvent", action, |
| + translate::TRANSLATE_BUBBLE_UI_EVENT_MAX); |
| +} |
| + |
| @end |