Home | History | Annotate | Download | only in media
      1 // Copyright (c) 2013 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/renderer/media/rtc_dtmf_sender_handler.h"
      6 
      7 #include <string>
      8 
      9 #include "base/logging.h"
     10 #include "base/strings/utf_string_conversions.h"
     11 
     12 using webrtc::DtmfSenderInterface;
     13 
     14 namespace content {
     15 
     16 RtcDtmfSenderHandler::RtcDtmfSenderHandler(DtmfSenderInterface* dtmf_sender)
     17     : dtmf_sender_(dtmf_sender),
     18       webkit_client_(NULL) {
     19   DVLOG(1) << "::ctor";
     20   dtmf_sender_->RegisterObserver(this);
     21 }
     22 
     23 RtcDtmfSenderHandler::~RtcDtmfSenderHandler() {
     24   DVLOG(1) << "::dtor";
     25   dtmf_sender_->UnregisterObserver();
     26 }
     27 
     28 void RtcDtmfSenderHandler::setClient(
     29     blink::WebRTCDTMFSenderHandlerClient* client) {
     30   webkit_client_ = client;
     31 }
     32 
     33 blink::WebString RtcDtmfSenderHandler::currentToneBuffer() {
     34   return base::UTF8ToUTF16(dtmf_sender_->tones());
     35 }
     36 
     37 bool RtcDtmfSenderHandler::canInsertDTMF() {
     38   return dtmf_sender_->CanInsertDtmf();
     39 }
     40 
     41 bool RtcDtmfSenderHandler::insertDTMF(const blink::WebString& tones,
     42                                       long duration,
     43                                       long interToneGap) {
     44   std::string utf8_tones = base::UTF16ToUTF8(tones);
     45   return dtmf_sender_->InsertDtmf(utf8_tones, static_cast<int>(duration),
     46                                   static_cast<int>(interToneGap));
     47 }
     48 
     49 void RtcDtmfSenderHandler::OnToneChange(const std::string& tone) {
     50   if (!webkit_client_) {
     51     LOG(ERROR) << "WebRTCDTMFSenderHandlerClient not set.";
     52     return;
     53   }
     54   webkit_client_->didPlayTone(base::UTF8ToUTF16(tone));
     55 }
     56 
     57 }  // namespace content
     58 
     59