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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/browser/extension_web_contents_observer.h" 5 #include "extensions/browser/extension_web_contents_observer.h"
6 6
7 #include "content/public/browser/child_process_security_policy.h" 7 #include "content/public/browser/child_process_security_policy.h"
8 #include "content/public/browser/render_frame_host.h" 8 #include "content/public/browser/render_frame_host.h"
9 #include "content/public/browser/render_process_host.h" 9 #include "content/public/browser/render_process_host.h"
10 #include "content/public/browser/render_view_host.h" 10 #include "content/public/browser/render_view_host.h"
(...skipping 27 matching lines...) Expand all
38 if (!url.SchemeIs(kExtensionScheme)) 38 if (!url.SchemeIs(kExtensionScheme))
39 return nullptr; 39 return nullptr;
40 40
41 return ExtensionRegistry::Get(browser_context) 41 return ExtensionRegistry::Get(browser_context)
42 ->enabled_extensions() 42 ->enabled_extensions()
43 .GetExtensionOrAppByURL(url); 43 .GetExtensionOrAppByURL(url);
44 } 44 }
45 45
46 } // namespace 46 } // namespace
47 47
48 // static
49 ExtensionWebContentsObserver* ExtensionWebContentsObserver::GetForWebContents(
50 content::WebContents* web_contents) {
51 return ExtensionsBrowserClient::Get()->GetExtensionWebContentsObserver(
52 web_contents);
53 }
54
48 ExtensionWebContentsObserver::ExtensionWebContentsObserver( 55 ExtensionWebContentsObserver::ExtensionWebContentsObserver(
49 content::WebContents* web_contents) 56 content::WebContents* web_contents)
50 : content::WebContentsObserver(web_contents), 57 : content::WebContentsObserver(web_contents),
51 browser_context_(web_contents->GetBrowserContext()) { 58 browser_context_(web_contents->GetBrowserContext()),
59 dispatcher_(browser_context_) {
52 NotifyRenderViewType(web_contents->GetRenderViewHost()); 60 NotifyRenderViewType(web_contents->GetRenderViewHost());
53 content::RenderFrameHost* host = web_contents->GetMainFrame(); 61 content::RenderFrameHost* host = web_contents->GetMainFrame();
54 if (host) 62 if (host)
55 RenderFrameHostChanged(nullptr, host); 63 RenderFrameHostChanged(nullptr, host);
64 dispatcher_.set_delegate(this);
56 } 65 }
57 66
58 ExtensionWebContentsObserver::~ExtensionWebContentsObserver() { 67 ExtensionWebContentsObserver::~ExtensionWebContentsObserver() {
59 } 68 }
60 69
70 content::WebContents* ExtensionWebContentsObserver::GetAssociatedWebContents()
71 const {
72 return web_contents();
73 }
74
61 void ExtensionWebContentsObserver::RenderViewCreated( 75 void ExtensionWebContentsObserver::RenderViewCreated(
62 content::RenderViewHost* render_view_host) { 76 content::RenderViewHost* render_view_host) {
63 NotifyRenderViewType(render_view_host); 77 NotifyRenderViewType(render_view_host);
64 78
65 const Extension* extension = GetExtension(render_view_host); 79 const Extension* extension = GetExtension(render_view_host);
66 if (!extension) 80 if (!extension)
67 return; 81 return;
68 82
69 content::RenderProcessHost* process = render_view_host->GetProcess(); 83 content::RenderProcessHost* process = render_view_host->GetProcess();
70 84
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 117
104 void ExtensionWebContentsObserver::RenderFrameCreated( 118 void ExtensionWebContentsObserver::RenderFrameCreated(
105 content::RenderFrameHost* render_frame_host) { 119 content::RenderFrameHost* render_frame_host) {
106 const Extension* extension = GetExtensionForRenderFrame(render_frame_host); 120 const Extension* extension = GetExtensionForRenderFrame(render_frame_host);
107 if (extension) { 121 if (extension) {
108 ExtensionsBrowserClient::Get()->RegisterMojoServices(render_frame_host, 122 ExtensionsBrowserClient::Get()->RegisterMojoServices(render_frame_host,
109 extension); 123 extension);
110 } 124 }
111 } 125 }
112 126
127 bool ExtensionWebContentsObserver::OnMessageReceived(
128 const IPC::Message& message) {
129 bool handled = true;
130 IPC_BEGIN_MESSAGE_MAP(ExtensionWebContentsObserver, message)
131 IPC_MESSAGE_HANDLER(ExtensionHostMsg_Request, OnRequest)
132 IPC_MESSAGE_UNHANDLED(handled = false)
133 IPC_END_MESSAGE_MAP()
134 return handled;
135 }
136
113 void ExtensionWebContentsObserver::FrameDeleted( 137 void ExtensionWebContentsObserver::FrameDeleted(
114 content::RenderFrameHost* render_frame_host) { 138 content::RenderFrameHost* render_frame_host) {
115 ProcessManager::Get(browser_context_)->UnregisterRenderFrameHost( 139 ProcessManager::Get(browser_context_)->UnregisterRenderFrameHost(
116 render_frame_host); 140 render_frame_host);
117 } 141 }
118 142
119 void ExtensionWebContentsObserver::RenderFrameHostChanged( 143 void ExtensionWebContentsObserver::RenderFrameHostChanged(
120 content::RenderFrameHost* old_host, 144 content::RenderFrameHost* old_host,
121 content::RenderFrameHost* new_host) { 145 content::RenderFrameHost* new_host) {
122 ProcessManager* process_manager = ProcessManager::Get(browser_context_); 146 ProcessManager* process_manager = ProcessManager::Get(browser_context_);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 // (excluding bookmark apps) will have a chrome-extension:// URL for their 206 // (excluding bookmark apps) will have a chrome-extension:// URL for their
183 // site, so we can ignore that wrinkle here. 207 // site, so we can ignore that wrinkle here.
184 const GURL& site = render_view_host->GetSiteInstance()->GetSiteURL(); 208 const GURL& site = render_view_host->GetSiteInstance()->GetSiteURL();
185 209
186 if (!site.SchemeIs(kExtensionScheme)) 210 if (!site.SchemeIs(kExtensionScheme))
187 return std::string(); 211 return std::string();
188 212
189 return site.host(); 213 return site.host();
190 } 214 }
191 215
216 void ExtensionWebContentsObserver::OnRequest(
217 const ExtensionHostMsg_Request_Params& params) {
218 dispatcher_.Dispatch(params, web_contents()->GetRenderViewHost());
219 }
220
192 } // namespace extensions 221 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/extension_web_contents_observer.h ('k') | extensions/browser/extensions_browser_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698