| Index: chrome/browser/metrics/leak_detector/leak_detector_controller.h
|
| diff --git a/chrome/browser/metrics/leak_detector/leak_detector_controller.h b/chrome/browser/metrics/leak_detector/leak_detector_controller.h
|
| index 6651bb790795625e490be584b6b1a2b3101ae51d..e7bd69505eba44d762c7f7ffc8cdb34d9512c773 100644
|
| --- a/chrome/browser/metrics/leak_detector/leak_detector_controller.h
|
| +++ b/chrome/browser/metrics/leak_detector/leak_detector_controller.h
|
| @@ -12,11 +12,29 @@
|
| #include "base/macros.h"
|
| #include "base/threading/thread_checker.h"
|
| #include "chrome/browser/metrics/leak_detector/leak_detector_remote_controller.h"
|
| +#include "chrome/browser/metrics/metrics_memory_details.h"
|
| #include "components/metrics/leak_detector/leak_detector.h"
|
| #include "components/metrics/proto/memory_leak_report.pb.h"
|
|
|
| namespace metrics {
|
|
|
| +// Accumulates total memory usage info inside MetricsMemoryDetails.
|
| +class TotalMemoryGrowthTracker : public MemoryGrowthTracker {
|
| + public:
|
| + TotalMemoryGrowthTracker();
|
| + ~TotalMemoryGrowthTracker();
|
| +
|
| + // Updates the inner counter by sample (in kb). Returns always false
|
| + // to suppress generating growth/shrink histograms in MetricsMemoryDetails.
|
| + bool UpdateSample(base::ProcessId pid, int sample, int* diff) override;
|
| +
|
| + size_t GetTotalUsageKb() const;
|
| + void Reset();
|
| +
|
| + private:
|
| + size_t total_usage_kb_;
|
| +};
|
| +
|
| // This class initializes the LeakDetector on the browser process and registers
|
| // itself to be notified of leak reports.
|
| class LeakDetectorController
|
| @@ -30,6 +48,10 @@ class LeakDetectorController
|
| // |stored_reports_| is empty afterwards.
|
| void GetLeakReports(std::vector<MemoryLeakReportProto>* reports);
|
|
|
| + // Method called from MetricsMemoryDetails when memory usage gets measured.
|
| + // Updates |memory_usage_info| in stored_reports_[i] for i >= |index|.
|
| + void OnMemoryDetailCollectionDone(size_t index);
|
| +
|
| protected:
|
| // LeakDetector::Observer:
|
| void OnLeaksFound(const std::vector<MemoryLeakReportProto>& reports) override;
|
| @@ -85,6 +107,15 @@ class LeakDetectorController
|
| // For thread safety.
|
| base::ThreadChecker thread_checker_;
|
|
|
| + // An object passed to MetricsMemoryDetails for collecting memory usage.
|
| + TotalMemoryGrowthTracker total_memory_growth_tracker_;
|
| +
|
| + // For passing |this| into a callback.
|
| + base::WeakPtrFactory<LeakDetectorController> weak_ptr_factory_;
|
| +
|
| + // Indicates that collecting memory usage is running.
|
| + bool waiting_for_collect_memory_usage_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(LeakDetectorController);
|
| };
|
|
|
|
|