Index: content/browser/web_contents/web_contents_impl.cc |
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc |
index 722230a99199d0d627ebdec0efd75839e726b3f9..afbf3db6f005640a998e8b0fc6c3b1648cd2ee67 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -170,6 +170,14 @@ void NotifyCacheOnIO( |
bool CollectSites(BrowserContext* context, |
std::set<GURL>* sites, |
FrameTreeNode* node) { |
+ // Record about:blank as a real (process-having) site only if the SiteInstance |
+ // is unassigned. Do not otherwise depend on the siteinstance's site URL, |
+ // since its value reflects the current process model, and this function |
+ // should behave identically across all process models. |
+ if (node->current_url() == GURL(url::kAboutBlankURL) && |
+ node->current_frame_host()->GetSiteInstance()->HasSite()) { |
+ return true; |
+ } |
sites->insert(SiteInstance::GetSiteForURL(context, node->current_url())); |
return true; |
} |