| // 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<MockWebRTCDataChannelHandler> { |
| public: |
| DataChannelReadyStateTask(MockWebRTCDataChannelHandler* object, |
| WebRTCDataChannelHandlerClient* data_channel_client, |
| WebRTCDataChannelHandlerClient::ReadyState state) |
| : WebMethodTask<MockWebRTCDataChannelHandler>(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 |