| 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 7fdeb9308edb1a74943c903ce9469ae200e56320..6651bb790795625e490be584b6b1a2b3101ae51d 100644
|
| --- a/chrome/browser/metrics/leak_detector/leak_detector_controller.h
|
| +++ b/chrome/browser/metrics/leak_detector/leak_detector_controller.h
|
| @@ -35,12 +35,20 @@ class LeakDetectorController
|
| void OnLeaksFound(const std::vector<MemoryLeakReportProto>& reports) override;
|
|
|
| // LeakDetectorRemoteController::LocalController:
|
| - MemoryLeakReportProto::Params GetParams() const override;
|
| + MemoryLeakReportProto::Params GetParamsAndRecordRequest() override;
|
| void SendLeakReports(
|
| const std::vector<MemoryLeakReportProto>& reports) override;
|
| void OnRemoteProcessShutdown() override;
|
|
|
| private:
|
| + // 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
|
| + // true with a probability of |per_process_enable_probability_|.
|
| + // 2. If the number of processes running LeakDetector has reached the max,
|
| + // returns false.
|
| + bool ShouldRandomlyEnableLeakDetectorOnRendererProcess() const;
|
| +
|
| // Stores a given array of leak reports in |stored_reports_|. |process_type|
|
| // is the type of process that generated these reports. The reports must all
|
| // come from the same process type.
|
| @@ -58,6 +66,22 @@ class LeakDetectorController
|
| // The build ID of the current Chrome binary.
|
| std::vector<uint8_t> build_id_;
|
|
|
| + // The probability that each process will have the leak detector enabled on
|
| + // it. For remote processes, this is determined by sending |params_| for
|
| + // initialization. If the remote process is not to have leak detector enabled,
|
| + // |params_.sampling_rate()| will be set to 0. Whether or not to enable for a
|
| + // particular process is independent of the decision for all other processes.
|
| + double browser_process_enable_probability_;
|
| + double renderer_process_enable_probability_;
|
| +
|
| + // The maximum allowed number of renderer processes with leak detector running
|
| + // simultaneously.
|
| + int max_renderer_processes_with_leak_detector_enabled_;
|
| +
|
| + // The number of renderer processes on which the leak detector has been
|
| + // enabled and is running.
|
| + int num_renderer_processes_with_leak_detector_enabled_;
|
| +
|
| // For thread safety.
|
| base::ThreadChecker thread_checker_;
|
|
|
|
|