| OLD | NEW |
| 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 render_frame_host->GetRoutingID(), GetViewType(web_contents()))); | 54 render_frame_host->GetRoutingID(), GetViewType(web_contents()))); |
| 55 | 55 |
| 56 const Extension* frame_extension = GetExtensionFromFrame(render_frame_host); | 56 const Extension* frame_extension = GetExtensionFromFrame(render_frame_host); |
| 57 if (frame_extension) { | 57 if (frame_extension) { |
| 58 ExtensionsBrowserClient::Get()->RegisterMojoServices(render_frame_host, | 58 ExtensionsBrowserClient::Get()->RegisterMojoServices(render_frame_host, |
| 59 frame_extension); | 59 frame_extension); |
| 60 ProcessManager::Get(browser_context_) | 60 ProcessManager::Get(browser_context_) |
| 61 ->RegisterRenderFrameHost(web_contents(), render_frame_host, | 61 ->RegisterRenderFrameHost(web_contents(), render_frame_host, |
| 62 frame_extension); | 62 frame_extension); |
| 63 } | 63 } |
| 64 | |
| 65 // This can be different from |frame_extension| above in the case of, e.g., | |
| 66 // a non-extension iframe hosted in a chrome-extension:// page. | |
| 67 const Extension* main_frame_extension = | |
| 68 GetExtensionFromFrame(web_contents()->GetMainFrame()); | |
| 69 // We notify the render frame that it's in an extension's tab, but not if this | |
| 70 // is a hosted app (we don't mind scripting on hosted apps' pages). | |
| 71 if (main_frame_extension && !main_frame_extension->is_hosted_app()) { | |
| 72 render_frame_host->Send(new ExtensionMsg_SetMainFrameExtensionOwner( | |
| 73 render_frame_host->GetRoutingID(), main_frame_extension->id())); | |
| 74 } | |
| 75 } | 64 } |
| 76 | 65 |
| 77 content::WebContents* ExtensionWebContentsObserver::GetAssociatedWebContents() | 66 content::WebContents* ExtensionWebContentsObserver::GetAssociatedWebContents() |
| 78 const { | 67 const { |
| 79 return web_contents(); | 68 return web_contents(); |
| 80 } | 69 } |
| 81 | 70 |
| 82 void ExtensionWebContentsObserver::RenderViewCreated( | 71 void ExtensionWebContentsObserver::RenderViewCreated( |
| 83 content::RenderViewHost* render_view_host) { | 72 content::RenderViewHost* render_view_host) { |
| 84 // TODO(devlin): Most/all of this should move to RenderFrameCreated. | 73 // TODO(devlin): Most/all of this should move to RenderFrameCreated. |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 // Since this is called for all existing RenderFrameHosts during the | 208 // Since this is called for all existing RenderFrameHosts during the |
| 220 // ExtensionWebContentsObserver's creation, it's possible that not all hosts | 209 // ExtensionWebContentsObserver's creation, it's possible that not all hosts |
| 221 // are ready. | 210 // are ready. |
| 222 // We only initialize the frame if the renderer counterpart is live; otherwise | 211 // We only initialize the frame if the renderer counterpart is live; otherwise |
| 223 // we wait for the RenderFrameCreated notification. | 212 // we wait for the RenderFrameCreated notification. |
| 224 if (render_frame_host->IsRenderFrameLive()) | 213 if (render_frame_host->IsRenderFrameLive()) |
| 225 InitializeRenderFrame(render_frame_host); | 214 InitializeRenderFrame(render_frame_host); |
| 226 } | 215 } |
| 227 | 216 |
| 228 } // namespace extensions | 217 } // namespace extensions |
| OLD | NEW |