Commit 7accaec8 authored by fdoray's avatar fdoray Committed by Commit bot

Fix and enable WinAudioInputTest.WASAPIAudioInputStreamTestPacketSizes.

Contrary to what had been assumed, CheckCountAndPostQuitTask doesn't
run on the main thread. Because of that, it cannot quit the RunLoop
running on the main thread by calling its QuitWhenIdle function; it
needs to post a QuitWhenIdleClosure to it.

BUG=641142

Review-Url: https://codereview.chromium.org/2284693003
Cr-Commit-Position: refs/heads/master@{#414783}
parent e1763990
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "base/message_loop/message_loop.h" #include "base/message_loop/message_loop.h"
#include "base/path_service.h" #include "base/path_service.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/single_thread_task_runner.h"
#include "base/test/test_timeouts.h" #include "base/test/test_timeouts.h"
#include "base/win/scoped_com_initializer.h" #include "base/win/scoped_com_initializer.h"
#include "media/audio/audio_device_description.h" #include "media/audio/audio_device_description.h"
...@@ -36,9 +37,9 @@ using ::testing::NotNull; ...@@ -36,9 +37,9 @@ using ::testing::NotNull;
namespace media { namespace media {
ACTION_P3(CheckCountAndPostQuitTask, count, limit, run_loop) { ACTION_P4(CheckCountAndPostQuitTask, count, limit, task_runner, quit_closure) {
if (++*count >= limit) if (++*count >= limit)
run_loop->QuitWhenIdle(); task_runner->PostTask(FROM_HERE, quit_closure);
} }
class MockAudioInputCallback : public AudioInputStream::AudioInputCallback { class MockAudioInputCallback : public AudioInputStream::AudioInputCallback {
...@@ -360,8 +361,7 @@ TEST_F(WinAudioInputTest, WASAPIAudioInputStreamMiscCallingSequences) { ...@@ -360,8 +361,7 @@ TEST_F(WinAudioInputTest, WASAPIAudioInputStreamMiscCallingSequences) {
ais.Close(); ais.Close();
} }
// TODO(fdoray): investigate failure and re-enable. crbug.com/641142 TEST_F(WinAudioInputTest, WASAPIAudioInputStreamTestPacketSizes) {
TEST_F(WinAudioInputTest, DISABLED_WASAPIAudioInputStreamTestPacketSizes) {
ABORT_AUDIO_TEST_IF_NOT(HasCoreAudioAndInputDevices(audio_manager_.get())); ABORT_AUDIO_TEST_IF_NOT(HasCoreAudioAndInputDevices(audio_manager_.get()));
int count = 0; int count = 0;
...@@ -387,7 +387,9 @@ TEST_F(WinAudioInputTest, DISABLED_WASAPIAudioInputStreamTestPacketSizes) { ...@@ -387,7 +387,9 @@ TEST_F(WinAudioInputTest, DISABLED_WASAPIAudioInputStreamTestPacketSizes) {
base::RunLoop run_loop; base::RunLoop run_loop;
EXPECT_CALL(sink, OnData(ais.get(), NotNull(), _, _)) EXPECT_CALL(sink, OnData(ais.get(), NotNull(), _, _))
.Times(AtLeast(10)) .Times(AtLeast(10))
.WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, &run_loop)); .WillRepeatedly(
CheckCountAndPostQuitTask(&count, 10, message_loop_.task_runner(),
run_loop.QuitWhenIdleClosure()));
ais->Start(&sink); ais->Start(&sink);
run_loop.Run(); run_loop.Run();
ais->Stop(); ais->Stop();
...@@ -410,7 +412,9 @@ TEST_F(WinAudioInputTest, DISABLED_WASAPIAudioInputStreamTestPacketSizes) { ...@@ -410,7 +412,9 @@ TEST_F(WinAudioInputTest, DISABLED_WASAPIAudioInputStreamTestPacketSizes) {
base::RunLoop run_loop; base::RunLoop run_loop;
EXPECT_CALL(sink, OnData(ais.get(), NotNull(), _, _)) EXPECT_CALL(sink, OnData(ais.get(), NotNull(), _, _))
.Times(AtLeast(10)) .Times(AtLeast(10))
.WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, &run_loop)); .WillRepeatedly(
CheckCountAndPostQuitTask(&count, 10, message_loop_.task_runner(),
run_loop.QuitWhenIdleClosure()));
ais->Start(&sink); ais->Start(&sink);
run_loop.Run(); run_loop.Run();
ais->Stop(); ais->Stop();
...@@ -429,7 +433,9 @@ TEST_F(WinAudioInputTest, DISABLED_WASAPIAudioInputStreamTestPacketSizes) { ...@@ -429,7 +433,9 @@ TEST_F(WinAudioInputTest, DISABLED_WASAPIAudioInputStreamTestPacketSizes) {
base::RunLoop run_loop; base::RunLoop run_loop;
EXPECT_CALL(sink, OnData(ais.get(), NotNull(), _, _)) EXPECT_CALL(sink, OnData(ais.get(), NotNull(), _, _))
.Times(AtLeast(10)) .Times(AtLeast(10))
.WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, &run_loop)); .WillRepeatedly(
CheckCountAndPostQuitTask(&count, 10, message_loop_.task_runner(),
run_loop.QuitWhenIdleClosure()));
ais->Start(&sink); ais->Start(&sink);
run_loop.Run(); run_loop.Run();
ais->Stop(); ais->Stop();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment