Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5084)

Unified Diff: chrome/browser/site_details.cc

Issue 1453193004: Add histogram for number of out-of-process iframes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove the macro and use the predicates. Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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",

Powered by Google App Engine
This is Rietveld 408576698