Home | History | Annotate | Download | only in test_runner
      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