• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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