Chromium Code Reviews| 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", |