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

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

Issue 2396743002: Leak reports collect information about the memory usage (Closed)
Patch Set: Added setter for |generate_histograms_| 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
« no previous file with comments | « no previous file | chrome/browser/metrics/leak_detector/leak_detector_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..69089093afd70950dbcc1d93cf9f3600bae0576e 100644
--- a/chrome/browser/metrics/leak_detector/leak_detector_controller.h
+++ b/chrome/browser/metrics/leak_detector/leak_detector_controller.h
@@ -12,6 +12,7 @@
#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"
@@ -40,7 +41,30 @@ class LeakDetectorController
const std::vector<MemoryLeakReportProto>& reports) override;
void OnRemoteProcessShutdown() override;
+ void set_enable_collect_memory_usage_step(bool enabled) {
+ enable_collect_memory_usage_step_ = enabled;
+ }
+
private:
+ // Accumulates total memory usage info inside MetricsMemoryDetails.
+ class TotalMemoryGrowthTracker : public MemoryGrowthTracker {
+ public:
+ TotalMemoryGrowthTracker();
+ ~TotalMemoryGrowthTracker() override;
+
+ // 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 total_usage_kb() const { return total_usage_kb_; }
+ void reset() { total_usage_kb_ = 0; }
+
+ private:
+ size_t total_usage_kb_;
+
+ DISALLOW_COPY_AND_ASSIGN(TotalMemoryGrowthTracker);
+ };
+
// Returns true to indicate that LeakDetector should be enabled on a renderer
// process. This is determined as follows:
// 1. If the number of processes running LeakDetector is not at max, returns
@@ -55,6 +79,10 @@ class LeakDetectorController
void StoreLeakReports(const std::vector<MemoryLeakReportProto>& reports,
MemoryLeakReportProto::ProcessType process_type);
+ // 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);
+
// All leak reports received through OnLeakFound() are stored in protobuf
// format.
std::vector<MemoryLeakReportProto> stored_reports_;
@@ -85,6 +113,19 @@ class LeakDetectorController
// For thread safety.
base::ThreadChecker thread_checker_;
+ // An object passed to MetricsMemoryDetails for collecting memory usage.
+ TotalMemoryGrowthTracker total_memory_growth_tracker_;
+
+ // A flag indicating if a task should be scheduled to populate memory usage
+ // information in the reports.
+ bool enable_collect_memory_usage_step_;
+
+ // Indicates that collecting memory usage is running.
+ bool waiting_for_collect_memory_usage_step_;
+
+ // For passing |this| into a callback.
+ base::WeakPtrFactory<LeakDetectorController> weak_ptr_factory_;
+
DISALLOW_COPY_AND_ASSIGN(LeakDetectorController);
};
« no previous file with comments | « no previous file | chrome/browser/metrics/leak_detector/leak_detector_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698