Index: content/browser/renderer_host/media/audio_output_delegate_unittest.cc |
diff --git a/content/browser/renderer_host/media/audio_output_delegate_unittest.cc b/content/browser/renderer_host/media/audio_output_delegate_unittest.cc |
index a25d127fe3fc7788e441260997b2fd27f024ecd7..daa82d4c7ede86dad2a4de44576ffa86ed932f1f 100644 |
--- a/content/browser/renderer_host/media/audio_output_delegate_unittest.cc |
+++ b/content/browser/renderer_host/media/audio_output_delegate_unittest.cc |
@@ -19,6 +19,7 @@ |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/media_observer.h" |
#include "content/public/test/test_browser_thread_bundle.h" |
+#include "content/test/mock_audio_stream_registry.h" |
#include "media/audio/fake_audio_log_factory.h" |
#include "media/audio/fake_audio_manager.h" |
#include "media/base/media_switches.h" |
@@ -76,7 +77,6 @@ class MockObserver : public content::MediaObserver { |
class MockEventHandler : public AudioOutputDelegate::EventHandler { |
public: |
- MOCK_METHOD1(OnStreamStateChanged, void(bool playing)); |
MOCK_METHOD3(OnStreamCreated, |
void(int stream_id, |
base::SharedMemory* shared_memory, |
@@ -99,7 +99,8 @@ class DummyAudioOutputStream : public media::AudioOutputStream { |
class AudioOutputDelegateTest : public testing::Test { |
public: |
- AudioOutputDelegateTest() { |
+ AudioOutputDelegateTest() |
+ : stream_registry_(new MockAudioStreamRegistry(kRenderProcessId)) { |
base::CommandLine::ForCurrentProcess()->AppendSwitch( |
switches::kUseFakeDeviceForMediaStream); |
@@ -118,6 +119,15 @@ class AudioOutputDelegateTest : public testing::Test { |
base::MakeUnique<MediaStreamManager>(audio_manager_.get()); |
} |
+ ~AudioOutputDelegateTest() override { |
+ stream_registry_.reset(); |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, FROM_HERE, base::Bind([]() { |
+ AudioStreamRegistryImpl:: |
+ DetachAudioStreamsTrackerFromThreadForTesting(); |
+ })); |
+ } |
+ |
// Test bodies are here, so that we can run them on the IO thread. |
void CreateTest(base::Closure done) { |
EXPECT_CALL(media_observer_, |
@@ -126,9 +136,10 @@ class AudioOutputDelegateTest : public testing::Test { |
OnStreamCreated(kStreamId, NotNull(), NotNull())); |
EXPECT_CALL(mirroring_manager_, |
AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())); |
+ EXPECT_CALL(*stream_registry_, RegisterOutputStream(NotNull())); |
AudioOutputDelegate::UniquePtr delegate = AudioOutputDelegate::Create( |
- &event_handler_, audio_manager_.get(), |
+ &event_handler_, stream_registry_.get(), audio_manager_.get(), |
log_factory_.CreateAudioLog( |
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER), |
&mirroring_manager_, &media_observer_, kStreamId, kRenderFrameId, |
@@ -138,6 +149,7 @@ class AudioOutputDelegateTest : public testing::Test { |
SyncWithAllThreads(); |
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())); |
+ EXPECT_CALL(*stream_registry_, DeregisterOutputStream(NotNull())); |
delegate.reset(); |
SyncWithAllThreads(); |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done); |
@@ -150,14 +162,16 @@ class AudioOutputDelegateTest : public testing::Test { |
OnStreamCreated(kStreamId, NotNull(), NotNull())); |
EXPECT_CALL(mirroring_manager_, |
AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())); |
+ EXPECT_CALL(*stream_registry_, RegisterOutputStream(NotNull())); |
{ |
InSequence s; |
- EXPECT_CALL(event_handler_, OnStreamStateChanged(true)); |
- EXPECT_CALL(event_handler_, OnStreamStateChanged(false)); |
+ EXPECT_CALL(*stream_registry_, OutputStreamStateChanged(NotNull(), true)); |
+ EXPECT_CALL(*stream_registry_, |
+ OutputStreamStateChanged(NotNull(), false)); |
} |
AudioOutputDelegate::UniquePtr delegate = AudioOutputDelegate::Create( |
- &event_handler_, audio_manager_.get(), |
+ &event_handler_, stream_registry_.get(), audio_manager_.get(), |
log_factory_.CreateAudioLog( |
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER), |
&mirroring_manager_, &media_observer_, kStreamId, kRenderFrameId, |
@@ -169,6 +183,7 @@ class AudioOutputDelegateTest : public testing::Test { |
SyncWithAllThreads(); |
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())); |
+ EXPECT_CALL(*stream_registry_, DeregisterOutputStream(NotNull())); |
delegate.reset(); |
SyncWithAllThreads(); |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done); |
@@ -181,9 +196,10 @@ class AudioOutputDelegateTest : public testing::Test { |
OnStreamCreated(kStreamId, NotNull(), NotNull())); |
EXPECT_CALL(mirroring_manager_, |
AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())); |
+ EXPECT_CALL(*stream_registry_, RegisterOutputStream(NotNull())); |
AudioOutputDelegate::UniquePtr delegate = AudioOutputDelegate::Create( |
- &event_handler_, audio_manager_.get(), |
+ &event_handler_, stream_registry_.get(), audio_manager_.get(), |
log_factory_.CreateAudioLog( |
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER), |
&mirroring_manager_, &media_observer_, kStreamId, kRenderFrameId, |
@@ -195,6 +211,7 @@ class AudioOutputDelegateTest : public testing::Test { |
SyncWithAllThreads(); |
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())); |
+ EXPECT_CALL(*stream_registry_, DeregisterOutputStream(NotNull())); |
delegate.reset(); |
SyncWithAllThreads(); |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done); |
@@ -207,16 +224,19 @@ class AudioOutputDelegateTest : public testing::Test { |
OnStreamCreated(kStreamId, NotNull(), NotNull())); |
EXPECT_CALL(mirroring_manager_, |
AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())); |
+ EXPECT_CALL(*stream_registry_, RegisterOutputStream(NotNull())); |
{ |
InSequence s; |
- EXPECT_CALL(event_handler_, OnStreamStateChanged(true)); |
- EXPECT_CALL(event_handler_, OnStreamStateChanged(false)); |
- EXPECT_CALL(event_handler_, OnStreamStateChanged(true)); |
- EXPECT_CALL(event_handler_, OnStreamStateChanged(false)); |
+ EXPECT_CALL(*stream_registry_, OutputStreamStateChanged(NotNull(), true)); |
+ EXPECT_CALL(*stream_registry_, |
+ OutputStreamStateChanged(NotNull(), false)); |
+ EXPECT_CALL(*stream_registry_, OutputStreamStateChanged(NotNull(), true)); |
+ EXPECT_CALL(*stream_registry_, |
+ OutputStreamStateChanged(NotNull(), false)); |
} |
AudioOutputDelegate::UniquePtr delegate = AudioOutputDelegate::Create( |
- &event_handler_, audio_manager_.get(), |
+ &event_handler_, stream_registry_.get(), audio_manager_.get(), |
log_factory_.CreateAudioLog( |
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER), |
&mirroring_manager_, &media_observer_, kStreamId, kRenderFrameId, |
@@ -230,6 +250,7 @@ class AudioOutputDelegateTest : public testing::Test { |
SyncWithAllThreads(); |
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())); |
+ EXPECT_CALL(*stream_registry_, DeregisterOutputStream(NotNull())); |
delegate.reset(); |
SyncWithAllThreads(); |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done); |
@@ -242,14 +263,16 @@ class AudioOutputDelegateTest : public testing::Test { |
OnStreamCreated(kStreamId, NotNull(), NotNull())); |
EXPECT_CALL(mirroring_manager_, |
AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())); |
+ EXPECT_CALL(*stream_registry_, RegisterOutputStream(NotNull())); |
{ |
InSequence s; |
- EXPECT_CALL(event_handler_, OnStreamStateChanged(true)); |
- EXPECT_CALL(event_handler_, OnStreamStateChanged(false)); |
+ EXPECT_CALL(*stream_registry_, OutputStreamStateChanged(NotNull(), true)); |
+ EXPECT_CALL(*stream_registry_, |
+ OutputStreamStateChanged(NotNull(), false)); |
} |
AudioOutputDelegate::UniquePtr delegate = AudioOutputDelegate::Create( |
- &event_handler_, audio_manager_.get(), |
+ &event_handler_, stream_registry_.get(), audio_manager_.get(), |
log_factory_.CreateAudioLog( |
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER), |
&mirroring_manager_, &media_observer_, kStreamId, kRenderFrameId, |
@@ -262,6 +285,7 @@ class AudioOutputDelegateTest : public testing::Test { |
SyncWithAllThreads(); |
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())); |
+ EXPECT_CALL(*stream_registry_, DeregisterOutputStream(NotNull())); |
delegate.reset(); |
SyncWithAllThreads(); |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done); |
@@ -274,9 +298,10 @@ class AudioOutputDelegateTest : public testing::Test { |
OnStreamCreated(kStreamId, NotNull(), NotNull())); |
EXPECT_CALL(mirroring_manager_, |
AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())); |
+ EXPECT_CALL(*stream_registry_, RegisterOutputStream(NotNull())); |
AudioOutputDelegate::UniquePtr delegate = AudioOutputDelegate::Create( |
- &event_handler_, audio_manager_.get(), |
+ &event_handler_, stream_registry_.get(), audio_manager_.get(), |
log_factory_.CreateAudioLog( |
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER), |
&mirroring_manager_, &media_observer_, kStreamId, kRenderFrameId, |
@@ -289,6 +314,7 @@ class AudioOutputDelegateTest : public testing::Test { |
SyncWithAllThreads(); |
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())); |
+ EXPECT_CALL(*stream_registry_, DeregisterOutputStream(NotNull())); |
delegate.reset(); |
SyncWithAllThreads(); |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done); |
@@ -301,9 +327,10 @@ class AudioOutputDelegateTest : public testing::Test { |
OnStreamCreated(kStreamId, NotNull(), NotNull())); |
EXPECT_CALL(mirroring_manager_, |
AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())); |
+ EXPECT_CALL(*stream_registry_, RegisterOutputStream(NotNull())); |
AudioOutputDelegate::UniquePtr delegate = AudioOutputDelegate::Create( |
- &event_handler_, audio_manager_.get(), |
+ &event_handler_, stream_registry_.get(), audio_manager_.get(), |
log_factory_.CreateAudioLog( |
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER), |
&mirroring_manager_, &media_observer_, kStreamId, kRenderFrameId, |
@@ -319,6 +346,7 @@ class AudioOutputDelegateTest : public testing::Test { |
SyncWithAllThreads(); |
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())); |
+ EXPECT_CALL(*stream_registry_, DeregisterOutputStream(NotNull())); |
delegate.reset(); |
SyncWithAllThreads(); |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done); |
@@ -331,14 +359,16 @@ class AudioOutputDelegateTest : public testing::Test { |
OnStreamCreated(kStreamId, NotNull(), NotNull())); |
EXPECT_CALL(mirroring_manager_, |
AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())); |
+ EXPECT_CALL(*stream_registry_, RegisterOutputStream(NotNull())); |
{ |
InSequence s; |
- EXPECT_CALL(event_handler_, OnStreamStateChanged(true)); |
- EXPECT_CALL(event_handler_, OnStreamStateChanged(false)); |
+ EXPECT_CALL(*stream_registry_, OutputStreamStateChanged(NotNull(), true)); |
+ EXPECT_CALL(*stream_registry_, |
+ OutputStreamStateChanged(NotNull(), false)); |
} |
AudioOutputDelegate::UniquePtr delegate = AudioOutputDelegate::Create( |
- &event_handler_, audio_manager_.get(), |
+ &event_handler_, stream_registry_.get(), audio_manager_.get(), |
log_factory_.CreateAudioLog( |
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER), |
&mirroring_manager_, &media_observer_, kStreamId, kRenderFrameId, |
@@ -352,6 +382,7 @@ class AudioOutputDelegateTest : public testing::Test { |
SyncWithAllThreads(); |
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())); |
+ EXPECT_CALL(*stream_registry_, DeregisterOutputStream(NotNull())); |
delegate.reset(); |
SyncWithAllThreads(); |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done); |
@@ -365,9 +396,10 @@ class AudioOutputDelegateTest : public testing::Test { |
EXPECT_CALL(event_handler_, OnStreamError(kStreamId)); |
EXPECT_CALL(mirroring_manager_, |
AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())); |
+ EXPECT_CALL(*stream_registry_, RegisterOutputStream(NotNull())); |
AudioOutputDelegate::UniquePtr delegate = AudioOutputDelegate::Create( |
- &event_handler_, audio_manager_.get(), |
+ &event_handler_, stream_registry_.get(), audio_manager_.get(), |
log_factory_.CreateAudioLog( |
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER), |
&mirroring_manager_, &media_observer_, kStreamId, kRenderFrameId, |
@@ -379,6 +411,7 @@ class AudioOutputDelegateTest : public testing::Test { |
SyncWithAllThreads(); |
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())); |
+ EXPECT_CALL(*stream_registry_, DeregisterOutputStream(NotNull())); |
delegate.reset(); |
SyncWithAllThreads(); |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done); |
@@ -389,10 +422,12 @@ class AudioOutputDelegateTest : public testing::Test { |
OnCreatingAudioStream(kRenderProcessId, kRenderFrameId)); |
EXPECT_CALL(mirroring_manager_, |
AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())); |
+ EXPECT_CALL(*stream_registry_, RegisterOutputStream(NotNull())); |
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())); |
+ EXPECT_CALL(*stream_registry_, DeregisterOutputStream(NotNull())); |
AudioOutputDelegate::UniquePtr delegate = AudioOutputDelegate::Create( |
- &event_handler_, audio_manager_.get(), |
+ &event_handler_, stream_registry_.get(), audio_manager_.get(), |
log_factory_.CreateAudioLog( |
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER), |
&mirroring_manager_, &media_observer_, kStreamId, kRenderFrameId, |
@@ -411,10 +446,12 @@ class AudioOutputDelegateTest : public testing::Test { |
OnStreamCreated(kStreamId, NotNull(), NotNull())); |
EXPECT_CALL(mirroring_manager_, |
AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())); |
+ EXPECT_CALL(*stream_registry_, RegisterOutputStream(NotNull())); |
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())); |
+ EXPECT_CALL(*stream_registry_, DeregisterOutputStream(NotNull())); |
AudioOutputDelegate::UniquePtr delegate = AudioOutputDelegate::Create( |
- &event_handler_, audio_manager_.get(), |
+ &event_handler_, stream_registry_.get(), audio_manager_.get(), |
log_factory_.CreateAudioLog( |
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER), |
&mirroring_manager_, &media_observer_, kStreamId, kRenderFrameId, |
@@ -436,10 +473,12 @@ class AudioOutputDelegateTest : public testing::Test { |
OnStreamCreated(kStreamId, NotNull(), NotNull())); |
EXPECT_CALL(mirroring_manager_, |
AddDiverter(kRenderProcessId, kRenderFrameId, NotNull())); |
+ EXPECT_CALL(*stream_registry_, RegisterOutputStream(NotNull())); |
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull())); |
+ EXPECT_CALL(*stream_registry_, DeregisterOutputStream(NotNull())); |
AudioOutputDelegate::UniquePtr delegate = AudioOutputDelegate::Create( |
- &event_handler_, audio_manager_.get(), |
+ &event_handler_, stream_registry_.get(), audio_manager_.get(), |
log_factory_.CreateAudioLog( |
media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER), |
&mirroring_manager_, &media_observer_, kStreamId, kRenderFrameId, |
@@ -463,6 +502,8 @@ class AudioOutputDelegateTest : public testing::Test { |
StrictMock<MockAudioMirroringManager> mirroring_manager_; |
StrictMock<MockEventHandler> event_handler_; |
StrictMock<MockObserver> media_observer_; |
+ std::unique_ptr<MockAudioStreamRegistry, BrowserThread::DeleteOnIOThread> |
+ stream_registry_; |
media::FakeAudioLogFactory log_factory_; |
private: |