1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "content/shell/renderer/test_runner/mock_webrtc_data_channel_handler.h" 6 7 #include "base/logging.h" 8 #include "content/shell/renderer/test_runner/web_test_delegate.h" 9 #include "third_party/WebKit/public/platform/WebRTCDataChannelHandlerClient.h" 10 11 using namespace blink; 12 13 namespace content { 14 15 class DataChannelReadyStateTask 16 : public WebMethodTask<MockWebRTCDataChannelHandler> { 17 public: 18 DataChannelReadyStateTask(MockWebRTCDataChannelHandler* object, 19 WebRTCDataChannelHandlerClient* data_channel_client, 20 WebRTCDataChannelHandlerClient::ReadyState state) 21 : WebMethodTask<MockWebRTCDataChannelHandler>(object), 22 data_channel_client_(data_channel_client), 23 state_(state) {} 24 25 virtual void RunIfValid() OVERRIDE { 26 data_channel_client_->didChangeReadyState(state_); 27 } 28 29 private: 30 WebRTCDataChannelHandlerClient* data_channel_client_; 31 WebRTCDataChannelHandlerClient::ReadyState state_; 32 }; 33 34 ///////////////////// 35 36 MockWebRTCDataChannelHandler::MockWebRTCDataChannelHandler( 37 WebString label, 38 const WebRTCDataChannelInit& init, 39 WebTestDelegate* delegate) 40 : client_(0), label_(label), init_(init), delegate_(delegate) { 41 reliable_ = (init.ordered && init.maxRetransmits == -1 && 42 init.maxRetransmitTime == -1); 43 } 44 45 void MockWebRTCDataChannelHandler::setClient( 46 WebRTCDataChannelHandlerClient* client) { 47 client_ = client; 48 if (client_) 49 delegate_->PostTask(new DataChannelReadyStateTask( 50 this, client_, WebRTCDataChannelHandlerClient::ReadyStateOpen)); 51 } 52 53 blink::WebString MockWebRTCDataChannelHandler::label() { 54 return label_; 55 } 56 57 bool MockWebRTCDataChannelHandler::isReliable() { 58 return reliable_; 59 } 60 61 bool MockWebRTCDataChannelHandler::ordered() const { 62 return init_.ordered; 63 } 64 65 unsigned short MockWebRTCDataChannelHandler::maxRetransmitTime() const { 66 return init_.maxRetransmitTime; 67 } 68 69 unsigned short MockWebRTCDataChannelHandler::maxRetransmits() const { 70 return init_.maxRetransmits; 71 } 72 73 WebString MockWebRTCDataChannelHandler::protocol() const { 74 return init_.protocol; 75 } 76 77 bool MockWebRTCDataChannelHandler::negotiated() const { 78 return init_.negotiated; 79 } 80 81 unsigned short MockWebRTCDataChannelHandler::id() const { 82 return init_.id; 83 } 84 85 unsigned long MockWebRTCDataChannelHandler::bufferedAmount() { 86 return 0; 87 } 88 89 bool MockWebRTCDataChannelHandler::sendStringData(const WebString& data) { 90 DCHECK(client_); 91 client_->didReceiveStringData(data); 92 return true; 93 } 94 95 bool MockWebRTCDataChannelHandler::sendRawData(const char* data, size_t size) { 96 DCHECK(client_); 97 client_->didReceiveRawData(data, size); 98 return true; 99 } 100 101 void MockWebRTCDataChannelHandler::close() { 102 DCHECK(client_); 103 delegate_->PostTask(new DataChannelReadyStateTask( 104 this, client_, WebRTCDataChannelHandlerClient::ReadyStateClosed)); 105 } 106 107 } // namespace content 108