Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Unified Diff: extensions/browser/extension_web_contents_observer.cc

Issue 1169223002: [Extensions] Clean up the handling of ExtensionHostMsg_Request (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Latest master Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698