diff options
author | lazyboy <lazyboy@chromium.org> | 2014-09-08 23:20:03 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-09 06:23:15 +0000 |
commit | 3895fc1cf74afc344677112d00ad31b0d3311807 (patch) | |
tree | a3290e275d5863e45124a588480d7498b16f3011 | |
parent | 940e498e0aed4f8881cf83b894754bbdd420f374 (diff) | |
download | chromium_src-3895fc1cf74afc344677112d00ad31b0d3311807.zip chromium_src-3895fc1cf74afc344677112d00ad31b0d3311807.tar.gz chromium_src-3895fc1cf74afc344677112d00ad31b0d3311807.tar.bz2 |
Add keyboard handler for mime-handler-view.
BUG=411753
Test=With mime handler view turned on, click on a PDF to
focus the plugin, now send some keyboard event, like CTRL+L.
See the keyboard event work, i.e. the chrome address bar gets focus.
Review URL: https://codereview.chromium.org/557523002
Cr-Commit-Position: refs/heads/master@{#293868}
-rw-r--r-- | extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc | 16 | ||||
-rw-r--r-- | extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h | 5 |
2 files changed, 21 insertions, 0 deletions
diff --git a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc index 3a31d10..c65d614 100644 --- a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc +++ b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc @@ -94,4 +94,20 @@ void MimeHandlerViewGuest::DidAttachToEmbedder() { std::string()); } +void MimeHandlerViewGuest::HandleKeyboardEvent( + WebContents* source, + const content::NativeWebKeyboardEvent& event) { + if (!attached()) + return; + + // Send the keyboard events back to the embedder to reprocess them. + // TODO(fsamuel): This introduces the possibility of out-of-order keyboard + // events because the guest may be arbitrarily delayed when responding to + // keyboard events. In that time, the embedder may have received and processed + // additional key events. This needs to be fixed as soon as possible. + // See http://crbug.com/229882. + embedder_web_contents()->GetDelegate()->HandleKeyboardEvent(web_contents(), + event); +} + } // namespace extensions diff --git a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h index f3baaff..3eff421 100644 --- a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h +++ b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h @@ -26,6 +26,11 @@ class MimeHandlerViewGuest : public GuestView<MimeHandlerViewGuest> { const WebContentsCreatedCallback& callback) OVERRIDE; virtual void DidAttachToEmbedder() OVERRIDE; + // WebContentsDelegate implementation. + virtual void HandleKeyboardEvent( + content::WebContents* source, + const content::NativeWebKeyboardEvent& event) OVERRIDE; + private: MimeHandlerViewGuest(content::BrowserContext* browser_context, int guest_instance_id); |