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..be87b3b916cd651503407cd8da4ea61d6639f224 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); |
| @@ -48,7 +52,7 @@ bool ArcVoiceInteractionFrameworkService::IsVoiceInteractionEnabled() { |
| ArcVoiceInteractionFrameworkService::ArcVoiceInteractionFrameworkService( |
| ArcBridgeService* bridge_service) |
| - : ArcService(bridge_service), binding_(this) { |
| + : ArcService(bridge_service), binding_(this), instance_ready_(false) { |
| arc_bridge_service()->voice_interaction_framework()->AddObserver(this); |
| } |
| @@ -70,6 +74,8 @@ void ArcVoiceInteractionFrameworkService::OnInstanceReady() { |
| ash::Shell::Get()->accelerator_controller()->Register( |
| {ui::Accelerator(ui::VKEY_A, ui::EF_COMMAND_DOWN | ui::EF_SHIFT_DOWN)}, |
| this); |
| + |
| + instance_ready_ = true; |
| } |
| void ArcVoiceInteractionFrameworkService::OnInstanceClosed() { |
| @@ -82,12 +88,8 @@ bool ArcVoiceInteractionFrameworkService::AcceleratorPressed( |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| if (accelerator.IsShiftDown()) { |
| - mojom::VoiceInteractionFrameworkInstance* framework_instance = |
| - ARC_GET_INSTANCE_FOR_METHOD( |
| - arc_bridge_service()->voice_interaction_framework(), |
| - ToggleMetalayer); |
| - DCHECK(framework_instance); |
| - framework_instance->ToggleMetalayer(); |
| + // Temporary, used for debugging. Does not update the palette state. |
| + ShowMetalayer(true); |
| } else { |
| mojom::VoiceInteractionFrameworkInstance* framework_instance = |
| ARC_GET_INSTANCE_FOR_METHOD( |
| @@ -136,4 +138,42 @@ void ArcVoiceInteractionFrameworkService::CaptureFullscreen( |
| base::Bind(&ScreenshotCallback, callback)); |
| } |
| +void ArcVoiceInteractionFrameworkService::OnMetalayerComplete() { |
| + if (metalayer_complete_.is_null()) |
| + return; |
| + metalayer_complete_.Run(); |
|
Luis Héctor Chávez
2017/04/19 15:48:28
nit: base::ResetAndReturn(&metalayer_closed_callba
Vladislav Kaznacheev
2017/04/19 23:42:59
Done.
|
| + metalayer_complete_ = base::Closure(); |
| +} |
| + |
| +bool ArcVoiceInteractionFrameworkService::IsReady() { |
| + return instance_ready_; |
| +} |
| + |
| +void ArcVoiceInteractionFrameworkService::ShowMetalayer( |
| + const base::Closure& done) { |
| + if (!metalayer_complete_.is_null()) { |
| + LOG(ERROR) << "Metalayer is already enabled"; |
| + return; |
| + } |
| + metalayer_complete_ = done; |
| + ShowMetalayer(true); |
| +} |
| + |
| +void ArcVoiceInteractionFrameworkService::HideMetalayer() { |
| + if (metalayer_complete_.is_null()) { |
| + LOG(ERROR) << "Metalayer is already hidden"; |
| + return; |
| + } |
| + metalayer_complete_ = base::Closure(); |
| + ShowMetalayer(false); |
| +} |
| + |
| +void ArcVoiceInteractionFrameworkService::ShowMetalayer(bool visible) { |
| + mojom::VoiceInteractionFrameworkInstance* framework_instance = |
| + ARC_GET_INSTANCE_FOR_METHOD( |
| + arc_bridge_service()->voice_interaction_framework(), ShowMetalayer); |
| + DCHECK(framework_instance); |
|
Luis Héctor Chávez
2017/04/19 15:48:28
substitute this with
if (visible && !framework_in
Vladislav Kaznacheev
2017/04/19 23:42:58
Substituted with a slight change.
|
| + framework_instance->ShowMetalayer(visible); |
| +} |
| + |
| } // namespace arc |