// 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_data_channel_handler.h" #include "base/logging.h" #include "components/test_runner/web_test_delegate.h" #include "third_party/WebKit/public/platform/WebRTCDataChannelHandlerClient.h" using namespace blink; namespace test_runner { class DataChannelReadyStateTask : public WebMethodTask { public: DataChannelReadyStateTask(MockWebRTCDataChannelHandler* object, WebRTCDataChannelHandlerClient* data_channel_client, WebRTCDataChannelHandlerClient::ReadyState state) : WebMethodTask(object), data_channel_client_(data_channel_client), state_(state) {} void RunIfValid() override { data_channel_client_->didChangeReadyState(state_); } private: WebRTCDataChannelHandlerClient* data_channel_client_; WebRTCDataChannelHandlerClient::ReadyState state_; }; ///////////////////// MockWebRTCDataChannelHandler::MockWebRTCDataChannelHandler( WebString label, const WebRTCDataChannelInit& init, WebTestDelegate* delegate) : client_(0), label_(label), init_(init), delegate_(delegate) { reliable_ = (init.ordered && init.maxRetransmits == -1 && init.maxRetransmitTime == -1); } void MockWebRTCDataChannelHandler::setClient( WebRTCDataChannelHandlerClient* client) { client_ = client; if (client_) delegate_->PostTask(new DataChannelReadyStateTask( this, client_, WebRTCDataChannelHandlerClient::ReadyStateOpen)); } blink::WebString MockWebRTCDataChannelHandler::label() { return label_; } bool MockWebRTCDataChannelHandler::isReliable() { return reliable_; } bool MockWebRTCDataChannelHandler::ordered() const { return init_.ordered; } unsigned short MockWebRTCDataChannelHandler::maxRetransmitTime() const { return init_.maxRetransmitTime; } unsigned short MockWebRTCDataChannelHandler::maxRetransmits() const { return init_.maxRetransmits; } WebString MockWebRTCDataChannelHandler::protocol() const { return init_.protocol; } bool MockWebRTCDataChannelHandler::negotiated() const { return init_.negotiated; } unsigned short MockWebRTCDataChannelHandler::id() const { return init_.id; } blink::WebRTCDataChannelHandlerClient::ReadyState MockWebRTCDataChannelHandler::state() const { return blink::WebRTCDataChannelHandlerClient::ReadyStateConnecting; } unsigned long MockWebRTCDataChannelHandler::bufferedAmount() { return 0; } bool MockWebRTCDataChannelHandler::sendStringData(const WebString& data) { DCHECK(client_); client_->didReceiveStringData(data); return true; } bool MockWebRTCDataChannelHandler::sendRawData(const char* data, size_t size) { DCHECK(client_); client_->didReceiveRawData(data, size); return true; } void MockWebRTCDataChannelHandler::close() { DCHECK(client_); delegate_->PostTask(new DataChannelReadyStateTask( this, client_, WebRTCDataChannelHandlerClient::ReadyStateClosed)); } } // namespace test_runner