Chromium Code Reviews| Index: chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_framework_service.cc |
| diff --git a/chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_framework_service.cc b/chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_framework_service.cc |
| index 5666ce3bd0deea4e0c0be6820d5b923c074dd98a..a8d904c5924652eb9d97264dbbbc9156564fd3db 100644 |
| --- a/chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_framework_service.cc |
| +++ b/chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_framework_service.cc |
| @@ -41,6 +41,10 @@ void ScreenshotCallback( |
| } // namespace |
| // static |
| +const char ArcVoiceInteractionFrameworkService::kArcServiceName[] = |
| + "arc::ArcVoiceInteractionFrameworkService"; |
| + |
| +// static |
| bool ArcVoiceInteractionFrameworkService::IsVoiceInteractionEnabled() { |
| return base::CommandLine::ForCurrentProcess()->HasSwitch( |
| chromeos::switches::kEnableVoiceInteraction); |
| @@ -75,6 +79,8 @@ void ArcVoiceInteractionFrameworkService::OnInstanceReady() { |
| void ArcVoiceInteractionFrameworkService::OnInstanceClosed() { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| ash::Shell::Get()->accelerator_controller()->UnregisterAll(this); |
| + if (!metalayer_closed_callback_.is_null()) |
| + base::ResetAndReturn(&metalayer_closed_callback_).Run(); |
| } |
| bool ArcVoiceInteractionFrameworkService::AcceleratorPressed( |
| @@ -82,12 +88,14 @@ bool ArcVoiceInteractionFrameworkService::AcceleratorPressed( |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| if (accelerator.IsShiftDown()) { |
| + // Temporary, used for debugging. |
| + // Does not take into account or update the palette state. |
| mojom::VoiceInteractionFrameworkInstance* framework_instance = |
| ARC_GET_INSTANCE_FOR_METHOD( |
| arc_bridge_service()->voice_interaction_framework(), |
| - ToggleMetalayer); |
| + SetMetalayerVisibility); |
| DCHECK(framework_instance); |
| - framework_instance->ToggleMetalayer(); |
| + framework_instance->SetMetalayerVisibility(true); |
| } else { |
| mojom::VoiceInteractionFrameworkInstance* framework_instance = |
| ARC_GET_INSTANCE_FOR_METHOD( |
| @@ -136,4 +144,49 @@ void ArcVoiceInteractionFrameworkService::CaptureFullscreen( |
| base::Bind(&ScreenshotCallback, callback)); |
| } |
| +void ArcVoiceInteractionFrameworkService::OnMetalayerComplete() { |
|
Luis Héctor Chávez
2017/04/20 16:03:26
nit: DCHECK_CURRENTLY_ON(content::BrowserThread::U
Vladislav Kaznacheev
2017/04/20 17:54:55
Done.
|
| + if (!metalayer_closed_callback_.is_null()) |
| + base::ResetAndReturn(&metalayer_closed_callback_).Run(); |
| +} |
| + |
| +bool ArcVoiceInteractionFrameworkService::HasMetalayer() { |
|
Luis Héctor Chávez
2017/04/20 16:03:26
nit: DCHECK_CURRENTLY_ON(content::BrowserThread::U
Vladislav Kaznacheev
2017/04/20 17:54:55
Done.
|
| + mojom::VoiceInteractionFrameworkInstance* framework_instance = |
| + ARC_GET_INSTANCE_FOR_METHOD( |
| + arc_bridge_service()->voice_interaction_framework(), |
| + SetMetalayerVisibility); |
| + return framework_instance; |
| +} |
| + |
| +void ArcVoiceInteractionFrameworkService::ShowMetalayer( |
| + const base::Closure& done) { |
|
Luis Héctor Chávez
2017/04/20 16:03:26
nit: DCHECK_CURRENTLY_ON(content::BrowserThread::U
Vladislav Kaznacheev
2017/04/20 17:54:55
Done.
|
| + if (!metalayer_closed_callback_.is_null()) { |
| + LOG(ERROR) << "Metalayer is already enabled"; |
| + return; |
| + } |
| + metalayer_closed_callback_ = done; |
| + SetMetalayerVisibility(true); |
| +} |
| + |
| +void ArcVoiceInteractionFrameworkService::HideMetalayer() { |
|
Luis Héctor Chávez
2017/04/20 16:03:26
nit: DCHECK_CURRENTLY_ON(content::BrowserThread::U
Vladislav Kaznacheev
2017/04/20 17:54:55
Done.
|
| + if (metalayer_closed_callback_.is_null()) { |
| + LOG(ERROR) << "Metalayer is already hidden"; |
| + return; |
| + } |
| + metalayer_closed_callback_ = base::Closure(); |
| + SetMetalayerVisibility(false); |
| +} |
| + |
| +void ArcVoiceInteractionFrameworkService::SetMetalayerVisibility(bool visible) { |
|
Luis Héctor Chávez
2017/04/20 16:03:26
nit: DCHECK_CURRENTLY_ON(content::BrowserThread::U
Vladislav Kaznacheev
2017/04/20 17:54:55
Done.
|
| + mojom::VoiceInteractionFrameworkInstance* framework_instance = |
| + ARC_GET_INSTANCE_FOR_METHOD( |
| + arc_bridge_service()->voice_interaction_framework(), |
| + SetMetalayerVisibility); |
| + if (!framework_instance) { |
| + if (!metalayer_closed_callback_.is_null()) |
| + base::ResetAndReturn(&metalayer_closed_callback_).Run(); |
| + return; |
| + } |
| + framework_instance->SetMetalayerVisibility(visible); |
| +} |
| + |
| } // namespace arc |