| Index: media/remoting/renderer_controller_unittest.cc
|
| diff --git a/media/remoting/renderer_controller_unittest.cc b/media/remoting/renderer_controller_unittest.cc
|
| index 0ed58a3d8dd38299681a05420f6619f7e41b3225..cbc1ed0fc5ac2ca528895b5a36c276cdd068ee41 100644
|
| --- a/media/remoting/renderer_controller_unittest.cc
|
| +++ b/media/remoting/renderer_controller_unittest.cc
|
| @@ -45,7 +45,8 @@ PipelineMetadata EncryptedMetadata() {
|
|
|
| } // namespace
|
|
|
| -class RendererControllerTest : public ::testing::Test {
|
| +class RendererControllerTest : public ::testing::Test,
|
| + public MediaObserverClient {
|
| public:
|
| RendererControllerTest() {}
|
| ~RendererControllerTest() override {}
|
| @@ -54,8 +55,14 @@ class RendererControllerTest : public ::testing::Test {
|
|
|
| static void RunUntilIdle() { base::RunLoop().RunUntilIdle(); }
|
|
|
| - void ToggleRenderer() {
|
| + // MediaObserverClient implementation.
|
| + void SwitchRenderer(bool disable_pipeline_auto_suspend) override {
|
| is_rendering_remotely_ = controller_->remote_rendering_started();
|
| + disable_pipeline_suspend_ = disable_pipeline_auto_suspend;
|
| + }
|
| +
|
| + void ActivateViewportIntersectionMonitoring(bool activate) override {
|
| + activate_viewport_intersection_monitoring_ = activate;
|
| }
|
|
|
| void CreateCdm(bool is_remoting) { is_remoting_cdm_ = is_remoting; }
|
| @@ -66,6 +73,8 @@ class RendererControllerTest : public ::testing::Test {
|
| std::unique_ptr<RendererController> controller_;
|
| bool is_rendering_remotely_ = false;
|
| bool is_remoting_cdm_ = false;
|
| + bool activate_viewport_intersection_monitoring_ = false;
|
| + bool disable_pipeline_suspend_ = false;
|
|
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(RendererControllerTest);
|
| @@ -76,13 +85,16 @@ TEST_F(RendererControllerTest, ToggleRendererOnFullscreenChange) {
|
| const scoped_refptr<SharedSession> shared_session =
|
| FakeRemoterFactory::CreateSharedSession(false);
|
| controller_ = base::MakeUnique<RendererController>(shared_session);
|
| - controller_->SetSwitchRendererCallback(base::Bind(
|
| - &RendererControllerTest::ToggleRenderer, base::Unretained(this)));
|
| + controller_->SetClient(this);
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| + EXPECT_FALSE(activate_viewport_intersection_monitoring_);
|
| + EXPECT_FALSE(disable_pipeline_suspend_);
|
| shared_session->OnSinkAvailable(kAllCapabilities);
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| + EXPECT_TRUE(activate_viewport_intersection_monitoring_);
|
| + EXPECT_FALSE(disable_pipeline_suspend_);
|
| controller_->OnEnteredFullscreen();
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| @@ -95,11 +107,14 @@ TEST_F(RendererControllerTest, ToggleRendererOnFullscreenChange) {
|
| controller_->OnPlaying();
|
| RunUntilIdle();
|
| EXPECT_TRUE(is_rendering_remotely_); // All requirements now satisfied.
|
| + EXPECT_TRUE(disable_pipeline_suspend_);
|
|
|
| // Leaving fullscreen should shut down remoting.
|
| controller_->OnExitedFullscreen();
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| + EXPECT_FALSE(activate_viewport_intersection_monitoring_);
|
| + EXPECT_FALSE(disable_pipeline_suspend_);
|
| }
|
|
|
| TEST_F(RendererControllerTest, ToggleRendererOnSinkCapabilities) {
|
| @@ -107,8 +122,7 @@ TEST_F(RendererControllerTest, ToggleRendererOnSinkCapabilities) {
|
| const scoped_refptr<SharedSession> shared_session =
|
| FakeRemoterFactory::CreateSharedSession(false);
|
| controller_ = base::MakeUnique<RendererController>(shared_session);
|
| - controller_->SetSwitchRendererCallback(base::Bind(
|
| - &RendererControllerTest::ToggleRenderer, base::Unretained(this)));
|
| + controller_->SetClient(this);
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| controller_->OnMetadataChanged(DefaultMetadata());
|
| @@ -123,6 +137,8 @@ TEST_F(RendererControllerTest, ToggleRendererOnSinkCapabilities) {
|
| controller_->OnEnteredFullscreen();
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| + EXPECT_FALSE(activate_viewport_intersection_monitoring_);
|
| + EXPECT_FALSE(disable_pipeline_suspend_);
|
| // An available sink that does not support remote rendering should not cause
|
| // the controller to toggle remote rendering on.
|
| shared_session->OnSinkAvailable(mojom::RemotingSinkCapabilities::NONE);
|
| @@ -131,14 +147,20 @@ TEST_F(RendererControllerTest, ToggleRendererOnSinkCapabilities) {
|
| shared_session->OnSinkGone(); // Bye-bye useless sink!
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| + EXPECT_FALSE(activate_viewport_intersection_monitoring_);
|
| + EXPECT_FALSE(disable_pipeline_suspend_);
|
| // A sink that *does* support remote rendering *does* cause the controller to
|
| // toggle remote rendering on.
|
| shared_session->OnSinkAvailable(kAllCapabilities);
|
| RunUntilIdle();
|
| EXPECT_TRUE(is_rendering_remotely_);
|
| + EXPECT_TRUE(activate_viewport_intersection_monitoring_);
|
| + EXPECT_TRUE(disable_pipeline_suspend_);
|
| controller_->OnExitedFullscreen();
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| + EXPECT_FALSE(activate_viewport_intersection_monitoring_);
|
| + EXPECT_FALSE(disable_pipeline_suspend_);
|
| }
|
|
|
| TEST_F(RendererControllerTest, ToggleRendererOnDisableChange) {
|
| @@ -146,8 +168,7 @@ TEST_F(RendererControllerTest, ToggleRendererOnDisableChange) {
|
| const scoped_refptr<SharedSession> shared_session =
|
| FakeRemoterFactory::CreateSharedSession(false);
|
| controller_ = base::MakeUnique<RendererController>(shared_session);
|
| - controller_->SetSwitchRendererCallback(base::Bind(
|
| - &RendererControllerTest::ToggleRenderer, base::Unretained(this)));
|
| + controller_->SetClient(this);
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| controller_->OnRemotePlaybackDisabled(true);
|
| @@ -156,6 +177,8 @@ TEST_F(RendererControllerTest, ToggleRendererOnDisableChange) {
|
| shared_session->OnSinkAvailable(kAllCapabilities);
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| + EXPECT_TRUE(activate_viewport_intersection_monitoring_);
|
| + EXPECT_FALSE(disable_pipeline_suspend_);
|
| controller_->OnMetadataChanged(DefaultMetadata());
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| @@ -168,12 +191,16 @@ TEST_F(RendererControllerTest, ToggleRendererOnDisableChange) {
|
| controller_->OnPlaying();
|
| RunUntilIdle();
|
| EXPECT_TRUE(is_rendering_remotely_); // All requirements now satisfied.
|
| + EXPECT_TRUE(activate_viewport_intersection_monitoring_);
|
| + EXPECT_TRUE(disable_pipeline_suspend_);
|
|
|
| // If the page disables remote playback (e.g., by setting the
|
| // disableRemotePlayback attribute), this should shut down remoting.
|
| controller_->OnRemotePlaybackDisabled(true);
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| + EXPECT_FALSE(activate_viewport_intersection_monitoring_);
|
| + EXPECT_FALSE(disable_pipeline_suspend_);
|
| }
|
|
|
| TEST_F(RendererControllerTest, StartFailed) {
|
| @@ -181,13 +208,14 @@ TEST_F(RendererControllerTest, StartFailed) {
|
| const scoped_refptr<SharedSession> shared_session =
|
| FakeRemoterFactory::CreateSharedSession(true);
|
| controller_ = base::MakeUnique<RendererController>(shared_session);
|
| - controller_->SetSwitchRendererCallback(base::Bind(
|
| - &RendererControllerTest::ToggleRenderer, base::Unretained(this)));
|
| + controller_->SetClient(this);
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| shared_session->OnSinkAvailable(kAllCapabilities);
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| + EXPECT_TRUE(activate_viewport_intersection_monitoring_);
|
| + EXPECT_FALSE(disable_pipeline_suspend_);
|
| controller_->OnEnteredFullscreen();
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| @@ -200,14 +228,14 @@ TEST_F(RendererControllerTest, StartFailed) {
|
| controller_->OnPlaying();
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| + EXPECT_FALSE(disable_pipeline_suspend_);
|
| }
|
|
|
| TEST_F(RendererControllerTest, EncryptedWithRemotingCdm) {
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| controller_ = base::MakeUnique<RendererController>(
|
| FakeRemoterFactory::CreateSharedSession(false));
|
| - controller_->SetSwitchRendererCallback(base::Bind(
|
| - &RendererControllerTest::ToggleRenderer, base::Unretained(this)));
|
| + controller_->SetClient(this);
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| controller_->OnMetadataChanged(EncryptedMetadata());
|
| @@ -261,8 +289,7 @@ TEST_F(RendererControllerTest, EncryptedWithLocalCdm) {
|
| const scoped_refptr<SharedSession> initial_shared_session =
|
| FakeRemoterFactory::CreateSharedSession(false);
|
| controller_ = base::MakeUnique<RendererController>(initial_shared_session);
|
| - controller_->SetSwitchRendererCallback(base::Bind(
|
| - &RendererControllerTest::ToggleRenderer, base::Unretained(this)));
|
| + controller_->SetClient(this);
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| initial_shared_session->OnSinkAvailable(kAllCapabilities);
|
| @@ -297,8 +324,7 @@ TEST_F(RendererControllerTest, EncryptedWithFailedRemotingCdm) {
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| controller_ = base::MakeUnique<RendererController>(
|
| FakeRemoterFactory::CreateSharedSession(false));
|
| - controller_->SetSwitchRendererCallback(base::Bind(
|
| - &RendererControllerTest::ToggleRenderer, base::Unretained(this)));
|
| + controller_->SetClient(this);
|
| RunUntilIdle();
|
| EXPECT_FALSE(is_rendering_remotely_);
|
| controller_->OnEnteredFullscreen();
|
|
|