| Index: components/translate/core/browser/translate_prefs.cc
|
| diff --git a/components/translate/core/browser/translate_prefs.cc b/components/translate/core/browser/translate_prefs.cc
|
| index 436ca076c22fb6bdce50cb573ec94a4cca202004..731289b63fbf6a306ebfa3dbe8581a03fd845cdc 100644
|
| --- a/components/translate/core/browser/translate_prefs.cc
|
| +++ b/components/translate/core/browser/translate_prefs.cc
|
| @@ -26,6 +26,8 @@ const char TranslatePrefs::kPrefTranslateWhitelists[] =
|
| "translate_whitelists";
|
| const char TranslatePrefs::kPrefTranslateDeniedCount[] =
|
| "translate_denied_count_for_language";
|
| +const char TranslatePrefs::kPrefTranslateIgnoredCount[] =
|
| + "translate_ignored_count_for_language";
|
| const char TranslatePrefs::kPrefTranslateAcceptedCount[] =
|
| "translate_accepted_count";
|
| const char TranslatePrefs::kPrefTranslateBlockedLanguages[] =
|
| @@ -96,6 +98,10 @@ void ExpandLanguageCodes(const std::vector<std::string>& languages,
|
|
|
| } // namespace
|
|
|
| +const base::Feature kTranslateUI2016Q2{
|
| + "TranslateUI2016Q2", base::FEATURE_DISABLED_BY_DEFAULT};
|
| +
|
| +
|
| DenialTimeUpdate::DenialTimeUpdate(PrefService* prefs,
|
| const std::string& language,
|
| size_t max_denial_count)
|
| @@ -182,6 +188,7 @@ void TranslatePrefs::ResetToDefaults() {
|
| const std::string& language = *it;
|
| ResetTranslationAcceptedCount(language);
|
| ResetTranslationDeniedCount(language);
|
| + ResetTranslationIgnoredCount(language);
|
| }
|
|
|
| prefs_->ClearPref(kPrefTranslateLastDeniedTimeForLanguage);
|
| @@ -316,6 +323,29 @@ void TranslatePrefs::ResetTranslationDeniedCount(const std::string& language) {
|
| update.Get()->SetInteger(language, 0);
|
| }
|
|
|
| +int TranslatePrefs::GetTranslationIgnoredCount(
|
| + const std::string& language) const {
|
| + const base::DictionaryValue* dict =
|
| + prefs_->GetDictionary(kPrefTranslateIgnoredCount);
|
| + int count = 0;
|
| + return dict->GetInteger(language, &count) ? count : 0;
|
| +}
|
| +
|
| +void TranslatePrefs::IncrementTranslationIgnoredCount(
|
| + const std::string& language) {
|
| + DictionaryPrefUpdate update(prefs_, kPrefTranslateIgnoredCount);
|
| + base::DictionaryValue* dict = update.Get();
|
| +
|
| + int count = 0;
|
| + dict->GetInteger(language, &count);
|
| + dict->SetInteger(language, count + 1);
|
| +}
|
| +
|
| +void TranslatePrefs::ResetTranslationIgnoredCount(const std::string& language) {
|
| + DictionaryPrefUpdate update(prefs_, kPrefTranslateIgnoredCount);
|
| + update.Get()->SetInteger(language, 0);
|
| +}
|
| +
|
| int TranslatePrefs::GetTranslationAcceptedCount(const std::string& language) {
|
| const base::DictionaryValue* dict =
|
| prefs_->GetDictionary(kPrefTranslateAcceptedCount);
|
| @@ -358,10 +388,17 @@ void TranslatePrefs::UpdateLastDeniedTime(const std::string& language) {
|
| }
|
|
|
| bool TranslatePrefs::IsTooOftenDenied(const std::string& language) const {
|
| - const base::DictionaryValue* dict =
|
| - prefs_->GetDictionary(kPrefTranslateTooOftenDeniedForLanguage);
|
| - bool result = false;
|
| - return dict->GetBoolean(language, &result) ? result : false;
|
| + if (base::FeatureList::IsEnabled(kTranslateUI2016Q2)) {
|
| + // In the new logic, we only hide the Bubble if user denied for more than
|
| + // 3 times or user ignored more than 10 times.
|
| + return (GetTranslationDeniedCount(language) > 3) ||
|
| + (GetTranslationIgnoredCount(language) > 10);
|
| + } else {
|
| + const base::DictionaryValue* dict =
|
| + prefs_->GetDictionary(kPrefTranslateTooOftenDeniedForLanguage);
|
| + bool result = false;
|
| + return dict->GetBoolean(language, &result) ? result : false;
|
| + }
|
| }
|
|
|
| void TranslatePrefs::ResetDenialState() {
|
| @@ -453,6 +490,9 @@ void TranslatePrefs::RegisterProfilePrefs(
|
| kPrefTranslateDeniedCount,
|
| user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
| registry->RegisterDictionaryPref(
|
| + kPrefTranslateIgnoredCount,
|
| + user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
| + registry->RegisterDictionaryPref(
|
| kPrefTranslateAcceptedCount,
|
| user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
| registry->RegisterListPref(kPrefTranslateBlockedLanguages,
|
|
|