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 6bf15b0c5f4aaf882aaf509ebd9a3bb72d7542ec..b1a67ad682716e2c95b142e7ef1d041b521b0e4a 100644 |
--- a/chrome/browser/search/hotword_audio_history_handler.cc |
+++ b/chrome/browser/search/hotword_audio_history_handler.cc |
@@ -5,17 +5,15 @@ |
#include "chrome/browser/search/hotword_audio_history_handler.h" |
#include "base/prefs/pref_service.h" |
+#include "chrome/browser/history/web_history_service.h" |
+#include "chrome/browser/history/web_history_service_factory.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/common/pref_names.h" |
HotwordAudioHistoryHandler::HotwordAudioHistoryHandler( |
content::BrowserContext* context) |
- : profile_(Profile::FromBrowserContext(context)) { |
- pref_change_registrar_.Init(profile_->GetPrefs()); |
- pref_change_registrar_.Add( |
- prefs::kHotwordAudioHistoryEnabled, |
- base::Bind(&HotwordAudioHistoryHandler::OnAudioHistoryEnabledChanged, |
- base::Unretained(this))); |
+ : profile_(Profile::FromBrowserContext(context)), |
+ weak_factory_(this) { |
// Poll for current value on init which should happen on first use by |
// way of the hotword service init. |
@@ -25,19 +23,41 @@ HotwordAudioHistoryHandler::HotwordAudioHistoryHandler( |
HotwordAudioHistoryHandler::~HotwordAudioHistoryHandler() { |
} |
-bool HotwordAudioHistoryHandler::GetAudioHistoryEnabled() { |
- // TODO(rlp): fill in. |
- return false; |
+void HotwordAudioHistoryHandler::GetAudioHistoryEnabled() { |
+ bool success = false; |
+ history::WebHistoryService* web_history = |
+ WebHistoryServiceFactory::GetForProfile(profile_); |
+ if (web_history) { |
+ web_history->GetAudioHistoryEnabled( |
+ base::Bind(&HotwordAudioHistoryHandler::GetAudioHistoryComplete, |
+ weak_factory_.GetWeakPtr())); |
+ } else { |
+ // If web_history is null, the user is not signed in. |
+ PrefService* prefs = profile_->GetPrefs(); |
+ prefs->SetBoolean(prefs::kHotwordAudioHistoryEnabled, false); |
+ } |
} |
void HotwordAudioHistoryHandler::SetAudioHistoryEnabled(const bool enabled) { |
- // TODO(rlp): fill in. |
+ history::WebHistoryService* web_history = |
+ WebHistoryServiceFactory::GetForProfile(profile_); |
+ if (web_history) { |
+ web_history->SetAudioHistoryEnabled( |
Anand Mistry (off Chromium)
2014/11/12 00:00:10
How is the local PrefService setting supposed to b
rpetterson
2014/11/12 00:36:04
Good point. I suppose we should not leave it up to
Anand Mistry (off Chromium)
2014/11/12 00:56:55
I think the former (on success), since we should a
rpetterson
2014/11/12 01:15:42
I've combined the two callbacks since they would e
|
+ enabled, |
+ base::Bind(&HotwordAudioHistoryHandler::SetAudioHistoryComplete, |
+ weak_factory_.GetWeakPtr())); |
+ } |
} |
-void HotwordAudioHistoryHandler::OnAudioHistoryEnabledChanged( |
- const std::string& pref_name) { |
- DCHECK(pref_name == std::string(prefs::kHotwordAudioHistoryEnabled)); |
- |
+void HotwordAudioHistoryHandler::GetAudioHistoryComplete( |
+ bool success, bool new_enabled_value) { |
PrefService* prefs = profile_->GetPrefs(); |
- SetAudioHistoryEnabled(prefs->GetBoolean(prefs::kHotwordAudioHistoryEnabled)); |
+ // Set preference to false if the call was not successful to err on the safe |
+ // side. |
+ prefs->SetBoolean(prefs::kHotwordAudioHistoryEnabled, |
+ success && new_enabled_value); |
+} |
+ |
+void HotwordAudioHistoryHandler::SetAudioHistoryComplete( |
+ bool success, bool new_enabled_value) { |
} |