Make keyboard shortcuts work when the dev tools are focused

We just pass unhandled key events from dev tools along to the main
WebContentsDelegate.

Part of #2.
This commit is contained in:
Adam Roben 2013-03-14 13:48:42 -04:00
parent be6d990a97
commit 4ca59ba279
2 changed files with 19 additions and 1 deletions

View file

@ -24,8 +24,10 @@ content::WebContents* DevToolsFrontend::Show(content::WebContents* inspected_con
DevToolsFrontend::DevToolsFrontend(content::WebContents* inspected_contents)
: WebContentsObserver(content::WebContents::Create(content::WebContents::CreateParams(inspected_contents->GetBrowserContext()))),
inspected_web_contents_(inspected_contents),
agent_host_(content::DevToolsAgentHost::GetFor(inspected_contents->GetRenderViewHost())),
frontend_host_(content::DevToolsClientHost::CreateDevToolsFrontendHost(web_contents(), this)) {
web_contents()->SetDelegate(this);
auto client = static_cast<BrowserClient*>(content::GetContentClient()->browser());
auto handler = client->browser_main_parts()->devtools_http_handler();
auto url = handler->GetFrontendURL(nullptr);
@ -81,4 +83,10 @@ void DevToolsFrontend::WebContentsDestroyed(content::WebContents*) {
delete this;
}
void DevToolsFrontend::HandleKeyboardEvent(content::WebContents* source, const content::NativeWebKeyboardEvent& event) {
auto delegate = inspected_web_contents_->GetDelegate();
if (delegate)
delegate->HandleKeyboardEvent(source, event);
}
}

View file

@ -7,6 +7,7 @@
#include "base/memory/scoped_ptr.h"
#include "content/public/browser/devtools_frontend_host_delegate.h"
#include "content/public/browser/web_contents_delegate.h"
#include "content/public/browser/web_contents_observer.h"
namespace content {
@ -16,7 +17,7 @@ class DevToolsClientHost;
namespace brightray {
class DevToolsFrontend : content::DevToolsFrontendHostDelegate, content::WebContentsObserver {
class DevToolsFrontend : content::DevToolsFrontendHostDelegate, content::WebContentsObserver, content::WebContentsDelegate {
public:
static content::WebContents* Show(content::WebContents* inspected_contents);
@ -24,6 +25,8 @@ private:
DevToolsFrontend(content::WebContents* inspected_contents);
~DevToolsFrontend();
// content::DevToolsFrontendHostDelegate
virtual void ActivateWindow() OVERRIDE;
virtual void ChangeAttachedWindowHeight(unsigned height) OVERRIDE;
virtual void CloseWindow() OVERRIDE;
@ -40,9 +43,16 @@ private:
virtual void RemoveFileSystem(const std::string& file_system_path) OVERRIDE;
virtual void InspectedContentsClosing() OVERRIDE;
// content::WebContentsObserver
virtual void RenderViewCreated(content::RenderViewHost*) OVERRIDE;
virtual void WebContentsDestroyed(content::WebContents*) OVERRIDE;
// content::WebContentsDelegate
virtual void HandleKeyboardEvent(content::WebContents*, const content::NativeWebKeyboardEvent&) OVERRIDE;
content::WebContents* inspected_web_contents_;
scoped_refptr<content::DevToolsAgentHost> agent_host_;
scoped_ptr<content::DevToolsClientHost> frontend_host_;
};