Index: chrome/renderer/leak_detector/leak_detector_remote_client.cc |
diff --git a/chrome/renderer/leak_detector/leak_detector_remote_client.cc b/chrome/renderer/leak_detector/leak_detector_remote_client.cc |
index f22f73211e76c949359fa435850a00bf6d6236ef..80e65ff8763c42775cbd2530dc800d054f972fb3 100644 |
--- a/chrome/renderer/leak_detector/leak_detector_remote_client.cc |
+++ b/chrome/renderer/leak_detector/leak_detector_remote_client.cc |
@@ -28,17 +28,6 @@ LeakDetectorRemoteClient::~LeakDetectorRemoteClient() { |
metrics::LeakDetector::GetInstance()->RemoveObserver(this); |
} |
-void LeakDetectorRemoteClient::OnParamsReceived( |
- mojo::StructPtr<metrics::mojom::LeakDetectorParams> result) { |
- metrics::MemoryLeakReportProto::Params params; |
- metrics::leak_detector::protobuf_to_mojo_converter::MojoToParams(*result, |
- ¶ms); |
- |
- metrics::LeakDetector* detector = metrics::LeakDetector::GetInstance(); |
- detector->AddObserver(this); |
- detector->Init(params, base::ThreadTaskRunnerHandle::Get()); |
-} |
- |
void LeakDetectorRemoteClient::OnLeaksFound( |
const std::vector<metrics::MemoryLeakReportProto>& reports) { |
std::vector<mojo::StructPtr<metrics::mojom::MemoryLeakReport>> result; |
@@ -53,3 +42,20 @@ void LeakDetectorRemoteClient::OnLeaksFound( |
remote_service_->SendLeakReports(std::move(result)); |
} |
+ |
+void LeakDetectorRemoteClient::OnRenderProcessShutdown() { |
+ remote_service_.reset(); |
+} |
+ |
+void LeakDetectorRemoteClient::OnParamsReceived( |
+ mojo::StructPtr<metrics::mojom::LeakDetectorParams> result) { |
+ metrics::MemoryLeakReportProto::Params params; |
+ metrics::leak_detector::protobuf_to_mojo_converter::MojoToParams(*result, |
+ ¶ms); |
+ |
+ if (params.sampling_rate() > 0) { |
+ metrics::LeakDetector* detector = metrics::LeakDetector::GetInstance(); |
+ detector->AddObserver(this); |
+ detector->Init(params, base::ThreadTaskRunnerHandle::Get()); |
+ } |
+} |