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

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 241223002: Start using RenderFrameProxyHost objects. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Moar fixes. Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | content/common/frame_messages.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 3411 matching lines...) Expand 10 before | Expand all | Expand 10 after
3422 } 3422 }
3423 3423
3424 void WebContentsImpl::UpdateState(RenderViewHost* rvh, 3424 void WebContentsImpl::UpdateState(RenderViewHost* rvh,
3425 int32 page_id, 3425 int32 page_id,
3426 const PageState& page_state) { 3426 const PageState& page_state) {
3427 // Ensure that this state update comes from either the active RVH or one of 3427 // Ensure that this state update comes from either the active RVH or one of
3428 // the swapped out RVHs. We don't expect to hear from any other RVHs. 3428 // the swapped out RVHs. We don't expect to hear from any other RVHs.
3429 // TODO(nasko): This should go through RenderFrameHost. 3429 // TODO(nasko): This should go through RenderFrameHost.
3430 // TODO(creis): We can't update state for cross-process subframes until we 3430 // TODO(creis): We can't update state for cross-process subframes until we
3431 // have FrameNavigationEntries. Once we do, this should be a DCHECK. 3431 // have FrameNavigationEntries. Once we do, this should be a DCHECK.
3432 LOG(ERROR) << "WCI::UpdateState: "
3433 << rvh->GetProcess()->GetID()
3434 << ":" << rvh->GetRoutingID()
3435 << ":" << rvh->GetSiteInstance()->GetSiteURL()
3436 << ":" << GetRenderManager();
3437
3432 if (rvh != GetRenderViewHost() && 3438 if (rvh != GetRenderViewHost() &&
3433 !GetRenderManager()->IsRVHOnSwappedOutList( 3439 !GetRenderManager()->IsRVHOnSwappedOutList(
3434 static_cast<RenderViewHostImpl*>(rvh))) 3440 static_cast<RenderViewHostImpl*>(rvh))) {
3441 LOG(ERROR) << "WCI::UpdateState: rvh is not a match.";
3435 return; 3442 return;
3443 }
3436 3444
3437 // We must be prepared to handle state updates for any page, these occur 3445 // We must be prepared to handle state updates for any page, these occur
3438 // when the user is scrolling and entering form data, as well as when we're 3446 // when the user is scrolling and entering form data, as well as when we're
3439 // leaving a page, in which case our state may have already been moved to 3447 // leaving a page, in which case our state may have already been moved to
3440 // the next page. The navigation controller will look up the appropriate 3448 // the next page. The navigation controller will look up the appropriate
3441 // NavigationEntry and update it when it is notified via the delegate. 3449 // NavigationEntry and update it when it is notified via the delegate.
3442 3450
3443 int entry_index = controller_.GetEntryIndexWithPageID( 3451 int entry_index = controller_.GetEntryIndexWithPageID(
3444 rvh->GetSiteInstance(), page_id); 3452 rvh->GetSiteInstance(), page_id);
3445 if (entry_index < 0) 3453 if (entry_index < 0)
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
3710 // as it is deprecated and can be out of sync with GetRenderViewHost(). 3718 // as it is deprecated and can be out of sync with GetRenderViewHost().
3711 GURL url = controller_.GetActiveEntry() 3719 GURL url = controller_.GetActiveEntry()
3712 ? controller_.GetActiveEntry()->GetURL() : GURL::EmptyGURL(); 3720 ? controller_.GetActiveEntry()->GetURL() : GURL::EmptyGURL();
3713 3721
3714 return GetRenderManager()->current_host()->GetWebkitPrefs(url); 3722 return GetRenderManager()->current_host()->GetWebkitPrefs(url);
3715 } 3723 }
3716 3724
3717 int WebContentsImpl::CreateSwappedOutRenderView( 3725 int WebContentsImpl::CreateSwappedOutRenderView(
3718 SiteInstance* instance) { 3726 SiteInstance* instance) {
3719 return GetRenderManager()->CreateRenderFrame(instance, MSG_ROUTING_NONE, 3727 return GetRenderManager()->CreateRenderFrame(instance, MSG_ROUTING_NONE,
3720 true, true); 3728 true, true, true);
3721 } 3729 }
3722 3730
3723 void WebContentsImpl::OnUserGesture() { 3731 void WebContentsImpl::OnUserGesture() {
3724 // Notify observers. 3732 // Notify observers.
3725 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture()); 3733 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture());
3726 3734
3727 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get(); 3735 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get();
3728 if (rdh) // NULL in unittests. 3736 if (rdh) // NULL in unittests.
3729 rdh->OnUserGesture(this); 3737 rdh->OnUserGesture(this);
3730 } 3738 }
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
3875 return GetRenderManager()->pending_render_view_host()->GetRoutingID(); 3883 return GetRenderManager()->pending_render_view_host()->GetRoutingID();
3876 3884
3877 RenderViewHostImpl* rvh = GetRenderManager()->GetSwappedOutRenderViewHost( 3885 RenderViewHostImpl* rvh = GetRenderManager()->GetSwappedOutRenderViewHost(
3878 instance); 3886 instance);
3879 if (rvh) 3887 if (rvh)
3880 return rvh->GetRoutingID(); 3888 return rvh->GetRoutingID();
3881 3889
3882 // Create a swapped out RenderView in the given SiteInstance if none exists, 3890 // Create a swapped out RenderView in the given SiteInstance if none exists,
3883 // setting its opener to the given route_id. Return the new view's route_id. 3891 // setting its opener to the given route_id. Return the new view's route_id.
3884 return GetRenderManager()->CreateRenderFrame(instance, opener_route_id, 3892 return GetRenderManager()->CreateRenderFrame(instance, opener_route_id,
3885 true, true); 3893 true, true, true);
3886 } 3894 }
3887 3895
3888 NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() { 3896 NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() {
3889 return GetController(); 3897 return GetController();
3890 } 3898 }
3891 3899
3892 WebUIImpl* WebContentsImpl::CreateWebUIForRenderManager(const GURL& url) { 3900 WebUIImpl* WebContentsImpl::CreateWebUIForRenderManager(const GURL& url) {
3893 return static_cast<WebUIImpl*>(CreateWebUI(url)); 3901 return static_cast<WebUIImpl*>(CreateWebUI(url));
3894 } 3902 }
3895 3903
3896 NavigationEntry* 3904 NavigationEntry*
3897 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() { 3905 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() {
3898 return controller_.GetLastCommittedEntry(); 3906 return controller_.GetLastCommittedEntry();
3899 } 3907 }
3900 3908
3901 bool WebContentsImpl::CreateRenderViewForRenderManager( 3909 bool WebContentsImpl::CreateRenderViewForRenderManager(
3902 RenderViewHost* render_view_host, 3910 RenderViewHost* render_view_host,
3903 int opener_route_id, 3911 int opener_route_id,
3904 int proxy_routing_id, 3912 int proxy_routing_id,
3905 bool for_main_frame) { 3913 bool for_main_frame) {
3906 TRACE_EVENT0("browser", "WebContentsImpl::CreateRenderViewForRenderManager"); 3914 TRACE_EVENT0("browser", "WebContentsImpl::CreateRenderViewForRenderManager");
3915 LOG(ERROR) << "WC::CreateRenderViewForRenderManager: "
3916 << "for_main_frame:" << for_main_frame;
3907 // Can be NULL during tests. 3917 // Can be NULL during tests.
3908 RenderWidgetHostViewBase* rwh_view; 3918 RenderWidgetHostViewBase* rwh_view;
3909 // TODO(kenrb): RenderWidgetHostViewChildFrame special casing is temporary 3919 // TODO(kenrb): RenderWidgetHostViewChildFrame special casing is temporary
3910 // until RenderWidgetHost is attached to RenderFrameHost. We need to special 3920 // until RenderWidgetHost is attached to RenderFrameHost. We need to special
3911 // case this because RWH is still a base class of RenderViewHost, and child 3921 // case this because RWH is still a base class of RenderViewHost, and child
3912 // frame RWHVs are unique in that they do not have their own WebContents. 3922 // frame RWHVs are unique in that they do not have their own WebContents.
3913 if (!for_main_frame) { 3923 if (!for_main_frame) {
3914 RenderWidgetHostViewChildFrame* rwh_view_child = 3924 RenderWidgetHostViewChildFrame* rwh_view_child =
3915 new RenderWidgetHostViewChildFrame(render_view_host); 3925 new RenderWidgetHostViewChildFrame(render_view_host);
3916 rwh_view = rwh_view_child; 3926 rwh_view = rwh_view_child;
(...skipping 24 matching lines...) Expand all
3941 // linux. See crbug.com/83941. 3951 // linux. See crbug.com/83941.
3942 if (rwh_view) { 3952 if (rwh_view) {
3943 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) 3953 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost())
3944 render_widget_host->WasResized(); 3954 render_widget_host->WasResized();
3945 } 3955 }
3946 #endif 3956 #endif
3947 3957
3948 return true; 3958 return true;
3949 } 3959 }
3950 3960
3961 bool WebContentsImpl::CreateRenderFrameForRenderManager(
3962 RenderFrameHost* render_frame_host,
3963 int parent_routing_id) {
3964 TRACE_EVENT0("browser", "WebContentsImpl::CreateRenderFrameForRenderManager");
3965
3966 RenderFrameHostImpl* rfh =
3967 static_cast<RenderFrameHostImpl*>(render_frame_host);
3968 if (!rfh->CreateRenderFrame(parent_routing_id))
3969 return false;
3970
3971 // TODO(nasko): When RenderWidgetHost is owned by RenderFrameHost, the passed
3972 // RenderFrameHost will have to be associated with the appropriate
3973 // RenderWidgetHostView or a new one should be created here.
3974
3975 return true;
3976 }
3977
3978
3951 #if defined(OS_ANDROID) 3979 #if defined(OS_ANDROID)
3952 3980
3953 base::android::ScopedJavaLocalRef<jobject> 3981 base::android::ScopedJavaLocalRef<jobject>
3954 WebContentsImpl::GetJavaWebContents() { 3982 WebContentsImpl::GetJavaWebContents() {
3955 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 3983 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
3956 3984
3957 WebContentsAndroid* web_contents_android = 3985 WebContentsAndroid* web_contents_android =
3958 static_cast<WebContentsAndroid*>(GetUserData(kWebContentsAndroidKey)); 3986 static_cast<WebContentsAndroid*>(GetUserData(kWebContentsAndroidKey));
3959 if (!web_contents_android) { 3987 if (!web_contents_android) {
3960 web_contents_android = new WebContentsAndroid(this); 3988 web_contents_android = new WebContentsAndroid(this);
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
4100 if (new_size != old_size) 4128 if (new_size != old_size)
4101 delegate_->UpdatePreferredSize(this, new_size); 4129 delegate_->UpdatePreferredSize(this, new_size);
4102 } 4130 }
4103 4131
4104 void WebContentsImpl::ResumeResponseDeferredAtStart() { 4132 void WebContentsImpl::ResumeResponseDeferredAtStart() {
4105 FrameTreeNode* node = frame_tree_.root(); 4133 FrameTreeNode* node = frame_tree_.root();
4106 node->render_manager()->ResumeResponseDeferredAtStart(); 4134 node->render_manager()->ResumeResponseDeferredAtStart();
4107 } 4135 }
4108 4136
4109 } // namespace content 4137 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | content/common/frame_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698