| Index: components/test_runner/mock_webrtc_peer_connection_handler.cc
|
| diff --git a/components/test_runner/mock_webrtc_peer_connection_handler.cc b/components/test_runner/mock_webrtc_peer_connection_handler.cc
|
| index 0b623e0d8f8e13632de4b9d3fe37d56990dba035..50c3f5b09dd8e5a92f88b7ddcc3cf754bf11edfb 100644
|
| --- a/components/test_runner/mock_webrtc_peer_connection_handler.cc
|
| +++ b/components/test_runner/mock_webrtc_peer_connection_handler.cc
|
| @@ -108,6 +108,130 @@ class MockWebRTCLegacyStats : public blink::WebRTCLegacyStats {
|
| std::vector<std::pair<std::string, std::string>> values_;
|
| };
|
|
|
| +template<typename T>
|
| +WebVector<T> sequenceWithValue(T value) {
|
| + return WebVector<T>(&value, 1);
|
| +}
|
| +
|
| +class MockWebRTCStatsMember : public blink::WebRTCStatsMember {
|
| + public:
|
| + MockWebRTCStatsMember(
|
| + const std::string& name, blink::WebRTCStatsMemberType type)
|
| + : name_(name), type_(type) {}
|
| +
|
| + // blink::WebRTCStatsMember overrides.
|
| + blink::WebString name() const override {
|
| + return blink::WebString::fromUTF8(name_);
|
| + }
|
| + blink::WebRTCStatsMemberType type() const override {
|
| + return type_;
|
| + }
|
| + bool isDefined() const override { return true; }
|
| + int32_t valueInt32() const override { return 42; }
|
| + uint32_t valueUint32() const override { return 42; }
|
| + int64_t valueInt64() const override { return 42; }
|
| + uint64_t valueUint64() const override { return 42; }
|
| + double valueDouble() const override { return 42.0; }
|
| + blink::WebString valueString() const override {
|
| + return blink::WebString::fromUTF8("42");
|
| + }
|
| + WebVector<int32_t> valueSequenceInt32() const override {
|
| + return sequenceWithValue<int32_t>(42);
|
| + }
|
| + WebVector<uint32_t> valueSequenceUint32() const override {
|
| + return sequenceWithValue<uint32_t>(42);
|
| + }
|
| + WebVector<int64_t> valueSequenceInt64() const override {
|
| + return sequenceWithValue<int64_t>(42);
|
| + }
|
| + WebVector<uint64_t> valueSequenceUint64() const override {
|
| + return sequenceWithValue<uint64_t>(42);
|
| + }
|
| + WebVector<double> valueSequenceDouble() const override {
|
| + return sequenceWithValue<double>(42.0);
|
| + }
|
| + blink::WebVector<blink::WebString> valueSequenceString() const override {
|
| + return sequenceWithValue<blink::WebString>(
|
| + blink::WebString::fromUTF8("42"));
|
| + }
|
| +
|
| + private:
|
| + std::string name_;
|
| + blink::WebRTCStatsMemberType type_;
|
| +};
|
| +
|
| +class MockWebRTCStats : public blink::WebRTCStats {
|
| + public:
|
| + MockWebRTCStats(
|
| + const std::string& id, const std::string& type, double timestamp)
|
| + : id_(id), type_(type), timestamp_(timestamp) {
|
| + }
|
| +
|
| + void addMember(const std::string& name, blink::WebRTCStatsMemberType type) {
|
| + members_.push_back(std::make_pair(name, type));
|
| + }
|
| +
|
| + // blink::WebRTCStats overrides.
|
| + blink::WebString id() const override {
|
| + return blink::WebString::fromUTF8(id_);
|
| + }
|
| + blink::WebString type() const override {
|
| + return blink::WebString::fromUTF8(type_);
|
| + }
|
| + double timestamp() const override {
|
| + return timestamp_;
|
| + }
|
| + size_t membersCount() const override {
|
| + return members_.size();
|
| + }
|
| + std::unique_ptr<WebRTCStatsMember> getMember(size_t i) const override {
|
| + return std::unique_ptr<WebRTCStatsMember>(new MockWebRTCStatsMember(
|
| + members_[i].first, members_[i].second));
|
| + }
|
| +
|
| + private:
|
| + std::string id_;
|
| + std::string type_;
|
| + double timestamp_;
|
| + std::vector<std::pair<std::string, blink::WebRTCStatsMemberType>> members_;
|
| +};
|
| +
|
| +class MockWebRTCStatsReport : public blink::WebRTCStatsReport {
|
| + public:
|
| + MockWebRTCStatsReport() : i_(0) {}
|
| + MockWebRTCStatsReport(const MockWebRTCStatsReport& other)
|
| + : stats_(other.stats_), i_(0) {}
|
| +
|
| + void AddStats(const MockWebRTCStats& stats) {
|
| + stats_.push_back(stats);
|
| + }
|
| +
|
| + // blink::WebRTCStatsReport overrides.
|
| + std::unique_ptr<blink::WebRTCStatsReport> copyHandle() const override {
|
| + // Because this is just a mock, we copy the underlying stats instead of
|
| + // referencing the same stats as the original report.
|
| + return std::unique_ptr<blink::WebRTCStatsReport>(
|
| + new MockWebRTCStatsReport(*this));
|
| + }
|
| + std::unique_ptr<WebRTCStats> getStats(WebString id) const override {
|
| + for (const MockWebRTCStats& stats : stats_) {
|
| + if (stats.id() == id)
|
| + return std::unique_ptr<blink::WebRTCStats>(new MockWebRTCStats(stats));
|
| + }
|
| + return nullptr;
|
| + }
|
| + std::unique_ptr<blink::WebRTCStats> next() override {
|
| + if (i_ >= stats_.size())
|
| + return nullptr;
|
| + return std::unique_ptr<blink::WebRTCStats>(
|
| + new MockWebRTCStats(stats_[i_++]));
|
| + }
|
| +
|
| + private:
|
| + std::vector<MockWebRTCStats> stats_;
|
| + size_t i_;
|
| +};
|
| +
|
| } // namespace
|
|
|
| MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler()
|
| @@ -393,9 +517,23 @@ void MockWebRTCPeerConnectionHandler::getStats(
|
|
|
| void MockWebRTCPeerConnectionHandler::getStats(
|
| std::unique_ptr<blink::WebRTCStatsReportCallback> callback) {
|
| - // TODO(hbos): When blink::RTCPeerConnection starts using the new |getStats|
|
| - // this needs to be implemented. crbug.com/627816.
|
| - NOTREACHED();
|
| + std::unique_ptr<MockWebRTCStatsReport> report(new MockWebRTCStatsReport());
|
| + MockWebRTCStats stats("mock-stats-01", "mock-stats", 1234.0);
|
| + stats.addMember("int32", blink::WebRTCStatsMemberTypeInt32);
|
| + stats.addMember("uint32", blink::WebRTCStatsMemberTypeUint32);
|
| + stats.addMember("int64", blink::WebRTCStatsMemberTypeInt64);
|
| + stats.addMember("uint64", blink::WebRTCStatsMemberTypeUint64);
|
| + stats.addMember("double", blink::WebRTCStatsMemberTypeDouble);
|
| + stats.addMember("string", blink::WebRTCStatsMemberTypeString);
|
| + stats.addMember("sequenceInt32", blink::WebRTCStatsMemberTypeSequenceInt32);
|
| + stats.addMember("sequenceUint32", blink::WebRTCStatsMemberTypeSequenceUint32);
|
| + stats.addMember("sequenceInt64", blink::WebRTCStatsMemberTypeSequenceInt64);
|
| + stats.addMember("sequenceUint64", blink::WebRTCStatsMemberTypeSequenceUint64);
|
| + stats.addMember("sequenceDouble", blink::WebRTCStatsMemberTypeSequenceDouble);
|
| + stats.addMember("sequenceString", blink::WebRTCStatsMemberTypeSequenceString);
|
| + report->AddStats(stats);
|
| + callback->OnStatsDelivered(std::unique_ptr<blink::WebRTCStatsReport>(
|
| + report.release()));
|
| }
|
|
|
| void MockWebRTCPeerConnectionHandler::ReportCreationOfDataChannel() {
|
|
|