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

Side by Side Diff: chrome/browser/extensions/extension_input_api.cc

Issue 6905053: Add 2 Extension APIs for handwriting: experimental.input.sendHandritingStroke and cancelHandWriting (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review fix Created 9 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/extensions/extension_input_api.h" 5 #include "chrome/browser/extensions/extension_input_api.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/values.h" 10 #include "base/values.h"
11 #include "chrome/browser/extensions/key_identifier_conversion_views.h" 11 #include "chrome/browser/extensions/key_identifier_conversion_views.h"
12 #include "chrome/browser/ui/browser.h" 12 #include "chrome/browser/ui/browser.h"
13 #include "chrome/browser/ui/browser_window.h" 13 #include "chrome/browser/ui/browser_window.h"
14 #include "chrome/browser/ui/views/frame/browser_view.h" 14 #include "chrome/browser/ui/views/frame/browser_view.h"
15 #include "views/events/event.h" 15 #include "views/events/event.h"
16 #include "views/ime/input_method.h" 16 #include "views/ime/input_method.h"
17 #include "views/widget/widget.h" 17 #include "views/widget/widget.h"
18 18
19 #if defined(OS_CHROMEOS) && defined(TOUCH_UI)
20 #include "chrome/browser/chromeos/cros/cros_library.h"
21 #include "chrome/browser/chromeos/cros/input_method_library.h"
22 #endif
23
19 namespace { 24 namespace {
20 25
21 // Keys. 26 // Keys.
22 const char kType[] = "type"; 27 const char kType[] = "type";
23 const char kKeyIdentifier[] = "keyIdentifier"; 28 const char kKeyIdentifier[] = "keyIdentifier";
24 const char kAlt[] = "altKey"; 29 const char kAlt[] = "altKey";
25 const char kCtrl[] = "ctrlKey"; 30 const char kCtrl[] = "ctrlKey";
26 const char kMeta[] = "metaKey"; 31 const char kMeta[] = "metaKey";
27 const char kShift[] = "shiftKey"; 32 const char kShift[] = "shiftKey";
28 const char kKeyDown[] = "keydown"; 33 const char kKeyDown[] = "keydown";
29 const char kKeyUp[] = "keyup"; 34 const char kKeyUp[] = "keyup";
30 35
31 // Errors. 36 // Errors.
32 const char kUnknownEventTypeError[] = "Unknown event type."; 37 const char kUnknownEventTypeError[] = "Unknown event type.";
33 const char kUnknownOrUnsupportedKeyIdentiferError[] = "Unknown or unsupported " 38 const char kUnknownOrUnsupportedKeyIdentiferError[] = "Unknown or unsupported "
34 "key identifier."; 39 "key identifier.";
35 const char kUnsupportedModifier[] = "Unsupported modifier."; 40 const char kUnsupportedModifier[] = "Unsupported modifier.";
36 const char kNoValidRecipientError[] = "No valid recipient for event."; 41 const char kNoValidRecipientError[] = "No valid recipient for event.";
37 const char kKeyEventUnprocessedError[] = "Event was not handled."; 42 const char kKeyEventUnprocessedError[] = "Event was not handled.";
43 #if defined(OS_CHROMEOS) && defined(TOUCH_UI)
44 const char kCrosLibraryNotLoadedError[] = "Cros shared library not loaded.";
45 #endif
38 46
39 ui::EventType GetTypeFromString(const std::string& type) { 47 ui::EventType GetTypeFromString(const std::string& type) {
40 if (type == kKeyDown) { 48 if (type == kKeyDown) {
41 return ui::ET_KEY_PRESSED; 49 return ui::ET_KEY_PRESSED;
42 } else if (type == kKeyUp) { 50 } else if (type == kKeyUp) {
43 return ui::ET_KEY_RELEASED; 51 return ui::ET_KEY_RELEASED;
44 } 52 }
45 return ui::ET_UNKNOWN; 53 return ui::ET_UNKNOWN;
46 } 54 }
47 55
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 views::InputMethod* ime = widget->GetInputMethod(); 117 views::InputMethod* ime = widget->GetInputMethod();
110 if (ime) { 118 if (ime) {
111 ime->DispatchKeyEvent(event); 119 ime->DispatchKeyEvent(event);
112 } else if (!widget->OnKeyEvent(event)) { 120 } else if (!widget->OnKeyEvent(event)) {
113 error_ = kKeyEventUnprocessedError; 121 error_ = kKeyEventUnprocessedError;
114 return false; 122 return false;
115 } 123 }
116 124
117 return true; 125 return true;
118 } 126 }
127
128 #if defined(OS_CHROMEOS) && defined(TOUCH_UI)
129 // TODO(yusukes): This part should be moved to extension_input_api_chromeos.cc.
130 bool SendHandwritingStrokeFunction::RunImpl() {
131 chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get();
132 if (!cros_library->EnsureLoaded()) {
133 error_ = kCrosLibraryNotLoadedError;
134 return false;
135 }
136
137 // TODO(yusukes): Add a parameter for an input context ID.
138 ListValue* value = NULL;
139 EXTENSION_FUNCTION_VALIDATE(args_->GetList(0, &value));
140
141 chromeos::HandwritingStroke stroke;
142 for (size_t i = 0; i < value->GetSize(); ++i) {
143 DictionaryValue* dict;
144 double x = 0.0;
145 double y = 0.0;
146 EXTENSION_FUNCTION_VALIDATE(value->GetDictionary(i, &dict));
147 EXTENSION_FUNCTION_VALIDATE(dict->GetDouble("x", &x));
148 EXTENSION_FUNCTION_VALIDATE(dict->GetDouble("y", &y));
149 stroke.push_back(std::make_pair(x, y));
150 }
151 cros_library->GetInputMethodLibrary()->SendHandwritingStroke(stroke);
152 return true;
153 }
154
155 bool CancelHandwritingStrokesFunction::RunImpl() {
156 chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get();
157 if (!cros_library->EnsureLoaded()) {
158 error_ = kCrosLibraryNotLoadedError;
159 return false;
160 }
161
162 // TODO(yusukes): Add a parameter for an input context ID.
163 int stroke_count = 0; // zero means 'clear all strokes'.
164 if (HasOptionalArgument(0)) {
165 EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &stroke_count));
166 EXTENSION_FUNCTION_VALIDATE(stroke_count >= 0);
167 }
168 cros_library->GetInputMethodLibrary()->CancelHandwritingStrokes(stroke_count);
169 return true;
170 }
171 #endif
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_input_api.h ('k') | chrome/common/extensions/api/extension_api.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698