blob: cb8ecd5376547ba2129f8a23ebda41d77cf243c6 [file] [log] [blame]
hbosdb346a72016-11-29 01:57:01 -08001/*
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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#ifndef PC_TEST_RTCSTATSOBTAINER_H_
12#define PC_TEST_RTCSTATSOBTAINER_H_
hbosdb346a72016-11-29 01:57:01 -080013
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020014#include "api/stats/rtcstatsreport.h"
15#include "rtc_base/gunit.h"
hbosdb346a72016-11-29 01:57:01 -080016
17namespace webrtc {
18
19class 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
27 void OnStatsDelivered(
28 const rtc::scoped_refptr<const RTCStatsReport>& report) override {
29 EXPECT_TRUE(thread_checker_.CalledOnValidThread());
30 report_ = report;
31 if (report_ptr_)
32 *report_ptr_ = report_;
33 }
34
35 rtc::scoped_refptr<const RTCStatsReport> report() const {
36 EXPECT_TRUE(thread_checker_.CalledOnValidThread());
37 return report_;
38 }
39
40 protected:
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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020053#endif // PC_TEST_RTCSTATSOBTAINER_H_