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

Side by Side 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 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 "chrome/browser/search/hotword_audio_history_handler.h" 5 #include "chrome/browser/search/hotword_audio_history_handler.h"
6 6
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "chrome/browser/extensions/api/hotword_private/hotword_private_api.h" 8 #include "chrome/browser/extensions/api/hotword_private/hotword_private_api.h"
9 #include "chrome/browser/history/web_history_service.h" 9 #include "chrome/browser/history/web_history_service.h"
10 #include "chrome/browser/history/web_history_service_factory.h" 10 #include "chrome/browser/history/web_history_service_factory.h"
11 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/common/pref_names.h" 12 #include "chrome/common/pref_names.h"
13 13
14 using extensions::BrowserContextKeyedAPIFactory; 14 using extensions::BrowserContextKeyedAPIFactory;
15 using extensions::HotwordPrivateEventService; 15 using extensions::HotwordPrivateEventService;
16 16
17 // Max number of hours between audio history checks.
18 static const int kHoursUntilNextAudioHistoryCheck = 24;
19
17 HotwordAudioHistoryHandler::HotwordAudioHistoryHandler( 20 HotwordAudioHistoryHandler::HotwordAudioHistoryHandler(
18 content::BrowserContext* context) 21 content::BrowserContext* context,
19 : profile_(Profile::FromBrowserContext(context)), 22 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
23 : task_runner_(task_runner),
24 profile_(Profile::FromBrowserContext(context)),
20 weak_ptr_factory_(this) { 25 weak_ptr_factory_(this) {
21 } 26 }
22 27
23 HotwordAudioHistoryHandler::~HotwordAudioHistoryHandler() { 28 HotwordAudioHistoryHandler::~HotwordAudioHistoryHandler() {
24 } 29 }
25 30
26 history::WebHistoryService* HotwordAudioHistoryHandler::GetWebHistory() { 31 history::WebHistoryService* HotwordAudioHistoryHandler::GetWebHistory() {
27 return WebHistoryServiceFactory::GetForProfile(profile_); 32 return WebHistoryServiceFactory::GetForProfile(profile_);
28 } 33 }
29 34
35 void HotwordAudioHistoryHandler::UpdateAudioHistoryState() {
36 GetAudioHistoryEnabled(
37 base::Bind(&HotwordAudioHistoryHandler::UpdateLocalPreference,
38 weak_ptr_factory_.GetWeakPtr()));
39 // Set the function to update in a day.
40 task_runner_->PostDelayedTask(
41 FROM_HERE,
42 base::Bind(&HotwordAudioHistoryHandler::UpdateAudioHistoryState,
43 weak_ptr_factory_.GetWeakPtr()),
44 base::TimeDelta::FromHours(kHoursUntilNextAudioHistoryCheck));
45 }
46
47 void HotwordAudioHistoryHandler::UpdateLocalPreference(
48 bool success, bool new_enabled_value) {
49 // 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
50 // update the pref.
51 if (success) {
52 PrefService* prefs = profile_->GetPrefs();
53 prefs->SetBoolean(prefs::kHotwordAudioLoggingEnabled, new_enabled_value);
54 }
55 }
56
30 void HotwordAudioHistoryHandler::GetAudioHistoryEnabled( 57 void HotwordAudioHistoryHandler::GetAudioHistoryEnabled(
31 const HotwordAudioHistoryCallback& callback) { 58 const HotwordAudioHistoryCallback& callback) {
32 history::WebHistoryService* web_history = GetWebHistory(); 59 history::WebHistoryService* web_history = GetWebHistory();
33 if (web_history) { 60 if (web_history) {
34 web_history->GetAudioHistoryEnabled( 61 web_history->GetAudioHistoryEnabled(
35 base::Bind(&HotwordAudioHistoryHandler::GetAudioHistoryComplete, 62 base::Bind(&HotwordAudioHistoryHandler::GetAudioHistoryComplete,
36 weak_ptr_factory_.GetWeakPtr(), 63 weak_ptr_factory_.GetWeakPtr(),
37 callback)); 64 callback));
38 } else { 65 } else {
39 // If web_history is null, the user is not signed in so the opt-in 66 // If web_history is null, the user is not signed in. Set the opt-in value
40 // should be seen as false. Run the callback with false for success 67 // to the last known value and run the callback with false for success.
41 // and false for the enabled value.
42 PrefService* prefs = profile_->GetPrefs(); 68 PrefService* prefs = profile_->GetPrefs();
43 prefs->SetBoolean(prefs::kHotwordAudioLoggingEnabled, false); 69 callback.Run(false, prefs->GetBoolean(prefs::kHotwordAudioLoggingEnabled));
44 callback.Run(false, false);
45 } 70 }
46 } 71 }
47 72
48 void HotwordAudioHistoryHandler::SetAudioHistoryEnabled( 73 void HotwordAudioHistoryHandler::SetAudioHistoryEnabled(
49 const bool enabled, 74 const bool enabled,
50 const HotwordAudioHistoryCallback& callback) { 75 const HotwordAudioHistoryCallback& callback) {
51 history::WebHistoryService* web_history = GetWebHistory(); 76 history::WebHistoryService* web_history = GetWebHistory();
52 if (web_history) { 77 if (web_history) {
53 web_history->SetAudioHistoryEnabled( 78 web_history->SetAudioHistoryEnabled(
54 enabled, 79 enabled,
55 base::Bind(&HotwordAudioHistoryHandler::SetAudioHistoryComplete, 80 base::Bind(&HotwordAudioHistoryHandler::SetAudioHistoryComplete,
56 weak_ptr_factory_.GetWeakPtr(), 81 weak_ptr_factory_.GetWeakPtr(),
57 enabled, 82 enabled,
58 callback)); 83 callback));
59 } else { 84 } else {
60 // If web_history is null, run the callback with false for success 85 // If web_history is null, run the callback with false for success
61 // and false for the enabled value. 86 // and return the last known value for the opt-in pref.
62 callback.Run(false, false); 87 PrefService* prefs = profile_->GetPrefs();
88 callback.Run(false, prefs->GetBoolean(prefs::kHotwordAudioLoggingEnabled));
63 } 89 }
64 } 90 }
65 91
66 void HotwordAudioHistoryHandler::GetAudioHistoryComplete( 92 void HotwordAudioHistoryHandler::GetAudioHistoryComplete(
67 const HotwordAudioHistoryCallback& callback, 93 const HotwordAudioHistoryCallback& callback,
68 bool success, bool new_enabled_value) { 94 bool success, bool new_enabled_value) {
95 // Initialize value to the last known value of the audio history pref.
69 PrefService* prefs = profile_->GetPrefs(); 96 PrefService* prefs = profile_->GetPrefs();
70 // Set preference to false if the call was not successful to err on the safe 97 bool value = prefs->GetBoolean(prefs::kHotwordAudioLoggingEnabled);
71 // side. 98 // If the call was successful, use the new value for updates.
72 bool new_value = success && new_enabled_value; 99 if (success) {
73 prefs->SetBoolean(prefs::kHotwordAudioLoggingEnabled, new_value); 100 value = new_enabled_value;
74 101 prefs->SetBoolean(prefs::kHotwordAudioLoggingEnabled, value);
75 callback.Run(success, new_value); 102 // 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.
103 if (!value)
104 prefs->SetBoolean(prefs::kHotwordAlwaysOnSearchEnabled, false);
105 }
106 callback.Run(success, value);
76 } 107 }
77 108
78 void HotwordAudioHistoryHandler::SetAudioHistoryComplete( 109 void HotwordAudioHistoryHandler::SetAudioHistoryComplete(
79 bool new_enabled_value, 110 bool new_enabled_value,
80 const HotwordAudioHistoryCallback& callback, 111 const HotwordAudioHistoryCallback& callback,
81 bool success, bool callback_enabled_value) { 112 bool success, bool callback_enabled_value) {
82 if (success) { 113 UpdateLocalPreference(success, new_enabled_value);
83 PrefService* prefs = profile_->GetPrefs();
84 prefs->SetBoolean(prefs::kHotwordAudioLoggingEnabled, new_enabled_value);
85 }
86
87 callback.Run(success, new_enabled_value); 114 callback.Run(success, new_enabled_value);
88 } 115 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698