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

Side by Side Diff: components/translate/core/browser/translate_prefs.cc

Issue 345743002: Translate: Hide the bubble if the user denies translating 2 times within 24 hours (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Renamed prefs names Created 6 years, 6 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "components/translate/core/browser/translate_prefs.h" 5 #include "components/translate/core/browser/translate_prefs.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "base/prefs/scoped_user_pref_update.h" 10 #include "base/prefs/scoped_user_pref_update.h"
11 #include "base/strings/string_split.h" 11 #include "base/strings/string_split.h"
12 #include "base/strings/string_util.h" 12 #include "base/strings/string_util.h"
13 #include "components/pref_registry/pref_registry_syncable.h" 13 #include "components/pref_registry/pref_registry_syncable.h"
14 #include "components/translate/core/browser/translate_accept_languages.h" 14 #include "components/translate/core/browser/translate_accept_languages.h"
15 #include "components/translate/core/browser/translate_download_manager.h" 15 #include "components/translate/core/browser/translate_download_manager.h"
16 #include "components/translate/core/common/translate_util.h" 16 #include "components/translate/core/common/translate_util.h"
17 17
18 const char TranslatePrefs::kPrefTranslateLanguageBlacklist[] = 18 const char TranslatePrefs::kPrefTranslateLanguageBlacklist[] =
19 "translate_language_blacklist"; 19 "translate_language_blacklist";
20 const char TranslatePrefs::kPrefTranslateSiteBlacklist[] = 20 const char TranslatePrefs::kPrefTranslateSiteBlacklist[] =
21 "translate_site_blacklist"; 21 "translate_site_blacklist";
22 const char TranslatePrefs::kPrefTranslateWhitelists[] = 22 const char TranslatePrefs::kPrefTranslateWhitelists[] =
23 "translate_whitelists"; 23 "translate_whitelists";
24 const char TranslatePrefs::kPrefTranslateDeniedCount[] = 24 const char TranslatePrefs::kPrefTranslateDeniedCount[] =
25 "translate_denied_count"; 25 "translate_denied_count";
26 const char TranslatePrefs::kPrefTranslateAcceptedCount[] = 26 const char TranslatePrefs::kPrefTranslateAcceptedCount[] =
27 "translate_accepted_count"; 27 "translate_accepted_count";
28 const char TranslatePrefs::kPrefTranslateBlockedLanguages[] = 28 const char TranslatePrefs::kPrefTranslateBlockedLanguages[] =
29 "translate_blocked_languages"; 29 "translate_blocked_languages";
30 const char TranslatePrefs::kPrefTranslateLastDeniedTime[] =
31 "translate_last_denied_time";
32 const char TranslatePrefs::kPrefTranslateTooOftenDenied[] =
33 "translate_too_often_denied";
30 34
31 namespace { 35 namespace {
32 36
33 void GetBlacklistedLanguages(const PrefService* prefs, 37 void GetBlacklistedLanguages(const PrefService* prefs,
34 std::vector<std::string>* languages) { 38 std::vector<std::string>* languages) {
35 DCHECK(languages); 39 DCHECK(languages);
36 DCHECK(languages->empty()); 40 DCHECK(languages->empty());
37 41
38 const char* key = TranslatePrefs::kPrefTranslateLanguageBlacklist; 42 const char* key = TranslatePrefs::kPrefTranslateLanguageBlacklist;
39 const base::ListValue* list = prefs->GetList(key); 43 const base::ListValue* list = prefs->GetList(key);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 ClearWhitelistedLanguagePairs(); 100 ClearWhitelistedLanguagePairs();
97 101
98 std::vector<std::string> languages; 102 std::vector<std::string> languages;
99 GetLanguageList(&languages); 103 GetLanguageList(&languages);
100 for (std::vector<std::string>::const_iterator it = languages.begin(); 104 for (std::vector<std::string>::const_iterator it = languages.begin();
101 it != languages.end(); ++it) { 105 it != languages.end(); ++it) {
102 const std::string& language = *it; 106 const std::string& language = *it;
103 ResetTranslationAcceptedCount(language); 107 ResetTranslationAcceptedCount(language);
104 ResetTranslationDeniedCount(language); 108 ResetTranslationDeniedCount(language);
105 } 109 }
110
111 prefs_->ClearPref(kPrefTranslateLastDeniedTime);
112 prefs_->ClearPref(kPrefTranslateTooOftenDenied);
106 } 113 }
107 114
108 bool TranslatePrefs::IsBlockedLanguage( 115 bool TranslatePrefs::IsBlockedLanguage(
109 const std::string& original_language) const { 116 const std::string& original_language) const {
110 return IsValueBlacklisted(kPrefTranslateBlockedLanguages, 117 return IsValueBlacklisted(kPrefTranslateBlockedLanguages,
111 original_language); 118 original_language);
112 } 119 }
113 120
114 void TranslatePrefs::BlockLanguage(const std::string& original_language) { 121 void TranslatePrefs::BlockLanguage(const std::string& original_language) {
115 BlacklistValue(kPrefTranslateBlockedLanguages, original_language); 122 BlacklistValue(kPrefTranslateBlockedLanguages, original_language);
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 dict->GetInteger(language, &count); 255 dict->GetInteger(language, &count);
249 dict->SetInteger(language, count + 1); 256 dict->SetInteger(language, count + 1);
250 } 257 }
251 258
252 void TranslatePrefs::ResetTranslationAcceptedCount( 259 void TranslatePrefs::ResetTranslationAcceptedCount(
253 const std::string& language) { 260 const std::string& language) {
254 DictionaryPrefUpdate update(prefs_, kPrefTranslateAcceptedCount); 261 DictionaryPrefUpdate update(prefs_, kPrefTranslateAcceptedCount);
255 update.Get()->SetInteger(language, 0); 262 update.Get()->SetInteger(language, 0);
256 } 263 }
257 264
265 void TranslatePrefs::UpdateLastDeniedTime() {
266 if (IsTooOftenDenied())
267 return;
268
269 double time = prefs_->GetDouble(kPrefTranslateLastDeniedTime);
270 base::Time last_closed_time = base::Time::FromJsTime(time);
271 base::Time now = base::Time::Now();
272 prefs_->SetDouble(kPrefTranslateLastDeniedTime, now.ToJsTime());
273 if (now - last_closed_time <= base::TimeDelta::FromDays(1))
274 prefs_->SetBoolean(kPrefTranslateTooOftenDenied, true);
275 }
276
277 bool TranslatePrefs::IsTooOftenDenied() const {
278 return prefs_->GetBoolean(kPrefTranslateTooOftenDenied);
279 }
280
258 void TranslatePrefs::GetLanguageList(std::vector<std::string>* languages) { 281 void TranslatePrefs::GetLanguageList(std::vector<std::string>* languages) {
259 DCHECK(languages); 282 DCHECK(languages);
260 DCHECK(languages->empty()); 283 DCHECK(languages->empty());
261 284
262 #if defined(OS_CHROMEOS) 285 #if defined(OS_CHROMEOS)
263 const char* key = preferred_languages_pref_.c_str(); 286 const char* key = preferred_languages_pref_.c_str();
264 #else 287 #else
265 const char* key = accept_languages_pref_.c_str(); 288 const char* key = accept_languages_pref_.c_str();
266 #endif 289 #endif
267 290
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 kPrefTranslateWhitelists, 351 kPrefTranslateWhitelists,
329 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 352 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
330 registry->RegisterDictionaryPref( 353 registry->RegisterDictionaryPref(
331 kPrefTranslateDeniedCount, 354 kPrefTranslateDeniedCount,
332 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 355 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
333 registry->RegisterDictionaryPref( 356 registry->RegisterDictionaryPref(
334 kPrefTranslateAcceptedCount, 357 kPrefTranslateAcceptedCount,
335 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 358 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
336 registry->RegisterListPref(kPrefTranslateBlockedLanguages, 359 registry->RegisterListPref(kPrefTranslateBlockedLanguages,
337 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 360 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
361 registry->RegisterDoublePref(
362 kPrefTranslateLastDeniedTime, 0,
363 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
364 registry->RegisterBooleanPref(
365 kPrefTranslateTooOftenDenied, false,
366 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
338 } 367 }
339 368
340 // static 369 // static
341 void TranslatePrefs::MigrateUserPrefs(PrefService* user_prefs, 370 void TranslatePrefs::MigrateUserPrefs(PrefService* user_prefs,
342 const char* accept_languages_pref) { 371 const char* accept_languages_pref) {
343 // Old format of kPrefTranslateWhitelists 372 // Old format of kPrefTranslateWhitelists
344 // - original language -> list of target langs to auto-translate 373 // - original language -> list of target langs to auto-translate
345 // - list of langs is in order of being enabled i.e. last in list is the 374 // - list of langs is in order of being enabled i.e. last in list is the
346 // most recent language that user enabled via 375 // most recent language that user enabled via
347 // Always translate |source_lang| to |target_lang|" 376 // Always translate |source_lang| to |target_lang|"
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 560
532 bool TranslatePrefs::IsListEmpty(const char* pref_id) const { 561 bool TranslatePrefs::IsListEmpty(const char* pref_id) const {
533 const base::ListValue* blacklist = prefs_->GetList(pref_id); 562 const base::ListValue* blacklist = prefs_->GetList(pref_id);
534 return (blacklist == NULL || blacklist->empty()); 563 return (blacklist == NULL || blacklist->empty());
535 } 564 }
536 565
537 bool TranslatePrefs::IsDictionaryEmpty(const char* pref_id) const { 566 bool TranslatePrefs::IsDictionaryEmpty(const char* pref_id) const {
538 const base::DictionaryValue* dict = prefs_->GetDictionary(pref_id); 567 const base::DictionaryValue* dict = prefs_->GetDictionary(pref_id);
539 return (dict == NULL || dict->empty()); 568 return (dict == NULL || dict->empty());
540 } 569 }
OLDNEW
« no previous file with comments | « components/translate/core/browser/translate_prefs.h ('k') | components/translate/core/browser/translate_ui_delegate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698