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

Unified Diff: chrome/browser/search/hotword_audio_history_handler.cc

Issue 800523002: [Hotword] Sync Audio History pref every 24 hours, when opening chrome://settings and . . . (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: switch param order Created 6 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/search/hotword_audio_history_handler.cc
diff --git a/chrome/browser/search/hotword_audio_history_handler.cc b/chrome/browser/search/hotword_audio_history_handler.cc
index b72d7d7fdd98903577b97e0d7aa4029fb0d8e7cb..5a272409b60edd2af412fd72df4d797d90b21a1b 100644
--- a/chrome/browser/search/hotword_audio_history_handler.cc
+++ b/chrome/browser/search/hotword_audio_history_handler.cc
@@ -14,9 +14,14 @@
using extensions::BrowserContextKeyedAPIFactory;
using extensions::HotwordPrivateEventService;
+// Max number of hours between audio history checks.
+static const int kHoursUntilNextAudioHistoryCheck = 24;
+
HotwordAudioHistoryHandler::HotwordAudioHistoryHandler(
- content::BrowserContext* context)
- : profile_(Profile::FromBrowserContext(context)),
+ content::BrowserContext* context,
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
+ : task_runner_(task_runner),
+ profile_(Profile::FromBrowserContext(context)),
weak_ptr_factory_(this) {
}
@@ -27,6 +32,28 @@ history::WebHistoryService* HotwordAudioHistoryHandler::GetWebHistory() {
return WebHistoryServiceFactory::GetForProfile(profile_);
}
+void HotwordAudioHistoryHandler::UpdateAudioHistoryState() {
+ GetAudioHistoryEnabled(
+ base::Bind(&HotwordAudioHistoryHandler::UpdateLocalPreference,
+ weak_ptr_factory_.GetWeakPtr()));
+ // Set the function to update in a day.
+ task_runner_->PostDelayedTask(
+ FROM_HERE,
+ base::Bind(&HotwordAudioHistoryHandler::UpdateAudioHistoryState,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::TimeDelta::FromHours(kHoursUntilNextAudioHistoryCheck));
+}
+
+void HotwordAudioHistoryHandler::UpdateLocalPreference(
+ bool success, bool new_enabled_value) {
+ // If the call was successful, set the last_successful time stamp and
Anand Mistry (off Chromium) 2014/12/13 00:29:49 What last_successful time stamp?
rpetterson 2014/12/13 01:12:02 Removed. Left over comment from when I was using a
+ // update the pref.
+ if (success) {
+ PrefService* prefs = profile_->GetPrefs();
+ prefs->SetBoolean(prefs::kHotwordAudioLoggingEnabled, new_enabled_value);
+ }
+}
+
void HotwordAudioHistoryHandler::GetAudioHistoryEnabled(
const HotwordAudioHistoryCallback& callback) {
history::WebHistoryService* web_history = GetWebHistory();
@@ -36,12 +63,10 @@ void HotwordAudioHistoryHandler::GetAudioHistoryEnabled(
weak_ptr_factory_.GetWeakPtr(),
callback));
} else {
- // If web_history is null, the user is not signed in so the opt-in
- // should be seen as false. Run the callback with false for success
- // and false for the enabled value.
+ // If web_history is null, the user is not signed in. Set the opt-in value
+ // to the last known value and run the callback with false for success.
PrefService* prefs = profile_->GetPrefs();
- prefs->SetBoolean(prefs::kHotwordAudioLoggingEnabled, false);
- callback.Run(false, false);
+ callback.Run(false, prefs->GetBoolean(prefs::kHotwordAudioLoggingEnabled));
}
}
@@ -58,31 +83,33 @@ void HotwordAudioHistoryHandler::SetAudioHistoryEnabled(
callback));
} else {
// If web_history is null, run the callback with false for success
- // and false for the enabled value.
- callback.Run(false, false);
+ // and return the last known value for the opt-in pref.
+ PrefService* prefs = profile_->GetPrefs();
+ callback.Run(false, prefs->GetBoolean(prefs::kHotwordAudioLoggingEnabled));
}
}
void HotwordAudioHistoryHandler::GetAudioHistoryComplete(
const HotwordAudioHistoryCallback& callback,
bool success, bool new_enabled_value) {
+ // Initialize value to the last known value of the audio history pref.
PrefService* prefs = profile_->GetPrefs();
- // Set preference to false if the call was not successful to err on the safe
- // side.
- bool new_value = success && new_enabled_value;
- prefs->SetBoolean(prefs::kHotwordAudioLoggingEnabled, new_value);
-
- callback.Run(success, new_value);
+ bool value = prefs->GetBoolean(prefs::kHotwordAudioLoggingEnabled);
+ // If the call was successful, use the new value for updates.
+ if (success) {
+ value = new_enabled_value;
+ prefs->SetBoolean(prefs::kHotwordAudioLoggingEnabled, value);
+ // If the setting is now turned off, always on shoudl also be turned off.
Anand Mistry (off Chromium) 2014/12/13 00:29:49 s/shoudl/should
rpetterson 2014/12/13 01:12:02 Done.
+ if (!value)
+ prefs->SetBoolean(prefs::kHotwordAlwaysOnSearchEnabled, false);
+ }
+ callback.Run(success, value);
}
void HotwordAudioHistoryHandler::SetAudioHistoryComplete(
bool new_enabled_value,
const HotwordAudioHistoryCallback& callback,
bool success, bool callback_enabled_value) {
- if (success) {
- PrefService* prefs = profile_->GetPrefs();
- prefs->SetBoolean(prefs::kHotwordAudioLoggingEnabled, new_enabled_value);
- }
-
+ UpdateLocalPreference(success, new_enabled_value);
callback.Run(success, new_enabled_value);
}

Powered by Google App Engine
This is Rietveld 408576698