Chromium Code Reviews| Index: content/browser/web_contents/web_contents_impl.cc |
| =================================================================== |
| --- content/browser/web_contents/web_contents_impl.cc (revision 240912) |
| +++ content/browser/web_contents/web_contents_impl.cc (working copy) |
| @@ -278,6 +278,19 @@ |
| return true; |
| } |
| +bool ForEachFrameInternal( |
| + const base::Callback<void(RenderFrameHost*)>& on_frame, |
| + FrameTreeNode* node) { |
| + on_frame.Run(node->render_frame_host()); |
| + return true; |
| +} |
| + |
| +void SendToAllFramesInternal(IPC::Message* message, RenderFrameHost* rfh) { |
| + IPC::Message* message_copy = new IPC::Message(*message); |
| + message_copy->set_routing_id(rfh->GetRoutingID()); |
| + rfh->Send(message_copy); |
|
nasko
2013/12/16 19:47:37
Wouldn't this leak the message_copy? We allocate c
jam
2013/12/16 20:26:48
An IPC is owned by the Send call. the original IPC
|
| +} |
| + |
| } // namespace |
| WebContents* WebContents::Create(const WebContents::CreateParams& params) { |
| @@ -320,6 +333,13 @@ |
| return rvh->GetDelegate()->GetAsWebContents(); |
| } |
| +WebContents* WebContents::FromRenderFrameHost(RenderFrameHost* rfh) { |
|
nasko
2013/12/16 19:47:37
nit: Add // static prior to the method.
jam
2013/12/16 20:26:48
That's a personal preference that some people like
|
| + RenderFrameHostImpl* rfh_impl = static_cast<RenderFrameHostImpl*>(rfh); |
| + if (!rfh_impl) |
| + return NULL; |
| + return rfh_impl->delegate()->GetAsWebContents(); |
| +} |
| + |
| // WebContentsImpl::DestructionObserver ---------------------------------------- |
| class WebContentsImpl::DestructionObserver : public WebContentsObserver { |
| @@ -633,6 +653,16 @@ |
| return frame_tree_.root()->render_frame_host(); |
| } |
| +void WebContentsImpl::ForEachFrame( |
| + const base::Callback<void(RenderFrameHost*)>& on_frame) { |
| + frame_tree_.ForEach(base::Bind(&ForEachFrameInternal, on_frame)); |
| +} |
| + |
| +void WebContentsImpl::SendToAllFrames(IPC::Message* message) { |
| + ForEachFrame(base::Bind(&SendToAllFramesInternal, message)); |
| + delete message; |
|
nasko
2013/12/16 19:47:37
nit: It will be useful to document in the header t
jam
2013/12/16 20:26:48
that is the convention for all methods that send a
|
| +} |
| + |
| RenderViewHost* WebContentsImpl::GetRenderViewHost() const { |
| return GetRenderManager()->current_host(); |
| } |
| @@ -873,9 +903,9 @@ |
| std::set<GURL> WebContentsImpl::GetSitesInTab() const { |
| std::set<GURL> sites; |
| - frame_tree_.ForEach(Bind(&CollectSites, |
| - base::Unretained(GetBrowserContext()), |
| - base::Unretained(&sites))); |
| + frame_tree_.ForEach(base::Bind(&CollectSites, |
| + base::Unretained(GetBrowserContext()), |
| + base::Unretained(&sites))); |
| return sites; |
| } |
| @@ -1667,10 +1697,10 @@ |
| reload_type); |
| } |
| -void WebContentsImpl::RenderViewForInterstitialPageCreated( |
| - RenderViewHost* render_view_host) { |
| +void WebContentsImpl::RenderFrameForInterstitialPageCreated( |
| + RenderFrameHost* render_frame_host) { |
| FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
| - RenderViewForInterstitialPageCreated(render_view_host)); |
| + RenderFrameForInterstitialPageCreated(render_frame_host)); |
| } |
| void WebContentsImpl::AttachInterstitialPage( |
| @@ -2778,6 +2808,10 @@ |
| RenderFrameDeleted(render_frame_host)); |
| } |
| +WebContents* WebContentsImpl::GetAsWebContents() { |
| + return this; |
| +} |
| + |
| RenderViewHostDelegateView* WebContentsImpl::GetDelegateView() { |
| return render_view_host_delegate_view_; |
| } |
| @@ -2792,10 +2826,6 @@ |
| return renderer_preferences_; |
| } |
| -WebContents* WebContentsImpl::GetAsWebContents() { |
| - return this; |
| -} |
| - |
| gfx::Rect WebContentsImpl::GetRootWindowResizerRect() const { |
| if (delegate_) |
| return delegate_->GetRootWindowResizerRect(); |