Chromium Code Reviews| Index: chrome/browser/site_details.cc |
| diff --git a/chrome/browser/site_details.cc b/chrome/browser/site_details.cc |
| index 157a6460aaf0e7bb097e65a1dab1b1e0a13788ed..93a4f00f9f2f58bc8cb4c6fe1bcee7b731abd43e 100644 |
| --- a/chrome/browser/site_details.cc |
| +++ b/chrome/browser/site_details.cc |
| @@ -58,26 +58,38 @@ bool ShouldIsolate(BrowserContext* browser_context, |
| } |
| content::SiteInstance* DeterminePrimarySiteInstance( |
| - content::SiteInstance* instance, |
| + content::SiteInstance* site_instance, |
| SiteData* site_data) { |
| // Find the BrowsingInstance this WebContents belongs to by iterating over |
| // the "primary" SiteInstances of each BrowsingInstance we've seen so far. |
| - for (auto& existing_site_instance : site_data->instances) { |
| - if (instance->IsRelatedSiteInstance(existing_site_instance.first)) { |
| - existing_site_instance.second.insert(instance); |
| - return existing_site_instance.first; |
| + for (auto& entry : site_data->browsing_instances) { |
| + BrowsingInstanceInfo* browsing_instance = &entry.second; |
| + content::SiteInstance* primary_for_browsing_instance = entry.first; |
| + |
| + if (site_instance->IsRelatedSiteInstance(primary_for_browsing_instance)) { |
| + browsing_instance->site_instances.insert(site_instance); |
| + return primary_for_browsing_instance; |
| } |
| } |
| // Add |instance| as the "primary" SiteInstance of a new BrowsingInstance. |
| - site_data->instances[instance].clear(); |
| - site_data->instances[instance].insert(instance); |
| + BrowsingInstanceInfo* browsing_instance = |
| + &site_data->browsing_instances[site_instance]; |
| + browsing_instance->site_instances.insert(site_instance); |
| - return instance; |
| + return site_instance; |
| } |
| } // namespace |
| +ScenarioBrowsingInstanceInfo::ScenarioBrowsingInstanceInfo() {} |
| + |
| +ScenarioBrowsingInstanceInfo::~ScenarioBrowsingInstanceInfo() {} |
| + |
| +BrowsingInstanceInfo::BrowsingInstanceInfo() {} |
| + |
| +BrowsingInstanceInfo::~BrowsingInstanceInfo() {} |
| + |
| IsolationScenario::IsolationScenario() : policy(ISOLATE_ALL_SITES) {} |
| IsolationScenario::~IsolationScenario() {} |
| @@ -135,8 +147,8 @@ void SiteDetails::CollectSiteInfo(WebContents* contents, |
| // We model process-per-site by only inserting those sites into the first |
| // browsing instance in which they appear. |
| - if (scenario.sites.insert(site).second || !process_per_site) |
| - scenario.browsing_instance_site_map[primary->GetId()].insert(site); |
| + if (scenario.all_sites.insert(site).second || !process_per_site) |
| + scenario.browsing_instances[primary->GetId()].sites.insert(site); |
| // Record our result in |frame_urls| for use by children. |
| frame_urls[frame] = site; |
| @@ -165,22 +177,24 @@ void SiteDetails::UpdateHistograms( |
| 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) { |
| - num_sites[scenario.policy] += scenario.sites.size(); |
| - for (auto& browsing_instance : scenario.browsing_instance_site_map) { |
| + for (auto& site_data_map_entry : site_data_map) { |
| + const SiteData* site_data = &site_data_map_entry.second; |
|
Lei Zhang
2016/02/09 00:33:33
const SiteData& instead? Ditto for line 185 and 19
ncarter (slow)
2016/02/09 19:32:52
Done.
|
| + for (const IsolationScenario& scenario : site_data->scenarios) { |
| + num_sites[scenario.policy] += scenario.all_sites.size(); |
| + for (auto& entry : scenario.browsing_instances) { |
| + const ScenarioBrowsingInstanceInfo* scenario_browsing_instance_info = |
| + &entry.second; |
| num_isolated_site_instances[scenario.policy] += |
| - browsing_instance.second.size(); |
| + scenario_browsing_instance_info->sites.size(); |
| } |
| } |
| - num_browsing_instances += i->second.scenarios[ISOLATE_ALL_SITES] |
| - .browsing_instance_site_map.size(); |
| - for (const auto& site_instance : i->second.instances) { |
| + for (const auto& entry : site_data->browsing_instances) { |
| + const BrowsingInstanceInfo* browsing_instance_info = &entry.second; |
| UMA_HISTOGRAM_COUNTS_100("SiteIsolation.SiteInstancesPerBrowsingInstance", |
| - site_instance.second.size()); |
| + browsing_instance_info->site_instances.size()); |
| } |
| - num_oopifs += i->second.out_of_process_frames; |
| + num_browsing_instances += site_data->browsing_instances.size(); |
| + num_oopifs += site_data->out_of_process_frames; |
| } |
| // Predict the number of processes needed when isolating all sites, when |