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

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: fix windows build 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 const char kCrosLibraryNotLoadedError[] = "Cros shared library not loaded.";
Peng 2011/05/02 13:59:51 Maybe it should be in #if defined(xxx) too?
Yusuke Sato 2011/05/04 14:28:35 Done.
38 44
39 ui::EventType GetTypeFromString(const std::string& type) { 45 ui::EventType GetTypeFromString(const std::string& type) {
40 if (type == kKeyDown) { 46 if (type == kKeyDown) {
41 return ui::ET_KEY_PRESSED; 47 return ui::ET_KEY_PRESSED;
42 } else if (type == kKeyUp) { 48 } else if (type == kKeyUp) {
43 return ui::ET_KEY_RELEASED; 49 return ui::ET_KEY_RELEASED;
44 } 50 }
45 return ui::ET_UNKNOWN; 51 return ui::ET_UNKNOWN;
46 } 52 }
47 53
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 views::InputMethod* ime = widget->GetInputMethod(); 115 views::InputMethod* ime = widget->GetInputMethod();
110 if (ime) { 116 if (ime) {
111 ime->DispatchKeyEvent(event); 117 ime->DispatchKeyEvent(event);
112 } else if (!widget->OnKeyEvent(event)) { 118 } else if (!widget->OnKeyEvent(event)) {
113 error_ = kKeyEventUnprocessedError; 119 error_ = kKeyEventUnprocessedError;
114 return false; 120 return false;
115 } 121 }
116 122
117 return true; 123 return true;
118 } 124 }
125
126 #if defined(OS_CHROMEOS) && defined(TOUCH_UI)
127 bool SendHandwritingStrokeFunction::RunImpl() {
128 // TODO(yusukes): Add a parameter for an input context ID.
129 ListValue* value = NULL;
130 EXTENSION_FUNCTION_VALIDATE(args_->GetList(0, &value));
131
132 chromeos::HandwritingStroke stroke;
133 for (size_t i = 0; i < value->GetSize(); ++i) {
134 DictionaryValue* dict;
135 double x = 0.0;
136 double y = 0.0;
137 EXTENSION_FUNCTION_VALIDATE(value->GetDictionary(i, &dict));
138 EXTENSION_FUNCTION_VALIDATE(dict->GetDouble("x", &x));
139 EXTENSION_FUNCTION_VALIDATE(dict->GetDouble("y", &y));
140 stroke.push_back(std::make_pair(x, y));
141 }
142 chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get();
143 if (!cros_library->EnsureLoaded()) {
144 error_ = kCrosLibraryNotLoadedError;
145 return false;
146 }
147 cros_library->GetInputMethodLibrary()->SendHandwritingStroke(stroke);
148 return true;
149 }
150
151 bool CancelHandwritingFunction::RunImpl() {
152 // TODO(yusukes): Add a parameter for an input context ID.
153 int n_strokes = 0; // zero means 'clear all strokes'.
154 if (HasOptionalArgument(0)) {
155 EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &n_strokes));
156 }
157 chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get();
158 if (!cros_library->EnsureLoaded()) {
159 error_ = kCrosLibraryNotLoadedError;
160 return false;
161 }
162 cros_library->GetInputMethodLibrary()->CancelHandwriting(n_strokes);
163 return true;
164 }
165 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698