| 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 bb8dd743df12bf18f9e4eae9e67cd9c5f73dc54c..3e78d5c8a4c8e89568ed76276415470477880f49 100644
|
| --- a/components/translate/core/browser/translate_prefs.cc
|
| +++ b/components/translate/core/browser/translate_prefs.cc
|
| @@ -27,6 +27,10 @@ const char TranslatePrefs::kPrefTranslateAcceptedCount[] =
|
| "translate_accepted_count";
|
| const char TranslatePrefs::kPrefTranslateBlockedLanguages[] =
|
| "translate_blocked_languages";
|
| +const char TranslatePrefs::kPrefTranslateLastDeniedTime[] =
|
| + "translate_last_denied_time";
|
| +const char TranslatePrefs::kPrefTranslateTooOftenDenied[] =
|
| + "translate_too_often_denied";
|
|
|
| namespace {
|
|
|
| @@ -103,6 +107,9 @@ void TranslatePrefs::ResetToDefaults() {
|
| ResetTranslationAcceptedCount(language);
|
| ResetTranslationDeniedCount(language);
|
| }
|
| +
|
| + prefs_->ClearPref(kPrefTranslateLastDeniedTime);
|
| + prefs_->ClearPref(kPrefTranslateTooOftenDenied);
|
| }
|
|
|
| bool TranslatePrefs::IsBlockedLanguage(
|
| @@ -255,6 +262,22 @@ void TranslatePrefs::ResetTranslationAcceptedCount(
|
| update.Get()->SetInteger(language, 0);
|
| }
|
|
|
| +void TranslatePrefs::UpdateLastDeniedTime() {
|
| + if (IsTooOftenDenied())
|
| + return;
|
| +
|
| + double time = prefs_->GetDouble(kPrefTranslateLastDeniedTime);
|
| + base::Time last_closed_time = base::Time::FromJsTime(time);
|
| + base::Time now = base::Time::Now();
|
| + prefs_->SetDouble(kPrefTranslateLastDeniedTime, now.ToJsTime());
|
| + if (now - last_closed_time <= base::TimeDelta::FromDays(1))
|
| + prefs_->SetBoolean(kPrefTranslateTooOftenDenied, true);
|
| +}
|
| +
|
| +bool TranslatePrefs::IsTooOftenDenied() const {
|
| + return prefs_->GetBoolean(kPrefTranslateTooOftenDenied);
|
| +}
|
| +
|
| void TranslatePrefs::GetLanguageList(std::vector<std::string>* languages) {
|
| DCHECK(languages);
|
| DCHECK(languages->empty());
|
| @@ -335,6 +358,12 @@ void TranslatePrefs::RegisterProfilePrefs(
|
| user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
| registry->RegisterListPref(kPrefTranslateBlockedLanguages,
|
| user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
| + registry->RegisterDoublePref(
|
| + kPrefTranslateLastDeniedTime, 0,
|
| + user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
|
| + registry->RegisterBooleanPref(
|
| + kPrefTranslateTooOftenDenied, false,
|
| + user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
| }
|
|
|
| // static
|
|
|