summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlazyboy <lazyboy@chromium.org>2014-09-08 23:20:03 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-09 06:23:15 +0000
commit3895fc1cf74afc344677112d00ad31b0d3311807 (patch)
treea3290e275d5863e45124a588480d7498b16f3011
parent940e498e0aed4f8881cf83b894754bbdd420f374 (diff)
downloadchromium_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.cc16
-rw-r--r--extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h5
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);