Chromium Code Reviews

Side by Side Diff: components/test_runner/mock_webrtc_peer_connection_handler.cc

Issue 2363673002: Promise-based RTCPeerConnection::getStats implementation. (Closed)
Patch Set: nits (no need to rerun bots yet) Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/test_runner/mock_webrtc_peer_connection_handler.h" 5 #include "components/test_runner/mock_webrtc_peer_connection_handler.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 90 matching lines...)
101 } 101 }
102 102
103 private: 103 private:
104 const std::string id_; 104 const std::string id_;
105 const std::string type_name_; 105 const std::string type_name_;
106 const double timestamp_; 106 const double timestamp_;
107 // (name, value) pairs. 107 // (name, value) pairs.
108 std::vector<std::pair<std::string, std::string>> values_; 108 std::vector<std::pair<std::string, std::string>> values_;
109 }; 109 };
110 110
111 template<typename T>
112 WebVector<T> sequenceWithValue(T value) {
113 std::vector<T> vec;
114 vec.push_back(value);
115 return WebVector<T>(vec);
hta - Chromium 2016/09/26 13:21:13 I think you can do this in one line with "return W
hbos_chromium 2016/09/26 14:00:16 Done.
116 }
117
118 class MockWebRTCStatsMember : public blink::WebRTCStatsMember {
119 public:
120 MockWebRTCStatsMember(
121 const std::string& name, blink::WebRTCStatsMemberType type)
122 : name_(name), type_(type) {}
123
124 // blink::WebRTCStatsMember overrides.
125 blink::WebString name() const override {
126 return blink::WebString::fromUTF8(name_);
127 }
128 blink::WebRTCStatsMemberType type() const override {
129 return type_;
130 }
131 bool isDefined() const override { return true; }
132 int32_t valueInt32() const override { return 42; }
133 uint32_t valueUint32() const override { return 42; }
134 int64_t valueInt64() const override { return 42; }
135 uint64_t valueUint64() const override { return 42; }
136 double valueDouble() const override { return 42.0; }
137 blink::WebString valueString() const override {
138 return blink::WebString::fromUTF8("42");
139 }
140 WebVector<int32_t> valueSequenceInt32() const override {
141 return sequenceWithValue<int32_t>(42);
142 }
143 WebVector<uint32_t> valueSequenceUint32() const override {
144 return sequenceWithValue<uint32_t>(42);
145 }
146 WebVector<int64_t> valueSequenceInt64() const override {
147 return sequenceWithValue<int64_t>(42);
148 }
149 WebVector<uint64_t> valueSequenceUint64() const override {
150 return sequenceWithValue<uint64_t>(42);
151 }
152 WebVector<double> valueSequenceDouble() const override {
153 return sequenceWithValue<double>(42.0);
154 }
155 blink::WebVector<blink::WebString> valueSequenceString() const override {
156 return sequenceWithValue<blink::WebString>(
157 blink::WebString::fromUTF8("42"));
158 }
159
160 private:
161 std::string name_;
162 blink::WebRTCStatsMemberType type_;
163 };
164
165 class MockWebRTCStats : public blink::WebRTCStats {
166 public:
167 MockWebRTCStats(
168 const std::string& id, const std::string& type, double timestamp)
169 : id_(id), type_(type), timestamp_(timestamp) {
170 }
171
172 void addMember(const std::string& name, blink::WebRTCStatsMemberType type) {
173 members_.push_back(std::make_pair(name, type));
174 }
175
176 // blink::WebRTCStats overrides.
177 blink::WebString id() const override {
178 return blink::WebString::fromUTF8(id_);
179 }
180 blink::WebString type() const override {
181 return blink::WebString::fromUTF8(type_);
182 }
183 double timestamp() const override {
184 return timestamp_;
185 }
186 size_t membersCount() const override {
187 return members_.size();
188 }
189 std::unique_ptr<WebRTCStatsMember> getMember(size_t i) const override {
190 return std::unique_ptr<WebRTCStatsMember>(new MockWebRTCStatsMember(
191 members_[i].first, members_[i].second));
192 }
193
194 private:
195 std::string id_;
196 std::string type_;
197 double timestamp_;
198 std::vector<std::pair<std::string, blink::WebRTCStatsMemberType>> members_;
199 };
200
201 class MockWebRTCStatsReport : public blink::WebRTCStatsReport {
202 public:
203 MockWebRTCStatsReport() : i_(0) {}
204 MockWebRTCStatsReport(const MockWebRTCStatsReport& other)
205 : stats_(other.stats_), i_(0) {}
206
207 void AddStats(const MockWebRTCStats& stats) {
208 stats_.push_back(stats);
209 }
210
211 // blink::WebRTCStatsReport overrides.
212 std::unique_ptr<blink::WebRTCStatsReport> copyHandle() const override {
213 // Because this is just a mock, we copy the underlying stats instead of
214 // referencing the same stats as the original report.
215 return std::unique_ptr<blink::WebRTCStatsReport>(
216 new MockWebRTCStatsReport(*this));
217 }
218 std::unique_ptr<WebRTCStats> getStats(WebString id) const override {
219 for (const MockWebRTCStats& stats : stats_) {
220 if (stats.id() == id)
221 return std::unique_ptr<blink::WebRTCStats>(new MockWebRTCStats(stats));
222 }
223 return nullptr;
224 }
225 std::unique_ptr<blink::WebRTCStats> next() override {
226 if (i_ >= stats_.size())
227 return nullptr;
228 return std::unique_ptr<blink::WebRTCStats>(
229 new MockWebRTCStats(stats_[i_++]));
230 }
231
232 private:
233 std::vector<MockWebRTCStats> stats_;
234 size_t i_;
235 };
236
111 } // namespace 237 } // namespace
112 238
113 MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler() 239 MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler()
114 : weak_factory_(this) {} 240 : weak_factory_(this) {}
115 241
116 MockWebRTCPeerConnectionHandler::~MockWebRTCPeerConnectionHandler() { 242 MockWebRTCPeerConnectionHandler::~MockWebRTCPeerConnectionHandler() {
117 } 243 }
118 244
119 MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler( 245 MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler(
120 WebRTCPeerConnectionHandlerClient* client, 246 WebRTCPeerConnectionHandlerClient* client,
(...skipping 265 matching lines...)
386 response.addStats(video_stats); 512 response.addStats(video_stats);
387 } 513 }
388 } 514 }
389 interfaces_->GetDelegate()->PostTask( 515 interfaces_->GetDelegate()->PostTask(
390 base::Bind(&blink::WebRTCStatsRequest::requestSucceeded, 516 base::Bind(&blink::WebRTCStatsRequest::requestSucceeded,
391 base::Owned(new WebRTCStatsRequest(request)), response)); 517 base::Owned(new WebRTCStatsRequest(request)), response));
392 } 518 }
393 519
394 void MockWebRTCPeerConnectionHandler::getStats( 520 void MockWebRTCPeerConnectionHandler::getStats(
395 std::unique_ptr<blink::WebRTCStatsReportCallback> callback) { 521 std::unique_ptr<blink::WebRTCStatsReportCallback> callback) {
396 // TODO(hbos): When blink::RTCPeerConnection starts using the new |getStats| 522 std::unique_ptr<MockWebRTCStatsReport> report(new MockWebRTCStatsReport());
397 // this needs to be implemented. crbug.com/627816. 523 MockWebRTCStats stats("mock-stats-01", "mock-stats", 1234.0);
398 NOTREACHED(); 524 stats.addMember("int32", blink::WebRTCStatsMemberTypeInt32);
525 stats.addMember("uint32", blink::WebRTCStatsMemberTypeUint32);
526 stats.addMember("int64", blink::WebRTCStatsMemberTypeInt64);
527 stats.addMember("uint64", blink::WebRTCStatsMemberTypeUint64);
528 stats.addMember("double", blink::WebRTCStatsMemberTypeDouble);
529 stats.addMember("string", blink::WebRTCStatsMemberTypeString);
530 stats.addMember("sequenceInt32", blink::WebRTCStatsMemberTypeSequenceInt32);
531 stats.addMember("sequenceUint32", blink::WebRTCStatsMemberTypeSequenceUint32);
532 stats.addMember("sequenceInt64", blink::WebRTCStatsMemberTypeSequenceInt64);
533 stats.addMember("sequenceUint64", blink::WebRTCStatsMemberTypeSequenceUint64);
534 stats.addMember("sequenceDouble", blink::WebRTCStatsMemberTypeSequenceDouble);
535 stats.addMember("sequenceString", blink::WebRTCStatsMemberTypeSequenceString);
536 report->AddStats(stats);
537 callback->OnStatsDelivered(std::unique_ptr<blink::WebRTCStatsReport>(
538 report.release()));
399 } 539 }
400 540
401 void MockWebRTCPeerConnectionHandler::ReportCreationOfDataChannel() { 541 void MockWebRTCPeerConnectionHandler::ReportCreationOfDataChannel() {
402 WebRTCDataChannelInit init; 542 WebRTCDataChannelInit init;
403 WebRTCDataChannelHandler* remote_data_channel = 543 WebRTCDataChannelHandler* remote_data_channel =
404 new MockWebRTCDataChannelHandler("MockRemoteDataChannel", init, 544 new MockWebRTCDataChannelHandler("MockRemoteDataChannel", init,
405 interfaces_->GetDelegate()); 545 interfaces_->GetDelegate());
406 client_->didAddRemoteDataChannel(remote_data_channel); 546 client_->didAddRemoteDataChannel(remote_data_channel);
407 } 547 }
408 548
(...skipping 14 matching lines...)
423 const WebMediaStreamTrack& track) { 563 const WebMediaStreamTrack& track) {
424 return new MockWebRTCDTMFSenderHandler(track, interfaces_->GetDelegate()); 564 return new MockWebRTCDTMFSenderHandler(track, interfaces_->GetDelegate());
425 } 565 }
426 566
427 void MockWebRTCPeerConnectionHandler::stop() { 567 void MockWebRTCPeerConnectionHandler::stop() {
428 stopped_ = true; 568 stopped_ = true;
429 weak_factory_.InvalidateWeakPtrs(); 569 weak_factory_.InvalidateWeakPtrs();
430 } 570 }
431 571
432 } // namespace test_runner 572 } // namespace test_runner
OLDNEW

Powered by Google App Engine