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

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 Integer INFOBAR_IMPRESSION = 0;
58 private static final Integer INFOBAR_TRANSLATE = 1;
59 private static final Integer INFOBAR_DECLINE = 2;
60 private static final Integer INFOBAR_OPTIONS = 3;
61 private static final Integer INFOBAR_MORE_LANGUAGES = 4;
62 private static final Integer INFOBAR_MORE_LANGUAGES_TRANSLATE = 5;
63 private static final Integer INFOBAR_PAGE_NOT_IN = 6;
64 private static final Integer INFOBAR_ALWAYS_TRANSLATE = 7;
65 private static final Integer INFOBAR_NEVER_TRANSLATE = 8;
66 private static final Integer INFOBAR_NEVER_TRANSLATE_SITE = 9;
67 private static final Integer INFOBAR_SCROLL_HIDE = 10;
68 private static final Integer INFOBAR_SCROLL_SHOW = 11;
69 private static final Integer INFOBAR_REVERT = 12;
70 private static final Integer INFOBAR_SNACKBAR_ALWAYS_TRANSLATE_IMPRESSION = 13;
71 private static final Integer INFOBAR_SNACKBAR_NEVER_TRANSLATE_IMPRESSION = 1 4;
72 private static final Integer INFOBAR_SNACKBAR_NEVER_TRANSLATE_SITE_IMPRESSIO N = 15;
73 private static final Integer INFOBAR_SNACKBAR_CANCEL_ALWAYS = 16;
74 private static final Integer INFOBAR_SNACKBAR_CANCEL_NEVER_SITE = 17;
75 private static final Integer INFOBAR_SNACKBAR_CANCEL_NEVER = 18;
76 private static final Integer 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 82
44 private TintedImageButton mMenuButton; 83 private TintedImageButton mMenuButton;
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 }
63 } 111 }
64 }; 112 };
65 113
66 @CalledByNative 114 @CalledByNative
67 private static InfoBar create(int initialStep, String sourceLanguageCode, 115 private static InfoBar create(int initialStep, String sourceLanguageCode,
68 String targetLanguageCode, boolean alwaysTranslate, boolean triggere dFromMenu, 116 String targetLanguageCode, boolean alwaysTranslate, boolean triggere dFromMenu,
69 String[] languages, String[] codes) { 117 String[] languages, String[] codes, int[] hashCodes) {
118 recordInfobarAction(INFOBAR_IMPRESSION);
70 return new TranslateCompactInfoBar(initialStep, sourceLanguageCode, targ etLanguageCode, 119 return new TranslateCompactInfoBar(initialStep, sourceLanguageCode, targ etLanguageCode,
71 alwaysTranslate, triggeredFromMenu, languages, codes); 120 alwaysTranslate, triggeredFromMenu, languages, codes, hashCodes) ;
72 } 121 }
73 122
74 TranslateCompactInfoBar(int initialStep, String sourceLanguageCode, String t argetLanguageCode, 123 TranslateCompactInfoBar(int initialStep, String sourceLanguageCode, String t argetLanguageCode,
75 boolean alwaysTranslate, boolean triggeredFromMenu, String[] languag es, 124 boolean alwaysTranslate, boolean triggeredFromMenu, String[] languag es, String[] codes,
76 String[] codes) { 125 int[] hashCodes) {
77 super(R.drawable.infobar_translate_compact, null, null); 126 super(R.drawable.infobar_translate_compact, null, null);
127
78 mInitialStep = initialStep; 128 mInitialStep = initialStep;
79 mOptions = TranslateOptions.create(sourceLanguageCode, targetLanguageCod e, languages, codes, 129 mOptions = TranslateOptions.create(sourceLanguageCode, targetLanguageCod e, languages, codes,
80 alwaysTranslate, triggeredFromMenu); 130 alwaysTranslate, triggeredFromMenu, hashCodes);
81 } 131 }
82 132
83 @Override 133 @Override
84 protected boolean usesCompactLayout() { 134 protected boolean usesCompactLayout() {
85 return true; 135 return true;
86 } 136 }
87 137
88 @Override 138 @Override
89 protected void createCompactLayoutContent(InfoBarCompactLayout parent) { 139 protected void createCompactLayoutContent(InfoBarCompactLayout parent) {
90 LinearLayout content = 140 LinearLayout content =
91 (LinearLayout) LayoutInflater.from(getContext()) 141 (LinearLayout) LayoutInflater.from(getContext())
92 .inflate(R.layout.infobar_translate_compact_content, par ent, false); 142 .inflate(R.layout.infobar_translate_compact_content, par ent, false);
93 143
94 mTabLayout = (TranslateTabLayout) content.findViewById(R.id.translate_in fobar_tabs); 144 mTabLayout = (TranslateTabLayout) content.findViewById(R.id.translate_in fobar_tabs);
95 mTabLayout.addTabs(mOptions.sourceLanguageName(), mOptions.targetLanguag eName()); 145 mTabLayout.addTabs(mOptions.sourceLanguageName(), mOptions.targetLanguag eName());
96 146
97 // Set translating status in the beginning for pages translated automati cally. 147 // Set translating status in the beginning for pages translated automati cally.
98 if (mInitialStep == TRANSLATING_INFOBAR) { 148 if (mInitialStep == TRANSLATING_INFOBAR) {
99 mTabLayout.getTabAt(TARGET_TAB_INDEX).select(); 149 mTabLayout.getTabAt(TARGET_TAB_INDEX).select();
100 mTabLayout.showProgressBarOnTab(TARGET_TAB_INDEX); 150 mTabLayout.showProgressBarOnTab(TARGET_TAB_INDEX);
101 } 151 }
102 152
103 mTabLayout.addOnTabSelectedListener(this); 153 mTabLayout.addOnTabSelectedListener(this);
104 154
105 mMenuButton = (TintedImageButton) content.findViewById(R.id.translate_in fobar_menu_button); 155 mMenuButton = (TintedImageButton) content.findViewById(R.id.translate_in fobar_menu_button);
106 mMenuButton.setOnClickListener(new OnClickListener() { 156 mMenuButton.setOnClickListener(new OnClickListener() {
107 @Override 157 @Override
108 public void onClick(View v) { 158 public void onClick(View v) {
159 recordInfobarAction(INFOBAR_OPTIONS);
109 initMenuHelper(TranslateMenu.MENU_OVERFLOW); 160 initMenuHelper(TranslateMenu.MENU_OVERFLOW);
110 mOverflowMenuHelper.show(TranslateMenu.MENU_OVERFLOW); 161 mOverflowMenuHelper.show(TranslateMenu.MENU_OVERFLOW);
111 } 162 }
112 }); 163 });
113 164
114 parent.addContent(content, 1.0f); 165 parent.addContent(content, 1.0f);
115 } 166 }
116 167
117 private void initMenuHelper(int menuType) { 168 private void initMenuHelper(int menuType) {
118 switch (menuType) { 169 switch (menuType) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 @Override 219 @Override
169 protected void onNativeDestroyed() { 220 protected void onNativeDestroyed() {
170 mNativeTranslateInfoBarPtr = 0; 221 mNativeTranslateInfoBarPtr = 0;
171 super.onNativeDestroyed(); 222 super.onNativeDestroyed();
172 } 223 }
173 224
174 @Override 225 @Override
175 public void onTabSelected(TabLayout.Tab tab) { 226 public void onTabSelected(TabLayout.Tab tab) {
176 switch (tab.getPosition()) { 227 switch (tab.getPosition()) {
177 case SOURCE_TAB_INDEX: 228 case SOURCE_TAB_INDEX:
229 recordInfobarAction(INFOBAR_REVERT);
178 onButtonClicked(ActionType.TRANSLATE_SHOW_ORIGINAL); 230 onButtonClicked(ActionType.TRANSLATE_SHOW_ORIGINAL);
179 return; 231 return;
180 case TARGET_TAB_INDEX: 232 case TARGET_TAB_INDEX:
233 recordInfobarAction(INFOBAR_TRANSLATE);
234 recordSparseInfobarLanguageData(
235 INFOBAR_HISTOGRAM_TRANSLATE_LANGUAGE, mOptions.targetLan guageCode());
181 startTranslating(TARGET_TAB_INDEX); 236 startTranslating(TARGET_TAB_INDEX);
182 return; 237 return;
183 default: 238 default:
184 assert false : "Unexpected Tab Index"; 239 assert false : "Unexpected Tab Index";
185 } 240 }
186 } 241 }
187 242
188 @Override 243 @Override
189 public void onTabUnselected(TabLayout.Tab tab) {} 244 public void onTabUnselected(TabLayout.Tab tab) {}
190 245
191 @Override 246 @Override
192 public void onTabReselected(TabLayout.Tab tab) {} 247 public void onTabReselected(TabLayout.Tab tab) {}
193 248
194 @Override 249 @Override
195 public void onOverflowMenuItemClicked(int itemId) { 250 public void onOverflowMenuItemClicked(int itemId) {
196 switch (itemId) { 251 switch (itemId) {
197 case TranslateMenu.ID_OVERFLOW_MORE_LANGUAGE: 252 case TranslateMenu.ID_OVERFLOW_MORE_LANGUAGE:
253 recordInfobarAction(INFOBAR_MORE_LANGUAGES);
198 initMenuHelper(TranslateMenu.MENU_TARGET_LANGUAGE); 254 initMenuHelper(TranslateMenu.MENU_TARGET_LANGUAGE);
199 mLanguageMenuHelper.show(TranslateMenu.MENU_TARGET_LANGUAGE); 255 mLanguageMenuHelper.show(TranslateMenu.MENU_TARGET_LANGUAGE);
200 return; 256 return;
201 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE: 257 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
258 recordInfobarAction(INFOBAR_ALWAYS_TRANSLATE);
259 recordSparseInfobarLanguageData(
260 INFOBAR_HISTOGRAM_ALWAYS_TRANSLATE_LANGUAGE, mOptions.so urceLanguageCode());
202 // Only show snackbar when "Always Translate" is enabled. 261 // Only show snackbar when "Always Translate" is enabled.
203 if (!mOptions.alwaysTranslateLanguageState()) { 262 if (!mOptions.alwaysTranslateLanguageState()) {
204 createAndShowSnackbar( 263 createAndShowSnackbar(
205 getContext().getString(R.string.translate_snackbar_a lways_translate, 264 getContext().getString(R.string.translate_snackbar_a lways_translate,
206 mOptions.sourceLanguageName(), mOptions.targ etLanguageName()), 265 mOptions.sourceLanguageName(), mOptions.targ etLanguageName()),
207 Snackbar.UMA_TRANSLATE_ALWAYS, itemId); 266 Snackbar.UMA_TRANSLATE_ALWAYS, itemId);
208 } else { 267 } else {
209 handleTranslateOptionPostSnackbar(itemId); 268 handleTranslateOptionPostSnackbar(itemId);
210 } 269 }
211 return; 270 return;
212 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE: 271 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
272 recordInfobarAction(INFOBAR_NEVER_TRANSLATE);
273 recordSparseInfobarLanguageData(
274 INFOBAR_HISTOGRAM_NEVER_TRANSLATE_LANGUAGE, mOptions.sou rceLanguageCode());
213 createAndShowSnackbar( 275 createAndShowSnackbar(
214 getContext().getString(R.string.translate_snackbar_langu age_never, 276 getContext().getString(R.string.translate_snackbar_langu age_never,
215 mOptions.sourceLanguageName()), 277 mOptions.sourceLanguageName()),
216 Snackbar.UMA_TRANSLATE_NEVER, itemId); 278 Snackbar.UMA_TRANSLATE_NEVER, itemId);
217 return; 279 return;
218 case TranslateMenu.ID_OVERFLOW_NEVER_SITE: 280 case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
281 recordInfobarAction(INFOBAR_NEVER_TRANSLATE_SITE);
219 createAndShowSnackbar( 282 createAndShowSnackbar(
220 getContext().getString(R.string.translate_snackbar_site_ never), 283 getContext().getString(R.string.translate_snackbar_site_ never),
221 Snackbar.UMA_TRANSLATE_NEVER_SITE, itemId); 284 Snackbar.UMA_TRANSLATE_NEVER_SITE, itemId);
222 return; 285 return;
223 case TranslateMenu.ID_OVERFLOW_NOT_THIS_LANGUAGE: 286 case TranslateMenu.ID_OVERFLOW_NOT_THIS_LANGUAGE:
287 recordInfobarAction(INFOBAR_PAGE_NOT_IN);
224 initMenuHelper(TranslateMenu.MENU_SOURCE_LANGUAGE); 288 initMenuHelper(TranslateMenu.MENU_SOURCE_LANGUAGE);
225 mLanguageMenuHelper.show(TranslateMenu.MENU_SOURCE_LANGUAGE); 289 mLanguageMenuHelper.show(TranslateMenu.MENU_SOURCE_LANGUAGE);
226 return; 290 return;
227 default: 291 default:
228 assert false : "Unexpected overflow menu code"; 292 assert false : "Unexpected overflow menu code";
229 } 293 }
230 } 294 }
231 295
232 @Override 296 @Override
233 public void onTargetMenuItemClicked(String code) { 297 public void onTargetMenuItemClicked(String code) {
234 // Reset target code in both UI and native. 298 // Reset target code in both UI and native.
235 if (mOptions.setTargetLanguage(code)) { 299 if (mOptions.setTargetLanguage(code)) {
300 recordSparseInfobarLanguageData(
301 INFOBAR_HISTOGRAM_MORE_LANGUAGES_LANGUAGE, mOptions.targetLa nguageCode());
236 nativeApplyStringTranslateOption( 302 nativeApplyStringTranslateOption(
237 mNativeTranslateInfoBarPtr, TranslateOption.TARGET_CODE, cod e); 303 mNativeTranslateInfoBarPtr, TranslateOption.TARGET_CODE, cod e);
238 // Adjust UI. 304 // Adjust UI.
239 mTabLayout.replaceTabTitle(TARGET_TAB_INDEX, mOptions.getRepresentat ionFromCode(code)); 305 mTabLayout.replaceTabTitle(TARGET_TAB_INDEX, mOptions.getRepresentat ionFromCode(code));
240 startTranslating(mTabLayout.getSelectedTabPosition()); 306 startTranslating(mTabLayout.getSelectedTabPosition());
241 } 307 }
242 } 308 }
243 309
244 @Override 310 @Override
245 public void onSourceMenuItemClicked(String code) { 311 public void onSourceMenuItemClicked(String code) {
246 // Reset source code in both UI and native. 312 // Reset source code in both UI and native.
247 if (mOptions.setSourceLanguage(code)) { 313 if (mOptions.setSourceLanguage(code)) {
314 recordSparseInfobarLanguageData(
315 INFOBAR_HISTOGRAM_PAGE_NOT_IN_LANGUAGE, mOptions.sourceLangu ageCode());
248 nativeApplyStringTranslateOption( 316 nativeApplyStringTranslateOption(
249 mNativeTranslateInfoBarPtr, TranslateOption.SOURCE_CODE, cod e); 317 mNativeTranslateInfoBarPtr, TranslateOption.SOURCE_CODE, cod e);
250 // Adjust UI. 318 // Adjust UI.
251 mTabLayout.replaceTabTitle(SOURCE_TAB_INDEX, mOptions.getRepresentat ionFromCode(code)); 319 mTabLayout.replaceTabTitle(SOURCE_TAB_INDEX, mOptions.getRepresentat ionFromCode(code));
252 startTranslating(mTabLayout.getSelectedTabPosition()); 320 startTranslating(mTabLayout.getSelectedTabPosition());
253 } 321 }
254 } 322 }
255 323
256 private void createAndShowSnackbar(String title, int umaType, int itemId) { 324 private void createAndShowSnackbar(String title, int umaType, int itemId) {
257 if (getSnackbarManager() == null) { 325 if (getSnackbarManager() == null) {
258 // Directly apply menu option, if snackbar system is not working. 326 // Directly apply menu option, if snackbar system is not working.
259 handleTranslateOptionPostSnackbar(itemId); 327 handleTranslateOptionPostSnackbar(itemId);
260 return; 328 return;
261 } 329 }
330 switch (itemId) {
331 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
332 recordInfobarAction(INFOBAR_SNACKBAR_ALWAYS_TRANSLATE_IMPRESSION );
333 break;
334 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
335 recordInfobarAction(INFOBAR_SNACKBAR_NEVER_TRANSLATE_IMPRESSION) ;
336 break;
337 case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
338 recordInfobarAction(INFOBAR_SNACKBAR_NEVER_TRANSLATE_SITE_IMPRES SION);
339 break;
340 }
341
262 getSnackbarManager().showSnackbar( 342 getSnackbarManager().showSnackbar(
263 Snackbar.make(title, new TranslateSnackbarController(itemId), 343 Snackbar.make(title, new TranslateSnackbarController(itemId),
264 Snackbar.TYPE_NOTIFICATION, umaType) 344 Snackbar.TYPE_NOTIFICATION, umaType)
265 .setSingleLine(false) 345 .setSingleLine(false)
266 .setAction( 346 .setAction(
267 getContext().getString(R.string.translate_snackb ar_cancel), null)); 347 getContext().getString(R.string.translate_snackb ar_cancel), null));
268 } 348 }
269 349
270 private void handleTranslateOptionPostSnackbar(int itemId) { 350 private void handleTranslateOptionPostSnackbar(int itemId) {
271 switch (itemId) { 351 switch (itemId) {
272 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE: 352 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
273 mOptions.toggleAlwaysTranslateLanguageState( 353 mOptions.toggleAlwaysTranslateLanguageState(
274 !mOptions.alwaysTranslateLanguageState()); 354 !mOptions.alwaysTranslateLanguageState());
275 nativeApplyBoolTranslateOption(mNativeTranslateInfoBarPtr, 355 nativeApplyBoolTranslateOption(mNativeTranslateInfoBarPtr,
276 TranslateOption.ALWAYS_TRANSLATE, mOptions.alwaysTransla teLanguageState()); 356 TranslateOption.ALWAYS_TRANSLATE, mOptions.alwaysTransla teLanguageState());
277 return; 357 return;
278 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE: 358 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
279 nativeApplyBoolTranslateOption( 359 nativeApplyBoolTranslateOption(
280 mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSL ATE, true); 360 mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSL ATE, true);
281 return; 361 return;
282 case TranslateMenu.ID_OVERFLOW_NEVER_SITE: 362 case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
283 nativeApplyBoolTranslateOption( 363 nativeApplyBoolTranslateOption(
284 mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSL ATE_SITE, true); 364 mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSL ATE_SITE, true);
285 return; 365 return;
286 } 366 }
287 } 367 }
288 368
369 private static void recordInfobarAction(int action) {
370 RecordHistogram.recordEnumeratedHistogram(
371 INFOBAR_HISTOGRAM, action, INFOBAR_HISTOGRAM_BOUNDARY);
372 }
373
374 private void recordSparseInfobarLanguageData(String histogram, String langCo de) {
Ilya Sherman 2017/05/11 20:25:05 Optional nit: "Sparse" seems like an implementatio
ramyasharma 2017/05/12 01:50:10 Done.
375 Integer hashCode = mOptions.getUMAHashCodeRepresentationFromCode(langCod e);
376 if (hashCode != null) {
377 RecordHistogram.recordSparseSlowlyHistogram(histogram, hashCode);
378 }
379 }
380
289 private native void nativeApplyStringTranslateOption( 381 private native void nativeApplyStringTranslateOption(
290 long nativeTranslateCompactInfoBar, int option, String value); 382 long nativeTranslateCompactInfoBar, int option, String value);
291 private native void nativeApplyBoolTranslateOption( 383 private native void nativeApplyBoolTranslateOption(
292 long nativeTranslateCompactInfoBar, int option, boolean value); 384 long nativeTranslateCompactInfoBar, int option, boolean value);
293 } 385 }
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