// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_METRICS_LEAK_DETECTOR_CONTROLLER_H_ #define CHROME_BROWSER_METRICS_LEAK_DETECTOR_CONTROLLER_H_ #include #include "base/macros.h" #include "base/threading/thread_checker.h" #include "components/metrics/leak_detector/leak_detector.h" #include "components/metrics/proto/memory_leak_report.pb.h" namespace metrics { // This class initializes the LeakDetector on the browser process and registers // itself to be notified of leak reports. class LeakDetectorController : public LeakDetector::Observer { public: LeakDetectorController(); ~LeakDetectorController() override; // Retrieves all reports in |stored_reports_|, moving them to |*reports|. // |stored_reports_| is empty afterwards. void GetLeakReports(std::vector* reports); protected: // LeakDetector::Observer: void OnLeakFound(const LeakDetector::LeakReport& report) override; private: // All leak reports received through OnLeakFound() are stored in protobuf // format. std::vector stored_reports_; // For thread safety. base::ThreadChecker thread_checker_; DISALLOW_COPY_AND_ASSIGN(LeakDetectorController); }; } // namespace metrics #endif // CHROME_BROWSER_METRICS_LEAK_DETECTOR_CONTROLLER_H_