1 /* 2 * Copyright 2016 The WebRTC Project Authors. All rights reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #ifndef PC_TEST_RTC_STATS_OBTAINER_H_ 12 #define PC_TEST_RTC_STATS_OBTAINER_H_ 13 14 #include "api/stats/rtc_stats_report.h" 15 #include "rtc_base/gunit.h" 16 17 namespace webrtc { 18 19 class RTCStatsObtainer : public RTCStatsCollectorCallback { 20 public: 21 static rtc::scoped_refptr<RTCStatsObtainer> Create( 22 rtc::scoped_refptr<const RTCStatsReport>* report_ptr = nullptr) { 23 return rtc::scoped_refptr<RTCStatsObtainer>( 24 new rtc::RefCountedObject<RTCStatsObtainer>(report_ptr)); 25 } 26 OnStatsDelivered(const rtc::scoped_refptr<const RTCStatsReport> & report)27 void OnStatsDelivered( 28 const rtc::scoped_refptr<const RTCStatsReport>& report) override { 29 EXPECT_TRUE(thread_checker_.IsCurrent()); 30 report_ = report; 31 if (report_ptr_) 32 *report_ptr_ = report_; 33 } 34 report()35 rtc::scoped_refptr<const RTCStatsReport> report() const { 36 EXPECT_TRUE(thread_checker_.IsCurrent()); 37 return report_; 38 } 39 40 protected: RTCStatsObtainer(rtc::scoped_refptr<const RTCStatsReport> * report_ptr)41 explicit RTCStatsObtainer( 42 rtc::scoped_refptr<const RTCStatsReport>* report_ptr) 43 : report_ptr_(report_ptr) {} 44 45 private: 46 rtc::ThreadChecker thread_checker_; 47 rtc::scoped_refptr<const RTCStatsReport> report_; 48 rtc::scoped_refptr<const RTCStatsReport>* report_ptr_; 49 }; 50 51 } // namespace webrtc 52 53 #endif // PC_TEST_RTC_STATS_OBTAINER_H_ 54