| Index: chrome/browser/search/hotword_service.cc
|
| diff --git a/chrome/browser/search/hotword_service.cc b/chrome/browser/search/hotword_service.cc
|
| index b530ae6d1d3b1b6e83c0842a76e51e27b8743f3b..71521db5b98562f13777e0759be837412dfe4a29 100644
|
| --- a/chrome/browser/search/hotword_service.cc
|
| +++ b/chrome/browser/search/hotword_service.cc
|
| @@ -162,6 +162,8 @@ const char kHotwordFieldTrialName[] = "VoiceTrigger";
|
| const char kHotwordFieldTrialDisabledGroupName[] = "Disabled";
|
| // Old preference constant.
|
| const char kHotwordUnusablePrefName[] = "hotword.search_enabled";
|
| +// String passed to indicate the training state has changed.
|
| +const char kHotwordTrainingEnabled[] = "hotword_training_enabled";
|
| } // namespace hotword_internal
|
|
|
| // static
|
| @@ -189,6 +191,7 @@ HotwordService::HotwordService(Profile* profile)
|
| client_(NULL),
|
| error_message_(0),
|
| reinstall_pending_(false),
|
| + training_(false),
|
| weak_factory_(this) {
|
| extension_registry_observer_.Add(extensions::ExtensionRegistry::Get(profile));
|
| // This will be called during profile initialization which is a good time
|
| @@ -474,6 +477,54 @@ HotwordService::GetHotwordAudioVerificationLaunchMode() {
|
| return hotword_audio_verification_launch_mode_;
|
| }
|
|
|
| +void HotwordService::StartTraining() {
|
| + training_ = true;
|
| +
|
| + if (!IsServiceAvailable())
|
| + return;
|
| +
|
| + HotwordPrivateEventService* event_service =
|
| + BrowserContextKeyedAPIFactory<HotwordPrivateEventService>::Get(profile_);
|
| + if (event_service)
|
| + event_service->OnEnabledChanged(hotword_internal::kHotwordTrainingEnabled);
|
| +}
|
| +
|
| +void HotwordService::FinalizeSpeakerModel() {
|
| + if (!IsServiceAvailable())
|
| + return;
|
| +
|
| + HotwordPrivateEventService* event_service =
|
| + BrowserContextKeyedAPIFactory<HotwordPrivateEventService>::Get(profile_);
|
| + if (event_service)
|
| + event_service->OnFinalizeSpeakerModel();
|
| +}
|
| +
|
| +void HotwordService::StopTraining() {
|
| + training_ = false;
|
| +
|
| + if (!IsServiceAvailable())
|
| + return;
|
| +
|
| + HotwordPrivateEventService* event_service =
|
| + BrowserContextKeyedAPIFactory<HotwordPrivateEventService>::Get(profile_);
|
| + if (event_service)
|
| + event_service->OnEnabledChanged(hotword_internal::kHotwordTrainingEnabled);
|
| +}
|
| +
|
| +void HotwordService::NotifyHotwordTriggered() {
|
| + if (!IsServiceAvailable())
|
| + return;
|
| +
|
| + HotwordPrivateEventService* event_service =
|
| + BrowserContextKeyedAPIFactory<HotwordPrivateEventService>::Get(profile_);
|
| + if (event_service)
|
| + event_service->OnHotwordTriggered();
|
| +}
|
| +
|
| +bool HotwordService::IsTraining() {
|
| + return training_;
|
| +}
|
| +
|
| void HotwordService::OnHotwordSearchEnabledChanged(
|
| const std::string& pref_name) {
|
| DCHECK_EQ(pref_name, std::string(prefs::kHotwordSearchEnabled));
|
|
|