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

Side by Side Diff: chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_framework_service.cc

Issue 2824703006: Add MetalayerMode to the palette. (Closed)
Patch Set: 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_fr amework_service.h" 5 #include "chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_fr amework_service.h"
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "ash/accelerators/accelerator_controller.h" 10 #include "ash/accelerators/accelerator_controller.h"
(...skipping 23 matching lines...) Expand all
34 return; 34 return;
35 } 35 }
36 std::vector<uint8_t> result(png_data->front(), 36 std::vector<uint8_t> result(png_data->front(),
37 png_data->front() + png_data->size()); 37 png_data->front() + png_data->size());
38 callback.Run(result); 38 callback.Run(result);
39 } 39 }
40 40
41 } // namespace 41 } // namespace
42 42
43 // static 43 // static
44 const char ArcVoiceInteractionFrameworkService::kArcServiceName[] =
45 "arc::ArcVoiceInteractionFrameworkService";
46
47 // static
44 bool ArcVoiceInteractionFrameworkService::IsVoiceInteractionEnabled() { 48 bool ArcVoiceInteractionFrameworkService::IsVoiceInteractionEnabled() {
45 return base::CommandLine::ForCurrentProcess()->HasSwitch( 49 return base::CommandLine::ForCurrentProcess()->HasSwitch(
46 chromeos::switches::kEnableVoiceInteraction); 50 chromeos::switches::kEnableVoiceInteraction);
47 } 51 }
48 52
49 ArcVoiceInteractionFrameworkService::ArcVoiceInteractionFrameworkService( 53 ArcVoiceInteractionFrameworkService::ArcVoiceInteractionFrameworkService(
50 ArcBridgeService* bridge_service) 54 ArcBridgeService* bridge_service)
51 : ArcService(bridge_service), binding_(this) { 55 : ArcService(bridge_service), binding_(this), instance_ready_(false) {
52 arc_bridge_service()->voice_interaction_framework()->AddObserver(this); 56 arc_bridge_service()->voice_interaction_framework()->AddObserver(this);
53 } 57 }
54 58
55 ArcVoiceInteractionFrameworkService::~ArcVoiceInteractionFrameworkService() { 59 ArcVoiceInteractionFrameworkService::~ArcVoiceInteractionFrameworkService() {
56 arc_bridge_service()->voice_interaction_framework()->RemoveObserver(this); 60 arc_bridge_service()->voice_interaction_framework()->RemoveObserver(this);
57 } 61 }
58 62
59 void ArcVoiceInteractionFrameworkService::OnInstanceReady() { 63 void ArcVoiceInteractionFrameworkService::OnInstanceReady() {
60 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 64 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
61 mojom::VoiceInteractionFrameworkInstance* framework_instance = 65 mojom::VoiceInteractionFrameworkInstance* framework_instance =
62 ARC_GET_INSTANCE_FOR_METHOD( 66 ARC_GET_INSTANCE_FOR_METHOD(
63 arc_bridge_service()->voice_interaction_framework(), Init); 67 arc_bridge_service()->voice_interaction_framework(), Init);
64 DCHECK(framework_instance); 68 DCHECK(framework_instance);
65 framework_instance->Init(binding_.CreateInterfacePtrAndBind()); 69 framework_instance->Init(binding_.CreateInterfacePtrAndBind());
66 70
67 ash::Shell::Get()->accelerator_controller()->Register( 71 ash::Shell::Get()->accelerator_controller()->Register(
68 {ui::Accelerator(ui::VKEY_A, ui::EF_COMMAND_DOWN)}, this); 72 {ui::Accelerator(ui::VKEY_A, ui::EF_COMMAND_DOWN)}, this);
69 // Temporary shortcut added to enable the metalayer experiment. 73 // Temporary shortcut added to enable the metalayer experiment.
70 ash::Shell::Get()->accelerator_controller()->Register( 74 ash::Shell::Get()->accelerator_controller()->Register(
71 {ui::Accelerator(ui::VKEY_A, ui::EF_COMMAND_DOWN | ui::EF_SHIFT_DOWN)}, 75 {ui::Accelerator(ui::VKEY_A, ui::EF_COMMAND_DOWN | ui::EF_SHIFT_DOWN)},
72 this); 76 this);
77
78 instance_ready_ = true;
73 } 79 }
74 80
75 void ArcVoiceInteractionFrameworkService::OnInstanceClosed() { 81 void ArcVoiceInteractionFrameworkService::OnInstanceClosed() {
76 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 82 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
Luis Héctor Chávez 2017/04/19 15:48:28 if (!metalayer_closed_callback_.is_null()) base:
Vladislav Kaznacheev 2017/04/19 23:42:59 Done.
77 ash::Shell::Get()->accelerator_controller()->UnregisterAll(this); 83 ash::Shell::Get()->accelerator_controller()->UnregisterAll(this);
78 } 84 }
79 85
80 bool ArcVoiceInteractionFrameworkService::AcceleratorPressed( 86 bool ArcVoiceInteractionFrameworkService::AcceleratorPressed(
81 const ui::Accelerator& accelerator) { 87 const ui::Accelerator& accelerator) {
82 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 88 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
83 89
84 if (accelerator.IsShiftDown()) { 90 if (accelerator.IsShiftDown()) {
85 mojom::VoiceInteractionFrameworkInstance* framework_instance = 91 // Temporary, used for debugging. Does not update the palette state.
86 ARC_GET_INSTANCE_FOR_METHOD( 92 ShowMetalayer(true);
87 arc_bridge_service()->voice_interaction_framework(),
88 ToggleMetalayer);
89 DCHECK(framework_instance);
90 framework_instance->ToggleMetalayer();
91 } else { 93 } else {
92 mojom::VoiceInteractionFrameworkInstance* framework_instance = 94 mojom::VoiceInteractionFrameworkInstance* framework_instance =
93 ARC_GET_INSTANCE_FOR_METHOD( 95 ARC_GET_INSTANCE_FOR_METHOD(
94 arc_bridge_service()->voice_interaction_framework(), 96 arc_bridge_service()->voice_interaction_framework(),
95 StartVoiceInteractionSession); 97 StartVoiceInteractionSession);
96 DCHECK(framework_instance); 98 DCHECK(framework_instance);
97 framework_instance->StartVoiceInteractionSession(); 99 framework_instance->StartVoiceInteractionSession();
98 } 100 }
99 101
100 return true; 102 return true;
(...skipping 28 matching lines...) Expand all
129 // the screenshot to it. 131 // the screenshot to it.
130 aura::Window* window = ash::Shell::GetPrimaryRootWindow(); 132 aura::Window* window = ash::Shell::GetPrimaryRootWindow();
131 DCHECK(window); 133 DCHECK(window);
132 ui::GrabWindowSnapshotAsyncPNG(window, gfx::Rect(window->bounds().size()), 134 ui::GrabWindowSnapshotAsyncPNG(window, gfx::Rect(window->bounds().size()),
133 base::CreateTaskRunnerWithTraits( 135 base::CreateTaskRunnerWithTraits(
134 base::TaskTraits().MayBlock().WithPriority( 136 base::TaskTraits().MayBlock().WithPriority(
135 base::TaskPriority::USER_BLOCKING)), 137 base::TaskPriority::USER_BLOCKING)),
136 base::Bind(&ScreenshotCallback, callback)); 138 base::Bind(&ScreenshotCallback, callback));
137 } 139 }
138 140
141 void ArcVoiceInteractionFrameworkService::OnMetalayerComplete() {
142 if (metalayer_complete_.is_null())
143 return;
144 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.
145 metalayer_complete_ = base::Closure();
146 }
147
148 bool ArcVoiceInteractionFrameworkService::IsReady() {
149 return instance_ready_;
150 }
151
152 void ArcVoiceInteractionFrameworkService::ShowMetalayer(
153 const base::Closure& done) {
154 if (!metalayer_complete_.is_null()) {
155 LOG(ERROR) << "Metalayer is already enabled";
156 return;
157 }
158 metalayer_complete_ = done;
159 ShowMetalayer(true);
160 }
161
162 void ArcVoiceInteractionFrameworkService::HideMetalayer() {
163 if (metalayer_complete_.is_null()) {
164 LOG(ERROR) << "Metalayer is already hidden";
165 return;
166 }
167 metalayer_complete_ = base::Closure();
168 ShowMetalayer(false);
169 }
170
171 void ArcVoiceInteractionFrameworkService::ShowMetalayer(bool visible) {
172 mojom::VoiceInteractionFrameworkInstance* framework_instance =
173 ARC_GET_INSTANCE_FOR_METHOD(
174 arc_bridge_service()->voice_interaction_framework(), ShowMetalayer);
175 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.
176 framework_instance->ShowMetalayer(visible);
177 }
178
139 } // namespace arc 179 } // namespace arc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698