| Index: content/shell/renderer/test_runner/mock_webrtc_dtmf_sender_handler.cc
 | 
| diff --git a/content/shell/renderer/test_runner/mock_webrtc_dtmf_sender_handler.cc b/content/shell/renderer/test_runner/mock_webrtc_dtmf_sender_handler.cc
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..ed7221a15741dbea84c137fda87466e449b78875
 | 
| --- /dev/null
 | 
| +++ b/content/shell/renderer/test_runner/mock_webrtc_dtmf_sender_handler.cc
 | 
| @@ -0,0 +1,69 @@
 | 
| +// Copyright 2013 The Chromium Authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +#include "content/shell/renderer/test_runner/mock_webrtc_dtmf_sender_handler.h"
 | 
| +
 | 
| +#include "base/logging.h"
 | 
| +#include "content/shell/renderer/test_runner/WebTestDelegate.h"
 | 
| +#include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
 | 
| +#include "third_party/WebKit/public/platform/WebRTCDTMFSenderHandlerClient.h"
 | 
| +
 | 
| +using namespace blink;
 | 
| +
 | 
| +namespace content {
 | 
| +
 | 
| +class DTMFSenderToneTask : public WebMethodTask<MockWebRTCDTMFSenderHandler> {
 | 
| + public:
 | 
| +  DTMFSenderToneTask(MockWebRTCDTMFSenderHandler* object,
 | 
| +                     WebRTCDTMFSenderHandlerClient* client)
 | 
| +      : WebMethodTask<MockWebRTCDTMFSenderHandler>(object), client_(client) {}
 | 
| +
 | 
| +  virtual void runIfValid() OVERRIDE {
 | 
| +    WebString tones = m_object->currentToneBuffer();
 | 
| +    m_object->ClearToneBuffer();
 | 
| +    client_->didPlayTone(tones);
 | 
| +  }
 | 
| +
 | 
| + private:
 | 
| +  WebRTCDTMFSenderHandlerClient* client_;
 | 
| +};
 | 
| +
 | 
| +/////////////////////
 | 
| +
 | 
| +MockWebRTCDTMFSenderHandler::MockWebRTCDTMFSenderHandler(
 | 
| +    const WebMediaStreamTrack& track,
 | 
| +    WebTestDelegate* delegate)
 | 
| +    : client_(0), track_(track), delegate_(delegate) {
 | 
| +}
 | 
| +
 | 
| +void MockWebRTCDTMFSenderHandler::setClient(
 | 
| +    WebRTCDTMFSenderHandlerClient* client) {
 | 
| +  client_ = client;
 | 
| +}
 | 
| +
 | 
| +WebString MockWebRTCDTMFSenderHandler::currentToneBuffer() {
 | 
| +  return tone_buffer_;
 | 
| +}
 | 
| +
 | 
| +bool MockWebRTCDTMFSenderHandler::canInsertDTMF() {
 | 
| +  DCHECK(client_ && !track_.isNull());
 | 
| +  return track_.source().type() == WebMediaStreamSource::TypeAudio &&
 | 
| +         track_.isEnabled() &&
 | 
| +         track_.source().readyState() == WebMediaStreamSource::ReadyStateLive;
 | 
| +}
 | 
| +
 | 
| +bool MockWebRTCDTMFSenderHandler::insertDTMF(const WebString& tones,
 | 
| +                                             long duration,
 | 
| +                                             long inter_tone_gap) {
 | 
| +  DCHECK(client_);
 | 
| +  if (!canInsertDTMF())
 | 
| +    return false;
 | 
| +
 | 
| +  tone_buffer_ = tones;
 | 
| +  delegate_->postTask(new DTMFSenderToneTask(this, client_));
 | 
| +  delegate_->postTask(new DTMFSenderToneTask(this, client_));
 | 
| +  return true;
 | 
| +}
 | 
| +
 | 
| +}  // namespace content
 | 
| 
 |