| 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/render_view_host_manager.h" | 5 #include "content/browser/web_contents/render_view_host_manager.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/logging.h" | 10 #include "base/logging.h" |
| (...skipping 913 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 924 pending_render_view_host, | 924 pending_render_view_host, |
| 925 render_view_host_); | 925 render_view_host_); |
| 926 | 926 |
| 927 // We no longer need to prevent the process from exiting. | 927 // We no longer need to prevent the process from exiting. |
| 928 pending_render_view_host->GetProcess()->RemovePendingView(); | 928 pending_render_view_host->GetProcess()->RemovePendingView(); |
| 929 | 929 |
| 930 // The pending RVH may already be on the swapped out list if we started to | 930 // The pending RVH may already be on the swapped out list if we started to |
| 931 // swap it back in and then canceled. If so, make sure it gets swapped out | 931 // swap it back in and then canceled. If so, make sure it gets swapped out |
| 932 // again. If it's not on the swapped out list (e.g., aborting a pending | 932 // again. If it's not on the swapped out list (e.g., aborting a pending |
| 933 // load), then it's safe to shut down. | 933 // load), then it's safe to shut down. |
| 934 if (IsSwappedOut(pending_render_view_host)) { | 934 if (IsOnSwappedOutList(pending_render_view_host)) { |
| 935 // Any currently suspended navigations are no longer needed. | 935 // Any currently suspended navigations are no longer needed. |
| 936 pending_render_view_host->CancelSuspendedNavigations(); | 936 pending_render_view_host->CancelSuspendedNavigations(); |
| 937 | 937 |
| 938 // We can pass -1,-1 because there is no pending response in the | 938 // We can pass -1,-1 because there is no pending response in the |
| 939 // ResourceDispatcherHost to unpause. | 939 // ResourceDispatcherHost to unpause. |
| 940 pending_render_view_host->SwapOut(-1, -1); | 940 pending_render_view_host->SwapOut(-1, -1); |
| 941 } else { | 941 } else { |
| 942 // We won't be coming back, so shut this one down. | 942 // We won't be coming back, so shut this one down. |
| 943 pending_render_view_host->Shutdown(); | 943 pending_render_view_host->Shutdown(); |
| 944 } | 944 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 968 for (RenderViewHostMap::iterator iter = swapped_out_hosts_.begin(); | 968 for (RenderViewHostMap::iterator iter = swapped_out_hosts_.begin(); |
| 969 iter != swapped_out_hosts_.end(); | 969 iter != swapped_out_hosts_.end(); |
| 970 ++iter) { | 970 ++iter) { |
| 971 if (iter->second == rvh) { | 971 if (iter->second == rvh) { |
| 972 swapped_out_hosts_.erase(iter); | 972 swapped_out_hosts_.erase(iter); |
| 973 break; | 973 break; |
| 974 } | 974 } |
| 975 } | 975 } |
| 976 } | 976 } |
| 977 | 977 |
| 978 bool RenderViewHostManager::IsSwappedOut(RenderViewHost* rvh) { | 978 bool RenderViewHostManager::IsOnSwappedOutList(RenderViewHost* rvh) const { |
| 979 if (!rvh->GetSiteInstance()) | 979 if (!rvh->GetSiteInstance()) |
| 980 return false; | 980 return false; |
| 981 | 981 |
| 982 return swapped_out_hosts_.find(rvh->GetSiteInstance()->GetId()) != | 982 RenderViewHostMap::const_iterator iter = swapped_out_hosts_.find( |
| 983 swapped_out_hosts_.end(); | 983 rvh->GetSiteInstance()->GetId()); |
| 984 if (iter == swapped_out_hosts_.end()) |
| 985 return false; |
| 986 |
| 987 return iter->second == rvh; |
| 984 } | 988 } |
| 985 | 989 |
| 986 RenderViewHostImpl* RenderViewHostManager::GetSwappedOutRenderViewHost( | 990 RenderViewHostImpl* RenderViewHostManager::GetSwappedOutRenderViewHost( |
| 987 SiteInstance* instance) { | 991 SiteInstance* instance) { |
| 988 RenderViewHostMap::iterator iter = swapped_out_hosts_.find(instance->GetId()); | 992 RenderViewHostMap::iterator iter = swapped_out_hosts_.find(instance->GetId()); |
| 989 if (iter != swapped_out_hosts_.end()) | 993 if (iter != swapped_out_hosts_.end()) |
| 990 return iter->second; | 994 return iter->second; |
| 991 | 995 |
| 992 return NULL; | 996 return NULL; |
| 993 } | 997 } |
| 994 | 998 |
| 995 } // namespace content | 999 } // namespace content |
| OLD | NEW |