• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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