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

Unified 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_input_api.cc
diff --git a/chrome/browser/extensions/extension_input_api.cc b/chrome/browser/extensions/extension_input_api.cc
index ffcd6594505e0498fe6807c978e2c119f986944b..82df0db3a97e3f5c5e36d559d35ba9bd2ccce41c 100644
--- a/chrome/browser/extensions/extension_input_api.cc
+++ b/chrome/browser/extensions/extension_input_api.cc
@@ -16,6 +16,11 @@
#include "views/ime/input_method.h"
#include "views/widget/widget.h"
+#if defined(OS_CHROMEOS) && defined(TOUCH_UI)
+#include "chrome/browser/chromeos/cros/cros_library.h"
+#include "chrome/browser/chromeos/cros/input_method_library.h"
+#endif
+
namespace {
// Keys.
@@ -35,6 +40,9 @@ const char kUnknownOrUnsupportedKeyIdentiferError[] = "Unknown or unsupported "
const char kUnsupportedModifier[] = "Unsupported modifier.";
const char kNoValidRecipientError[] = "No valid recipient for event.";
const char kKeyEventUnprocessedError[] = "Event was not handled.";
+#if defined(OS_CHROMEOS) && defined(TOUCH_UI)
+const char kCrosLibraryNotLoadedError[] = "Cros shared library not loaded.";
+#endif
ui::EventType GetTypeFromString(const std::string& type) {
if (type == kKeyDown) {
@@ -116,3 +124,48 @@ bool SendKeyboardEventInputFunction::RunImpl() {
return true;
}
+
+#if defined(OS_CHROMEOS) && defined(TOUCH_UI)
+// TODO(yusukes): This part should be moved to extension_input_api_chromeos.cc.
+bool SendHandwritingStrokeFunction::RunImpl() {
+ chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get();
+ if (!cros_library->EnsureLoaded()) {
+ error_ = kCrosLibraryNotLoadedError;
+ return false;
+ }
+
+ // TODO(yusukes): Add a parameter for an input context ID.
+ ListValue* value = NULL;
+ EXTENSION_FUNCTION_VALIDATE(args_->GetList(0, &value));
+
+ chromeos::HandwritingStroke stroke;
+ for (size_t i = 0; i < value->GetSize(); ++i) {
+ DictionaryValue* dict;
+ double x = 0.0;
+ double y = 0.0;
+ EXTENSION_FUNCTION_VALIDATE(value->GetDictionary(i, &dict));
+ EXTENSION_FUNCTION_VALIDATE(dict->GetDouble("x", &x));
+ EXTENSION_FUNCTION_VALIDATE(dict->GetDouble("y", &y));
+ stroke.push_back(std::make_pair(x, y));
+ }
+ cros_library->GetInputMethodLibrary()->SendHandwritingStroke(stroke);
+ return true;
+}
+
+bool CancelHandwritingStrokesFunction::RunImpl() {
+ chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get();
+ if (!cros_library->EnsureLoaded()) {
+ error_ = kCrosLibraryNotLoadedError;
+ return false;
+ }
+
+ // TODO(yusukes): Add a parameter for an input context ID.
+ int stroke_count = 0; // zero means 'clear all strokes'.
+ if (HasOptionalArgument(0)) {
+ EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &stroke_count));
+ EXTENSION_FUNCTION_VALIDATE(stroke_count >= 0);
+ }
+ cros_library->GetInputMethodLibrary()->CancelHandwritingStrokes(stroke_count);
+ return true;
+}
+#endif
« 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