| 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
 | 
| 
 |