| Index: chrome/browser/extensions/api/hotword_private/hotword_private_api.cc
|
| diff --git a/chrome/browser/extensions/api/hotword_private/hotword_private_api.cc b/chrome/browser/extensions/api/hotword_private/hotword_private_api.cc
|
| index 0413178365eb4c7812b3fabf6e7cd9b6d53b9c4b..4c3eb5bfd1a653d041def4fd5219a781e453d9c5 100644
|
| --- a/chrome/browser/extensions/api/hotword_private/hotword_private_api.cc
|
| +++ b/chrome/browser/extensions/api/hotword_private/hotword_private_api.cc
|
| @@ -64,7 +64,9 @@ const char* HotwordPrivateEventService::service_name() {
|
| void HotwordPrivateEventService::OnEnabledChanged(
|
| const std::string& pref_name) {
|
| DCHECK(pref_name == std::string(prefs::kHotwordSearchEnabled) ||
|
| - pref_name == std::string(prefs::kHotwordAlwaysOnSearchEnabled));
|
| + pref_name == std::string(prefs::kHotwordAlwaysOnSearchEnabled) ||
|
| + pref_name == std::string(
|
| + hotword_internal::kHotwordTrainingEnabled));
|
| SignalEvent(OnEnabledChanged::kEventName);
|
| }
|
|
|
| @@ -76,6 +78,14 @@ void HotwordPrivateEventService::OnHotwordSessionStopped() {
|
| SignalEvent(api::hotword_private::OnHotwordSessionStopped::kEventName);
|
| }
|
|
|
| +void HotwordPrivateEventService::OnFinalizeSpeakerModel() {
|
| + SignalEvent(api::hotword_private::OnFinalizeSpeakerModel::kEventName);
|
| +}
|
| +
|
| +void HotwordPrivateEventService::OnHotwordTriggered() {
|
| + SignalEvent(api::hotword_private::OnHotwordTriggered::kEventName);
|
| +}
|
| +
|
| void HotwordPrivateEventService::SignalEvent(const std::string& event_name) {
|
| EventRouter* router = EventRouter::Get(profile_);
|
| if (!router || !router->HasEventListener(event_name))
|
| @@ -123,10 +133,13 @@ bool HotwordPrivateGetStatusFunction::RunSync() {
|
|
|
| HotwordService* hotword_service =
|
| HotwordServiceFactory::GetForProfile(GetProfile());
|
| - if (!hotword_service)
|
| + if (!hotword_service) {
|
| result.available = false;
|
| - else
|
| + } else {
|
| result.available = hotword_service->IsServiceAvailable();
|
| + result.audio_logging_enabled = hotword_service->IsOptedIntoAudioLogging();
|
| + result.training_enabled = hotword_service->IsTraining();
|
| + }
|
|
|
| PrefService* prefs = GetProfile()->GetPrefs();
|
| result.enabled_set = prefs->HasPrefPath(prefs::kHotwordSearchEnabled);
|
| @@ -137,8 +150,6 @@ bool HotwordPrivateGetStatusFunction::RunSync() {
|
| CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| result.experimental_hotword_enabled = command_line->HasSwitch(
|
| switches::kEnableExperimentalHotwording);
|
| - if (hotword_service)
|
| - result.audio_logging_enabled = hotword_service->IsOptedIntoAudioLogging();
|
|
|
| SetResult(result.ToValue().release());
|
| return true;
|
| @@ -151,7 +162,9 @@ bool HotwordPrivateSetHotwordSessionStateFunction::RunSync() {
|
|
|
| HotwordService* hotword_service =
|
| HotwordServiceFactory::GetForProfile(GetProfile());
|
| - if (hotword_service && hotword_service->client())
|
| + if (hotword_service &&
|
| + hotword_service->client() &&
|
| + !hotword_service->IsTraining())
|
| hotword_service->client()->OnHotwordStateChanged(params->started);
|
| return true;
|
| }
|
| @@ -160,7 +173,9 @@ bool HotwordPrivateNotifyHotwordRecognitionFunction::RunSync() {
|
| HotwordService* hotword_service =
|
| HotwordServiceFactory::GetForProfile(GetProfile());
|
| if (hotword_service) {
|
| - if (hotword_service->client()) {
|
| + if (hotword_service->IsTraining()) {
|
| + hotword_service->NotifyHotwordTriggered();
|
| + } else if (hotword_service->client()) {
|
| hotword_service->client()->OnHotwordRecognized();
|
| } else if (HotwordService::IsExperimentalHotwordingEnabled() &&
|
| hotword_service->IsAlwaysOnEnabled()) {
|
| @@ -177,19 +192,53 @@ bool HotwordPrivateNotifyHotwordRecognitionFunction::RunSync() {
|
| }
|
|
|
| bool HotwordPrivateGetLaunchStateFunction::RunSync() {
|
| + HotwordService* hotword_service =
|
| + HotwordServiceFactory::GetForProfile(GetProfile());
|
| + if (!hotword_service) {
|
| + error_ = hotword_private_constants::kHotwordServiceUnavailable;
|
| + return false;
|
| + }
|
| +
|
| api::hotword_private::LaunchState result;
|
| + result.launch_mode =
|
| + hotword_service->GetHotwordAudioVerificationLaunchMode();
|
| + SetResult(result.ToValue().release());
|
| + return true;
|
| +}
|
|
|
| +bool HotwordPrivateStartTrainingFunction::RunSync() {
|
| HotwordService* hotword_service =
|
| HotwordServiceFactory::GetForProfile(GetProfile());
|
| if (!hotword_service) {
|
| error_ = hotword_private_constants::kHotwordServiceUnavailable;
|
| return false;
|
| - } else {
|
| - result.launch_mode =
|
| - hotword_service->GetHotwordAudioVerificationLaunchMode();
|
| }
|
|
|
| - SetResult(result.ToValue().release());
|
| + hotword_service->StartTraining();
|
| + return true;
|
| +}
|
| +
|
| +bool HotwordPrivateFinalizeSpeakerModelFunction::RunSync() {
|
| + HotwordService* hotword_service =
|
| + HotwordServiceFactory::GetForProfile(GetProfile());
|
| + if (!hotword_service) {
|
| + error_ = hotword_private_constants::kHotwordServiceUnavailable;
|
| + return false;
|
| + }
|
| +
|
| + hotword_service->FinalizeSpeakerModel();
|
| + return true;
|
| +}
|
| +
|
| +bool HotwordPrivateStopTrainingFunction::RunSync() {
|
| + HotwordService* hotword_service =
|
| + HotwordServiceFactory::GetForProfile(GetProfile());
|
| + if (!hotword_service) {
|
| + error_ = hotword_private_constants::kHotwordServiceUnavailable;
|
| + return false;
|
| + }
|
| +
|
| + hotword_service->StopTraining();
|
| return true;
|
| }
|
|
|
|
|