| Index: media/audio/mac/audio_auhal_mac_unittest.cc
|
| diff --git a/media/audio/mac/audio_auhal_mac_unittest.cc b/media/audio/mac/audio_auhal_mac_unittest.cc
|
| index 8cc7cd9a8c93ccfbd657eda3f0741a332bb49880..92ec12689e5cf3f0aa1798fc1ea6688d25afe251 100644
|
| --- a/media/audio/mac/audio_auhal_mac_unittest.cc
|
| +++ b/media/audio/mac/audio_auhal_mac_unittest.cc
|
| @@ -2,6 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "base/bind.h"
|
| #include "base/macros.h"
|
| #include "base/run_loop.h"
|
| #include "base/synchronization/waitable_event.h"
|
| @@ -27,8 +28,9 @@ ACTION(ZeroBuffer) {
|
| arg0->Zero();
|
| }
|
|
|
| -ACTION_P(SignalEvent, event) {
|
| - event->Signal();
|
| +ACTION_P3(MaybeSignalEvent, counter, signal_at_count, event) {
|
| + if (++(*counter) == signal_at_count)
|
| + event->Signal();
|
| }
|
|
|
| class AUHALStreamTest : public testing::Test {
|
| @@ -45,17 +47,21 @@ class AUHALStreamTest : public testing::Test {
|
|
|
| AudioOutputStream* Create() {
|
| return manager_->MakeAudioOutputStream(
|
| - manager_->GetDefaultOutputStreamParameters(), "");
|
| + manager_->GetDefaultOutputStreamParameters(), "",
|
| + base::Bind(&AUHALStreamTest::OnLogMessage, base::Unretained(this)));
|
| }
|
|
|
| bool OutputDevicesAvailable() {
|
| return manager_->HasAudioOutputDevices();
|
| }
|
|
|
| + void OnLogMessage(const std::string& message) { log_message_ = message; }
|
| +
|
| protected:
|
| base::TestMessageLoop message_loop_;
|
| ScopedAudioManagerPtr manager_;
|
| MockAudioSourceCallback source_;
|
| + std::string log_message_;
|
|
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(AUHALStreamTest);
|
| @@ -87,16 +93,24 @@ TEST_F(AUHALStreamTest, CreateOpenStartStopClose) {
|
| AudioOutputStream* stream = Create();
|
| EXPECT_TRUE(stream->Open());
|
|
|
| - // Wait for the first data callback from the OS.
|
| + // Wait for the first two data callback from the OS.
|
| base::WaitableEvent event(false, false);
|
| + int callback_counter = 0;
|
| + const int number_of_callbacks = 2;
|
| EXPECT_CALL(source_, OnMoreData(_, _, _))
|
| - .WillOnce(DoAll(ZeroBuffer(), SignalEvent(&event), Return(0)));
|
| + .Times(number_of_callbacks)
|
| + .WillRepeatedly(DoAll(
|
| + ZeroBuffer(),
|
| + MaybeSignalEvent(&callback_counter, number_of_callbacks, &event),
|
| + Return(0)));
|
| EXPECT_CALL(source_, OnError(_)).Times(0);
|
| stream->Start(&source_);
|
| event.Wait();
|
|
|
| stream->Stop();
|
| stream->Close();
|
| +
|
| + EXPECT_FALSE(log_message_.empty());
|
| }
|
|
|
| } // namespace media
|
|
|