Commit b66775d8 authored by Nicolas Ouellet-payeur's avatar Nicolas Ouellet-payeur Committed by Commit Bot

Disable "Always translate" and don't save "never translate" in incognito

We already don't save "Never translate <website>". We want the same behavior for
"Never translate <language>" in order to be consistent. Additionally, the
"Always translate" button doesn't work in incognito mode.

1. Remove the "Always translate <language>" button in incognito mode, on desktop
   and Android.

2. Don't persist "Never translate <language>" if clicked in incognito mode, but
   still apply it to the current session.

Needs more work to update the iOS UI.

Bug: 793925
Change-Id: I53f9bbd8dbcf605ef0682bf993b2835ab0ba92aa
Reviewed-on: https://chromium-review.googlesource.com/1115204Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Reviewed-by: default avataranthonyvd <anthonyvd@chromium.org>
Reviewed-by: default avatarGabriel Charette <gab@chromium.org>
Reviewed-by: default avatarHajime Hoshi <hajimehoshi@chromium.org>
Commit-Queue: Nicolas Ouellet-Payeur <nicolaso@chromium.org>
Cr-Commit-Position: refs/heads/master@{#571183}
parent acbcc2c4
...@@ -256,18 +256,19 @@ public class TranslateCompactInfoBar extends InfoBar ...@@ -256,18 +256,19 @@ public class TranslateCompactInfoBar extends InfoBar
} }
private void initMenuHelper(int menuType) { private void initMenuHelper(int menuType) {
boolean isIncognito = nativeIsIncognito(mNativeTranslateInfoBarPtr);
switch (menuType) { switch (menuType) {
case TranslateMenu.MENU_OVERFLOW: case TranslateMenu.MENU_OVERFLOW:
if (mOverflowMenuHelper == null) { if (mOverflowMenuHelper == null) {
mOverflowMenuHelper = mOverflowMenuHelper = new TranslateMenuHelper(
new TranslateMenuHelper(getContext(), mMenuButton, mOptions, this); getContext(), mMenuButton, mOptions, this, isIncognito);
} }
return; return;
case TranslateMenu.MENU_TARGET_LANGUAGE: case TranslateMenu.MENU_TARGET_LANGUAGE:
case TranslateMenu.MENU_SOURCE_LANGUAGE: case TranslateMenu.MENU_SOURCE_LANGUAGE:
if (mLanguageMenuHelper == null) { if (mLanguageMenuHelper == null) {
mLanguageMenuHelper = mLanguageMenuHelper = new TranslateMenuHelper(
new TranslateMenuHelper(getContext(), mMenuButton, mOptions, this); getContext(), mMenuButton, mOptions, this, isIncognito);
} }
return; return;
default: default:
...@@ -599,4 +600,5 @@ public class TranslateCompactInfoBar extends InfoBar ...@@ -599,4 +600,5 @@ public class TranslateCompactInfoBar extends InfoBar
long nativeTranslateCompactInfoBar, int option, boolean value); long nativeTranslateCompactInfoBar, int option, boolean value);
private native boolean nativeShouldAutoNeverTranslate( private native boolean nativeShouldAutoNeverTranslate(
long nativeTranslateCompactInfoBar, boolean menuExpanded); long nativeTranslateCompactInfoBar, boolean menuExpanded);
private native boolean nativeIsIncognito(long nativeTranslateCompactInfoBar);
} }
...@@ -55,28 +55,20 @@ public final class TranslateMenu { ...@@ -55,28 +55,20 @@ public final class TranslateMenu {
public static final int ID_OVERFLOW_NEVER_LANGUAGE = 3; public static final int ID_OVERFLOW_NEVER_LANGUAGE = 3;
public static final int ID_OVERFLOW_NOT_THIS_LANGUAGE = 4; public static final int ID_OVERFLOW_NOT_THIS_LANGUAGE = 4;
private static final List<MenuItem> OVERFLOW_MENU = new ArrayList<MenuItem>();
/** /**
* Build overflow menu item list. * Build overflow menu item list.
*/ */
static List<MenuItem> getOverflowMenu() { static List<MenuItem> getOverflowMenu(boolean isIncognito) {
// Load overflow menu item if it's empty. List<MenuItem> menu = new ArrayList<MenuItem>();
synchronized (OVERFLOW_MENU) { menu.add(new MenuItem(ITEM_CHECKBOX_OPTION, ID_OVERFLOW_MORE_LANGUAGE, true));
if (OVERFLOW_MENU.isEmpty()) { if (!isIncognito) {
OVERFLOW_MENU.add( // "Always translate" does nothing in incognito mode, so just hide it.
new MenuItem(ITEM_CHECKBOX_OPTION, ID_OVERFLOW_MORE_LANGUAGE, true)); menu.add(new MenuItem(ITEM_CHECKBOX_OPTION, ID_OVERFLOW_ALWAYS_TRANSLATE, false));
OVERFLOW_MENU.add(
new MenuItem(ITEM_CHECKBOX_OPTION, ID_OVERFLOW_ALWAYS_TRANSLATE, false));
OVERFLOW_MENU.add(
new MenuItem(ITEM_CHECKBOX_OPTION, ID_OVERFLOW_NEVER_LANGUAGE, false));
OVERFLOW_MENU.add(
new MenuItem(ITEM_CHECKBOX_OPTION, ID_OVERFLOW_NEVER_SITE, false));
OVERFLOW_MENU.add(
new MenuItem(ITEM_CHECKBOX_OPTION, ID_OVERFLOW_NOT_THIS_LANGUAGE, false));
}
} }
return OVERFLOW_MENU; menu.add(new MenuItem(ITEM_CHECKBOX_OPTION, ID_OVERFLOW_NEVER_LANGUAGE, false));
menu.add(new MenuItem(ITEM_CHECKBOX_OPTION, ID_OVERFLOW_NEVER_SITE, false));
menu.add(new MenuItem(ITEM_CHECKBOX_OPTION, ID_OVERFLOW_NOT_THIS_LANGUAGE, false));
return menu;
} }
private TranslateMenu() {} private TranslateMenu() {}
......
...@@ -38,6 +38,7 @@ public class TranslateMenuHelper implements AdapterView.OnItemClickListener { ...@@ -38,6 +38,7 @@ public class TranslateMenuHelper implements AdapterView.OnItemClickListener {
private TranslateMenuAdapter mAdapter; private TranslateMenuAdapter mAdapter;
private View mAnchorView; private View mAnchorView;
private ListPopupWindow mPopup; private ListPopupWindow mPopup;
private boolean mIsIncognito;
/** /**
* Interface for receiving the click event of menu item. * Interface for receiving the click event of menu item.
...@@ -49,11 +50,12 @@ public class TranslateMenuHelper implements AdapterView.OnItemClickListener { ...@@ -49,11 +50,12 @@ public class TranslateMenuHelper implements AdapterView.OnItemClickListener {
} }
public TranslateMenuHelper(Context context, View anchorView, TranslateOptions options, public TranslateMenuHelper(Context context, View anchorView, TranslateOptions options,
TranslateMenuListener itemListener) { TranslateMenuListener itemListener, boolean isIncognito) {
mContextWrapper = new ContextThemeWrapper(context, R.style.OverflowMenuTheme); mContextWrapper = new ContextThemeWrapper(context, R.style.OverflowMenuTheme);
mAnchorView = anchorView; mAnchorView = anchorView;
mOptions = options; mOptions = options;
mMenuListener = itemListener; mMenuListener = itemListener;
mIsIncognito = isIncognito;
} }
/** /**
...@@ -63,7 +65,7 @@ public class TranslateMenuHelper implements AdapterView.OnItemClickListener { ...@@ -63,7 +65,7 @@ public class TranslateMenuHelper implements AdapterView.OnItemClickListener {
List<TranslateMenu.MenuItem> menuList = new ArrayList<TranslateMenu.MenuItem>(); List<TranslateMenu.MenuItem> menuList = new ArrayList<TranslateMenu.MenuItem>();
if (menuType == TranslateMenu.MENU_OVERFLOW) { if (menuType == TranslateMenu.MENU_OVERFLOW) {
// TODO(googleo): Add language short list above static menu after its data is ready. // TODO(googleo): Add language short list above static menu after its data is ready.
menuList.addAll(TranslateMenu.getOverflowMenu()); menuList.addAll(TranslateMenu.getOverflowMenu(mIsIncognito));
} else { } else {
for (int i = 0; i < mOptions.allLanguages().size(); ++i) { for (int i = 0; i < mOptions.allLanguages().size(); ++i) {
String code = mOptions.allLanguages().get(i).mLanguageCode; String code = mOptions.allLanguages().get(i).mLanguageCode;
......
...@@ -43,6 +43,10 @@ CreateIncognitoPrefServiceSyncable( ...@@ -43,6 +43,10 @@ CreateIncognitoPrefServiceSyncable(
overlay_pref_names.push_back(prefs::kSaveFileDefaultDirectory); overlay_pref_names.push_back(prefs::kSaveFileDefaultDirectory);
overlay_pref_names.push_back( overlay_pref_names.push_back(
translate::TranslatePrefs::kPrefTranslateSiteBlacklist); translate::TranslatePrefs::kPrefTranslateSiteBlacklist);
overlay_pref_names.push_back(
translate::TranslatePrefs::kPrefTranslateBlockedLanguages);
overlay_pref_names.push_back(
translate::TranslatePrefs::kPrefTranslateWhitelists);
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
overlay_pref_names.push_back(proxy_config::prefs::kProxy); overlay_pref_names.push_back(proxy_config::prefs::kProxy);
#endif #endif
......
...@@ -12,9 +12,11 @@ ...@@ -12,9 +12,11 @@
#include "base/android/jni_array.h" #include "base/android/jni_array.h"
#include "base/android/jni_string.h" #include "base/android/jni_string.h"
#include "base/android/jni_weak_ref.h" #include "base/android/jni_weak_ref.h"
#include "chrome/browser/infobars/infobar_service.h"
#include "chrome/browser/translate/android/translate_utils.h" #include "chrome/browser/translate/android/translate_utils.h"
#include "components/translate/core/browser/translate_infobar_delegate.h" #include "components/translate/core/browser/translate_infobar_delegate.h"
#include "components/variations/variations_associated_data.h" #include "components/variations/variations_associated_data.h"
#include "content/public/browser/browser_context.h"
#include "jni/TranslateCompactInfoBar_jni.h" #include "jni/TranslateCompactInfoBar_jni.h"
using base::android::JavaParamRef; using base::android::JavaParamRef;
...@@ -211,6 +213,17 @@ jboolean TranslateCompactInfoBar::ShouldAutoNeverTranslate( ...@@ -211,6 +213,17 @@ jboolean TranslateCompactInfoBar::ShouldAutoNeverTranslate(
return never_translate; return never_translate;
} }
// Returns true if the current tab is an incognito tab.
jboolean TranslateCompactInfoBar::IsIncognito(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj) {
content::WebContents* web_contents =
InfoBarService::WebContentsFromInfoBar(this);
if (!web_contents)
return false;
return web_contents->GetBrowserContext()->IsOffTheRecord();
}
int TranslateCompactInfoBar::GetParam(const std::string& paramName, int TranslateCompactInfoBar::GetParam(const std::string& paramName,
int default_value) { int default_value) {
std::map<std::string, std::string> params; std::map<std::string, std::string> params;
......
...@@ -47,6 +47,10 @@ class TranslateCompactInfoBar ...@@ -47,6 +47,10 @@ class TranslateCompactInfoBar
const base::android::JavaParamRef<jobject>& obj, const base::android::JavaParamRef<jobject>& obj,
jboolean menu_expanded); jboolean menu_expanded);
// Returns true if the current tab is an incognito tab.
jboolean IsIncognito(JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj);
// TranslateInfoBarDelegate::Observer implementation. // TranslateInfoBarDelegate::Observer implementation.
void OnTranslateStepChanged(translate::TranslateStep step, void OnTranslateStepChanged(translate::TranslateStep step,
translate::TranslateErrors::Type error_type) override; translate::TranslateErrors::Type error_type) override;
......
...@@ -359,11 +359,15 @@ void TranslateBubbleView::ShowOptionsMenu(views::Button* source) { ...@@ -359,11 +359,15 @@ void TranslateBubbleView::ShowOptionsMenu(views::Button* source) {
// is not showing, which invalidates these text strings. // is not showing, which invalidates these text strings.
options_menu_model_.reset(new ui::SimpleMenuModel(this)); options_menu_model_.reset(new ui::SimpleMenuModel(this));
// Don't show "Always translate <language>" in incognito mode, because it
// doesn't do anything anyways.
if (!is_in_incognito_window_) {
options_menu_model_->AddCheckItem( options_menu_model_->AddCheckItem(
OptionsMenuItem::ALWAYS_TRANSLATE_LANGUAGE, OptionsMenuItem::ALWAYS_TRANSLATE_LANGUAGE,
l10n_util::GetStringFUTF16( l10n_util::GetStringFUTF16(
IDS_TRANSLATE_BUBBLE_ALWAYS_TRANSLATE_LANG, IDS_TRANSLATE_BUBBLE_ALWAYS_TRANSLATE_LANG,
model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()))); model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex())));
}
options_menu_model_->AddItem( options_menu_model_->AddItem(
OptionsMenuItem::NEVER_TRANSLATE_LANGUAGE, OptionsMenuItem::NEVER_TRANSLATE_LANGUAGE,
...@@ -371,8 +375,6 @@ void TranslateBubbleView::ShowOptionsMenu(views::Button* source) { ...@@ -371,8 +375,6 @@ void TranslateBubbleView::ShowOptionsMenu(views::Button* source) {
IDS_TRANSLATE_BUBBLE_NEVER_TRANSLATE_LANG, IDS_TRANSLATE_BUBBLE_NEVER_TRANSLATE_LANG,
model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()))); model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex())));
// TODO(https://crbug.com/793925): Blacklisting should probably not be
// possible in incognito mode as it leaves a trace of the user.
if (model_->CanBlacklistSite()) { if (model_->CanBlacklistSite()) {
options_menu_model_->AddItemWithStringId( options_menu_model_->AddItemWithStringId(
OptionsMenuItem::NEVER_TRANSLATE_SITE, OptionsMenuItem::NEVER_TRANSLATE_SITE,
......
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