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/WebTestDelegate.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:
DataChannelReadyStateTask(MockWebRTCDataChannelHandler * object,WebRTCDataChannelHandlerClient * data_channel_client,WebRTCDataChannelHandlerClient::ReadyState state)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
runIfValid()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
MockWebRTCDataChannelHandler(WebString label,const WebRTCDataChannelInit & init,WebTestDelegate * delegate)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
setClient(WebRTCDataChannelHandlerClient * client)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
label()53 blink::WebString MockWebRTCDataChannelHandler::label() {
54 return label_;
55 }
56
isReliable()57 bool MockWebRTCDataChannelHandler::isReliable() {
58 return reliable_;
59 }
60
ordered() const61 bool MockWebRTCDataChannelHandler::ordered() const {
62 return init_.ordered;
63 }
64
maxRetransmitTime() const65 unsigned short MockWebRTCDataChannelHandler::maxRetransmitTime() const {
66 return init_.maxRetransmitTime;
67 }
68
maxRetransmits() const69 unsigned short MockWebRTCDataChannelHandler::maxRetransmits() const {
70 return init_.maxRetransmits;
71 }
72
protocol() const73 WebString MockWebRTCDataChannelHandler::protocol() const {
74 return init_.protocol;
75 }
76
negotiated() const77 bool MockWebRTCDataChannelHandler::negotiated() const {
78 return init_.negotiated;
79 }
80
id() const81 unsigned short MockWebRTCDataChannelHandler::id() const {
82 return init_.id;
83 }
84
bufferedAmount()85 unsigned long MockWebRTCDataChannelHandler::bufferedAmount() {
86 return 0;
87 }
88
sendStringData(const WebString & data)89 bool MockWebRTCDataChannelHandler::sendStringData(const WebString& data) {
90 DCHECK(client_);
91 client_->didReceiveStringData(data);
92 return true;
93 }
94
sendRawData(const char * data,size_t size)95 bool MockWebRTCDataChannelHandler::sendRawData(const char* data, size_t size) {
96 DCHECK(client_);
97 client_->didReceiveRawData(data, size);
98 return true;
99 }
100
close()101 void MockWebRTCDataChannelHandler::close() {
102 DCHECK(client_);
103 delegate_->postTask(new DataChannelReadyStateTask(
104 this, client_, WebRTCDataChannelHandlerClient::ReadyStateClosed));
105 }
106
107 } // namespace content
108