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

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

Issue 108483008: Make RenderFrameHostManager swap RenderFrameHosts, not RenderViewHosts. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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
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 606 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 view_->SetOverscrollControllerEnabled(delegate->CanOverscrollContent()); 617 view_->SetOverscrollControllerEnabled(delegate->CanOverscrollContent());
618 } 618 }
619 } 619 }
620 620
621 RenderProcessHost* WebContentsImpl::GetRenderProcessHost() const { 621 RenderProcessHost* WebContentsImpl::GetRenderProcessHost() const {
622 RenderViewHostImpl* host = GetRenderManager()->current_host(); 622 RenderViewHostImpl* host = GetRenderManager()->current_host();
623 return host ? host->GetProcess() : NULL; 623 return host ? host->GetProcess() : NULL;
624 } 624 }
625 625
626 RenderFrameHost* WebContentsImpl::GetMainFrame() { 626 RenderFrameHost* WebContentsImpl::GetMainFrame() {
627 return frame_tree_.root()->render_frame_host(); 627 return frame_tree_.root()->current_frame_host();
628 } 628 }
629 629
630 RenderViewHost* WebContentsImpl::GetRenderViewHost() const { 630 RenderViewHost* WebContentsImpl::GetRenderViewHost() const {
631 return GetRenderManager()->current_host(); 631 return GetRenderManager()->current_host();
632 } 632 }
633 633
634 void WebContentsImpl::GetRenderViewHostAtPosition( 634 void WebContentsImpl::GetRenderViewHostAtPosition(
635 int x, 635 int x,
636 int y, 636 int y,
637 const base::Callback<void(RenderViewHost*, int, int)>& callback) { 637 const base::Callback<void(RenderViewHost*, int, int)>& callback) {
(...skipping 2360 matching lines...) Expand 10 before | Expand all | Expand 10 after
2998 } 2998 }
2999 } 2999 }
3000 DidNavigateAnyFramePostCommit(rvh, details, params); 3000 DidNavigateAnyFramePostCommit(rvh, details, params);
3001 } 3001 }
3002 3002
3003 void WebContentsImpl::UpdateState(RenderViewHost* rvh, 3003 void WebContentsImpl::UpdateState(RenderViewHost* rvh,
3004 int32 page_id, 3004 int32 page_id,
3005 const PageState& page_state) { 3005 const PageState& page_state) {
3006 // Ensure that this state update comes from either the active RVH or one of 3006 // Ensure that this state update comes from either the active RVH or one of
3007 // the swapped out RVHs. We don't expect to hear from any other RVHs. 3007 // the swapped out RVHs. We don't expect to hear from any other RVHs.
3008 DCHECK(rvh == GetRenderViewHost() || 3008 // TODO(nasko): This should go through RenderFrameHost.
3009 GetRenderManager()->IsOnSwappedOutList(rvh)); 3009 // TODO(creis): We can't update state for cross-process subframes until we
3010 // have FrameNavigationEntries. Once we do, this should be a DCHECK.
3011 if (rvh != GetRenderViewHost() &&
3012 !GetRenderManager()->IsRVHOnSwappedOutList(
3013 static_cast<RenderViewHostImpl*>(rvh)))
3014 return;
3010 3015
3011 // We must be prepared to handle state updates for any page, these occur 3016 // We must be prepared to handle state updates for any page, these occur
3012 // when the user is scrolling and entering form data, as well as when we're 3017 // when the user is scrolling and entering form data, as well as when we're
3013 // leaving a page, in which case our state may have already been moved to 3018 // leaving a page, in which case our state may have already been moved to
3014 // the next page. The navigation controller will look up the appropriate 3019 // the next page. The navigation controller will look up the appropriate
3015 // NavigationEntry and update it when it is notified via the delegate. 3020 // NavigationEntry and update it when it is notified via the delegate.
3016 3021
3017 int entry_index = controller_.GetEntryIndexWithPageID( 3022 int entry_index = controller_.GetEntryIndexWithPageID(
3018 rvh->GetSiteInstance(), page_id); 3023 rvh->GetSiteInstance(), page_id);
3019 if (entry_index < 0) 3024 if (entry_index < 0)
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
3426 // TODO(nasko): Investigate how to remove the GetActiveEntry usage here, 3431 // TODO(nasko): Investigate how to remove the GetActiveEntry usage here,
3427 // as it is deprecated and can be out of sync with GetRenderViewHost(). 3432 // as it is deprecated and can be out of sync with GetRenderViewHost().
3428 GURL url = controller_.GetActiveEntry() 3433 GURL url = controller_.GetActiveEntry()
3429 ? controller_.GetActiveEntry()->GetURL() : GURL::EmptyGURL(); 3434 ? controller_.GetActiveEntry()->GetURL() : GURL::EmptyGURL();
3430 3435
3431 return GetRenderManager()->current_host()->GetWebkitPrefs(url); 3436 return GetRenderManager()->current_host()->GetWebkitPrefs(url);
3432 } 3437 }
3433 3438
3434 int WebContentsImpl::CreateSwappedOutRenderView( 3439 int WebContentsImpl::CreateSwappedOutRenderView(
3435 SiteInstance* instance) { 3440 SiteInstance* instance) {
3436 return GetRenderManager()->CreateRenderView(instance, MSG_ROUTING_NONE, 3441 return GetRenderManager()->CreateRenderFrame(instance, MSG_ROUTING_NONE,
3437 true, true); 3442 true, true);
3438 } 3443 }
3439 3444
3440 void WebContentsImpl::OnUserGesture() { 3445 void WebContentsImpl::OnUserGesture() {
3441 // Notify observers. 3446 // Notify observers.
3442 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture()); 3447 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture());
3443 3448
3444 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get(); 3449 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get();
3445 if (rdh) // NULL in unittests. 3450 if (rdh) // NULL in unittests.
3446 rdh->OnUserGesture(this); 3451 rdh->OnUserGesture(this);
3447 } 3452 }
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
3596 instance) 3601 instance)
3597 return GetRenderManager()->pending_render_view_host()->GetRoutingID(); 3602 return GetRenderManager()->pending_render_view_host()->GetRoutingID();
3598 3603
3599 RenderViewHostImpl* rvh = GetRenderManager()->GetSwappedOutRenderViewHost( 3604 RenderViewHostImpl* rvh = GetRenderManager()->GetSwappedOutRenderViewHost(
3600 instance); 3605 instance);
3601 if (rvh) 3606 if (rvh)
3602 return rvh->GetRoutingID(); 3607 return rvh->GetRoutingID();
3603 3608
3604 // Create a swapped out RenderView in the given SiteInstance if none exists, 3609 // Create a swapped out RenderView in the given SiteInstance if none exists,
3605 // setting its opener to the given route_id. Return the new view's route_id. 3610 // setting its opener to the given route_id. Return the new view's route_id.
3606 return GetRenderManager()->CreateRenderView(instance, opener_route_id, 3611 return GetRenderManager()->CreateRenderFrame(instance, opener_route_id,
3607 true, true); 3612 true, true);
3608 } 3613 }
3609 3614
3610 NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() { 3615 NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() {
3611 return GetController(); 3616 return GetController();
3612 } 3617 }
3613 3618
3614 WebUIImpl* WebContentsImpl::CreateWebUIForRenderManager(const GURL& url) { 3619 WebUIImpl* WebContentsImpl::CreateWebUIForRenderManager(const GURL& url) {
3615 return static_cast<WebUIImpl*>(CreateWebUI(url)); 3620 return static_cast<WebUIImpl*>(CreateWebUI(url));
3616 } 3621 }
3617 3622
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
3759 } 3764 }
3760 3765
3761 void WebContentsImpl::OnFrameRemoved( 3766 void WebContentsImpl::OnFrameRemoved(
3762 RenderViewHostImpl* render_view_host, 3767 RenderViewHostImpl* render_view_host,
3763 int64 frame_id) { 3768 int64 frame_id) {
3764 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 3769 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
3765 FrameDetached(render_view_host, frame_id)); 3770 FrameDetached(render_view_host, frame_id));
3766 } 3771 }
3767 3772
3768 } // namespace content 3773 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698