| Index: extensions/browser/extension_web_contents_observer.cc
|
| diff --git a/extensions/browser/extension_web_contents_observer.cc b/extensions/browser/extension_web_contents_observer.cc
|
| index 1b1cad86d7336f021af38eacc112b75338a19fd5..779f9a0bc41efd1da05dd7fd5d7ea7535f05caf6 100644
|
| --- a/extensions/browser/extension_web_contents_observer.cc
|
| +++ b/extensions/browser/extension_web_contents_observer.cc
|
| @@ -45,19 +45,33 @@ const Extension* GetExtensionForRenderFrame(
|
|
|
| } // namespace
|
|
|
| +// static
|
| +ExtensionWebContentsObserver* ExtensionWebContentsObserver::GetForWebContents(
|
| + content::WebContents* web_contents) {
|
| + return ExtensionsBrowserClient::Get()->GetExtensionWebContentsObserver(
|
| + web_contents);
|
| +}
|
| +
|
| ExtensionWebContentsObserver::ExtensionWebContentsObserver(
|
| content::WebContents* web_contents)
|
| : content::WebContentsObserver(web_contents),
|
| - browser_context_(web_contents->GetBrowserContext()) {
|
| + browser_context_(web_contents->GetBrowserContext()),
|
| + dispatcher_(browser_context_) {
|
| NotifyRenderViewType(web_contents->GetRenderViewHost());
|
| content::RenderFrameHost* host = web_contents->GetMainFrame();
|
| if (host)
|
| RenderFrameHostChanged(nullptr, host);
|
| + dispatcher_.set_delegate(this);
|
| }
|
|
|
| ExtensionWebContentsObserver::~ExtensionWebContentsObserver() {
|
| }
|
|
|
| +content::WebContents* ExtensionWebContentsObserver::GetAssociatedWebContents()
|
| + const {
|
| + return web_contents();
|
| +}
|
| +
|
| void ExtensionWebContentsObserver::RenderViewCreated(
|
| content::RenderViewHost* render_view_host) {
|
| NotifyRenderViewType(render_view_host);
|
| @@ -110,6 +124,16 @@ void ExtensionWebContentsObserver::RenderFrameCreated(
|
| }
|
| }
|
|
|
| +bool ExtensionWebContentsObserver::OnMessageReceived(
|
| + const IPC::Message& message) {
|
| + bool handled = true;
|
| + IPC_BEGIN_MESSAGE_MAP(ExtensionWebContentsObserver, message)
|
| + IPC_MESSAGE_HANDLER(ExtensionHostMsg_Request, OnRequest)
|
| + IPC_MESSAGE_UNHANDLED(handled = false)
|
| + IPC_END_MESSAGE_MAP()
|
| + return handled;
|
| +}
|
| +
|
| void ExtensionWebContentsObserver::FrameDeleted(
|
| content::RenderFrameHost* render_frame_host) {
|
| ProcessManager::Get(browser_context_)->UnregisterRenderFrameHost(
|
| @@ -189,4 +213,9 @@ std::string ExtensionWebContentsObserver::GetExtensionId(
|
| return site.host();
|
| }
|
|
|
| +void ExtensionWebContentsObserver::OnRequest(
|
| + const ExtensionHostMsg_Request_Params& params) {
|
| + dispatcher_.Dispatch(params, web_contents()->GetRenderViewHost());
|
| +}
|
| +
|
| } // namespace extensions
|
|
|