| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_MEMORY_DETAILS_H_ | 5 #ifndef CHROME_BROWSER_MEMORY_DETAILS_H_ |
| 6 #define CHROME_BROWSER_MEMORY_DETAILS_H_ | 6 #define CHROME_BROWSER_MEMORY_DETAILS_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/process_util.h" | 10 #include "base/process_util.h" |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 | 45 |
| 46 typedef std::vector<ProcessMemoryInformation> ProcessMemoryInformationList; | 46 typedef std::vector<ProcessMemoryInformation> ProcessMemoryInformationList; |
| 47 | 47 |
| 48 // Browser Process Information. | 48 // Browser Process Information. |
| 49 struct ProcessData { | 49 struct ProcessData { |
| 50 std::wstring name; | 50 std::wstring name; |
| 51 std::wstring process_name; | 51 std::wstring process_name; |
| 52 ProcessMemoryInformationList processes; | 52 ProcessMemoryInformationList processes; |
| 53 }; | 53 }; |
| 54 | 54 |
| 55 #if defined(OS_MACOSX) |
| 56 class ProcessInfoSnapshot; |
| 57 #endif |
| 58 |
| 55 // MemoryDetails fetches memory details about current running browsers. | 59 // MemoryDetails fetches memory details about current running browsers. |
| 56 // Because this data can only be fetched asynchronously, callers use | 60 // Because this data can only be fetched asynchronously, callers use |
| 57 // this class via a callback. | 61 // this class via a callback. |
| 58 // | 62 // |
| 59 // Example usage: | 63 // Example usage: |
| 60 // | 64 // |
| 61 // class MyMemoryDetailConsumer : public MemoryDetails { | 65 // class MyMemoryDetailConsumer : public MemoryDetails { |
| 62 // | 66 // |
| 63 // MyMemoryDetailConsumer() : MemoryDetails(true) { | 67 // MyMemoryDetailConsumer() : MemoryDetails(true) { |
| 64 // StartFetch(); // Starts fetching details. | 68 // StartFetch(); // Starts fetching details. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 void CollectChildInfoOnIOThread(); | 100 void CollectChildInfoOnIOThread(); |
| 97 | 101 |
| 98 // Collect current process information from the OS and store it | 102 // Collect current process information from the OS and store it |
| 99 // for processing. If data has already been collected, clears old | 103 // for processing. If data has already been collected, clears old |
| 100 // data and re-collects the data. | 104 // data and re-collects the data. |
| 101 // Note - this function enumerates memory details from many processes | 105 // Note - this function enumerates memory details from many processes |
| 102 // and is fairly expensive to run, hence it's run on the file thread. | 106 // and is fairly expensive to run, hence it's run on the file thread. |
| 103 // The parameter holds information about processes from the IO thread. | 107 // The parameter holds information about processes from the IO thread. |
| 104 void CollectProcessData(std::vector<ProcessMemoryInformation>); | 108 void CollectProcessData(std::vector<ProcessMemoryInformation>); |
| 105 | 109 |
| 110 #if defined(OS_MACOSX) |
| 111 // A helper for |CollectProcessData()|, collecting data on the Chrome/Chromium |
| 112 // process with PID |pid|. The collected data is added to the state of the |
| 113 // object (in |process_data_|). |
| 114 void CollectProcessDataChrome( |
| 115 const std::vector<ProcessMemoryInformation>& child_info, |
| 116 base::ProcessId pid, |
| 117 const ProcessInfoSnapshot& process_info); |
| 118 #endif |
| 119 |
| 106 // Collect child process information on the UI thread. Information about | 120 // Collect child process information on the UI thread. Information about |
| 107 // renderer processes is only available there. | 121 // renderer processes is only available there. |
| 108 void CollectChildInfoOnUIThread(); | 122 void CollectChildInfoOnUIThread(); |
| 109 | 123 |
| 110 // Each time we take a memory sample, we do a little work to update | 124 // Each time we take a memory sample, we do a little work to update |
| 111 // the global histograms for tracking memory usage. | 125 // the global histograms for tracking memory usage. |
| 112 void UpdateHistograms(); | 126 void UpdateHistograms(); |
| 113 | 127 |
| 114 // Returns a pointer to the ProcessData structure for Chrome. | 128 // Returns a pointer to the ProcessData structure for Chrome. |
| 115 ProcessData* ChromeBrowser(); | 129 ProcessData* ChromeBrowser(); |
| 116 | 130 |
| 117 std::vector<ProcessData> process_data_; | 131 std::vector<ProcessData> process_data_; |
| 118 | 132 |
| 119 DISALLOW_EVIL_CONSTRUCTORS(MemoryDetails); | 133 DISALLOW_EVIL_CONSTRUCTORS(MemoryDetails); |
| 120 }; | 134 }; |
| 121 | 135 |
| 122 #endif // CHROME_BROWSER_MEMORY_DETAILS_H_ | 136 #endif // CHROME_BROWSER_MEMORY_DETAILS_H_ |
| OLD | NEW |