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 eca09668ecc1fc5f08cb20b28ba1bb47eff959e0..349e20efc71f9b3b446359ab873fcaa35202d2f1 100644 |
--- a/chrome/browser/extensions/extension_input_api.cc |
+++ b/chrome/browser/extensions/extension_input_api.cc |
@@ -10,12 +10,12 @@ |
#include "base/values.h" |
#include "chrome/browser/browser_window.h" |
#include "chrome/browser/extensions/extension_tabs_module.h" |
+#include "chrome/browser/extensions/key_identifier_conversion_views.h" |
#include "chrome/browser/renderer_host/render_view_host.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/views/frame/browser_view.h" |
#include "chrome/common/native_web_keyboard_event.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" |
-#include "ui/base/keycodes/keyboard_code_conversion.h" |
#include "views/event.h" |
#include "views/widget/root_view.h" |
@@ -35,6 +35,7 @@ const char kKeyUp[] = "keyup"; |
const char kUnknownEventTypeError[] = "Unknown event type."; |
const char kUnknownOrUnsupportedKeyIdentiferError[] = "Unknown or unsupported " |
"key identifier."; |
+const char kUnsupportedModifier[] = "Unsupported modifier."; |
const char kNoValidRecipientError[] = "No valid recipient for event."; |
const char kKeyEventUnprocessedError[] = "Event was not handled."; |
@@ -86,25 +87,31 @@ bool SendKeyboardEventInputFunction::RunImpl() { |
EXTENSION_FUNCTION_VALIDATE(args->GetString(kKeyIdentifier, &identifier)); |
TrimWhitespaceASCII(identifier, TRIM_ALL, &identifier); |
- ui::KeyboardCode code = ui::KeyCodeFromKeyIdentifier(identifier); |
- if (code == ui::VKEY_UNKNOWN) { |
+ const views::KeyEvent& prototype_event = |
+ KeyEventFromKeyIdentifier(identifier); |
+ if (prototype_event.GetKeyCode() == ui::VKEY_UNKNOWN) { |
error_ = kUnknownOrUnsupportedKeyIdentiferError; |
return false; |
} |
- int flags = 0; |
+ int flags = prototype_event.GetFlags(); |
bool alt = false; |
if (args->GetBoolean(kAlt, &alt)) |
- flags |= alt ? WebKit::WebInputEvent::AltKey : 0; |
+ flags |= alt ? views::Event::EF_ALT_DOWN : 0; |
bool ctrl = false; |
if (args->GetBoolean(kCtrl, &ctrl)) |
- flags |= ctrl ? WebKit::WebInputEvent::ControlKey : 0; |
- bool meta = false; |
- if (args->GetBoolean(kMeta, &meta)) |
- flags |= meta ? WebKit::WebInputEvent::MetaKey : 0; |
+ flags |= ctrl ? views::Event::EF_CONTROL_DOWN : 0; |
bool shift = false; |
if (args->GetBoolean(kShift, &shift)) |
- flags |= shift ? WebKit::WebInputEvent::ShiftKey : 0; |
+ flags |= shift ? views::Event::EF_SHIFT_DOWN : 0; |
+ bool meta = false; |
+ if (args->GetBoolean(kMeta, &meta)) { |
+ // Views does not have a Meta event flag, so return an error for now. |
+ if (meta) { |
+ error_ = kUnsupportedModifier; |
+ return false; |
+ } |
+ } |
views::RootView* root_view = GetRootView(); |
if (!root_view) { |
@@ -112,7 +119,7 @@ bool SendKeyboardEventInputFunction::RunImpl() { |
return false; |
} |
- views::KeyEvent event(type, code, flags, 0, 0); |
+ views::KeyEvent event(type, prototype_event.GetKeyCode(), flags, 0, 0); |
if (!root_view->ProcessKeyEvent(event)) { |
error_ = kKeyEventUnprocessedError; |
return false; |