From 1e0c804f1976456600264fba57e6f468e6160185 Mon Sep 17 00:00:00 2001 From: Harald Alvestrand Date: Tue, 6 Mar 2018 10:51:27 +0100 Subject: [PATCH] Make DTMF sender wait before sending the first tone. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is according to WebRTC spec. Bug: chromium:819118 Change-Id: I4c0c8e69de812730f9f5c0a1b86d08cf05a472ad Reviewed-on: https://webrtc-review.googlesource.com/60181 Reviewed-by: Henrik Boström Commit-Queue: Harald Alvestrand Cr-Commit-Position: refs/heads/master@{#22309} --- pc/dtmfsender.cc | 2 +- pc/dtmfsender_unittest.cc | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pc/dtmfsender.cc b/pc/dtmfsender.cc index 8378eb9a07..1fde7bf236 100644 --- a/pc/dtmfsender.cc +++ b/pc/dtmfsender.cc @@ -141,7 +141,7 @@ bool DtmfSender::InsertDtmf(const std::string& tones, int duration, // Clear the previous queue. signaling_thread_->Clear(this, MSG_DO_INSERT_DTMF); // Kick off a new DTMF task queue. - signaling_thread_->Post(RTC_FROM_HERE, this, MSG_DO_INSERT_DTMF); + signaling_thread_->PostDelayed(RTC_FROM_HERE, 1, this, MSG_DO_INSERT_DTMF); return true; } diff --git a/pc/dtmfsender_unittest.cc b/pc/dtmfsender_unittest.cc index ddccc448f6..48f2bee259 100644 --- a/pc/dtmfsender_unittest.cc +++ b/pc/dtmfsender_unittest.cc @@ -335,3 +335,15 @@ TEST_F(DtmfSenderTest, InsertDtmfWithInvalidDurationOrGap) { EXPECT_TRUE(dtmf_->InsertDtmf(tones, duration, inter_tone_gap)); } + +TEST_F(DtmfSenderTest, InsertDtmfSendsAfterWait) { + std::string tones = "ABC"; + int duration = 100; + int inter_tone_gap = 50; + EXPECT_TRUE(dtmf_->InsertDtmf(tones, duration, inter_tone_gap)); + VerifyExpectedState(track_, "ABC", duration, inter_tone_gap); + // Wait until the first tone got sent. + EXPECT_TRUE_SIMULATED_WAIT(observer_->tones().size() == 1, kMaxWaitMs, + fake_clock_); + VerifyExpectedState(track_, "BC", duration, inter_tone_gap); +}