summaryrefslogtreecommitdiff
path: root/chromium/content/browser/media/audio_loopback_stream_broker_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/media/audio_loopback_stream_broker_unittest.cc')
-rw-r--r--chromium/content/browser/media/audio_loopback_stream_broker_unittest.cc60
1 files changed, 28 insertions, 32 deletions
diff --git a/chromium/content/browser/media/audio_loopback_stream_broker_unittest.cc b/chromium/content/browser/media/audio_loopback_stream_broker_unittest.cc
index 14923ed61e4..f72c1d64c4b 100644
--- a/chromium/content/browser/media/audio_loopback_stream_broker_unittest.cc
+++ b/chromium/content/browser/media/audio_loopback_stream_broker_unittest.cc
@@ -35,16 +35,15 @@ media::AudioParameters TestParams() {
return media::AudioParameters::UnavailableDeviceParams();
}
-class MockSource : public AudioStreamBrokerFactory::LoopbackSource {
+class MockSource : public AudioStreamBroker::LoopbackSource {
public:
- explicit MockSource(const base::UnguessableToken& group_id)
- : group_id_(group_id) {}
+ MockSource() : group_id_(base::UnguessableToken::Create()) {}
~MockSource() override {}
// AudioStreamBrokerFactory::LoopbackSource mocking.
- base::UnguessableToken GetGroupID() override { return group_id_; }
- MOCK_METHOD0(OnStartCapturing, void(void));
- MOCK_METHOD0(OnStopCapturing, void(void));
+ const base::UnguessableToken& GetGroupID() override { return group_id_; }
+ MOCK_METHOD1(AddLoopbackSink, void(AudioStreamBroker::LoopbackSink*));
+ MOCK_METHOD1(RemoveLoopbackSink, void(AudioStreamBroker::LoopbackSink*));
private:
base::UnguessableToken group_id_;
@@ -158,19 +157,17 @@ struct TestEnvironment {
TestEnvironment(const base::UnguessableToken& group_id, bool mute_source) {
// Muting should not start until CreateStream() is called.
EXPECT_CALL(stream_factory, IsMuting(_)).Times(0);
- auto mock_source = std::make_unique<NiceMock<MockSource>>(group_id);
- source = mock_source.get();
+ EXPECT_CALL(source, AddLoopbackSink(_));
broker = std::make_unique<AudioLoopbackStreamBroker>(
- kRenderProcessId, kRenderFrameId, std::move(mock_source), TestParams(),
- kShMemCount, mute_source, deleter.Get(),
- renderer_factory_client.MakePtr());
+ kRenderProcessId, kRenderFrameId, &source, TestParams(), kShMemCount,
+ mute_source, deleter.Get(), renderer_factory_client.MakePtr());
}
void RunUntilIdle() { thread_bundle.RunUntilIdle(); }
TestBrowserThreadBundle thread_bundle;
MockDeleterCallback deleter;
- MockSource* source;
+ MockSource source;
StrictMock<MockRendererAudioInputStreamFactoryClient> renderer_factory_client;
std::unique_ptr<AudioLoopbackStreamBroker> broker;
MockStreamFactory stream_factory;
@@ -184,27 +181,24 @@ TEST(AudioLoopbackStreamBrokerTest, StoresProcessAndFrameId) {
TestBrowserThreadBundle thread_bundle;
MockDeleterCallback deleter;
StrictMock<MockRendererAudioInputStreamFactoryClient> renderer_factory_client;
- auto source = std::make_unique<StrictMock<MockSource>>(
- base::UnguessableToken::Create());
- MockSource* mock_source = source.get();
+ MockSource source;
- EXPECT_CALL(*mock_source, OnStartCapturing());
+ EXPECT_CALL(source, AddLoopbackSink(_));
- AudioLoopbackStreamBroker broker(kRenderProcessId, kRenderFrameId,
- std::move(source), TestParams(), kShMemCount,
- !kMuteSource, deleter.Get(),
- renderer_factory_client.MakePtr());
+ AudioLoopbackStreamBroker broker(
+ kRenderProcessId, kRenderFrameId, &source, TestParams(), kShMemCount,
+ !kMuteSource, deleter.Get(), renderer_factory_client.MakePtr());
EXPECT_EQ(kRenderProcessId, broker.render_process_id());
EXPECT_EQ(kRenderFrameId, broker.render_frame_id());
- EXPECT_CALL(*mock_source, OnStopCapturing());
+ EXPECT_CALL(source, RemoveLoopbackSink(&broker));
}
TEST(AudioLoopbackStreamBrokerTest, StreamCreationSuccess_Propagates) {
TestEnvironment env(base::UnguessableToken::Create(), !kMuteSource);
MockStreamFactory::StreamRequestData stream_request_data(
- env.source->GetGroupID(), TestParams());
+ env.source.GetGroupID(), TestParams());
env.stream_factory.ExpectStreamCreation(&stream_request_data);
EXPECT_CALL(env.stream_factory, IsMuting(_)).Times(0);
@@ -234,10 +228,10 @@ TEST(AudioLoopbackStreamBrokerTest, StreamCreationSuccess_Propagates) {
TEST(AudioLoopbackStreamBrokerTest, MutedStreamCreation_Mutes) {
TestEnvironment env(base::UnguessableToken::Create(), kMuteSource);
MockStreamFactory::StreamRequestData stream_request_data(
- env.source->GetGroupID(), TestParams());
+ env.source.GetGroupID(), TestParams());
env.stream_factory.ExpectStreamCreation(&stream_request_data);
- EXPECT_CALL(env.stream_factory, IsMuting(env.source->GetGroupID()));
+ EXPECT_CALL(env.stream_factory, IsMuting(env.source.GetGroupID()));
env.broker->CreateStream(env.factory_ptr.get());
env.RunUntilIdle();
@@ -264,10 +258,10 @@ TEST(AudioLoopbackStreamBrokerTest, MutedStreamCreation_Mutes) {
TEST(AudioLoopbackStreamBrokerTest, SourceGone_CallsDeleter) {
TestEnvironment env(base::UnguessableToken::Create(), kMuteSource);
MockStreamFactory::StreamRequestData stream_request_data(
- env.source->GetGroupID(), TestParams());
+ env.source.GetGroupID(), TestParams());
env.stream_factory.ExpectStreamCreation(&stream_request_data);
- EXPECT_CALL(env.stream_factory, IsMuting(env.source->GetGroupID()));
+ EXPECT_CALL(env.stream_factory, IsMuting(env.source.GetGroupID()));
env.broker->CreateStream(env.factory_ptr.get());
env.RunUntilIdle();
@@ -289,10 +283,12 @@ TEST(AudioLoopbackStreamBrokerTest, SourceGone_CallsDeleter) {
Mock::VerifyAndClear(&env.renderer_factory_client);
- EXPECT_CALL(env.deleter, Run(env.broker.release()))
- .WillOnce(testing::DeleteArg<0>());
+ EXPECT_CALL(env.deleter, Run(env.broker.get()));
+
+ // Accessing source is not allowed after OnSourceGone.
+ EXPECT_CALL(env.source, RemoveLoopbackSink(_)).Times(0);
- env.source->WebContentsDestroyed();
+ env.broker->OnSourceGone();
env.RunUntilIdle();
}
@@ -300,7 +296,7 @@ TEST(AudioLoopbackStreamBrokerTest, SourceGone_CallsDeleter) {
TEST(AudioLoopbackStreamBrokerTest, StreamCreationFailure_CallsDeleter) {
TestEnvironment env(base::UnguessableToken::Create(), !kMuteSource);
MockStreamFactory::StreamRequestData stream_request_data(
- env.source->GetGroupID(), TestParams());
+ env.source.GetGroupID(), TestParams());
env.stream_factory.ExpectStreamCreation(&stream_request_data);
EXPECT_CALL(env.stream_factory, IsMuting(_)).Times(0);
@@ -321,7 +317,7 @@ TEST(AudioLoopbackStreamBrokerTest,
RendererFactoryClientDisconnect_CallsDeleter) {
TestEnvironment env(base::UnguessableToken::Create(), !kMuteSource);
MockStreamFactory::StreamRequestData stream_request_data(
- env.source->GetGroupID(), TestParams());
+ env.source.GetGroupID(), TestParams());
env.stream_factory.ExpectStreamCreation(&stream_request_data);
EXPECT_CALL(env.stream_factory, IsMuting(_)).Times(0);
@@ -343,7 +339,7 @@ TEST(AudioLoopbackStreamBrokerTest,
TEST(AudioLoopbackStreamBrokerTest, ObserverDisconnect_CallsDeleter) {
TestEnvironment env(base::UnguessableToken::Create(), !kMuteSource);
MockStreamFactory::StreamRequestData stream_request_data(
- env.source->GetGroupID(), TestParams());
+ env.source.GetGroupID(), TestParams());
env.stream_factory.ExpectStreamCreation(&stream_request_data);
EXPECT_CALL(env.stream_factory, IsMuting(_)).Times(0);