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 |
deleted file mode 100644 |
index 0b79863f1d454fc15fc56ba96378e8a71e8f8613..0000000000000000000000000000000000000000 |
--- a/components/test_runner/mock_webrtc_peer_connection_handler.cc |
+++ /dev/null |
@@ -1,573 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "components/test_runner/mock_webrtc_peer_connection_handler.h" |
- |
-#include <stddef.h> |
- |
-#include <string> |
-#include <utility> |
-#include <vector> |
- |
-#include "base/bind.h" |
-#include "base/bind_helpers.h" |
-#include "components/test_runner/mock_webrtc_data_channel_handler.h" |
-#include "components/test_runner/mock_webrtc_dtmf_sender_handler.h" |
-#include "components/test_runner/test_interfaces.h" |
-#include "components/test_runner/web_test_delegate.h" |
-#include "third_party/WebKit/public/platform/WebMediaStream.h" |
-#include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
-#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
-#include "third_party/WebKit/public/platform/WebRTCAnswerOptions.h" |
-#include "third_party/WebKit/public/platform/WebRTCDataChannelInit.h" |
-#include "third_party/WebKit/public/platform/WebRTCOfferOptions.h" |
-#include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandlerClient.h" |
-#include "third_party/WebKit/public/platform/WebRTCStatsResponse.h" |
-#include "third_party/WebKit/public/platform/WebRTCVoidRequest.h" |
-#include "third_party/WebKit/public/platform/WebString.h" |
-#include "third_party/WebKit/public/platform/WebVector.h" |
- |
-using namespace blink; |
- |
-namespace test_runner { |
- |
-namespace { |
- |
-class MockWebRTCLegacyStats : public blink::WebRTCLegacyStats { |
- public: |
- class MemberIterator : public blink::WebRTCLegacyStatsMemberIterator { |
- public: |
- MemberIterator( |
- const std::vector<std::pair<std::string, std::string>>* values) |
- : values_(values) {} |
- |
- // blink::WebRTCLegacyStatsMemberIterator |
- bool isEnd() const override { return i >= values_->size(); } |
- void next() override { ++i; } |
- blink::WebString name() const override { |
- return blink::WebString::fromUTF8((*values_)[i].first); |
- } |
- blink::WebRTCLegacyStatsMemberType type() const override { |
- return blink::WebRTCLegacyStatsMemberTypeString; |
- } |
- int valueInt() const override { |
- NOTREACHED(); |
- return 0; |
- } |
- int64_t valueInt64() const override { |
- NOTREACHED(); |
- return 0; |
- } |
- float valueFloat() const override { |
- NOTREACHED(); |
- return 0.0f; |
- } |
- blink::WebString valueString() const override { |
- return blink::WebString::fromUTF8((*values_)[i].second); |
- } |
- bool valueBool() const override { |
- NOTREACHED(); |
- return false; |
- } |
- blink::WebString valueToString() const override { |
- return valueString(); |
- } |
- |
- private: |
- size_t i = 0; |
- const std::vector<std::pair<std::string, std::string>>* values_; |
- }; |
- |
- MockWebRTCLegacyStats(const char* id, const char* type_name, double timestamp) |
- : id_(id), type_name_(type_name), timestamp_(timestamp) {} |
- |
- // blink::WebRTCLegacyStats |
- blink::WebString id() const override { |
- return blink::WebString::fromUTF8(id_); |
- } |
- blink::WebString type() const override { |
- return blink::WebString::fromUTF8(type_name_); |
- } |
- double timestamp() const override { |
- return timestamp_; |
- } |
- blink::WebRTCLegacyStatsMemberIterator* iterator() const override { |
- return new MemberIterator(&values_); |
- } |
- |
- void addStatistic(const std::string& name, const std::string& value) { |
- values_.push_back(std::make_pair(name, value)); |
- } |
- |
- private: |
- const std::string id_; |
- const std::string type_name_; |
- const double timestamp_; |
- // (name, value) pairs. |
- 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; } |
- bool valueBool() 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<int> valueSequenceBool() const override { |
- return sequenceWithValue<int>(1); |
- } |
- 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() |
- : weak_factory_(this) {} |
- |
-MockWebRTCPeerConnectionHandler::~MockWebRTCPeerConnectionHandler() { |
-} |
- |
-MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler( |
- WebRTCPeerConnectionHandlerClient* client, |
- TestInterfaces* interfaces) |
- : client_(client), |
- stopped_(false), |
- stream_count_(0), |
- interfaces_(interfaces), |
- weak_factory_(this) {} |
- |
-void MockWebRTCPeerConnectionHandler::ReportInitializeCompleted() { |
- client_->didChangeICEGatheringState( |
- WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete); |
- client_->didChangeICEConnectionState( |
- WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted); |
-} |
- |
-bool MockWebRTCPeerConnectionHandler::initialize( |
- const WebRTCConfiguration& configuration, |
- const WebMediaConstraints& constraints) { |
- interfaces_->GetDelegate()->PostTask( |
- base::Bind(&MockWebRTCPeerConnectionHandler::ReportInitializeCompleted, |
- weak_factory_.GetWeakPtr())); |
- return true; |
-} |
- |
-void MockWebRTCPeerConnectionHandler::createOffer( |
- const WebRTCSessionDescriptionRequest& request, |
- const WebMediaConstraints& constraints) { |
- PostRequestFailure(request); |
-} |
- |
-void MockWebRTCPeerConnectionHandler::PostRequestResult( |
- const WebRTCSessionDescriptionRequest& request, |
- const WebRTCSessionDescription& session_description) { |
- interfaces_->GetDelegate()->PostTask( |
- base::Bind(&WebRTCSessionDescriptionRequest::requestSucceeded, |
- base::Owned(new WebRTCSessionDescriptionRequest(request)), |
- session_description)); |
-} |
- |
-void MockWebRTCPeerConnectionHandler::PostRequestFailure( |
- const WebRTCSessionDescriptionRequest& request) { |
- interfaces_->GetDelegate()->PostTask( |
- base::Bind(&WebRTCSessionDescriptionRequest::requestFailed, |
- base::Owned(new WebRTCSessionDescriptionRequest(request)), |
- WebString("TEST_ERROR"))); |
-} |
- |
-void MockWebRTCPeerConnectionHandler::PostRequestResult( |
- const WebRTCVoidRequest& request) { |
- interfaces_->GetDelegate()->PostTask( |
- base::Bind(&WebRTCVoidRequest::requestSucceeded, |
- base::Owned(new WebRTCVoidRequest(request)))); |
-} |
- |
-void MockWebRTCPeerConnectionHandler::PostRequestFailure( |
- const WebRTCVoidRequest& request) { |
- interfaces_->GetDelegate()->PostTask(base::Bind( |
- &WebRTCVoidRequest::requestFailed, |
- base::Owned(new WebRTCVoidRequest(request)), WebString("TEST_ERROR"))); |
-} |
- |
-void MockWebRTCPeerConnectionHandler::createOffer( |
- const WebRTCSessionDescriptionRequest& request, |
- const blink::WebRTCOfferOptions& options) { |
- if (options.iceRestart() && options.voiceActivityDetection() && |
- options.offerToReceiveAudio() > 0 && options.offerToReceiveVideo() > 0) { |
- WebRTCSessionDescription session_description; |
- session_description.initialize("offer", "local"); |
- PostRequestResult(request, session_description); |
- } else { |
- PostRequestFailure(request); |
- } |
-} |
- |
-void MockWebRTCPeerConnectionHandler::createAnswer( |
- const WebRTCSessionDescriptionRequest& request, |
- const WebMediaConstraints& constraints) { |
- if (!remote_description_.isNull()) { |
- WebRTCSessionDescription session_description; |
- session_description.initialize("answer", "local"); |
- PostRequestResult(request, session_description); |
- } else { |
- PostRequestFailure(request); |
- } |
-} |
- |
-void MockWebRTCPeerConnectionHandler::createAnswer( |
- const WebRTCSessionDescriptionRequest& request, |
- const blink::WebRTCAnswerOptions& options) { |
- if (options.voiceActivityDetection()) { |
- WebRTCSessionDescription session_description; |
- session_description.initialize("answer", "local"); |
- PostRequestResult(request, session_description); |
- } else { |
- PostRequestFailure(request); |
- } |
-} |
- |
-void MockWebRTCPeerConnectionHandler::setLocalDescription( |
- const WebRTCVoidRequest& request, |
- const WebRTCSessionDescription& local_description) { |
- if (!local_description.isNull() && local_description.sdp() == "local") { |
- local_description_ = local_description; |
- PostRequestResult(request); |
- } else { |
- PostRequestFailure(request); |
- } |
-} |
- |
-void MockWebRTCPeerConnectionHandler::setRemoteDescription( |
- const WebRTCVoidRequest& request, |
- const WebRTCSessionDescription& remote_description) { |
- |
- if (!remote_description.isNull() && remote_description.sdp() == "remote") { |
- UpdateRemoteStreams(); |
- remote_description_ = remote_description; |
- PostRequestResult(request); |
- } else |
- PostRequestFailure(request); |
-} |
- |
-void MockWebRTCPeerConnectionHandler::UpdateRemoteStreams() { |
- // Find all removed streams. |
- // Set the readyState of the remote tracks to ended, remove them from the |
- // stream and notify the client. |
- StreamMap::iterator removed_it = remote_streams_.begin(); |
- while (removed_it != remote_streams_.end()) { |
- if (local_streams_.find(removed_it->first) != local_streams_.end()) { |
- removed_it++; |
- continue; |
- } |
- |
- // The stream have been removed. Loop through all tracks and set the |
- // source as ended and remove them from the stream. |
- blink::WebMediaStream stream = removed_it->second; |
- blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; |
- stream.audioTracks(audio_tracks); |
- for (size_t i = 0; i < audio_tracks.size(); ++i) { |
- audio_tracks[i].source().setReadyState( |
- blink::WebMediaStreamSource::ReadyStateEnded); |
- stream.removeTrack(audio_tracks[i]); |
- } |
- |
- blink::WebVector<blink::WebMediaStreamTrack> video_tracks; |
- stream.videoTracks(video_tracks); |
- for (size_t i = 0; i < video_tracks.size(); ++i) { |
- video_tracks[i].source().setReadyState( |
- blink::WebMediaStreamSource::ReadyStateEnded); |
- stream.removeTrack(video_tracks[i]); |
- } |
- client_->didRemoveRemoteStream(stream); |
- remote_streams_.erase(removed_it++); |
- } |
- |
- // Find all new streams; |
- // Create new sources and tracks and notify the client about the new stream. |
- StreamMap::iterator added_it = local_streams_.begin(); |
- while (added_it != local_streams_.end()) { |
- if (remote_streams_.find(added_it->first) != remote_streams_.end()) { |
- added_it++; |
- continue; |
- } |
- |
- const blink::WebMediaStream& stream = added_it->second; |
- |
- blink::WebVector<blink::WebMediaStreamTrack> local_audio_tracks; |
- stream.audioTracks(local_audio_tracks); |
- blink::WebVector<blink::WebMediaStreamTrack> |
- remote_audio_tracks(local_audio_tracks.size()); |
- |
- for (size_t i = 0; i < local_audio_tracks.size(); ++i) { |
- blink::WebMediaStreamSource webkit_source; |
- webkit_source.initialize(local_audio_tracks[i].id(), |
- blink::WebMediaStreamSource::TypeAudio, |
- local_audio_tracks[i].id(), |
- true /* remote */); |
- remote_audio_tracks[i].initialize(webkit_source); |
- } |
- |
- blink::WebVector<blink::WebMediaStreamTrack> local_video_tracks; |
- stream.videoTracks(local_video_tracks); |
- blink::WebVector<blink::WebMediaStreamTrack> |
- remote_video_tracks(local_video_tracks.size()); |
- for (size_t i = 0; i < local_video_tracks.size(); ++i) { |
- blink::WebMediaStreamSource webkit_source; |
- webkit_source.initialize(local_video_tracks[i].id(), |
- blink::WebMediaStreamSource::TypeVideo, |
- local_video_tracks[i].id(), |
- true /* remote */); |
- remote_video_tracks[i].initialize(webkit_source); |
- } |
- |
- blink::WebMediaStream new_remote_stream; |
- new_remote_stream.initialize(remote_audio_tracks, |
- remote_video_tracks); |
- remote_streams_[added_it->first] = new_remote_stream; |
- client_->didAddRemoteStream(new_remote_stream); |
- ++added_it; |
- } |
-} |
- |
-WebRTCSessionDescription MockWebRTCPeerConnectionHandler::localDescription() { |
- return local_description_; |
-} |
- |
-WebRTCSessionDescription MockWebRTCPeerConnectionHandler::remoteDescription() { |
- return remote_description_; |
-} |
- |
-WebRTCErrorType MockWebRTCPeerConnectionHandler::setConfiguration( |
- const WebRTCConfiguration& configuration) { |
- return WebRTCErrorType::kNone; |
-} |
- |
-bool MockWebRTCPeerConnectionHandler::addICECandidate( |
- const WebRTCICECandidate& ice_candidate) { |
- client_->didGenerateICECandidate(ice_candidate); |
- return true; |
-} |
- |
-bool MockWebRTCPeerConnectionHandler::addICECandidate( |
- const WebRTCVoidRequest& request, |
- const WebRTCICECandidate& ice_candidate) { |
- PostRequestResult(request); |
- return true; |
-} |
- |
-bool MockWebRTCPeerConnectionHandler::addStream( |
- const WebMediaStream& stream, |
- const WebMediaConstraints& constraints) { |
- if (local_streams_.find(stream.id().utf8()) != local_streams_.end()) |
- return false; |
- ++stream_count_; |
- client_->negotiationNeeded(); |
- local_streams_[stream.id().utf8()] = stream; |
- return true; |
-} |
- |
-void MockWebRTCPeerConnectionHandler::removeStream( |
- const WebMediaStream& stream) { |
- --stream_count_; |
- local_streams_.erase(stream.id().utf8()); |
- client_->negotiationNeeded(); |
-} |
- |
-void MockWebRTCPeerConnectionHandler::getStats( |
- const WebRTCStatsRequest& request) { |
- WebRTCStatsResponse response = request.createResponse(); |
- double current_date = |
- interfaces_->GetDelegate()->GetCurrentTimeInMillisecond(); |
- if (request.hasSelector()) { |
- // FIXME: There is no check that the fetched values are valid. |
- MockWebRTCLegacyStats stats("Mock video", "ssrc", current_date); |
- stats.addStatistic("type", "video"); |
- response.addStats(stats); |
- } else { |
- for (int i = 0; i < stream_count_; ++i) { |
- MockWebRTCLegacyStats audio_stats("Mock audio", "ssrc", current_date); |
- audio_stats.addStatistic("type", "audio"); |
- response.addStats(audio_stats); |
- |
- MockWebRTCLegacyStats video_stats("Mock video", "ssrc", current_date); |
- video_stats.addStatistic("type", "video"); |
- response.addStats(video_stats); |
- } |
- } |
- interfaces_->GetDelegate()->PostTask( |
- base::Bind(&blink::WebRTCStatsRequest::requestSucceeded, |
- base::Owned(new WebRTCStatsRequest(request)), response)); |
-} |
- |
-void MockWebRTCPeerConnectionHandler::getStats( |
- std::unique_ptr<blink::WebRTCStatsReportCallback> callback) { |
- std::unique_ptr<MockWebRTCStatsReport> report(new MockWebRTCStatsReport()); |
- MockWebRTCStats stats("mock-stats-01", "mock-stats", 1234.0); |
- stats.addMember("bool", blink::WebRTCStatsMemberTypeBool); |
- 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("sequenceBool", blink::WebRTCStatsMemberTypeSequenceBool); |
- 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() { |
- WebRTCDataChannelInit init; |
- WebRTCDataChannelHandler* remote_data_channel = |
- new MockWebRTCDataChannelHandler("MockRemoteDataChannel", init, |
- interfaces_->GetDelegate()); |
- client_->didAddRemoteDataChannel(remote_data_channel); |
-} |
- |
-WebRTCDataChannelHandler* MockWebRTCPeerConnectionHandler::createDataChannel( |
- const WebString& label, |
- const blink::WebRTCDataChannelInit& init) { |
- interfaces_->GetDelegate()->PostTask( |
- base::Bind(&MockWebRTCPeerConnectionHandler::ReportCreationOfDataChannel, |
- weak_factory_.GetWeakPtr())); |
- |
- // TODO(lukasza): Unclear if it is okay to return a different object than the |
- // one created in ReportCreationOfDataChannel. |
- return new MockWebRTCDataChannelHandler( |
- label, init, interfaces_->GetDelegate()); |
-} |
- |
-WebRTCDTMFSenderHandler* MockWebRTCPeerConnectionHandler::createDTMFSender( |
- const WebMediaStreamTrack& track) { |
- return new MockWebRTCDTMFSenderHandler(track, interfaces_->GetDelegate()); |
-} |
- |
-void MockWebRTCPeerConnectionHandler::stop() { |
- stopped_ = true; |
- weak_factory_.InvalidateWeakPtrs(); |
-} |
- |
-} // namespace test_runner |