Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / content / shell / renderer / test_runner / mock_webrtc_dtmf_sender_handler.cc
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   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