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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java

Issue 2873103003: Implements logging in the new compact translate UI. (Closed)
Patch Set: Created 3 years, 7 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 | chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java » ('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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 package org.chromium.chrome.browser.infobar; 5 package org.chromium.chrome.browser.infobar;
6 6
7 import android.support.design.widget.TabLayout; 7 import android.support.design.widget.TabLayout;
8 import android.view.LayoutInflater; 8 import android.view.LayoutInflater;
9 import android.view.View; 9 import android.view.View;
10 import android.view.View.OnClickListener; 10 import android.view.View.OnClickListener;
11 import android.widget.LinearLayout; 11 import android.widget.LinearLayout;
12 12
13 import org.chromium.base.annotations.CalledByNative; 13 import org.chromium.base.annotations.CalledByNative;
14 import org.chromium.base.metrics.RecordHistogram;
14 import org.chromium.chrome.R; 15 import org.chromium.chrome.R;
15 import org.chromium.chrome.browser.infobar.translate.TranslateMenu; 16 import org.chromium.chrome.browser.infobar.translate.TranslateMenu;
16 import org.chromium.chrome.browser.infobar.translate.TranslateMenuHelper; 17 import org.chromium.chrome.browser.infobar.translate.TranslateMenuHelper;
17 import org.chromium.chrome.browser.infobar.translate.TranslateTabLayout; 18 import org.chromium.chrome.browser.infobar.translate.TranslateTabLayout;
18 import org.chromium.chrome.browser.snackbar.Snackbar; 19 import org.chromium.chrome.browser.snackbar.Snackbar;
19 import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController; 20 import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController;
20 import org.chromium.chrome.browser.widget.TintedImageButton; 21 import org.chromium.chrome.browser.widget.TintedImageButton;
21 import org.chromium.ui.widget.Toast; 22 import org.chromium.ui.widget.Toast;
22 23
23 /** 24 /**
24 * Java version of the compcat translate infobar 25 * Java version of the compcat translate infobar
25 */ 26 */
26 class TranslateCompactInfoBar extends InfoBar 27 class TranslateCompactInfoBar extends InfoBar
27 implements TabLayout.OnTabSelectedListener, TranslateMenuHelper.Translat eMenuListener { 28 implements TabLayout.OnTabSelectedListener, TranslateMenuHelper.Translat eMenuListener {
28 public static final int TRANSLATING_INFOBAR = 1; 29 public static final int TRANSLATING_INFOBAR = 1;
29 30
30 private static final int SOURCE_TAB_INDEX = 0; 31 private static final int SOURCE_TAB_INDEX = 0;
31 private static final int TARGET_TAB_INDEX = 1; 32 private static final int TARGET_TAB_INDEX = 1;
32 33
33 private final int mInitialStep; 34 private final int mInitialStep;
34 private final TranslateOptions mOptions; 35 private final TranslateOptions mOptions;
35 36
36 private long mNativeTranslateInfoBarPtr; 37 private long mNativeTranslateInfoBarPtr;
37 private TranslateTabLayout mTabLayout; 38 private TranslateTabLayout mTabLayout;
38 39
40 private static final String INFOBAR_HISTOGRAM_TRANSLATE_LANGUAGE =
41 "Translate.CompactInfobar.Language.Translate";
42 private static final String INFOBAR_HISTOGRAM_MORE_LANGUAGES_LANGUAGE =
43 "Translate.CompactInfobar.Language.MoreLanguages";
44 private static final String INFOBAR_HISTOGRAM_PAGE_NOT_IN_LANGUAGE =
45 "Translate.CompactInfobar.Language.PageNotIn";
46 private static final String INFOBAR_HISTOGRAM_ALWAYS_TRANSLATE_LANGUAGE =
47 "Translate.CompactInfobar.Language.AlwaysTranslate";
48 private static final String INFOBAR_HISTOGRAM_NEVER_TRANSLATE_LANGUAGE =
49 "Translate.CompactInfobar.Language.NeverTranslate";
50 private static final String INFOBAR_HISTOGRAM = "Translate.CompactInfobar.Ev ent";
51
52 /**
53 * This is used to back a UMA histogram, so it should be treated as
54 * append-only. The values should not be changed or reused, and
55 * INFOBAR_HISTOGRAM_BOUNDARY should be the last.
56 */
57 private static final int INFOBAR_IMPRESSION = 0;
58 private static final int INFOBAR_TRANSLATE = 1;
59 private static final int INFOBAR_DECLINE = 2;
60 private static final int INFOBAR_OPTIONS = 3;
61 private static final int INFOBAR_MORE_LANGUAGES = 4;
62 private static final int INFOBAR_MORE_LANGUAGES_TRANSLATE = 5;
63 private static final int INFOBAR_PAGE_NOT_IN = 6;
64 private static final int INFOBAR_ALWAYS_TRANSLATE = 7;
65 private static final int INFOBAR_NEVER_TRANSLATE = 8;
66 private static final int INFOBAR_NEVER_TRANSLATE_SITE = 9;
67 private static final int INFOBAR_SCROLL_HIDE = 10;
68 private static final int INFOBAR_SCROLL_SHOW = 11;
69 private static final int INFOBAR_REVERT = 12;
70 private static final int INFOBAR_SNACKBAR_ALWAYS_TRANSLATE_IMPRESSION = 13;
71 private static final int INFOBAR_SNACKBAR_NEVER_TRANSLATE_IMPRESSION = 14;
72 private static final int INFOBAR_SNACKBAR_NEVER_TRANSLATE_SITE_IMPRESSION = 15;
73 private static final int INFOBAR_SNACKBAR_CANCEL_ALWAYS = 16;
74 private static final int INFOBAR_SNACKBAR_CANCEL_NEVER_SITE = 17;
75 private static final int INFOBAR_SNACKBAR_CANCEL_NEVER = 18;
76 private static final int INFOBAR_HISTOGRAM_BOUNDARY = 19;
77
39 // Need 2 instances of TranslateMenuHelper to prevent a race condition bug w hich happens when 78 // Need 2 instances of TranslateMenuHelper to prevent a race condition bug w hich happens when
40 // showing language menu after dismissing overflow menu. 79 // showing language menu after dismissing overflow menu.
41 private TranslateMenuHelper mOverflowMenuHelper; 80 private TranslateMenuHelper mOverflowMenuHelper;
42 private TranslateMenuHelper mLanguageMenuHelper; 81 private TranslateMenuHelper mLanguageMenuHelper;
43 private TintedImageButton mMenuButton; 82 private TintedImageButton mMenuButton;
44 private boolean mUserInteracted; 83 private boolean mUserInteracted;
45 84
46 /** The controller for translate UI snackbars. */ 85 /** The controller for translate UI snackbars. */
47 class TranslateSnackbarController implements SnackbarController { 86 class TranslateSnackbarController implements SnackbarController {
48 private final int mMenuItemId; 87 private final int mMenuItemId;
49 88
50 public TranslateSnackbarController(int menuItemId) { 89 public TranslateSnackbarController(int menuItemId) {
51 mMenuItemId = menuItemId; 90 mMenuItemId = menuItemId;
52 } 91 }
53 92
54 @Override 93 @Override
55 public void onDismissNoAction(Object actionData) { 94 public void onDismissNoAction(Object actionData) {
56 handleTranslateOptionPostSnackbar(mMenuItemId); 95 handleTranslateOptionPostSnackbar(mMenuItemId);
57 } 96 }
58 97
59 @Override 98 @Override
60 public void onAction(Object actionData) { 99 public void onAction(Object actionData) {
61 // TODO(ramyasharma): Add logging metric to track cancel actions. 100 switch (mMenuItemId) {
62 // Do nothing. 101 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
102 recordInfobarAction(INFOBAR_SNACKBAR_CANCEL_ALWAYS);
103 return;
104 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
105 recordInfobarAction(INFOBAR_SNACKBAR_CANCEL_NEVER);
106 return;
107 case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
108 recordInfobarAction(INFOBAR_SNACKBAR_CANCEL_NEVER_SITE);
109 return;
110 default:
111 assert false : "Unsupported Menu Item Id, when handling snac kbar action";
112 return;
113 }
63 } 114 }
64 }; 115 };
65 116
66 @CalledByNative 117 @CalledByNative
67 private static InfoBar create(int initialStep, String sourceLanguageCode, 118 private static InfoBar create(int initialStep, String sourceLanguageCode,
68 String targetLanguageCode, boolean alwaysTranslate, boolean triggere dFromMenu, 119 String targetLanguageCode, boolean alwaysTranslate, boolean triggere dFromMenu,
69 String[] languages, String[] codes) { 120 String[] languages, String[] languageCodes, int[] hashCodes) {
121 recordInfobarAction(INFOBAR_IMPRESSION);
70 return new TranslateCompactInfoBar(initialStep, sourceLanguageCode, targ etLanguageCode, 122 return new TranslateCompactInfoBar(initialStep, sourceLanguageCode, targ etLanguageCode,
71 alwaysTranslate, triggeredFromMenu, languages, codes); 123 alwaysTranslate, triggeredFromMenu, languages, languageCodes, ha shCodes);
72 } 124 }
73 125
74 TranslateCompactInfoBar(int initialStep, String sourceLanguageCode, String t argetLanguageCode, 126 TranslateCompactInfoBar(int initialStep, String sourceLanguageCode, String t argetLanguageCode,
75 boolean alwaysTranslate, boolean triggeredFromMenu, String[] languag es, 127 boolean alwaysTranslate, boolean triggeredFromMenu, String[] languag es,
76 String[] codes) { 128 String[] languageCodes, int[] hashCodes) {
77 super(R.drawable.infobar_translate_compact, null, null); 129 super(R.drawable.infobar_translate_compact, null, null);
130
78 mInitialStep = initialStep; 131 mInitialStep = initialStep;
79 mOptions = TranslateOptions.create(sourceLanguageCode, targetLanguageCod e, languages, codes, 132 mOptions = TranslateOptions.create(sourceLanguageCode, targetLanguageCod e, languages,
80 alwaysTranslate, triggeredFromMenu); 133 languageCodes, alwaysTranslate, triggeredFromMenu, hashCodes);
81 } 134 }
82 135
83 @Override 136 @Override
84 protected boolean usesCompactLayout() { 137 protected boolean usesCompactLayout() {
85 return true; 138 return true;
86 } 139 }
87 140
88 @Override 141 @Override
89 protected void createCompactLayoutContent(InfoBarCompactLayout parent) { 142 protected void createCompactLayoutContent(InfoBarCompactLayout parent) {
90 LinearLayout content = 143 LinearLayout content =
91 (LinearLayout) LayoutInflater.from(getContext()) 144 (LinearLayout) LayoutInflater.from(getContext())
92 .inflate(R.layout.infobar_translate_compact_content, par ent, false); 145 .inflate(R.layout.infobar_translate_compact_content, par ent, false);
93 146
94 mTabLayout = (TranslateTabLayout) content.findViewById(R.id.translate_in fobar_tabs); 147 mTabLayout = (TranslateTabLayout) content.findViewById(R.id.translate_in fobar_tabs);
95 mTabLayout.addTabs(mOptions.sourceLanguageName(), mOptions.targetLanguag eName()); 148 mTabLayout.addTabs(mOptions.sourceLanguageName(), mOptions.targetLanguag eName());
96 149
97 // Set translating status in the beginning for pages translated automati cally. 150 // Set translating status in the beginning for pages translated automati cally.
98 if (mInitialStep == TRANSLATING_INFOBAR) { 151 if (mInitialStep == TRANSLATING_INFOBAR) {
99 mTabLayout.getTabAt(TARGET_TAB_INDEX).select(); 152 mTabLayout.getTabAt(TARGET_TAB_INDEX).select();
100 mTabLayout.showProgressBarOnTab(TARGET_TAB_INDEX); 153 mTabLayout.showProgressBarOnTab(TARGET_TAB_INDEX);
101 mUserInteracted = true; 154 mUserInteracted = true;
102 } 155 }
103 156
104 mTabLayout.addOnTabSelectedListener(this); 157 mTabLayout.addOnTabSelectedListener(this);
105 158
106 mMenuButton = (TintedImageButton) content.findViewById(R.id.translate_in fobar_menu_button); 159 mMenuButton = (TintedImageButton) content.findViewById(R.id.translate_in fobar_menu_button);
107 mMenuButton.setOnClickListener(new OnClickListener() { 160 mMenuButton.setOnClickListener(new OnClickListener() {
108 @Override 161 @Override
109 public void onClick(View v) { 162 public void onClick(View v) {
163 recordInfobarAction(INFOBAR_OPTIONS);
110 initMenuHelper(TranslateMenu.MENU_OVERFLOW); 164 initMenuHelper(TranslateMenu.MENU_OVERFLOW);
111 mOverflowMenuHelper.show(TranslateMenu.MENU_OVERFLOW); 165 mOverflowMenuHelper.show(TranslateMenu.MENU_OVERFLOW);
112 } 166 }
113 }); 167 });
114 168
115 parent.addContent(content, 1.0f); 169 parent.addContent(content, 1.0f);
116 } 170 }
117 171
118 private void initMenuHelper(int menuType) { 172 private void initMenuHelper(int menuType) {
119 switch (menuType) { 173 switch (menuType) {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 if (!mUserInteracted) { 239 if (!mUserInteracted) {
186 onButtonClicked(ActionType.CANCEL); 240 onButtonClicked(ActionType.CANCEL);
187 } 241 }
188 super.onCloseButtonClicked(); 242 super.onCloseButtonClicked();
189 } 243 }
190 244
191 @Override 245 @Override
192 public void onTabSelected(TabLayout.Tab tab) { 246 public void onTabSelected(TabLayout.Tab tab) {
193 switch (tab.getPosition()) { 247 switch (tab.getPosition()) {
194 case SOURCE_TAB_INDEX: 248 case SOURCE_TAB_INDEX:
249 recordInfobarAction(INFOBAR_REVERT);
195 onButtonClicked(ActionType.TRANSLATE_SHOW_ORIGINAL); 250 onButtonClicked(ActionType.TRANSLATE_SHOW_ORIGINAL);
196 return; 251 return;
197 case TARGET_TAB_INDEX: 252 case TARGET_TAB_INDEX:
253 recordInfobarAction(INFOBAR_TRANSLATE);
254 recordInfobarLanguageData(
255 INFOBAR_HISTOGRAM_TRANSLATE_LANGUAGE, mOptions.targetLan guageCode());
198 startTranslating(TARGET_TAB_INDEX); 256 startTranslating(TARGET_TAB_INDEX);
199 return; 257 return;
200 default: 258 default:
201 assert false : "Unexpected Tab Index"; 259 assert false : "Unexpected Tab Index";
202 } 260 }
203 } 261 }
204 262
205 @Override 263 @Override
206 public void onTabUnselected(TabLayout.Tab tab) {} 264 public void onTabUnselected(TabLayout.Tab tab) {}
207 265
208 @Override 266 @Override
209 public void onTabReselected(TabLayout.Tab tab) {} 267 public void onTabReselected(TabLayout.Tab tab) {}
210 268
211 @Override 269 @Override
212 public void onOverflowMenuItemClicked(int itemId) { 270 public void onOverflowMenuItemClicked(int itemId) {
213 mUserInteracted = true; 271 mUserInteracted = true;
214 switch (itemId) { 272 switch (itemId) {
215 case TranslateMenu.ID_OVERFLOW_MORE_LANGUAGE: 273 case TranslateMenu.ID_OVERFLOW_MORE_LANGUAGE:
274 recordInfobarAction(INFOBAR_MORE_LANGUAGES);
216 initMenuHelper(TranslateMenu.MENU_TARGET_LANGUAGE); 275 initMenuHelper(TranslateMenu.MENU_TARGET_LANGUAGE);
217 mLanguageMenuHelper.show(TranslateMenu.MENU_TARGET_LANGUAGE); 276 mLanguageMenuHelper.show(TranslateMenu.MENU_TARGET_LANGUAGE);
218 return; 277 return;
219 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE: 278 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
279 recordInfobarAction(INFOBAR_ALWAYS_TRANSLATE);
280 recordInfobarLanguageData(
281 INFOBAR_HISTOGRAM_ALWAYS_TRANSLATE_LANGUAGE, mOptions.so urceLanguageCode());
220 // Only show snackbar when "Always Translate" is enabled. 282 // Only show snackbar when "Always Translate" is enabled.
221 if (!mOptions.alwaysTranslateLanguageState()) { 283 if (!mOptions.alwaysTranslateLanguageState()) {
222 createAndShowSnackbar( 284 createAndShowSnackbar(
223 getContext().getString(R.string.translate_snackbar_a lways_translate, 285 getContext().getString(R.string.translate_snackbar_a lways_translate,
224 mOptions.sourceLanguageName(), mOptions.targ etLanguageName()), 286 mOptions.sourceLanguageName(), mOptions.targ etLanguageName()),
225 Snackbar.UMA_TRANSLATE_ALWAYS, itemId); 287 Snackbar.UMA_TRANSLATE_ALWAYS, itemId);
226 } else { 288 } else {
227 handleTranslateOptionPostSnackbar(itemId); 289 handleTranslateOptionPostSnackbar(itemId);
228 } 290 }
229 return; 291 return;
230 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE: 292 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
293 recordInfobarAction(INFOBAR_NEVER_TRANSLATE);
294 recordInfobarLanguageData(
295 INFOBAR_HISTOGRAM_NEVER_TRANSLATE_LANGUAGE, mOptions.sou rceLanguageCode());
231 createAndShowSnackbar( 296 createAndShowSnackbar(
232 getContext().getString(R.string.translate_snackbar_langu age_never, 297 getContext().getString(R.string.translate_snackbar_langu age_never,
233 mOptions.sourceLanguageName()), 298 mOptions.sourceLanguageName()),
234 Snackbar.UMA_TRANSLATE_NEVER, itemId); 299 Snackbar.UMA_TRANSLATE_NEVER, itemId);
235 return; 300 return;
236 case TranslateMenu.ID_OVERFLOW_NEVER_SITE: 301 case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
302 recordInfobarAction(INFOBAR_NEVER_TRANSLATE_SITE);
237 createAndShowSnackbar( 303 createAndShowSnackbar(
238 getContext().getString(R.string.translate_snackbar_site_ never), 304 getContext().getString(R.string.translate_snackbar_site_ never),
239 Snackbar.UMA_TRANSLATE_NEVER_SITE, itemId); 305 Snackbar.UMA_TRANSLATE_NEVER_SITE, itemId);
240 return; 306 return;
241 case TranslateMenu.ID_OVERFLOW_NOT_THIS_LANGUAGE: 307 case TranslateMenu.ID_OVERFLOW_NOT_THIS_LANGUAGE:
308 recordInfobarAction(INFOBAR_PAGE_NOT_IN);
242 initMenuHelper(TranslateMenu.MENU_SOURCE_LANGUAGE); 309 initMenuHelper(TranslateMenu.MENU_SOURCE_LANGUAGE);
243 mLanguageMenuHelper.show(TranslateMenu.MENU_SOURCE_LANGUAGE); 310 mLanguageMenuHelper.show(TranslateMenu.MENU_SOURCE_LANGUAGE);
244 return; 311 return;
245 default: 312 default:
246 assert false : "Unexpected overflow menu code"; 313 assert false : "Unexpected overflow menu code";
247 } 314 }
248 } 315 }
249 316
250 @Override 317 @Override
251 public void onTargetMenuItemClicked(String code) { 318 public void onTargetMenuItemClicked(String code) {
252 // Reset target code in both UI and native. 319 // Reset target code in both UI and native.
253 if (mOptions.setTargetLanguage(code)) { 320 if (mOptions.setTargetLanguage(code)) {
321 recordInfobarLanguageData(
322 INFOBAR_HISTOGRAM_MORE_LANGUAGES_LANGUAGE, mOptions.targetLa nguageCode());
254 nativeApplyStringTranslateOption( 323 nativeApplyStringTranslateOption(
255 mNativeTranslateInfoBarPtr, TranslateOption.TARGET_CODE, cod e); 324 mNativeTranslateInfoBarPtr, TranslateOption.TARGET_CODE, cod e);
256 // Adjust UI. 325 // Adjust UI.
257 mTabLayout.replaceTabTitle(TARGET_TAB_INDEX, mOptions.getRepresentat ionFromCode(code)); 326 mTabLayout.replaceTabTitle(TARGET_TAB_INDEX, mOptions.getRepresentat ionFromCode(code));
258 startTranslating(mTabLayout.getSelectedTabPosition()); 327 startTranslating(mTabLayout.getSelectedTabPosition());
259 } 328 }
260 } 329 }
261 330
262 @Override 331 @Override
263 public void onSourceMenuItemClicked(String code) { 332 public void onSourceMenuItemClicked(String code) {
264 // Reset source code in both UI and native. 333 // Reset source code in both UI and native.
265 if (mOptions.setSourceLanguage(code)) { 334 if (mOptions.setSourceLanguage(code)) {
335 recordInfobarLanguageData(
336 INFOBAR_HISTOGRAM_PAGE_NOT_IN_LANGUAGE, mOptions.sourceLangu ageCode());
266 nativeApplyStringTranslateOption( 337 nativeApplyStringTranslateOption(
267 mNativeTranslateInfoBarPtr, TranslateOption.SOURCE_CODE, cod e); 338 mNativeTranslateInfoBarPtr, TranslateOption.SOURCE_CODE, cod e);
268 // Adjust UI. 339 // Adjust UI.
269 mTabLayout.replaceTabTitle(SOURCE_TAB_INDEX, mOptions.getRepresentat ionFromCode(code)); 340 mTabLayout.replaceTabTitle(SOURCE_TAB_INDEX, mOptions.getRepresentat ionFromCode(code));
270 startTranslating(mTabLayout.getSelectedTabPosition()); 341 startTranslating(mTabLayout.getSelectedTabPosition());
271 } 342 }
272 } 343 }
273 344
274 private void createAndShowSnackbar(String title, int umaType, int itemId) { 345 private void createAndShowSnackbar(String title, int umaType, int itemId) {
275 if (getSnackbarManager() == null) { 346 if (getSnackbarManager() == null) {
276 // Directly apply menu option, if snackbar system is not working. 347 // Directly apply menu option, if snackbar system is not working.
277 handleTranslateOptionPostSnackbar(itemId); 348 handleTranslateOptionPostSnackbar(itemId);
278 return; 349 return;
279 } 350 }
351 switch (itemId) {
352 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
353 recordInfobarAction(INFOBAR_SNACKBAR_ALWAYS_TRANSLATE_IMPRESSION );
354 break;
355 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
356 recordInfobarAction(INFOBAR_SNACKBAR_NEVER_TRANSLATE_IMPRESSION) ;
357 break;
358 case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
359 recordInfobarAction(INFOBAR_SNACKBAR_NEVER_TRANSLATE_SITE_IMPRES SION);
360 break;
361 default:
362 assert false : "Unsupported Menu Item Id, to show snackbar.";
363 }
364
280 getSnackbarManager().showSnackbar( 365 getSnackbarManager().showSnackbar(
281 Snackbar.make(title, new TranslateSnackbarController(itemId), 366 Snackbar.make(title, new TranslateSnackbarController(itemId),
282 Snackbar.TYPE_NOTIFICATION, umaType) 367 Snackbar.TYPE_NOTIFICATION, umaType)
283 .setSingleLine(false) 368 .setSingleLine(false)
284 .setAction( 369 .setAction(
285 getContext().getString(R.string.translate_snackb ar_cancel), null)); 370 getContext().getString(R.string.translate_snackb ar_cancel), null));
286 } 371 }
287 372
288 private void handleTranslateOptionPostSnackbar(int itemId) { 373 private void handleTranslateOptionPostSnackbar(int itemId) {
289 switch (itemId) { 374 switch (itemId) {
290 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE: 375 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
291 mOptions.toggleAlwaysTranslateLanguageState( 376 mOptions.toggleAlwaysTranslateLanguageState(
292 !mOptions.alwaysTranslateLanguageState()); 377 !mOptions.alwaysTranslateLanguageState());
293 nativeApplyBoolTranslateOption(mNativeTranslateInfoBarPtr, 378 nativeApplyBoolTranslateOption(mNativeTranslateInfoBarPtr,
294 TranslateOption.ALWAYS_TRANSLATE, mOptions.alwaysTransla teLanguageState()); 379 TranslateOption.ALWAYS_TRANSLATE, mOptions.alwaysTransla teLanguageState());
295 return; 380 return;
296 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE: 381 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
297 nativeApplyBoolTranslateOption( 382 nativeApplyBoolTranslateOption(
298 mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSL ATE, true); 383 mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSL ATE, true);
299 return; 384 return;
300 case TranslateMenu.ID_OVERFLOW_NEVER_SITE: 385 case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
301 nativeApplyBoolTranslateOption( 386 nativeApplyBoolTranslateOption(
302 mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSL ATE_SITE, true); 387 mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSL ATE_SITE, true);
303 return; 388 return;
389 default:
390 assert false : "Unsupported Menu Item Id, in handle post snackba r";
304 } 391 }
305 } 392 }
306 393
394 private static void recordInfobarAction(int action) {
395 RecordHistogram.recordEnumeratedHistogram(
396 INFOBAR_HISTOGRAM, action, INFOBAR_HISTOGRAM_BOUNDARY);
397 }
398
399 private void recordInfobarLanguageData(String histogram, String langCode) {
400 Integer hashCode = mOptions.getUMAHashCodeFromCode(langCode);
401 if (hashCode != null) {
402 RecordHistogram.recordSparseSlowlyHistogram(histogram, hashCode);
403 }
404 }
405
307 private native void nativeApplyStringTranslateOption( 406 private native void nativeApplyStringTranslateOption(
308 long nativeTranslateCompactInfoBar, int option, String value); 407 long nativeTranslateCompactInfoBar, int option, String value);
309 private native void nativeApplyBoolTranslateOption( 408 private native void nativeApplyBoolTranslateOption(
310 long nativeTranslateCompactInfoBar, int option, boolean value); 409 long nativeTranslateCompactInfoBar, int option, boolean value);
311 } 410 }
OLDNEW
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698