Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(784)

Unified Diff: chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_framework_service.cc

Issue 2824703006: Add MetalayerMode to the palette. (Closed)
Patch Set: Fixed copyright year Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..c1ca63058fb57a65d8c4bcb96d1d57ffaada2faa 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,54 @@ void ArcVoiceInteractionFrameworkService::CaptureFullscreen(
base::Bind(&ScreenshotCallback, callback));
}
+void ArcVoiceInteractionFrameworkService::OnMetalayerClosed() {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ if (!metalayer_closed_callback_.is_null())
+ base::ResetAndReturn(&metalayer_closed_callback_).Run();
+}
+
+bool ArcVoiceInteractionFrameworkService::IsMetalayerSupported() {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ 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& closed) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ if (!metalayer_closed_callback_.is_null()) {
+ LOG(ERROR) << "Metalayer is already enabled";
+ return;
+ }
+ metalayer_closed_callback_ = closed;
+ SetMetalayerVisibility(true);
+}
+
+void ArcVoiceInteractionFrameworkService::HideMetalayer() {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ 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) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ 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

Powered by Google App Engine
This is Rietveld 408576698