1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_SITE_DETAILS_H_ 6#define CHROME_BROWSER_SITE_DETAILS_H_ 7 8#include "base/containers/hash_tables.h" 9#include "content/public/browser/browser_context.h" 10#include "content/public/browser/site_instance.h" 11#include "content/public/browser/web_contents.h" 12 13// Maps an ID representing each BrowsingInstance to a set of site URLs. 14typedef base::hash_map<int32, std::set<GURL> > BrowsingInstanceSiteMap; 15 16// Information about the sites and SiteInstances in each BrowsingInstance, for 17// use in estimating the number of processes needed for various process models. 18struct SiteData { 19 SiteData(); 20 ~SiteData(); 21 22 std::set<GURL> sites; 23 std::set<GURL> https_sites; 24 std::vector<content::SiteInstance*> instances; 25 BrowsingInstanceSiteMap instance_site_map; 26 BrowsingInstanceSiteMap instance_https_site_map; 27}; 28 29// Maps a BrowserContext to information about the SiteInstances it contains. 30typedef base::hash_map<content::BrowserContext*, SiteData> 31 BrowserContextSiteDataMap; 32 33class SiteDetails { 34 public: 35 // Collect information about all committed sites in the given WebContents 36 // on the UI thread. 37 static void CollectSiteInfo(content::WebContents* contents, 38 SiteData* site_data); 39 40 // Updates the global histograms for tracking memory usage. 41 static void UpdateHistograms(const BrowserContextSiteDataMap& site_data_map, 42 int all_renderer_process_count, 43 int non_renderer_process_count); 44 45 private: 46 // Never needs to be constructed. 47 SiteDetails(); 48 ~SiteDetails(); 49 50 DISALLOW_COPY_AND_ASSIGN(SiteDetails); 51}; 52 53#endif // CHROME_BROWSER_SITE_DETAILS_H_ 54