#ifndef CONTENT_WEB_TEST_BROWSER_LEAK_DETECTOR_H_
#define CONTENT_WEB_TEST_BROWSER_LEAK_DETECTOR_H_
#include <memory>
#include "base/memory/weak_ptr.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/blink/public/mojom/leak_detector/leak_detector.mojom.h"
namespace content {
class RenderProcessHost;
class LeakDetector {
public:
LeakDetector();
LeakDetector(const LeakDetector&) = delete;
LeakDetector& operator=(const LeakDetector&) = delete;
~LeakDetector();
struct LeakDetectionReport {
bool leaked;
std::string detail;
};
using ReportCallback = base::OnceCallback<void(const LeakDetectionReport&)>;
void TryLeakDetection(RenderProcessHost* host, ReportCallback callback);
private:
void OnLeakDetectionComplete(blink::mojom::LeakDetectionResultPtr result);
void OnLeakDetectorIsGone();
mojo::Remote<blink::mojom::LeakDetector> leak_detector_;
blink::mojom::LeakDetectionResultPtr previous_result_;
ReportCallback callback_;
base::WeakPtrFactory<LeakDetector> weak_factory_{this};
};
}
#endif