| OLD | NEW |
| 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/extensions/api/hotword_private/hotword_private_api.h" | 5 #include "chrome/browser/extensions/api/hotword_private/hotword_private_api.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 std::unique_ptr<base::ListValue> args) { | 142 std::unique_ptr<base::ListValue> args) { |
| 143 EventRouter* router = EventRouter::Get(profile_); | 143 EventRouter* router = EventRouter::Get(profile_); |
| 144 if (!router || !router->HasEventListener(event_name)) | 144 if (!router || !router->HasEventListener(event_name)) |
| 145 return; | 145 return; |
| 146 | 146 |
| 147 std::unique_ptr<Event> event( | 147 std::unique_ptr<Event> event( |
| 148 new Event(histogram_value, event_name, std::move(args))); | 148 new Event(histogram_value, event_name, std::move(args))); |
| 149 router->BroadcastEvent(std::move(event)); | 149 router->BroadcastEvent(std::move(event)); |
| 150 } | 150 } |
| 151 | 151 |
| 152 bool HotwordPrivateSetEnabledFunction::RunSync() { | 152 ExtensionFunction::ResponseAction HotwordPrivateSetEnabledFunction::Run() { |
| 153 std::unique_ptr<api::hotword_private::SetEnabled::Params> params( | 153 std::unique_ptr<api::hotword_private::SetEnabled::Params> params( |
| 154 api::hotword_private::SetEnabled::Params::Create(*args_)); | 154 api::hotword_private::SetEnabled::Params::Create(*args_)); |
| 155 EXTENSION_FUNCTION_VALIDATE(params.get()); | 155 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 156 | 156 |
| 157 PrefService* prefs = GetProfile()->GetPrefs(); | 157 PrefService* prefs = |
| 158 Profile::FromBrowserContext(browser_context())->GetPrefs(); |
| 158 prefs->SetBoolean(prefs::kHotwordSearchEnabled, params->state); | 159 prefs->SetBoolean(prefs::kHotwordSearchEnabled, params->state); |
| 159 return true; | 160 return RespondNow(NoArguments()); |
| 160 } | 161 } |
| 161 | 162 |
| 162 bool HotwordPrivateSetAudioLoggingEnabledFunction::RunSync() { | 163 ExtensionFunction::ResponseAction |
| 164 HotwordPrivateSetAudioLoggingEnabledFunction::Run() { |
| 163 std::unique_ptr<api::hotword_private::SetAudioLoggingEnabled::Params> params( | 165 std::unique_ptr<api::hotword_private::SetAudioLoggingEnabled::Params> params( |
| 164 api::hotword_private::SetAudioLoggingEnabled::Params::Create(*args_)); | 166 api::hotword_private::SetAudioLoggingEnabled::Params::Create(*args_)); |
| 165 EXTENSION_FUNCTION_VALIDATE(params.get()); | 167 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 166 | 168 |
| 167 // TODO(kcarattini): Sync the chrome pref with the account-level | 169 // TODO(kcarattini): Sync the chrome pref with the account-level |
| 168 // Audio History setting. | 170 // Audio History setting. |
| 169 PrefService* prefs = GetProfile()->GetPrefs(); | 171 PrefService* prefs = |
| 172 Profile::FromBrowserContext(browser_context())->GetPrefs(); |
| 170 prefs->SetBoolean(prefs::kHotwordAudioLoggingEnabled, params->state); | 173 prefs->SetBoolean(prefs::kHotwordAudioLoggingEnabled, params->state); |
| 171 return true; | 174 return RespondNow(NoArguments()); |
| 172 } | 175 } |
| 173 | 176 |
| 174 bool HotwordPrivateSetHotwordAlwaysOnSearchEnabledFunction::RunSync() { | 177 ExtensionFunction::ResponseAction |
| 178 HotwordPrivateSetHotwordAlwaysOnSearchEnabledFunction::Run() { |
| 175 std::unique_ptr<api::hotword_private::SetHotwordAlwaysOnSearchEnabled::Params> | 179 std::unique_ptr<api::hotword_private::SetHotwordAlwaysOnSearchEnabled::Params> |
| 176 params( | 180 params( |
| 177 api::hotword_private::SetHotwordAlwaysOnSearchEnabled::Params::Create( | 181 api::hotword_private::SetHotwordAlwaysOnSearchEnabled::Params::Create( |
| 178 *args_)); | 182 *args_)); |
| 179 EXTENSION_FUNCTION_VALIDATE(params.get()); | 183 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 180 | 184 |
| 181 PrefService* prefs = GetProfile()->GetPrefs(); | 185 PrefService* prefs = |
| 186 Profile::FromBrowserContext(browser_context())->GetPrefs(); |
| 182 prefs->SetBoolean(prefs::kHotwordAlwaysOnSearchEnabled, params->state); | 187 prefs->SetBoolean(prefs::kHotwordAlwaysOnSearchEnabled, params->state); |
| 183 return true; | 188 return RespondNow(NoArguments()); |
| 184 } | 189 } |
| 185 | 190 |
| 186 bool HotwordPrivateGetStatusFunction::RunSync() { | 191 ExtensionFunction::ResponseAction HotwordPrivateGetStatusFunction::Run() { |
| 187 std::unique_ptr<api::hotword_private::GetStatus::Params> params( | 192 std::unique_ptr<api::hotword_private::GetStatus::Params> params( |
| 188 api::hotword_private::GetStatus::Params::Create(*args_)); | 193 api::hotword_private::GetStatus::Params::Create(*args_)); |
| 189 EXTENSION_FUNCTION_VALIDATE(params.get()); | 194 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 190 | 195 |
| 191 api::hotword_private::StatusDetails result; | 196 api::hotword_private::StatusDetails result; |
| 192 | 197 |
| 198 Profile* profile = Profile::FromBrowserContext(browser_context()); |
| 193 HotwordService* hotword_service = | 199 HotwordService* hotword_service = |
| 194 HotwordServiceFactory::GetForProfile(GetProfile()); | 200 HotwordServiceFactory::GetForProfile(profile); |
| 195 if (!hotword_service) { | 201 if (!hotword_service) { |
| 196 result.available = false; | 202 result.available = false; |
| 197 result.always_on_available = false; | 203 result.always_on_available = false; |
| 198 result.enabled = false; | 204 result.enabled = false; |
| 199 result.audio_logging_enabled = false; | 205 result.audio_logging_enabled = false; |
| 200 result.always_on_enabled = false; | 206 result.always_on_enabled = false; |
| 201 result.user_is_active = false; | 207 result.user_is_active = false; |
| 202 result.hotword_hardware_available = false; | 208 result.hotword_hardware_available = false; |
| 203 } else { | 209 } else { |
| 204 result.available = false; | 210 result.available = false; |
| 205 result.always_on_available = false; | 211 result.always_on_available = false; |
| 206 if (params->get_optional_fields && *params->get_optional_fields) { | 212 if (params->get_optional_fields && *params->get_optional_fields) { |
| 207 result.available = hotword_service->IsServiceAvailable(); | 213 result.available = hotword_service->IsServiceAvailable(); |
| 208 result.always_on_available = | 214 result.always_on_available = |
| 209 HotwordServiceFactory::IsAlwaysOnAvailable(); | 215 HotwordServiceFactory::IsAlwaysOnAvailable(); |
| 210 } | 216 } |
| 211 result.enabled = hotword_service->IsSometimesOnEnabled(); | 217 result.enabled = hotword_service->IsSometimesOnEnabled(); |
| 212 result.audio_logging_enabled = hotword_service->IsOptedIntoAudioLogging(); | 218 result.audio_logging_enabled = hotword_service->IsOptedIntoAudioLogging(); |
| 213 result.training_enabled = hotword_service->IsTraining(); | 219 result.training_enabled = hotword_service->IsTraining(); |
| 214 result.always_on_enabled = hotword_service->IsAlwaysOnEnabled(); | 220 result.always_on_enabled = hotword_service->IsAlwaysOnEnabled(); |
| 215 result.user_is_active = hotword_service->UserIsActive(); | 221 result.user_is_active = hotword_service->UserIsActive(); |
| 216 result.hotword_hardware_available = | 222 result.hotword_hardware_available = |
| 217 HotwordService::IsHotwordHardwareAvailable(); | 223 HotwordService::IsHotwordHardwareAvailable(); |
| 218 } | 224 } |
| 219 | 225 |
| 220 PrefService* prefs = GetProfile()->GetPrefs(); | 226 PrefService* prefs = profile->GetPrefs(); |
| 221 result.enabled_set = prefs->HasPrefPath(prefs::kHotwordSearchEnabled); | 227 result.enabled_set = prefs->HasPrefPath(prefs::kHotwordSearchEnabled); |
| 222 | 228 |
| 223 SetResult(result.ToValue()); | 229 return RespondNow(OneArgument(result.ToValue())); |
| 224 return true; | |
| 225 } | 230 } |
| 226 | 231 |
| 227 bool HotwordPrivateSetHotwordSessionStateFunction::RunSync() { | 232 ExtensionFunction::ResponseAction |
| 233 HotwordPrivateSetHotwordSessionStateFunction::Run() { |
| 228 std::unique_ptr<api::hotword_private::SetHotwordSessionState::Params> params( | 234 std::unique_ptr<api::hotword_private::SetHotwordSessionState::Params> params( |
| 229 api::hotword_private::SetHotwordSessionState::Params::Create(*args_)); | 235 api::hotword_private::SetHotwordSessionState::Params::Create(*args_)); |
| 230 EXTENSION_FUNCTION_VALIDATE(params.get()); | 236 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 231 | 237 |
| 232 HotwordService* hotword_service = | 238 HotwordService* hotword_service = HotwordServiceFactory::GetForProfile( |
| 233 HotwordServiceFactory::GetForProfile(GetProfile()); | 239 Profile::FromBrowserContext(browser_context())); |
| 234 if (hotword_service && | 240 if (hotword_service && |
| 235 hotword_service->client() && | 241 hotword_service->client() && |
| 236 !hotword_service->IsTraining()) | 242 !hotword_service->IsTraining()) |
| 237 hotword_service->client()->OnHotwordStateChanged(params->started); | 243 hotword_service->client()->OnHotwordStateChanged(params->started); |
| 238 return true; | 244 return RespondNow(NoArguments()); |
| 239 } | 245 } |
| 240 | 246 |
| 241 bool HotwordPrivateNotifyHotwordRecognitionFunction::RunSync() { | 247 ExtensionFunction::ResponseAction |
| 248 HotwordPrivateNotifyHotwordRecognitionFunction::Run() { |
| 242 std::unique_ptr<api::hotword_private::NotifyHotwordRecognition::Params> | 249 std::unique_ptr<api::hotword_private::NotifyHotwordRecognition::Params> |
| 243 params(api::hotword_private::NotifyHotwordRecognition::Params::Create( | 250 params(api::hotword_private::NotifyHotwordRecognition::Params::Create( |
| 244 *args_)); | 251 *args_)); |
| 245 EXTENSION_FUNCTION_VALIDATE(params.get()); | 252 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 246 | 253 |
| 247 scoped_refptr<content::SpeechRecognitionSessionPreamble> preamble; | 254 scoped_refptr<content::SpeechRecognitionSessionPreamble> preamble; |
| 248 if (params->log.get() && | 255 if (params->log.get() && |
| 249 !params->log->buffer.empty() && | 256 !params->log->buffer.empty() && |
| 250 params->log->channels == 1) { | 257 params->log->channels == 1) { |
| 251 // TODO(amistry): Convert multi-channel preamble log into mono. | 258 // TODO(amistry): Convert multi-channel preamble log into mono. |
| 252 preamble = new content::SpeechRecognitionSessionPreamble(); | 259 preamble = new content::SpeechRecognitionSessionPreamble(); |
| 253 preamble->sample_rate = params->log->sample_rate; | 260 preamble->sample_rate = params->log->sample_rate; |
| 254 preamble->sample_depth = params->log->bytes_per_sample; | 261 preamble->sample_depth = params->log->bytes_per_sample; |
| 255 preamble->sample_data.swap(params->log->buffer); | 262 preamble->sample_data.swap(params->log->buffer); |
| 256 } | 263 } |
| 257 | 264 |
| 265 Profile* profile = Profile::FromBrowserContext(browser_context()); |
| 258 HotwordService* hotword_service = | 266 HotwordService* hotword_service = |
| 259 HotwordServiceFactory::GetForProfile(GetProfile()); | 267 HotwordServiceFactory::GetForProfile(profile); |
| 260 if (hotword_service) { | 268 if (hotword_service) { |
| 261 if (hotword_service->IsTraining()) { | 269 if (hotword_service->IsTraining()) { |
| 262 hotword_service->NotifyHotwordTriggered(); | 270 hotword_service->NotifyHotwordTriggered(); |
| 263 } else if (hotword_service->client()) { | 271 } else if (hotword_service->client()) { |
| 264 hotword_service->client()->OnHotwordRecognized(preamble); | 272 hotword_service->client()->OnHotwordRecognized(preamble); |
| 265 } else if (hotword_service->IsAlwaysOnEnabled()) { | 273 } else if (hotword_service->IsAlwaysOnEnabled()) { |
| 266 AppListService* app_list_service = AppListService::Get(); | 274 AppListService* app_list_service = AppListService::Get(); |
| 267 CHECK(app_list_service); | 275 CHECK(app_list_service); |
| 268 app_list_service->ShowForVoiceSearch(GetProfile(), preamble); | 276 app_list_service->ShowForVoiceSearch(profile, preamble); |
| 269 } | 277 } |
| 270 } | 278 } |
| 271 return true; | 279 |
| 280 return RespondNow(NoArguments()); |
| 272 } | 281 } |
| 273 | 282 |
| 274 bool HotwordPrivateGetLaunchStateFunction::RunSync() { | 283 ExtensionFunction::ResponseAction HotwordPrivateGetLaunchStateFunction::Run() { |
| 275 HotwordService* hotword_service = | 284 HotwordService* hotword_service = HotwordServiceFactory::GetForProfile( |
| 276 HotwordServiceFactory::GetForProfile(GetProfile()); | 285 Profile::FromBrowserContext(browser_context())); |
| 277 if (!hotword_service) { | 286 if (!hotword_service) { |
| 278 error_ = hotword_private_constants::kHotwordServiceUnavailable; | 287 return RespondNow( |
| 279 return false; | 288 Error(hotword_private_constants::kHotwordServiceUnavailable)); |
| 280 } | 289 } |
| 281 | 290 |
| 282 api::hotword_private::LaunchState result; | 291 api::hotword_private::LaunchState result; |
| 283 result.launch_mode = | 292 result.launch_mode = |
| 284 hotword_service->GetHotwordAudioVerificationLaunchMode(); | 293 hotword_service->GetHotwordAudioVerificationLaunchMode(); |
| 285 SetResult(result.ToValue()); | 294 return RespondNow(OneArgument(result.ToValue())); |
| 286 return true; | |
| 287 } | 295 } |
| 288 | 296 |
| 289 bool HotwordPrivateStartTrainingFunction::RunSync() { | 297 ExtensionFunction::ResponseAction HotwordPrivateStartTrainingFunction::Run() { |
| 290 HotwordService* hotword_service = | 298 HotwordService* hotword_service = HotwordServiceFactory::GetForProfile( |
| 291 HotwordServiceFactory::GetForProfile(GetProfile()); | 299 Profile::FromBrowserContext(browser_context())); |
| 292 if (!hotword_service) { | 300 if (!hotword_service) { |
| 293 error_ = hotword_private_constants::kHotwordServiceUnavailable; | 301 return RespondNow( |
| 294 return false; | 302 Error(hotword_private_constants::kHotwordServiceUnavailable)); |
| 295 } | 303 } |
| 296 | 304 |
| 297 hotword_service->StartTraining(); | 305 hotword_service->StartTraining(); |
| 298 return true; | 306 return RespondNow(NoArguments()); |
| 299 } | 307 } |
| 300 | 308 |
| 301 bool HotwordPrivateFinalizeSpeakerModelFunction::RunSync() { | 309 ExtensionFunction::ResponseAction |
| 302 HotwordService* hotword_service = | 310 HotwordPrivateFinalizeSpeakerModelFunction::Run() { |
| 303 HotwordServiceFactory::GetForProfile(GetProfile()); | 311 HotwordService* hotword_service = HotwordServiceFactory::GetForProfile( |
| 312 Profile::FromBrowserContext(browser_context())); |
| 304 if (!hotword_service) { | 313 if (!hotword_service) { |
| 305 error_ = hotword_private_constants::kHotwordServiceUnavailable; | 314 return RespondNow( |
| 306 return false; | 315 Error(hotword_private_constants::kHotwordServiceUnavailable)); |
| 307 } | 316 } |
| 308 | 317 |
| 309 hotword_service->FinalizeSpeakerModel(); | 318 hotword_service->FinalizeSpeakerModel(); |
| 310 return true; | 319 return RespondNow(NoArguments()); |
| 311 } | 320 } |
| 312 | 321 |
| 313 bool HotwordPrivateNotifySpeakerModelSavedFunction::RunSync() { | 322 ExtensionFunction::ResponseAction |
| 323 HotwordPrivateNotifySpeakerModelSavedFunction::Run() { |
| 314 HotwordPrivateEventService* event_service = | 324 HotwordPrivateEventService* event_service = |
| 315 BrowserContextKeyedAPIFactory<HotwordPrivateEventService>::Get( | 325 BrowserContextKeyedAPIFactory<HotwordPrivateEventService>::Get( |
| 316 GetProfile()); | 326 Profile::FromBrowserContext(browser_context())); |
| 317 if (!event_service) { | 327 if (!event_service) { |
| 318 error_ = hotword_private_constants::kHotwordEventServiceUnavailable; | 328 return RespondNow( |
| 319 return false; | 329 Error(hotword_private_constants::kHotwordEventServiceUnavailable)); |
| 320 } | 330 } |
| 321 | 331 |
| 322 event_service->OnSpeakerModelSaved(); | 332 event_service->OnSpeakerModelSaved(); |
| 323 return true; | 333 return RespondNow(NoArguments()); |
| 324 } | 334 } |
| 325 | 335 |
| 326 bool HotwordPrivateStopTrainingFunction::RunSync() { | 336 ExtensionFunction::ResponseAction HotwordPrivateStopTrainingFunction::Run() { |
| 327 HotwordService* hotword_service = | 337 HotwordService* hotword_service = HotwordServiceFactory::GetForProfile( |
| 328 HotwordServiceFactory::GetForProfile(GetProfile()); | 338 Profile::FromBrowserContext(browser_context())); |
| 329 if (!hotword_service) { | 339 if (!hotword_service) { |
| 330 error_ = hotword_private_constants::kHotwordServiceUnavailable; | 340 return RespondNow( |
| 331 return false; | 341 Error(hotword_private_constants::kHotwordServiceUnavailable)); |
| 332 } | 342 } |
| 333 | 343 |
| 334 hotword_service->StopTraining(); | 344 hotword_service->StopTraining(); |
| 335 return true; | 345 return RespondNow(NoArguments()); |
| 336 } | 346 } |
| 337 | 347 |
| 338 bool HotwordPrivateGetLocalizedStringsFunction::RunSync() { | 348 ExtensionFunction::ResponseAction |
| 349 HotwordPrivateGetLocalizedStringsFunction::Run() { |
| 339 #if defined(OS_CHROMEOS) | 350 #if defined(OS_CHROMEOS) |
| 340 base::string16 device_type = ash::GetChromeOSDeviceName(); | 351 base::string16 device_type = ash::GetChromeOSDeviceName(); |
| 341 #else | 352 #else |
| 342 base::string16 product_name = | 353 base::string16 product_name = |
| 343 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME); | 354 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME); |
| 344 base::string16 device_type = | 355 base::string16 device_type = |
| 345 l10n_util::GetStringFUTF16(IDS_HOTWORD_BROWSER_NAME, product_name); | 356 l10n_util::GetStringFUTF16(IDS_HOTWORD_BROWSER_NAME, product_name); |
| 346 #endif | 357 #endif |
| 347 | 358 |
| 348 std::unique_ptr<base::DictionaryValue> localized_strings( | 359 std::unique_ptr<base::DictionaryValue> localized_strings( |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 localized_strings->SetString( | 458 localized_strings->SetString( |
| 448 "finish", | 459 "finish", |
| 449 l10n_util::GetStringUTF16(IDS_HOTWORD_OPT_IN_FINISH)); | 460 l10n_util::GetStringUTF16(IDS_HOTWORD_OPT_IN_FINISH)); |
| 450 localized_strings->SetString( | 461 localized_strings->SetString( |
| 451 "finishedWait", | 462 "finishedWait", |
| 452 l10n_util::GetStringUTF16(IDS_HOTWORD_OPT_IN_FINISHED_WAIT)); | 463 l10n_util::GetStringUTF16(IDS_HOTWORD_OPT_IN_FINISHED_WAIT)); |
| 453 | 464 |
| 454 const std::string& app_locale = g_browser_process->GetApplicationLocale(); | 465 const std::string& app_locale = g_browser_process->GetApplicationLocale(); |
| 455 webui::SetLoadTimeDataDefaults(app_locale, localized_strings.get()); | 466 webui::SetLoadTimeDataDefaults(app_locale, localized_strings.get()); |
| 456 | 467 |
| 457 SetResult(std::move(localized_strings)); | 468 return RespondNow(OneArgument(std::move(localized_strings))); |
| 458 return true; | |
| 459 } | 469 } |
| 460 | 470 |
| 461 bool HotwordPrivateSetAudioHistoryEnabledFunction::RunAsync() { | 471 bool HotwordPrivateSetAudioHistoryEnabledFunction::RunAsync() { |
| 462 std::unique_ptr<api::hotword_private::SetAudioHistoryEnabled::Params> params( | 472 std::unique_ptr<api::hotword_private::SetAudioHistoryEnabled::Params> params( |
| 463 api::hotword_private::SetAudioHistoryEnabled::Params::Create(*args_)); | 473 api::hotword_private::SetAudioHistoryEnabled::Params::Create(*args_)); |
| 464 EXTENSION_FUNCTION_VALIDATE(params.get()); | 474 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 465 | 475 |
| 466 HotwordService* hotword_service = | 476 HotwordService* hotword_service = |
| 467 HotwordServiceFactory::GetForProfile(GetProfile()); | 477 HotwordServiceFactory::GetForProfile(GetProfile()); |
| 468 if (!hotword_service || !hotword_service->GetAudioHistoryHandler()) { | 478 if (!hotword_service || !hotword_service->GetAudioHistoryHandler()) { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 504 | 514 |
| 505 void HotwordPrivateGetAudioHistoryEnabledFunction::SetResultAndSendResponse( | 515 void HotwordPrivateGetAudioHistoryEnabledFunction::SetResultAndSendResponse( |
| 506 bool success, bool new_enabled_value) { | 516 bool success, bool new_enabled_value) { |
| 507 api::hotword_private::AudioHistoryState result; | 517 api::hotword_private::AudioHistoryState result; |
| 508 result.success = success; | 518 result.success = success; |
| 509 result.enabled = new_enabled_value; | 519 result.enabled = new_enabled_value; |
| 510 SetResult(result.ToValue()); | 520 SetResult(result.ToValue()); |
| 511 SendResponse(true); | 521 SendResponse(true); |
| 512 } | 522 } |
| 513 | 523 |
| 514 bool HotwordPrivateSpeakerModelExistsResultFunction::RunSync() { | 524 ExtensionFunction::ResponseAction |
| 525 HotwordPrivateSpeakerModelExistsResultFunction::Run() { |
| 515 std::unique_ptr<api::hotword_private::SpeakerModelExistsResult::Params> | 526 std::unique_ptr<api::hotword_private::SpeakerModelExistsResult::Params> |
| 516 params(api::hotword_private::SpeakerModelExistsResult::Params::Create( | 527 params(api::hotword_private::SpeakerModelExistsResult::Params::Create( |
| 517 *args_)); | 528 *args_)); |
| 518 EXTENSION_FUNCTION_VALIDATE(params.get()); | 529 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 519 | 530 |
| 520 HotwordService* hotword_service = | 531 HotwordService* hotword_service = HotwordServiceFactory::GetForProfile( |
| 521 HotwordServiceFactory::GetForProfile(GetProfile()); | 532 Profile::FromBrowserContext(browser_context())); |
| 522 if (!hotword_service) | 533 if (!hotword_service) |
| 523 return false; | 534 return RespondNow(Error(kUnknownErrorDoNotUse)); |
| 524 | 535 |
| 525 hotword_service->SpeakerModelExistsComplete(params->exists); | 536 hotword_service->SpeakerModelExistsComplete(params->exists); |
| 526 return true; | 537 return RespondNow(NoArguments()); |
| 527 } | 538 } |
| 528 | 539 |
| 529 } // namespace extensions | 540 } // namespace extensions |
| OLD | NEW |