Chromium Code Reviews| 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}; |
| + |
|
msw
2016/04/29 20:00:02
nit remove extra blank line
ftang
2016/04/29 22:37:02
Done.
|
| + |
| 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); |
|
msw
2016/04/29 20:00:02
Perhaps you can actually clear the pref value here
ftang
2016/04/29 22:37:02
Acknowledged.
|
| +} |
| + |
| 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 |
|
msw
2016/04/29 20:00:02
nit: no caps for 'bubble'; 'if the user denied it
ftang
2016/04/29 22:37:02
Done.
|
| + // 3 times or user ignored more than 10 times. |
| + return (GetTranslationDeniedCount(language) > 3) || |
|
msw
2016/04/29 20:00:02
Should this ever propagate to kPrefTranslateTooOft
ftang
2016/04/29 22:37:02
No
msw
2016/04/29 23:43:39
I'm not really sure how this is supposed to work,
|
| + (GetTranslationIgnoredCount(language) > 10); |
| + } else { |
| + const base::DictionaryValue* dict = |
| + prefs_->GetDictionary(kPrefTranslateTooOftenDeniedForLanguage); |
| + bool result = false; |
| + return dict->GetBoolean(language, &result) ? result : false; |
| + } |
| } |
| void TranslatePrefs::ResetDenialState() { |
|
msw
2016/04/29 20:00:02
Shouldn't this also have some effect on the new UI
ftang
2016/04/29 22:37:02
no
msw
2016/04/29 23:43:39
Ditto, I don't know understand why 'reset denial s
|
| @@ -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, |