Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(111)

Unified Diff: chrome/browser/metrics/leak_detector/leak_detector_controller.h

Issue 2396743002: Leak reports collect information about the memory usage (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698