Chromium Code Reviews| 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..04d4f6a026c7208d481e981887779e9a9d9b121a 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,7 @@ 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."; |
| +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.
|
| ui::EventType GetTypeFromString(const std::string& type) { |
| if (type == kKeyDown) { |
| @@ -116,3 +122,44 @@ bool SendKeyboardEventInputFunction::RunImpl() { |
| return true; |
| } |
| + |
| +#if defined(OS_CHROMEOS) && defined(TOUCH_UI) |
| +bool SendHandwritingStrokeFunction::RunImpl() { |
| + // 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)); |
| + } |
| + chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get(); |
| + if (!cros_library->EnsureLoaded()) { |
| + error_ = kCrosLibraryNotLoadedError; |
| + return false; |
| + } |
| + cros_library->GetInputMethodLibrary()->SendHandwritingStroke(stroke); |
| + return true; |
| +} |
| + |
| +bool CancelHandwritingFunction::RunImpl() { |
| + // TODO(yusukes): Add a parameter for an input context ID. |
| + int n_strokes = 0; // zero means 'clear all strokes'. |
| + if (HasOptionalArgument(0)) { |
| + EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &n_strokes)); |
| + } |
| + chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get(); |
| + if (!cros_library->EnsureLoaded()) { |
| + error_ = kCrosLibraryNotLoadedError; |
| + return false; |
| + } |
| + cros_library->GetInputMethodLibrary()->CancelHandwriting(n_strokes); |
| + return true; |
| +} |
| +#endif |