Chromium Code Reviews| Index: chrome/browser/search/hotword_service_factory.cc |
| diff --git a/chrome/browser/search/hotword_service_factory.cc b/chrome/browser/search/hotword_service_factory.cc |
| index d8a061965324dd2d0c639d501872c3861e660f0e..7d05057c374304a1404b4ccebe0cfe41af6aba8b 100644 |
| --- a/chrome/browser/search/hotword_service_factory.cc |
| +++ b/chrome/browser/search/hotword_service_factory.cc |
| @@ -52,11 +52,17 @@ bool HotwordServiceFactory::IsMicrophoneAvailable() { |
| return GetInstance()->microphone_available(); |
| } |
| +// static |
| +bool HotwordServiceFactory::IsAudioDeviceStateUpdated() { |
| + return GetInstance()->audio_device_state_updated(); |
| +} |
| + |
| HotwordServiceFactory::HotwordServiceFactory() |
| : BrowserContextKeyedServiceFactory( |
| "HotwordService", |
| BrowserContextDependencyManager::GetInstance()), |
| - microphone_available_(false) { |
| + microphone_available_(false), |
| + audio_device_state_updated_(false) { |
| // No dependencies. |
| // Register with the device observer list to update the microphone |
| @@ -77,19 +83,13 @@ void HotwordServiceFactory::InitializeMicrophoneObserver() { |
| void HotwordServiceFactory::OnUpdateAudioDevices( |
| const content::MediaStreamDevices& devices) { |
| microphone_available_ = !devices.empty(); |
| + audio_device_state_updated_ = true; |
| } |
| void HotwordServiceFactory::UpdateMicrophoneState() { |
| // In order to trigger the monitor, just call getAudioCaptureDevices. |
| content::MediaStreamDevices devices = |
| - MediaCaptureDevicesDispatcher::GetInstance()->GetAudioCaptureDevices(); |
| - |
| - // If the monitor had not previously been started, there may be 0 devices |
| - // even if that is not accurate. However, we can update the microphone |
| - // availability state now. Either the number of devices will be correct or |
| - // we know that the call above will start the monitor and the microphone |
| - // state will be updated very soon and call OnUpdateAudioDevices. |
| - OnUpdateAudioDevices(devices); |
| + MediaCaptureDevicesDispatcher::GetInstance()->GetAudioCaptureDevices(); |
|
Anand Mistry (off Chromium)
2014/10/20 07:09:05
I think you've introduced a race here. If this fac
rpetterson
2014/10/20 17:25:07
I disagree. The factory is initialized on startup
Anand Mistry (off Chromium)
2014/10/20 21:22:54
Thanks for the explanation. This makes a lot more
|
| } |
| void HotwordServiceFactory::RegisterProfilePrefs( |