/* * Copyright 2016 The WebRTC Project Authors. All rights reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef PC_TEST_RTC_STATS_OBTAINER_H_ #define PC_TEST_RTC_STATS_OBTAINER_H_ #include "api/stats/rtc_stats_report.h" #include "rtc_base/gunit.h" namespace webrtc { class RTCStatsObtainer : public RTCStatsCollectorCallback { public: static rtc::scoped_refptr Create( rtc::scoped_refptr* report_ptr = nullptr) { return rtc::scoped_refptr( new rtc::RefCountedObject(report_ptr)); } void OnStatsDelivered( const rtc::scoped_refptr& report) override { EXPECT_TRUE(thread_checker_.IsCurrent()); report_ = report; if (report_ptr_) *report_ptr_ = report_; } rtc::scoped_refptr report() const { EXPECT_TRUE(thread_checker_.IsCurrent()); return report_; } protected: explicit RTCStatsObtainer( rtc::scoped_refptr* report_ptr) : report_ptr_(report_ptr) {} private: rtc::ThreadChecker thread_checker_; rtc::scoped_refptr report_; rtc::scoped_refptr* report_ptr_; }; } // namespace webrtc #endif // PC_TEST_RTC_STATS_OBTAINER_H_