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

Side by Side Diff: extensions/browser/api/virtual_keyboard_private/virtual_keyboard_private_api.cc

Issue 2272563011: [Extensions] Convert some SyncExtensionFunctions (Closed)
Patch Set: fix Created 4 years, 3 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "extensions/browser/api/virtual_keyboard_private/virtual_keyboard_priva te_api.h" 5 #include "extensions/browser/api/virtual_keyboard_private/virtual_keyboard_priva te_api.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
11 #include "base/strings/string16.h" 11 #include "base/strings/string16.h"
12 #include "extensions/browser/api/extensions_api_client.h" 12 #include "extensions/browser/api/extensions_api_client.h"
13 #include "extensions/browser/api/virtual_keyboard_private/virtual_keyboard_deleg ate.h" 13 #include "extensions/browser/api/virtual_keyboard_private/virtual_keyboard_deleg ate.h"
14 #include "extensions/browser/extension_function_registry.h" 14 #include "extensions/browser/extension_function_registry.h"
15 #include "extensions/common/api/virtual_keyboard_private.h" 15 #include "extensions/common/api/virtual_keyboard_private.h"
16 #include "ui/events/event.h" 16 #include "ui/events/event.h"
17 17
18 namespace SetMode = extensions::api::virtual_keyboard_private::SetMode;
19 namespace SetRequestedKeyboardState =
20 extensions::api::virtual_keyboard_private::SetKeyboardState;
21
22 namespace extensions { 18 namespace extensions {
23 19
24 namespace { 20 namespace {
25 21
26 const char kNotYetImplementedError[] = 22 const char kNotYetImplementedError[] =
27 "API is not implemented on this platform."; 23 "API is not implemented on this platform.";
28 const char kVirtualKeyboardNotEnabled[] = 24 const char kVirtualKeyboardNotEnabled[] =
29 "The virtual keyboard is not enabled."; 25 "The virtual keyboard is not enabled.";
26 const char kUnknownError[] = "Unknown error.";
30 27
31 typedef BrowserContextKeyedAPIFactory<VirtualKeyboardAPI> factory; 28 namespace keyboard = api::virtual_keyboard_private;
32
33 VirtualKeyboardDelegate* GetDelegate(SyncExtensionFunction* f) {
34 VirtualKeyboardAPI* api = factory::Get(f->browser_context());
35 DCHECK(api);
36 return api ? api->delegate() : nullptr;
37 }
38 29
39 } // namespace 30 } // namespace
40 31
41 bool VirtualKeyboardPrivateInsertTextFunction::RunSync() { 32 bool VirtualKeyboardPrivateFunction::PreRunValidation(std::string* error) {
42 VirtualKeyboardDelegate* delegate = GetDelegate(this); 33 if (!UIThreadExtensionFunction::PreRunValidation(error))
43 if (delegate) { 34 return false;
44 base::string16 text; 35
45 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &text)); 36 VirtualKeyboardAPI* api =
46 return delegate->InsertText(text); 37 BrowserContextKeyedAPIFactory<VirtualKeyboardAPI>::Get(browser_context());
38 DCHECK(api);
39 delegate_ = api->delegate();
40 if (!delegate_) {
41 *error = kNotYetImplementedError;
42 return false;
47 } 43 }
48 error_ = kNotYetImplementedError; 44 return true;
49 return false;
50 } 45 }
51 46
52 bool VirtualKeyboardPrivateSendKeyEventFunction::RunSync() { 47 VirtualKeyboardPrivateFunction::~VirtualKeyboardPrivateFunction() {}
53 VirtualKeyboardDelegate* delegate = GetDelegate(this);
54 if (delegate) {
55 base::Value* options_value = nullptr;
56 base::DictionaryValue* params = nullptr;
57 std::string type;
58 int char_value;
59 int key_code;
60 std::string key_name;
61 int modifiers;
62 48
63 EXTENSION_FUNCTION_VALIDATE(args_->Get(0, &options_value)); 49 ExtensionFunction::ResponseAction
64 EXTENSION_FUNCTION_VALIDATE(options_value->GetAsDictionary(&params)); 50 VirtualKeyboardPrivateInsertTextFunction::Run() {
65 EXTENSION_FUNCTION_VALIDATE(params->GetString("type", &type)); 51 base::string16 text;
66 EXTENSION_FUNCTION_VALIDATE(params->GetInteger("charValue", &char_value)); 52 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &text));
67 EXTENSION_FUNCTION_VALIDATE(params->GetInteger("keyCode", &key_code)); 53 if (!delegate()->InsertText(text))
68 EXTENSION_FUNCTION_VALIDATE(params->GetString("keyName", &key_name)); 54 return RespondNow(Error(kUnknownError));
69 EXTENSION_FUNCTION_VALIDATE(params->GetInteger("modifiers", &modifiers)); 55 return RespondNow(NoArguments());
70 return delegate->SendKeyEvent(
71 type, char_value, key_code, key_name, modifiers);
72 }
73 error_ = kNotYetImplementedError;
74 return false;
75 } 56 }
76 57
77 bool VirtualKeyboardPrivateHideKeyboardFunction::RunSync() { 58 ExtensionFunction::ResponseAction
78 VirtualKeyboardDelegate* delegate = GetDelegate(this); 59 VirtualKeyboardPrivateSendKeyEventFunction::Run() {
79 if (delegate) 60 std::unique_ptr<keyboard::SendKeyEvent::Params> params(
80 return delegate->HideKeyboard(); 61 keyboard::SendKeyEvent::Params::Create(*args_));
81 error_ = kNotYetImplementedError; 62 EXTENSION_FUNCTION_VALIDATE(params);
82 return false; 63 EXTENSION_FUNCTION_VALIDATE(params->key_event.modifiers);
64 const keyboard::VirtualKeyboardEvent& event = params->key_event;
65 if (!delegate()->SendKeyEvent(keyboard::ToString(event.type),
66 event.char_value, event.key_code,
67 event.key_name, *event.modifiers)) {
68 return RespondNow(Error(kUnknownError));
69 }
70 return RespondNow(NoArguments());
83 } 71 }
84 72
85 bool VirtualKeyboardPrivateSetHotrodKeyboardFunction::RunSync() { 73 ExtensionFunction::ResponseAction
86 VirtualKeyboardDelegate* delegate = GetDelegate(this); 74 VirtualKeyboardPrivateHideKeyboardFunction::Run() {
87 if (delegate) { 75 if (!delegate()->HideKeyboard())
88 bool enable; 76 return RespondNow(Error(kUnknownError));
89 EXTENSION_FUNCTION_VALIDATE(args_->GetBoolean(0, &enable)); 77 return RespondNow(NoArguments());
90 delegate->SetHotrodKeyboard(enable);
91 return true;
92 }
93 error_ = kNotYetImplementedError;
94 return false;
95 } 78 }
96 79
97 bool VirtualKeyboardPrivateLockKeyboardFunction::RunSync() { 80 ExtensionFunction::ResponseAction
98 VirtualKeyboardDelegate* delegate = GetDelegate(this); 81 VirtualKeyboardPrivateSetHotrodKeyboardFunction::Run() {
99 if (delegate) { 82 bool enable = false;
100 bool lock; 83 EXTENSION_FUNCTION_VALIDATE(args_->GetBoolean(0, &enable));
101 EXTENSION_FUNCTION_VALIDATE(args_->GetBoolean(0, &lock)); 84 delegate()->SetHotrodKeyboard(enable);
102 return delegate->LockKeyboard(lock); 85 return RespondNow(NoArguments());
103 }
104 error_ = kNotYetImplementedError;
105 return false;
106 } 86 }
107 87
108 bool VirtualKeyboardPrivateKeyboardLoadedFunction::RunSync() { 88 ExtensionFunction::ResponseAction
109 VirtualKeyboardDelegate* delegate = GetDelegate(this); 89 VirtualKeyboardPrivateLockKeyboardFunction::Run() {
110 if (delegate) 90 bool lock = false;
111 return delegate->OnKeyboardLoaded(); 91 EXTENSION_FUNCTION_VALIDATE(args_->GetBoolean(0, &lock));
112 error_ = kNotYetImplementedError; 92 if (!delegate()->LockKeyboard(lock))
113 return false; 93 return RespondNow(Error(kUnknownError));
94 return RespondNow(NoArguments());
114 } 95 }
115 96
116 bool VirtualKeyboardPrivateGetKeyboardConfigFunction::RunSync() { 97 ExtensionFunction::ResponseAction
117 VirtualKeyboardDelegate* delegate = GetDelegate(this); 98 VirtualKeyboardPrivateKeyboardLoadedFunction::Run() {
118 if (delegate) { 99 if (!delegate()->OnKeyboardLoaded())
119 std::unique_ptr<base::DictionaryValue> results(new base::DictionaryValue()); 100 return RespondNow(Error(kUnknownError));
120 if (delegate->GetKeyboardConfig(results.get())) { 101 return RespondNow(NoArguments());
121 SetResult(std::move(results));
122 return true;
123 }
124 }
125 return false;
126 } 102 }
127 103
128 bool VirtualKeyboardPrivateOpenSettingsFunction::RunSync() { 104 ExtensionFunction::ResponseAction
129 VirtualKeyboardDelegate* delegate = GetDelegate(this); 105 VirtualKeyboardPrivateGetKeyboardConfigFunction::Run() {
130 if (delegate) { 106 std::unique_ptr<base::DictionaryValue> results(new base::DictionaryValue());
131 if (delegate->IsLanguageSettingsEnabled()) 107 if (!delegate()->GetKeyboardConfig(results.get()))
132 return delegate->ShowLanguageSettings(); 108 return RespondNow(Error(kUnknownError));
133 return false; 109 return RespondNow(OneArgument(std::move(results)));
134 }
135 error_ = kNotYetImplementedError;
136 return false;
137 } 110 }
138 111
139 bool VirtualKeyboardPrivateSetModeFunction::RunSync() { 112 ExtensionFunction::ResponseAction
140 VirtualKeyboardDelegate* delegate = GetDelegate(this); 113 VirtualKeyboardPrivateOpenSettingsFunction::Run() {
141 if (delegate) { 114 if (!delegate()->IsLanguageSettingsEnabled() ||
142 std::unique_ptr<SetMode::Params> params = SetMode::Params::Create(*args_); 115 !delegate()->ShowLanguageSettings()) {
143 EXTENSION_FUNCTION_VALIDATE(params); 116 return RespondNow(Error(kUnknownError));
144 if (!delegate->SetVirtualKeyboardMode(params->mode)) {
145 error_ = kVirtualKeyboardNotEnabled;
146 return false;
147 } else {
148 return true;
149 }
150 } 117 }
151 error_ = kNotYetImplementedError; 118 return RespondNow(NoArguments());
152 return false;
153 } 119 }
154 120
155 bool VirtualKeyboardPrivateSetKeyboardStateFunction::RunSync() { 121 ExtensionFunction::ResponseAction VirtualKeyboardPrivateSetModeFunction::Run() {
156 VirtualKeyboardDelegate* delegate = GetDelegate(this); 122 std::unique_ptr<keyboard::SetMode::Params> params =
157 if (delegate) { 123 keyboard::SetMode::Params::Create(*args_);
158 std::unique_ptr<SetRequestedKeyboardState::Params> params = 124 EXTENSION_FUNCTION_VALIDATE(params);
159 SetRequestedKeyboardState::Params::Create(*args_); 125 if (!delegate()->SetVirtualKeyboardMode(params->mode))
160 EXTENSION_FUNCTION_VALIDATE(params); 126 return RespondNow(Error(kVirtualKeyboardNotEnabled));
161 if (!delegate->SetRequestedKeyboardState(params->state)) { 127 return RespondNow(NoArguments());
162 error_ = kVirtualKeyboardNotEnabled; 128 }
163 return false; 129
164 } else { 130 ExtensionFunction::ResponseAction
165 return true; 131 VirtualKeyboardPrivateSetKeyboardStateFunction::Run() {
166 } 132 std::unique_ptr<keyboard::SetKeyboardState::Params> params =
167 } 133 keyboard::SetKeyboardState::Params::Create(*args_);
168 error_ = kNotYetImplementedError; 134 EXTENSION_FUNCTION_VALIDATE(params);
169 return false; 135 if (!delegate()->SetRequestedKeyboardState(params->state))
136 return RespondNow(Error(kVirtualKeyboardNotEnabled));
137 return RespondNow(NoArguments());
170 } 138 }
171 139
172 VirtualKeyboardAPI::VirtualKeyboardAPI(content::BrowserContext* context) { 140 VirtualKeyboardAPI::VirtualKeyboardAPI(content::BrowserContext* context) {
173 delegate_ = 141 delegate_ = ExtensionsAPIClient::Get()->CreateVirtualKeyboardDelegate();
174 extensions::ExtensionsAPIClient::Get()->CreateVirtualKeyboardDelegate();
175 } 142 }
176 143
177 VirtualKeyboardAPI::~VirtualKeyboardAPI() { 144 VirtualKeyboardAPI::~VirtualKeyboardAPI() {
178 } 145 }
179 146
180 static base::LazyInstance<BrowserContextKeyedAPIFactory<VirtualKeyboardAPI>> 147 static base::LazyInstance<BrowserContextKeyedAPIFactory<VirtualKeyboardAPI>>
181 g_factory = LAZY_INSTANCE_INITIALIZER; 148 g_factory = LAZY_INSTANCE_INITIALIZER;
182 149
183 // static 150 // static
184 BrowserContextKeyedAPIFactory<VirtualKeyboardAPI>* 151 BrowserContextKeyedAPIFactory<VirtualKeyboardAPI>*
185 VirtualKeyboardAPI::GetFactoryInstance() { 152 VirtualKeyboardAPI::GetFactoryInstance() {
186 return g_factory.Pointer(); 153 return g_factory.Pointer();
187 } 154 }
188 155
189 } // namespace extensions 156 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698