| Index: content/browser/renderer_host/ime_adapter_android.cc
|
| diff --git a/content/browser/renderer_host/ime_adapter_android.cc b/content/browser/renderer_host/ime_adapter_android.cc
|
| index d70d4969d2ed28d4e424fb372cd512d94019e2a7..9f6ab7ff337b211078ff711bfc6233c8e0bf848a 100644
|
| --- a/content/browser/renderer_host/ime_adapter_android.cc
|
| +++ b/content/browser/renderer_host/ime_adapter_android.cc
|
| @@ -151,21 +151,16 @@ bool ImeAdapterAndroid::SendKeyEvent(
|
| NativeWebKeyboardEvent event = NativeWebKeyboardEventFromKeyEvent(
|
| env, original_key_event, action, modifiers,
|
| time_ms, key_code, scan_code, is_system_key, unicode_char);
|
| - bool key_down_text_insertion =
|
| + bool create_char_event =
|
| event.type == blink::WebInputEvent::RawKeyDown && event.text[0];
|
| - // If we are going to follow up with a synthetic Char event, then that's the
|
| - // one we expect to test if it's handled or unhandled, so skip handling the
|
| - // "real" event in the browser.
|
| - event.skip_in_browser = key_down_text_insertion;
|
| + // Even when we don't consume this event, we should not propagate it to
|
| + // onUnhandledKeyEvent() because char event can still be consumed.
|
| + event.skip_in_browser = create_char_event;
|
| rwhva_->SendKeyEvent(event);
|
| - if (key_down_text_insertion) {
|
| - // Send a Char event, but without an os_event since we don't want to
|
| - // roundtrip back to java such synthetic event.
|
| - NativeWebKeyboardEvent char_event(blink::WebInputEvent::Char, modifiers,
|
| - time_ms / 1000.0, key_code, scan_code,
|
| - unicode_char,
|
| - is_system_key);
|
| - char_event.skip_in_browser = key_down_text_insertion;
|
| + if (create_char_event) {
|
| + NativeWebKeyboardEvent char_event(
|
| + original_key_event, blink::WebInputEvent::Char, modifiers,
|
| + time_ms / 1000.0, key_code, scan_code, unicode_char, is_system_key);
|
| rwhva_->SendKeyEvent(char_event);
|
| }
|
| return true;
|
|
|