OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |