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 |