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_dtmf_sender_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/WebMediaStreamSource.h"
     10 #include "third_party/WebKit/public/platform/WebRTCDTMFSenderHandlerClient.h"
     11 
     12 using namespace blink;
     13 
     14 namespace content {
     15 
     16 class DTMFSenderToneTask : public WebMethodTask<MockWebRTCDTMFSenderHandler> {
     17  public:
     18   DTMFSenderToneTask(MockWebRTCDTMFSenderHandler* object,
     19                      WebRTCDTMFSenderHandlerClient* client)
     20       : WebMethodTask<MockWebRTCDTMFSenderHandler>(object), client_(client) {}
     21 
     22   virtual void RunIfValid() OVERRIDE {
     23     WebString tones = object_->currentToneBuffer();
     24     object_->ClearToneBuffer();
     25     client_->didPlayTone(tones);
     26   }
     27 
     28  private:
     29   WebRTCDTMFSenderHandlerClient* client_;
     30 };
     31 
     32 /////////////////////
     33 
     34 MockWebRTCDTMFSenderHandler::MockWebRTCDTMFSenderHandler(
     35     const WebMediaStreamTrack& track,
     36     WebTestDelegate* delegate)
     37     : client_(0), track_(track), delegate_(delegate) {
     38 }
     39 
     40 void MockWebRTCDTMFSenderHandler::setClient(
     41     WebRTCDTMFSenderHandlerClient* client) {
     42   client_ = client;
     43 }
     44 
     45 WebString MockWebRTCDTMFSenderHandler::currentToneBuffer() {
     46   return tone_buffer_;
     47 }
     48 
     49 bool MockWebRTCDTMFSenderHandler::canInsertDTMF() {
     50   DCHECK(client_ && !track_.isNull());
     51   return track_.source().type() == WebMediaStreamSource::TypeAudio &&
     52          track_.isEnabled() &&
     53          track_.source().readyState() == WebMediaStreamSource::ReadyStateLive;
     54 }
     55 
     56 bool MockWebRTCDTMFSenderHandler::insertDTMF(const WebString& tones,
     57                                              long duration,
     58                                              long inter_tone_gap) {
     59   DCHECK(client_);
     60   if (!canInsertDTMF())
     61     return false;
     62 
     63   tone_buffer_ = tones;
     64   delegate_->PostTask(new DTMFSenderToneTask(this, client_));
     65   delegate_->PostTask(new DTMFSenderToneTask(this, client_));
     66   return true;
     67 }
     68 
     69 }  // namespace content
     70