// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_MEMORY_DETAILS_H_ #define CHROME_BROWSER_MEMORY_DETAILS_H_ #include <map> #include <string> #include <vector> #include "base/memory/ref_counted.h" #include "base/process/process_handle.h" #include "base/process/process_metrics.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "content/public/common/process_type.h" namespace memory_instrumentation { class GlobalMemoryDump; } // namespace memory_instrumentation // We collect data about each browser process. A browser may // have multiple processes (of course!). Even IE has multiple // processes these days. struct ProcessMemoryInformation { … }; ProcessMemoryInformationList; // Browser Process Information. struct ProcessData { … }; // MemoryDetails fetches memory details about current running browsers. // Because this data can only be fetched asynchronously, callers use // this class via a callback. // // Example usage: // // class MyMemoryDetailConsumer : public MemoryDetails { // // MyMemoryDetailConsumer() { // // Anything but |StartFetch()|. // } // // // (Or just call |StartFetch()| explicitly if there's nothing else to // // do.) // void StartDoingStuff() { // StartFetch(); // Starts fetching details. // // Etc. // } // // // Your other class stuff here // // virtual void OnDetailsAvailable() { // // do work with memory info here // } // } class MemoryDetails : public base::RefCountedThreadSafe<MemoryDetails> { … }; #endif // CHROME_BROWSER_MEMORY_DETAILS_H_