 Chromium Code Reviews
 Chromium Code Reviews Issue 2857213005:
  PlzNavigate: implement process reuse for ServiceWorkers  (Closed)
    
  
    Issue 2857213005:
  PlzNavigate: implement process reuse for ServiceWorkers  (Closed) 
  | Index: content/browser/frame_host/render_frame_host_impl.cc | 
| diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc | 
| index acd26ebd1950ca690dedb60b40c9f74a1171882b..41ae701ed2184cbf4095adeb98f48085fd61a753 100644 | 
| --- a/content/browser/frame_host/render_frame_host_impl.cc | 
| +++ b/content/browser/frame_host/render_frame_host_impl.cc | 
| @@ -484,6 +484,8 @@ RenderFrameHostImpl::~RenderFrameHostImpl() { | 
| // RenderFrameHost during cleanup. | 
| ClearAllWebUI(); | 
| + SetLastCommittedSiteUrl(GURL()); | 
| + | 
| GetProcess()->RemoveRoute(routing_id_); | 
| g_routing_id_frame_map.Get().erase( | 
| RenderFrameHostID(GetProcess()->GetID(), routing_id_)); | 
| @@ -1453,6 +1455,10 @@ void RenderFrameHostImpl::OnDidCommitProvisionalLoad(const IPC::Message& msg) { | 
| TakeNavigationHandleForCommit(validated_params); | 
| DCHECK(navigation_handle); | 
| + // Update the site url if the navigation was successful. | 
| + if (navigation_handle->GetNetErrorCode() == net::OK) | 
| 
Charlie Reis
2017/05/18 00:58:34
NavigatorImpl::DidNavigate gates last_successful_u
 
clamy
2017/05/22 16:59:52
Done.
 | 
| + SetLastCommittedSiteUrl(navigation_handle->GetURL()); | 
| + | 
| // PlzNavigate sends searchable form data in the BeginNavigation message | 
| // while non-PlzNavigate sends it in the DidCommitProvisionalLoad message. | 
| // Update |navigation_handle| if necessary. | 
| @@ -3916,6 +3922,27 @@ void RenderFrameHostImpl::BeforeUnloadTimeout() { | 
| SimulateBeforeUnloadAck(); | 
| } | 
| +void RenderFrameHostImpl::SetLastCommittedSiteUrl(const GURL& url) { | 
| + BrowserContext* browser_context = | 
| + frame_tree_node_->navigator()->GetController()->GetBrowserContext(); | 
| + GURL site_url = SiteInstance::GetSiteForURL(browser_context, url); | 
| + | 
| + if (last_committed_site_url_ == url) | 
| + return; | 
| + | 
| + if (!last_committed_site_url_.is_empty()) { | 
| + RenderProcessHostImpl::RemoveFrameWithSite(browser_context, GetProcess(), | 
| + last_committed_site_url_); | 
| + } | 
| + | 
| + last_committed_site_url_ = site_url; | 
| + | 
| + if (!last_committed_site_url_.is_empty()) { | 
| + RenderProcessHostImpl::AddFrameWithSite(browser_context, GetProcess(), | 
| + last_committed_site_url_); | 
| + } | 
| +} | 
| + | 
| #if defined(OS_ANDROID) | 
| class RenderFrameHostImpl::JavaInterfaceProvider |