OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/web_contents/web_contents_impl.h" | 5 #include "content/browser/web_contents/web_contents_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 } | 272 } |
273 | 273 |
274 // Helper function for retrieving all the sites in a frame tree. | 274 // Helper function for retrieving all the sites in a frame tree. |
275 bool CollectSites(BrowserContext* context, | 275 bool CollectSites(BrowserContext* context, |
276 std::set<GURL>* sites, | 276 std::set<GURL>* sites, |
277 FrameTreeNode* node) { | 277 FrameTreeNode* node) { |
278 sites->insert(SiteInstance::GetSiteForURL(context, node->current_url())); | 278 sites->insert(SiteInstance::GetSiteForURL(context, node->current_url())); |
279 return true; | 279 return true; |
280 } | 280 } |
281 | 281 |
| 282 bool ForEachFrameInternal( |
| 283 const base::Callback<void(RenderFrameHost*)>& on_frame, |
| 284 FrameTreeNode* node) { |
| 285 on_frame.Run(node->render_frame_host()); |
| 286 return true; |
| 287 } |
| 288 |
| 289 void SendToAllFramesInternal(IPC::Message* message, RenderFrameHost* rfh) { |
| 290 IPC::Message* message_copy = new IPC::Message(*message); |
| 291 message_copy->set_routing_id(rfh->GetRoutingID()); |
| 292 rfh->Send(message_copy); |
| 293 } |
| 294 |
282 } // namespace | 295 } // namespace |
283 | 296 |
284 WebContents* WebContents::Create(const WebContents::CreateParams& params) { | 297 WebContents* WebContents::Create(const WebContents::CreateParams& params) { |
285 return WebContentsImpl::CreateWithOpener( | 298 return WebContentsImpl::CreateWithOpener( |
286 params, static_cast<WebContentsImpl*>(params.opener)); | 299 params, static_cast<WebContentsImpl*>(params.opener)); |
287 } | 300 } |
288 | 301 |
289 WebContents* WebContents::CreateWithSessionStorage( | 302 WebContents* WebContents::CreateWithSessionStorage( |
290 const WebContents::CreateParams& params, | 303 const WebContents::CreateParams& params, |
291 const SessionStorageNamespaceMap& session_storage_namespace_map) { | 304 const SessionStorageNamespaceMap& session_storage_namespace_map) { |
(...skipping 22 matching lines...) Expand all Loading... |
314 g_created_callbacks.Get().erase(g_created_callbacks.Get().begin() + i); | 327 g_created_callbacks.Get().erase(g_created_callbacks.Get().begin() + i); |
315 return; | 328 return; |
316 } | 329 } |
317 } | 330 } |
318 } | 331 } |
319 | 332 |
320 WebContents* WebContents::FromRenderViewHost(const RenderViewHost* rvh) { | 333 WebContents* WebContents::FromRenderViewHost(const RenderViewHost* rvh) { |
321 return rvh->GetDelegate()->GetAsWebContents(); | 334 return rvh->GetDelegate()->GetAsWebContents(); |
322 } | 335 } |
323 | 336 |
| 337 WebContents* WebContents::FromRenderFrameHost(RenderFrameHost* rfh) { |
| 338 RenderFrameHostImpl* rfh_impl = static_cast<RenderFrameHostImpl*>(rfh); |
| 339 if (!rfh_impl) |
| 340 return NULL; |
| 341 return rfh_impl->delegate()->GetAsWebContents(); |
| 342 } |
| 343 |
324 // WebContentsImpl::DestructionObserver ---------------------------------------- | 344 // WebContentsImpl::DestructionObserver ---------------------------------------- |
325 | 345 |
326 class WebContentsImpl::DestructionObserver : public WebContentsObserver { | 346 class WebContentsImpl::DestructionObserver : public WebContentsObserver { |
327 public: | 347 public: |
328 DestructionObserver(WebContentsImpl* owner, WebContents* watched_contents) | 348 DestructionObserver(WebContentsImpl* owner, WebContents* watched_contents) |
329 : WebContentsObserver(watched_contents), | 349 : WebContentsObserver(watched_contents), |
330 owner_(owner) { | 350 owner_(owner) { |
331 } | 351 } |
332 | 352 |
333 // WebContentsObserver: | 353 // WebContentsObserver: |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
627 | 647 |
628 RenderProcessHost* WebContentsImpl::GetRenderProcessHost() const { | 648 RenderProcessHost* WebContentsImpl::GetRenderProcessHost() const { |
629 RenderViewHostImpl* host = GetRenderManager()->current_host(); | 649 RenderViewHostImpl* host = GetRenderManager()->current_host(); |
630 return host ? host->GetProcess() : NULL; | 650 return host ? host->GetProcess() : NULL; |
631 } | 651 } |
632 | 652 |
633 RenderFrameHost* WebContentsImpl::GetMainFrame() { | 653 RenderFrameHost* WebContentsImpl::GetMainFrame() { |
634 return frame_tree_.root()->render_frame_host(); | 654 return frame_tree_.root()->render_frame_host(); |
635 } | 655 } |
636 | 656 |
| 657 void WebContentsImpl::ForEachFrame( |
| 658 const base::Callback<void(RenderFrameHost*)>& on_frame) { |
| 659 frame_tree_.ForEach(base::Bind(&ForEachFrameInternal, on_frame)); |
| 660 } |
| 661 |
| 662 void WebContentsImpl::SendToAllFrames(IPC::Message* message) { |
| 663 ForEachFrame(base::Bind(&SendToAllFramesInternal, message)); |
| 664 delete message; |
| 665 } |
| 666 |
637 RenderViewHost* WebContentsImpl::GetRenderViewHost() const { | 667 RenderViewHost* WebContentsImpl::GetRenderViewHost() const { |
638 return GetRenderManager()->current_host(); | 668 return GetRenderManager()->current_host(); |
639 } | 669 } |
640 | 670 |
641 void WebContentsImpl::GetRenderViewHostAtPosition( | 671 void WebContentsImpl::GetRenderViewHostAtPosition( |
642 int x, | 672 int x, |
643 int y, | 673 int y, |
644 const base::Callback<void(RenderViewHost*, int, int)>& callback) { | 674 const base::Callback<void(RenderViewHost*, int, int)>& callback) { |
645 BrowserPluginEmbedder* embedder = GetBrowserPluginEmbedder(); | 675 BrowserPluginEmbedder* embedder = GetBrowserPluginEmbedder(); |
646 if (embedder) | 676 if (embedder) |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
867 uint64 WebContentsImpl::GetUploadSize() const { | 897 uint64 WebContentsImpl::GetUploadSize() const { |
868 return upload_size_; | 898 return upload_size_; |
869 } | 899 } |
870 | 900 |
871 uint64 WebContentsImpl::GetUploadPosition() const { | 901 uint64 WebContentsImpl::GetUploadPosition() const { |
872 return upload_position_; | 902 return upload_position_; |
873 } | 903 } |
874 | 904 |
875 std::set<GURL> WebContentsImpl::GetSitesInTab() const { | 905 std::set<GURL> WebContentsImpl::GetSitesInTab() const { |
876 std::set<GURL> sites; | 906 std::set<GURL> sites; |
877 frame_tree_.ForEach(Bind(&CollectSites, | 907 frame_tree_.ForEach(base::Bind(&CollectSites, |
878 base::Unretained(GetBrowserContext()), | 908 base::Unretained(GetBrowserContext()), |
879 base::Unretained(&sites))); | 909 base::Unretained(&sites))); |
880 return sites; | 910 return sites; |
881 } | 911 } |
882 | 912 |
883 const std::string& WebContentsImpl::GetEncoding() const { | 913 const std::string& WebContentsImpl::GetEncoding() const { |
884 return encoding_; | 914 return encoding_; |
885 } | 915 } |
886 | 916 |
887 bool WebContentsImpl::DisplayedInsecureContent() const { | 917 bool WebContentsImpl::DisplayedInsecureContent() const { |
888 return displayed_insecure_content_; | 918 return displayed_insecure_content_; |
889 } | 919 } |
(...skipping 771 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1661 return GetRenderViewHost()->Send(message); | 1691 return GetRenderViewHost()->Send(message); |
1662 } | 1692 } |
1663 | 1693 |
1664 bool WebContentsImpl::NavigateToPendingEntry( | 1694 bool WebContentsImpl::NavigateToPendingEntry( |
1665 NavigationController::ReloadType reload_type) { | 1695 NavigationController::ReloadType reload_type) { |
1666 return NavigateToEntry( | 1696 return NavigateToEntry( |
1667 *NavigationEntryImpl::FromNavigationEntry(controller_.GetPendingEntry()), | 1697 *NavigationEntryImpl::FromNavigationEntry(controller_.GetPendingEntry()), |
1668 reload_type); | 1698 reload_type); |
1669 } | 1699 } |
1670 | 1700 |
1671 void WebContentsImpl::RenderViewForInterstitialPageCreated( | 1701 void WebContentsImpl::RenderFrameForInterstitialPageCreated( |
1672 RenderViewHost* render_view_host) { | 1702 RenderFrameHost* render_frame_host) { |
1673 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 1703 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
1674 RenderViewForInterstitialPageCreated(render_view_host)); | 1704 RenderFrameForInterstitialPageCreated(render_frame_host)); |
1675 } | 1705 } |
1676 | 1706 |
1677 void WebContentsImpl::AttachInterstitialPage( | 1707 void WebContentsImpl::AttachInterstitialPage( |
1678 InterstitialPageImpl* interstitial_page) { | 1708 InterstitialPageImpl* interstitial_page) { |
1679 DCHECK(interstitial_page); | 1709 DCHECK(interstitial_page); |
1680 GetRenderManager()->set_interstitial_page(interstitial_page); | 1710 GetRenderManager()->set_interstitial_page(interstitial_page); |
1681 | 1711 |
1682 // Cancel any visible dialogs so that they don't interfere with the | 1712 // Cancel any visible dialogs so that they don't interfere with the |
1683 // interstitial. | 1713 // interstitial. |
1684 if (dialog_manager_) | 1714 if (dialog_manager_) |
(...skipping 1087 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2772 observers_, | 2802 observers_, |
2773 RenderFrameCreated(render_frame_host)); | 2803 RenderFrameCreated(render_frame_host)); |
2774 } | 2804 } |
2775 | 2805 |
2776 void WebContentsImpl::RenderFrameDeleted(RenderFrameHost* render_frame_host) { | 2806 void WebContentsImpl::RenderFrameDeleted(RenderFrameHost* render_frame_host) { |
2777 FOR_EACH_OBSERVER(WebContentsObserver, | 2807 FOR_EACH_OBSERVER(WebContentsObserver, |
2778 observers_, | 2808 observers_, |
2779 RenderFrameDeleted(render_frame_host)); | 2809 RenderFrameDeleted(render_frame_host)); |
2780 } | 2810 } |
2781 | 2811 |
| 2812 WebContents* WebContentsImpl::GetAsWebContents() { |
| 2813 return this; |
| 2814 } |
| 2815 |
2782 RenderViewHostDelegateView* WebContentsImpl::GetDelegateView() { | 2816 RenderViewHostDelegateView* WebContentsImpl::GetDelegateView() { |
2783 return render_view_host_delegate_view_; | 2817 return render_view_host_delegate_view_; |
2784 } | 2818 } |
2785 | 2819 |
2786 RenderViewHostDelegate::RendererManagement* | 2820 RenderViewHostDelegate::RendererManagement* |
2787 WebContentsImpl::GetRendererManagementDelegate() { | 2821 WebContentsImpl::GetRendererManagementDelegate() { |
2788 return GetRenderManager(); | 2822 return GetRenderManager(); |
2789 } | 2823 } |
2790 | 2824 |
2791 RendererPreferences WebContentsImpl::GetRendererPrefs( | 2825 RendererPreferences WebContentsImpl::GetRendererPrefs( |
2792 BrowserContext* browser_context) const { | 2826 BrowserContext* browser_context) const { |
2793 return renderer_preferences_; | 2827 return renderer_preferences_; |
2794 } | 2828 } |
2795 | 2829 |
2796 WebContents* WebContentsImpl::GetAsWebContents() { | |
2797 return this; | |
2798 } | |
2799 | |
2800 gfx::Rect WebContentsImpl::GetRootWindowResizerRect() const { | 2830 gfx::Rect WebContentsImpl::GetRootWindowResizerRect() const { |
2801 if (delegate_) | 2831 if (delegate_) |
2802 return delegate_->GetRootWindowResizerRect(); | 2832 return delegate_->GetRootWindowResizerRect(); |
2803 return gfx::Rect(); | 2833 return gfx::Rect(); |
2804 } | 2834 } |
2805 | 2835 |
2806 void WebContentsImpl::RemoveBrowserPluginEmbedder() { | 2836 void WebContentsImpl::RemoveBrowserPluginEmbedder() { |
2807 if (browser_plugin_embedder_) | 2837 if (browser_plugin_embedder_) |
2808 browser_plugin_embedder_.reset(); | 2838 browser_plugin_embedder_.reset(); |
2809 } | 2839 } |
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3786 } | 3816 } |
3787 | 3817 |
3788 void WebContentsImpl::OnFrameRemoved( | 3818 void WebContentsImpl::OnFrameRemoved( |
3789 RenderViewHostImpl* render_view_host, | 3819 RenderViewHostImpl* render_view_host, |
3790 int64 frame_id) { | 3820 int64 frame_id) { |
3791 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 3821 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
3792 FrameDetached(render_view_host, frame_id)); | 3822 FrameDetached(render_view_host, frame_id)); |
3793 } | 3823 } |
3794 | 3824 |
3795 } // namespace content | 3825 } // namespace content |
OLD | NEW |