Index: chrome/browser/site_details.cc |
diff --git a/chrome/browser/site_details.cc b/chrome/browser/site_details.cc |
index a5daea38f447e0472950f01f16b0ad676e7f0960..7f07dd5b565bc59722fae46eb95e8f0aa8816876 100644 |
--- a/chrome/browser/site_details.cc |
+++ b/chrome/browser/site_details.cc |
@@ -105,6 +105,13 @@ void CollectForScenario(std::map<RenderFrameHost*, GURL>* frame_urls, |
(*frame_urls)[frame] = site; |
} |
+void CollectCurrentSnapshot(SiteData* site_data, RenderFrameHost* frame) { |
+ if (frame->GetParent()) { |
+ if (frame->GetSiteInstance() != frame->GetParent()->GetSiteInstance()) |
+ site_data->out_of_process_frames.insert(frame); |
+ } |
+} |
+ |
} // namespace |
IsolationScenario::IsolationScenario() : policy(ISOLATE_ALL_SITES) {} |
@@ -149,6 +156,9 @@ void SiteDetails::CollectSiteInfo(WebContents* contents, |
base::Bind(&CollectForScenario, base::Unretained(&memo), |
base::Unretained(primary), base::Unretained(&scenario))); |
} |
+ |
+ contents->ForEachFrame( |
+ base::Bind(&CollectCurrentSnapshot, base::Unretained(site_data))); |
} |
void SiteDetails::UpdateHistograms( |
@@ -158,10 +168,12 @@ void SiteDetails::UpdateHistograms( |
// Reports a set of site-based process metrics to UMA. |
int process_limit = RenderProcessHost::GetMaxRendererProcessCount(); |
- // Sum the number of sites and SiteInstances in each BrowserContext. |
+ // Sum the number of sites and SiteInstances in each BrowserContext and |
+ // the total number of out-of-process iframes. |
int num_sites[ISOLATION_SCENARIO_LAST + 1] = {}; |
int num_isolated_site_instances[ISOLATION_SCENARIO_LAST + 1] = {}; |
int num_browsing_instances = 0; |
+ int num_oopifs = 0; |
for (BrowserContextSiteDataMap::const_iterator i = site_data_map.begin(); |
i != site_data_map.end(); ++i) { |
for (const IsolationScenario& scenario : i->second.scenarios) { |
@@ -173,6 +185,7 @@ void SiteDetails::UpdateHistograms( |
} |
num_browsing_instances += i->second.scenarios[ISOLATE_ALL_SITES] |
.browsing_instance_site_map.size(); |
+ num_oopifs += i->second.out_of_process_frames.size(); |
ncarter (slow)
2015/11/18 17:48:14
It doesn't look like you ever actually iterate ove
nasko
2015/11/18 18:32:58
Done.
|
} |
// Predict the number of processes needed when isolating all sites, when |
@@ -193,6 +206,7 @@ void SiteDetails::UpdateHistograms( |
UMA_HISTOGRAM_COUNTS_100( |
"SiteIsolation.BrowsingInstanceCount", |
num_browsing_instances); |
+ UMA_HISTOGRAM_COUNTS_100("SiteIsolation.OutOfProcessIframes", num_oopifs); |
// ISOLATE_NOTHING metrics. |
UMA_HISTOGRAM_COUNTS_100("SiteIsolation.IsolateNothingProcessCountNoLimit", |