summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-02 00:19:45 +0000
committercpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-02 00:19:45 +0000
commit11e45efce9cc17e1b2b76e6a636cc63b2c021324 (patch)
tree34ca44e268f04034943a6ef2718874f1ba903ab7
parentc356dc8972b1b0578e3e016de4ee56a62a5a02aa (diff)
downloadchromium_src-11e45efce9cc17e1b2b76e6a636cc63b2c021324.zip
chromium_src-11e45efce9cc17e1b2b76e6a636cc63b2c021324.tar.gz
chromium_src-11e45efce9cc17e1b2b76e6a636cc63b2c021324.tar.bz2
Allow accelerators to work on Windows Ash mode
We had 3 issues 1- NativeKeyboardEvent had skip_in_browser = true hardcoded so when the event comes back from the renderer we ignore it 2- NativeKeyboardEvent was constructed in a way that ctrl-f would have the wrong keycode 3- The unhandled keyboard event handler assumed that the ui event had an inner native MSG which is not the case for ash so we would crash on say F10. BUG=173572 TEST=see bug Review URL: https://codereview.chromium.org/12082112 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@180210 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc2
-rw-r--r--content/browser/renderer_host/native_web_keyboard_event_aura.cc2
-rw-r--r--content/browser/renderer_host/render_widget_host_view_aura.cc10
3 files changed, 6 insertions, 8 deletions
diff --git a/chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc b/chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc
index d8728d3..39df86a 100644
--- a/chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc
+++ b/chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc
@@ -56,6 +56,8 @@ void UnhandledKeyboardEventHandler::HandleKeyboardEvent(
// Any unhandled keyboard/character messages should be defproced.
// This allows stuff like F10, etc to work correctly.
#if defined(USE_AURA)
+ if (!event.os_event)
+ return;
const MSG& message(event.os_event->native_event());
#else
const MSG& message(event.os_event);
diff --git a/content/browser/renderer_host/native_web_keyboard_event_aura.cc b/content/browser/renderer_host/native_web_keyboard_event_aura.cc
index 2fb3f24..1658d8d 100644
--- a/content/browser/renderer_host/native_web_keyboard_event_aura.cc
+++ b/content/browser/renderer_host/native_web_keyboard_event_aura.cc
@@ -58,7 +58,7 @@ NativeWebKeyboardEvent::NativeWebKeyboardEvent(
int state,
double time_stamp_seconds)
: os_event(NULL),
- skip_in_browser(true /* already handled by the input method */) {
+ skip_in_browser(false) {
switch (key_event_type) {
case ui::ET_KEY_PRESSED:
type = is_char ? WebKit::WebInputEvent::Char :
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index 7932089..914b155 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -1479,16 +1479,12 @@ void RenderWidgetHostViewAura::OnKeyEvent(ui::KeyEvent* event) {
} else {
// We don't have to communicate with an input method here.
if (!event->HasNativeEvent()) {
- // Send a fabricated event, which is usually a VKEY_PROCESSKEY IME event.
- // For keys like VK_BACK/VK_LEFT, etc we need to send the raw keycode to
- // the renderer.
- double now = ui::EventTimeForNow().InSecondsF();
NativeWebKeyboardEvent webkit_event(
event->type(),
- false /* is_char */,
- event->GetCharacter() ? event->GetCharacter() : event->key_code(),
+ event->is_char(),
+ event->is_char() ? event->GetCharacter() : event->key_code(),
event->flags(),
- now);
+ ui::EventTimeForNow().InSecondsF());
host_->ForwardKeyboardEvent(webkit_event);
} else {
NativeWebKeyboardEvent webkit_event(event);