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

Side by Side Diff: content/browser/tab_contents/render_view_host_manager.cc

Issue 8081019: Remove unused RenderViewHostManager::SwapInRenderViewHost() and TabContents::SwapInRenderViewHost() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 9 years, 2 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/tab_contents/render_view_host_manager.h" 5 #include "content/browser/tab_contents/render_view_host_manager.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "content/browser/content_browser_client.h" 9 #include "content/browser/content_browser_client.h"
10 #include "content/browser/renderer_host/render_view_host.h" 10 #include "content/browser/renderer_host/render_view_host.h"
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 // If the pending view was on the swapped out list, we can remove it. 631 // If the pending view was on the swapped out list, we can remove it.
632 swapped_out_hosts_.erase(render_view_host_->site_instance()->id()); 632 swapped_out_hosts_.erase(render_view_host_->site_instance()->id());
633 633
634 // If the old RVH is live, we are swapping it out and should keep track of it 634 // If the old RVH is live, we are swapping it out and should keep track of it
635 // in case we navigate back to it. 635 // in case we navigate back to it.
636 if (old_render_view_host->IsRenderViewLive()) { 636 if (old_render_view_host->IsRenderViewLive()) {
637 DCHECK(old_render_view_host->is_swapped_out()); 637 DCHECK(old_render_view_host->is_swapped_out());
638 // Temp fix for http://crbug.com/90867 until we do a better cleanup to make 638 // Temp fix for http://crbug.com/90867 until we do a better cleanup to make
639 // sure we don't get different rvh instances for the same site instance 639 // sure we don't get different rvh instances for the same site instance
640 // in the same rvhmgr. 640 // in the same rvhmgr.
641 // TODO(creis): Clean this up, and duplication in SwapInRenderViewHost. 641 // TODO(creis): Clean this up.
642 int32 old_site_instance_id = old_render_view_host->site_instance()->id(); 642 int32 old_site_instance_id = old_render_view_host->site_instance()->id();
643 RenderViewHostMap::iterator iter = 643 RenderViewHostMap::iterator iter =
644 swapped_out_hosts_.find(old_site_instance_id); 644 swapped_out_hosts_.find(old_site_instance_id);
645 if (iter != swapped_out_hosts_.end() && 645 if (iter != swapped_out_hosts_.end() &&
646 iter->second != old_render_view_host) { 646 iter->second != old_render_view_host) {
647 // Shutdown the RVH that will be replaced in the map to avoid a leak. 647 // Shutdown the RVH that will be replaced in the map to avoid a leak.
648 iter->second->Shutdown(); 648 iter->second->Shutdown();
649 } 649 }
650 swapped_out_hosts_[old_site_instance_id] = old_render_view_host; 650 swapped_out_hosts_[old_site_instance_id] = old_render_view_host;
651 } else { 651 } else {
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 for (RenderViewHostMap::iterator iter = swapped_out_hosts_.begin(); 804 for (RenderViewHostMap::iterator iter = swapped_out_hosts_.begin();
805 iter != swapped_out_hosts_.end(); 805 iter != swapped_out_hosts_.end();
806 ++iter) { 806 ++iter) {
807 if (iter->second == rvh) { 807 if (iter->second == rvh) {
808 swapped_out_hosts_.erase(iter); 808 swapped_out_hosts_.erase(iter);
809 break; 809 break;
810 } 810 }
811 } 811 }
812 } 812 }
813 813
814 void RenderViewHostManager::SwapInRenderViewHost(RenderViewHost* rvh) {
815 // TODO(creis): Abstract out the common code between this and CommitPending.
816 web_ui_.reset();
817
818 // Make sure the current RVH is swapped out so that it filters out any
819 // disruptive messages from the renderer. We can pass -1,-1 because there is
820 // no pending response in the ResourceDispatcherHost to unpause.
821 render_view_host_->SwapOut(-1, -1);
822
823 // Swap in the new view and make it active.
824 RenderViewHost* old_render_view_host = render_view_host_;
825 render_view_host_ = rvh;
826 render_view_host_->set_delegate(render_view_delegate_);
827 // Remove old RenderWidgetHostView with mocked out methods so it can be
828 // replaced with a new one that's a child of |delegate_|'s view.
829 scoped_ptr<RenderWidgetHostView> old_view(render_view_host_->view());
830 render_view_host_->SetView(NULL);
831 delegate_->CreateViewAndSetSizeForRVH(render_view_host_);
832 render_view_host_->ActivateDeferredPluginHandles();
833 // If the view is gone, then this RenderViewHost died while it was hidden.
834 // We ignored the RenderViewGone call at the time, so we should send it now
835 // to make sure the sad tab shows up, etc.
836 if (render_view_host_->view()) {
837 // The Hide() is needed to sync the state of |render_view_host_|, which is
838 // hidden, with the newly created view, which does not know the
839 // RenderViewHost is hidden.
840 // TODO(tburkard,cbentzel): Figure out if this hack can be removed
841 // (http://crbug.com/79891).
842 render_view_host_->view()->Hide();
843 render_view_host_->view()->Show();
844 }
845
846 // Hide the current view and prepare to swap it out.
847 if (old_render_view_host->view()) {
848 old_render_view_host->view()->Hide();
849 old_render_view_host->WasSwappedOut();
850 }
851
852 delegate_->UpdateRenderViewSizeForRenderManager();
853
854 RenderViewHostSwitchedDetails details;
855 details.new_host = render_view_host_;
856 details.old_host = old_render_view_host;
857 NotificationService::current()->Notify(
858 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED,
859 Source<NavigationController>(&delegate_->GetControllerForRenderManager()),
860 Details<RenderViewHostSwitchedDetails>(&details));
861
862 // If the given RVH was on the swapped out list, we can remove it.
863 swapped_out_hosts_.erase(render_view_host_->site_instance()->id());
864
865 // If the old RVH is live, we are swapping it out and should keep track of it
866 // in case we navigate back to it.
867 if (old_render_view_host->IsRenderViewLive()) {
868 DCHECK(old_render_view_host->is_swapped_out());
869 // Temp fix for http://crbug.com/90867 until we do a better cleanup to make
870 // sure we don't get different rvh instances for the same site instance
871 // in the same rvhmgr.
872 // TODO(creis): Clean this up as well as duplication with CommitPending.
873 int32 old_site_instance_id = old_render_view_host->site_instance()->id();
874 RenderViewHostMap::iterator iter =
875 swapped_out_hosts_.find(old_site_instance_id);
876 if (iter != swapped_out_hosts_.end() &&
877 iter->second != old_render_view_host) {
878 // Shutdown the RVH that will be replaced in the map to avoid a leak.
879 iter->second->Shutdown();
880 }
881 swapped_out_hosts_[old_site_instance_id] = old_render_view_host;
882 } else {
883 old_render_view_host->Shutdown();
884 }
885
886 // Let the task manager know that we've swapped RenderViewHosts, since it
887 // might need to update its process groupings.
888 delegate_->NotifySwappedFromRenderManager();
889 }
890
891 bool RenderViewHostManager::IsSwappedOut(RenderViewHost* rvh) { 814 bool RenderViewHostManager::IsSwappedOut(RenderViewHost* rvh) {
892 if (!rvh->site_instance()) 815 if (!rvh->site_instance())
893 return false; 816 return false;
894 817
895 return swapped_out_hosts_.find(rvh->site_instance()->id()) != 818 return swapped_out_hosts_.find(rvh->site_instance()->id()) !=
896 swapped_out_hosts_.end(); 819 swapped_out_hosts_.end();
897 } 820 }
OLDNEW
« no previous file with comments | « content/browser/tab_contents/render_view_host_manager.h ('k') | content/browser/tab_contents/tab_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698