| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/remoting/renderer_controller.h" | 5 #include "media/remoting/renderer_controller.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 PipelineMetadata EncryptedMetadata() { | 38 PipelineMetadata EncryptedMetadata() { |
| 39 PipelineMetadata data; | 39 PipelineMetadata data; |
| 40 data.has_audio = true; | 40 data.has_audio = true; |
| 41 data.has_video = true; | 41 data.has_video = true; |
| 42 data.video_decoder_config = TestVideoConfig::NormalEncrypted(); | 42 data.video_decoder_config = TestVideoConfig::NormalEncrypted(); |
| 43 return data; | 43 return data; |
| 44 } | 44 } |
| 45 | 45 |
| 46 } // namespace | 46 } // namespace |
| 47 | 47 |
| 48 class RendererControllerTest : public ::testing::Test { | 48 class RendererControllerTest : public ::testing::Test, |
| 49 public MediaObserverClient { |
| 49 public: | 50 public: |
| 50 RendererControllerTest() {} | 51 RendererControllerTest() {} |
| 51 ~RendererControllerTest() override {} | 52 ~RendererControllerTest() override {} |
| 52 | 53 |
| 53 void TearDown() final { RunUntilIdle(); } | 54 void TearDown() final { RunUntilIdle(); } |
| 54 | 55 |
| 55 static void RunUntilIdle() { base::RunLoop().RunUntilIdle(); } | 56 static void RunUntilIdle() { base::RunLoop().RunUntilIdle(); } |
| 56 | 57 |
| 57 void ToggleRenderer() { | 58 // MediaObserverClient implementation. |
| 59 void SwitchRenderer() override { |
| 58 is_rendering_remotely_ = controller_->remote_rendering_started(); | 60 is_rendering_remotely_ = controller_->remote_rendering_started(); |
| 59 } | 61 } |
| 60 | 62 |
| 63 void ActivateViewportIntersectionMonitoring(bool activate) override { |
| 64 activate_viewport_intersection_monitoring_ = activate; |
| 65 } |
| 66 |
| 67 void DisablePipelineAutoSuspend(bool disable) override { |
| 68 disable_pipeline_suspend_ = disable; |
| 69 } |
| 70 |
| 61 void CreateCdm(bool is_remoting) { is_remoting_cdm_ = is_remoting; } | 71 void CreateCdm(bool is_remoting) { is_remoting_cdm_ = is_remoting; } |
| 62 | 72 |
| 63 base::MessageLoop message_loop_; | 73 base::MessageLoop message_loop_; |
| 64 | 74 |
| 65 protected: | 75 protected: |
| 66 std::unique_ptr<RendererController> controller_; | 76 std::unique_ptr<RendererController> controller_; |
| 67 bool is_rendering_remotely_ = false; | 77 bool is_rendering_remotely_ = false; |
| 68 bool is_remoting_cdm_ = false; | 78 bool is_remoting_cdm_ = false; |
| 79 bool activate_viewport_intersection_monitoring_ = false; |
| 80 bool disable_pipeline_suspend_ = false; |
| 69 | 81 |
| 70 private: | 82 private: |
| 71 DISALLOW_COPY_AND_ASSIGN(RendererControllerTest); | 83 DISALLOW_COPY_AND_ASSIGN(RendererControllerTest); |
| 72 }; | 84 }; |
| 73 | 85 |
| 74 TEST_F(RendererControllerTest, ToggleRendererOnFullscreenChange) { | 86 TEST_F(RendererControllerTest, ToggleRendererOnFullscreenChange) { |
| 75 EXPECT_FALSE(is_rendering_remotely_); | 87 EXPECT_FALSE(is_rendering_remotely_); |
| 76 const scoped_refptr<SharedSession> shared_session = | 88 const scoped_refptr<SharedSession> shared_session = |
| 77 FakeRemoterFactory::CreateSharedSession(false); | 89 FakeRemoterFactory::CreateSharedSession(false); |
| 78 controller_ = base::MakeUnique<RendererController>(shared_session); | 90 controller_ = base::MakeUnique<RendererController>(shared_session); |
| 79 controller_->SetSwitchRendererCallback(base::Bind( | 91 controller_->SetClient(this); |
| 80 &RendererControllerTest::ToggleRenderer, base::Unretained(this))); | |
| 81 RunUntilIdle(); | 92 RunUntilIdle(); |
| 82 EXPECT_FALSE(is_rendering_remotely_); | 93 EXPECT_FALSE(is_rendering_remotely_); |
| 94 EXPECT_FALSE(activate_viewport_intersection_monitoring_); |
| 95 EXPECT_FALSE(disable_pipeline_suspend_); |
| 83 shared_session->OnSinkAvailable(kAllCapabilities); | 96 shared_session->OnSinkAvailable(kAllCapabilities); |
| 84 RunUntilIdle(); | 97 RunUntilIdle(); |
| 85 EXPECT_FALSE(is_rendering_remotely_); | 98 EXPECT_FALSE(is_rendering_remotely_); |
| 99 EXPECT_TRUE(activate_viewport_intersection_monitoring_); |
| 100 EXPECT_FALSE(disable_pipeline_suspend_); |
| 86 controller_->OnEnteredFullscreen(); | 101 controller_->OnEnteredFullscreen(); |
| 87 RunUntilIdle(); | 102 RunUntilIdle(); |
| 88 EXPECT_FALSE(is_rendering_remotely_); | 103 EXPECT_FALSE(is_rendering_remotely_); |
| 89 controller_->OnMetadataChanged(DefaultMetadata()); | 104 controller_->OnMetadataChanged(DefaultMetadata()); |
| 90 RunUntilIdle(); | 105 RunUntilIdle(); |
| 91 EXPECT_FALSE(is_rendering_remotely_); | 106 EXPECT_FALSE(is_rendering_remotely_); |
| 92 controller_->OnRemotePlaybackDisabled(false); | 107 controller_->OnRemotePlaybackDisabled(false); |
| 93 RunUntilIdle(); | 108 RunUntilIdle(); |
| 94 EXPECT_FALSE(is_rendering_remotely_); | 109 EXPECT_FALSE(is_rendering_remotely_); |
| 95 controller_->OnPlaying(); | 110 controller_->OnPlaying(); |
| 96 RunUntilIdle(); | 111 RunUntilIdle(); |
| 97 EXPECT_TRUE(is_rendering_remotely_); // All requirements now satisfied. | 112 EXPECT_TRUE(is_rendering_remotely_); // All requirements now satisfied. |
| 113 EXPECT_TRUE(disable_pipeline_suspend_); |
| 98 | 114 |
| 99 // Leaving fullscreen should shut down remoting. | 115 // Leaving fullscreen should shut down remoting. |
| 100 controller_->OnExitedFullscreen(); | 116 controller_->OnExitedFullscreen(); |
| 101 RunUntilIdle(); | 117 RunUntilIdle(); |
| 102 EXPECT_FALSE(is_rendering_remotely_); | 118 EXPECT_FALSE(is_rendering_remotely_); |
| 119 EXPECT_FALSE(activate_viewport_intersection_monitoring_); |
| 120 EXPECT_FALSE(disable_pipeline_suspend_); |
| 103 } | 121 } |
| 104 | 122 |
| 105 TEST_F(RendererControllerTest, ToggleRendererOnSinkCapabilities) { | 123 TEST_F(RendererControllerTest, ToggleRendererOnSinkCapabilities) { |
| 106 EXPECT_FALSE(is_rendering_remotely_); | 124 EXPECT_FALSE(is_rendering_remotely_); |
| 107 const scoped_refptr<SharedSession> shared_session = | 125 const scoped_refptr<SharedSession> shared_session = |
| 108 FakeRemoterFactory::CreateSharedSession(false); | 126 FakeRemoterFactory::CreateSharedSession(false); |
| 109 controller_ = base::MakeUnique<RendererController>(shared_session); | 127 controller_ = base::MakeUnique<RendererController>(shared_session); |
| 110 controller_->SetSwitchRendererCallback(base::Bind( | 128 controller_->SetClient(this); |
| 111 &RendererControllerTest::ToggleRenderer, base::Unretained(this))); | |
| 112 RunUntilIdle(); | 129 RunUntilIdle(); |
| 113 EXPECT_FALSE(is_rendering_remotely_); | 130 EXPECT_FALSE(is_rendering_remotely_); |
| 114 controller_->OnMetadataChanged(DefaultMetadata()); | 131 controller_->OnMetadataChanged(DefaultMetadata()); |
| 115 RunUntilIdle(); | 132 RunUntilIdle(); |
| 116 EXPECT_FALSE(is_rendering_remotely_); | 133 EXPECT_FALSE(is_rendering_remotely_); |
| 117 controller_->OnRemotePlaybackDisabled(false); | 134 controller_->OnRemotePlaybackDisabled(false); |
| 118 RunUntilIdle(); | 135 RunUntilIdle(); |
| 119 EXPECT_FALSE(is_rendering_remotely_); | 136 EXPECT_FALSE(is_rendering_remotely_); |
| 120 controller_->OnPlaying(); | 137 controller_->OnPlaying(); |
| 121 RunUntilIdle(); | 138 RunUntilIdle(); |
| 122 EXPECT_FALSE(is_rendering_remotely_); | 139 EXPECT_FALSE(is_rendering_remotely_); |
| 123 controller_->OnEnteredFullscreen(); | 140 controller_->OnEnteredFullscreen(); |
| 124 RunUntilIdle(); | 141 RunUntilIdle(); |
| 125 EXPECT_FALSE(is_rendering_remotely_); | 142 EXPECT_FALSE(is_rendering_remotely_); |
| 143 EXPECT_FALSE(activate_viewport_intersection_monitoring_); |
| 144 EXPECT_FALSE(disable_pipeline_suspend_); |
| 126 // An available sink that does not support remote rendering should not cause | 145 // An available sink that does not support remote rendering should not cause |
| 127 // the controller to toggle remote rendering on. | 146 // the controller to toggle remote rendering on. |
| 128 shared_session->OnSinkAvailable(mojom::RemotingSinkCapabilities::NONE); | 147 shared_session->OnSinkAvailable(mojom::RemotingSinkCapabilities::NONE); |
| 129 RunUntilIdle(); | 148 RunUntilIdle(); |
| 130 EXPECT_FALSE(is_rendering_remotely_); | 149 EXPECT_FALSE(is_rendering_remotely_); |
| 131 shared_session->OnSinkGone(); // Bye-bye useless sink! | 150 shared_session->OnSinkGone(); // Bye-bye useless sink! |
| 132 RunUntilIdle(); | 151 RunUntilIdle(); |
| 133 EXPECT_FALSE(is_rendering_remotely_); | 152 EXPECT_FALSE(is_rendering_remotely_); |
| 153 EXPECT_FALSE(activate_viewport_intersection_monitoring_); |
| 154 EXPECT_FALSE(disable_pipeline_suspend_); |
| 134 // A sink that *does* support remote rendering *does* cause the controller to | 155 // A sink that *does* support remote rendering *does* cause the controller to |
| 135 // toggle remote rendering on. | 156 // toggle remote rendering on. |
| 136 shared_session->OnSinkAvailable(kAllCapabilities); | 157 shared_session->OnSinkAvailable(kAllCapabilities); |
| 137 RunUntilIdle(); | 158 RunUntilIdle(); |
| 138 EXPECT_TRUE(is_rendering_remotely_); | 159 EXPECT_TRUE(is_rendering_remotely_); |
| 160 EXPECT_TRUE(activate_viewport_intersection_monitoring_); |
| 161 EXPECT_TRUE(disable_pipeline_suspend_); |
| 139 controller_->OnExitedFullscreen(); | 162 controller_->OnExitedFullscreen(); |
| 140 RunUntilIdle(); | 163 RunUntilIdle(); |
| 141 EXPECT_FALSE(is_rendering_remotely_); | 164 EXPECT_FALSE(is_rendering_remotely_); |
| 165 EXPECT_FALSE(activate_viewport_intersection_monitoring_); |
| 166 EXPECT_FALSE(disable_pipeline_suspend_); |
| 142 } | 167 } |
| 143 | 168 |
| 144 TEST_F(RendererControllerTest, ToggleRendererOnDisableChange) { | 169 TEST_F(RendererControllerTest, ToggleRendererOnDisableChange) { |
| 145 EXPECT_FALSE(is_rendering_remotely_); | 170 EXPECT_FALSE(is_rendering_remotely_); |
| 146 const scoped_refptr<SharedSession> shared_session = | 171 const scoped_refptr<SharedSession> shared_session = |
| 147 FakeRemoterFactory::CreateSharedSession(false); | 172 FakeRemoterFactory::CreateSharedSession(false); |
| 148 controller_ = base::MakeUnique<RendererController>(shared_session); | 173 controller_ = base::MakeUnique<RendererController>(shared_session); |
| 149 controller_->SetSwitchRendererCallback(base::Bind( | 174 controller_->SetClient(this); |
| 150 &RendererControllerTest::ToggleRenderer, base::Unretained(this))); | |
| 151 RunUntilIdle(); | 175 RunUntilIdle(); |
| 152 EXPECT_FALSE(is_rendering_remotely_); | 176 EXPECT_FALSE(is_rendering_remotely_); |
| 153 controller_->OnRemotePlaybackDisabled(true); | 177 controller_->OnRemotePlaybackDisabled(true); |
| 154 RunUntilIdle(); | 178 RunUntilIdle(); |
| 155 EXPECT_FALSE(is_rendering_remotely_); | 179 EXPECT_FALSE(is_rendering_remotely_); |
| 156 shared_session->OnSinkAvailable(kAllCapabilities); | 180 shared_session->OnSinkAvailable(kAllCapabilities); |
| 157 RunUntilIdle(); | 181 RunUntilIdle(); |
| 158 EXPECT_FALSE(is_rendering_remotely_); | 182 EXPECT_FALSE(is_rendering_remotely_); |
| 183 EXPECT_TRUE(activate_viewport_intersection_monitoring_); |
| 184 EXPECT_FALSE(disable_pipeline_suspend_); |
| 159 controller_->OnMetadataChanged(DefaultMetadata()); | 185 controller_->OnMetadataChanged(DefaultMetadata()); |
| 160 RunUntilIdle(); | 186 RunUntilIdle(); |
| 161 EXPECT_FALSE(is_rendering_remotely_); | 187 EXPECT_FALSE(is_rendering_remotely_); |
| 162 controller_->OnEnteredFullscreen(); | 188 controller_->OnEnteredFullscreen(); |
| 163 RunUntilIdle(); | 189 RunUntilIdle(); |
| 164 EXPECT_FALSE(is_rendering_remotely_); | 190 EXPECT_FALSE(is_rendering_remotely_); |
| 165 controller_->OnRemotePlaybackDisabled(false); | 191 controller_->OnRemotePlaybackDisabled(false); |
| 166 RunUntilIdle(); | 192 RunUntilIdle(); |
| 167 EXPECT_FALSE(is_rendering_remotely_); | 193 EXPECT_FALSE(is_rendering_remotely_); |
| 168 controller_->OnPlaying(); | 194 controller_->OnPlaying(); |
| 169 RunUntilIdle(); | 195 RunUntilIdle(); |
| 170 EXPECT_TRUE(is_rendering_remotely_); // All requirements now satisfied. | 196 EXPECT_TRUE(is_rendering_remotely_); // All requirements now satisfied. |
| 197 EXPECT_TRUE(activate_viewport_intersection_monitoring_); |
| 198 EXPECT_TRUE(disable_pipeline_suspend_); |
| 171 | 199 |
| 172 // If the page disables remote playback (e.g., by setting the | 200 // If the page disables remote playback (e.g., by setting the |
| 173 // disableRemotePlayback attribute), this should shut down remoting. | 201 // disableRemotePlayback attribute), this should shut down remoting. |
| 174 controller_->OnRemotePlaybackDisabled(true); | 202 controller_->OnRemotePlaybackDisabled(true); |
| 175 RunUntilIdle(); | 203 RunUntilIdle(); |
| 176 EXPECT_FALSE(is_rendering_remotely_); | 204 EXPECT_FALSE(is_rendering_remotely_); |
| 205 EXPECT_FALSE(activate_viewport_intersection_monitoring_); |
| 206 EXPECT_FALSE(disable_pipeline_suspend_); |
| 177 } | 207 } |
| 178 | 208 |
| 179 TEST_F(RendererControllerTest, StartFailed) { | 209 TEST_F(RendererControllerTest, StartFailed) { |
| 180 EXPECT_FALSE(is_rendering_remotely_); | 210 EXPECT_FALSE(is_rendering_remotely_); |
| 181 const scoped_refptr<SharedSession> shared_session = | 211 const scoped_refptr<SharedSession> shared_session = |
| 182 FakeRemoterFactory::CreateSharedSession(true); | 212 FakeRemoterFactory::CreateSharedSession(true); |
| 183 controller_ = base::MakeUnique<RendererController>(shared_session); | 213 controller_ = base::MakeUnique<RendererController>(shared_session); |
| 184 controller_->SetSwitchRendererCallback(base::Bind( | 214 controller_->SetClient(this); |
| 185 &RendererControllerTest::ToggleRenderer, base::Unretained(this))); | |
| 186 RunUntilIdle(); | 215 RunUntilIdle(); |
| 187 EXPECT_FALSE(is_rendering_remotely_); | 216 EXPECT_FALSE(is_rendering_remotely_); |
| 188 shared_session->OnSinkAvailable(kAllCapabilities); | 217 shared_session->OnSinkAvailable(kAllCapabilities); |
| 189 RunUntilIdle(); | 218 RunUntilIdle(); |
| 190 EXPECT_FALSE(is_rendering_remotely_); | 219 EXPECT_FALSE(is_rendering_remotely_); |
| 220 EXPECT_TRUE(activate_viewport_intersection_monitoring_); |
| 221 EXPECT_FALSE(disable_pipeline_suspend_); |
| 191 controller_->OnEnteredFullscreen(); | 222 controller_->OnEnteredFullscreen(); |
| 192 RunUntilIdle(); | 223 RunUntilIdle(); |
| 193 EXPECT_FALSE(is_rendering_remotely_); | 224 EXPECT_FALSE(is_rendering_remotely_); |
| 194 controller_->OnMetadataChanged(DefaultMetadata()); | 225 controller_->OnMetadataChanged(DefaultMetadata()); |
| 195 RunUntilIdle(); | 226 RunUntilIdle(); |
| 196 EXPECT_FALSE(is_rendering_remotely_); | 227 EXPECT_FALSE(is_rendering_remotely_); |
| 197 controller_->OnRemotePlaybackDisabled(false); | 228 controller_->OnRemotePlaybackDisabled(false); |
| 198 RunUntilIdle(); | 229 RunUntilIdle(); |
| 199 EXPECT_FALSE(is_rendering_remotely_); | 230 EXPECT_FALSE(is_rendering_remotely_); |
| 200 controller_->OnPlaying(); | 231 controller_->OnPlaying(); |
| 201 RunUntilIdle(); | 232 RunUntilIdle(); |
| 202 EXPECT_FALSE(is_rendering_remotely_); | 233 EXPECT_FALSE(is_rendering_remotely_); |
| 234 EXPECT_FALSE(disable_pipeline_suspend_); |
| 203 } | 235 } |
| 204 | 236 |
| 205 TEST_F(RendererControllerTest, EncryptedWithRemotingCdm) { | 237 TEST_F(RendererControllerTest, EncryptedWithRemotingCdm) { |
| 206 EXPECT_FALSE(is_rendering_remotely_); | 238 EXPECT_FALSE(is_rendering_remotely_); |
| 207 controller_ = base::MakeUnique<RendererController>( | 239 controller_ = base::MakeUnique<RendererController>( |
| 208 FakeRemoterFactory::CreateSharedSession(false)); | 240 FakeRemoterFactory::CreateSharedSession(false)); |
| 209 controller_->SetSwitchRendererCallback(base::Bind( | 241 controller_->SetClient(this); |
| 210 &RendererControllerTest::ToggleRenderer, base::Unretained(this))); | |
| 211 RunUntilIdle(); | 242 RunUntilIdle(); |
| 212 EXPECT_FALSE(is_rendering_remotely_); | 243 EXPECT_FALSE(is_rendering_remotely_); |
| 213 controller_->OnMetadataChanged(EncryptedMetadata()); | 244 controller_->OnMetadataChanged(EncryptedMetadata()); |
| 214 controller_->OnRemotePlaybackDisabled(false); | 245 controller_->OnRemotePlaybackDisabled(false); |
| 215 controller_->OnPlaying(); | 246 controller_->OnPlaying(); |
| 216 RunUntilIdle(); | 247 RunUntilIdle(); |
| 217 EXPECT_FALSE(is_rendering_remotely_); | 248 EXPECT_FALSE(is_rendering_remotely_); |
| 218 const scoped_refptr<SharedSession> cdm_shared_session = | 249 const scoped_refptr<SharedSession> cdm_shared_session = |
| 219 FakeRemoterFactory::CreateSharedSession(false); | 250 FakeRemoterFactory::CreateSharedSession(false); |
| 220 std::unique_ptr<RemotingCdmController> cdm_controller = | 251 std::unique_ptr<RemotingCdmController> cdm_controller = |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 // Don't switch renderer in this case. Still using the remoting renderer to | 285 // Don't switch renderer in this case. Still using the remoting renderer to |
| 255 // show the failure interstitial. | 286 // show the failure interstitial. |
| 256 EXPECT_TRUE(is_rendering_remotely_); | 287 EXPECT_TRUE(is_rendering_remotely_); |
| 257 } | 288 } |
| 258 | 289 |
| 259 TEST_F(RendererControllerTest, EncryptedWithLocalCdm) { | 290 TEST_F(RendererControllerTest, EncryptedWithLocalCdm) { |
| 260 EXPECT_FALSE(is_rendering_remotely_); | 291 EXPECT_FALSE(is_rendering_remotely_); |
| 261 const scoped_refptr<SharedSession> initial_shared_session = | 292 const scoped_refptr<SharedSession> initial_shared_session = |
| 262 FakeRemoterFactory::CreateSharedSession(false); | 293 FakeRemoterFactory::CreateSharedSession(false); |
| 263 controller_ = base::MakeUnique<RendererController>(initial_shared_session); | 294 controller_ = base::MakeUnique<RendererController>(initial_shared_session); |
| 264 controller_->SetSwitchRendererCallback(base::Bind( | 295 controller_->SetClient(this); |
| 265 &RendererControllerTest::ToggleRenderer, base::Unretained(this))); | |
| 266 RunUntilIdle(); | 296 RunUntilIdle(); |
| 267 EXPECT_FALSE(is_rendering_remotely_); | 297 EXPECT_FALSE(is_rendering_remotely_); |
| 268 initial_shared_session->OnSinkAvailable(kAllCapabilities); | 298 initial_shared_session->OnSinkAvailable(kAllCapabilities); |
| 269 RunUntilIdle(); | 299 RunUntilIdle(); |
| 270 EXPECT_FALSE(is_rendering_remotely_); | 300 EXPECT_FALSE(is_rendering_remotely_); |
| 271 controller_->OnEnteredFullscreen(); | 301 controller_->OnEnteredFullscreen(); |
| 272 RunUntilIdle(); | 302 RunUntilIdle(); |
| 273 EXPECT_FALSE(is_rendering_remotely_); | 303 EXPECT_FALSE(is_rendering_remotely_); |
| 274 controller_->OnMetadataChanged(EncryptedMetadata()); | 304 controller_->OnMetadataChanged(EncryptedMetadata()); |
| 275 RunUntilIdle(); | 305 RunUntilIdle(); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 290 base::Bind(&RendererControllerTest::CreateCdm, base::Unretained(this))); | 320 base::Bind(&RendererControllerTest::CreateCdm, base::Unretained(this))); |
| 291 RunUntilIdle(); | 321 RunUntilIdle(); |
| 292 EXPECT_FALSE(is_rendering_remotely_); | 322 EXPECT_FALSE(is_rendering_remotely_); |
| 293 EXPECT_FALSE(is_remoting_cdm_); | 323 EXPECT_FALSE(is_remoting_cdm_); |
| 294 } | 324 } |
| 295 | 325 |
| 296 TEST_F(RendererControllerTest, EncryptedWithFailedRemotingCdm) { | 326 TEST_F(RendererControllerTest, EncryptedWithFailedRemotingCdm) { |
| 297 EXPECT_FALSE(is_rendering_remotely_); | 327 EXPECT_FALSE(is_rendering_remotely_); |
| 298 controller_ = base::MakeUnique<RendererController>( | 328 controller_ = base::MakeUnique<RendererController>( |
| 299 FakeRemoterFactory::CreateSharedSession(false)); | 329 FakeRemoterFactory::CreateSharedSession(false)); |
| 300 controller_->SetSwitchRendererCallback(base::Bind( | 330 controller_->SetClient(this); |
| 301 &RendererControllerTest::ToggleRenderer, base::Unretained(this))); | |
| 302 RunUntilIdle(); | 331 RunUntilIdle(); |
| 303 EXPECT_FALSE(is_rendering_remotely_); | 332 EXPECT_FALSE(is_rendering_remotely_); |
| 304 controller_->OnEnteredFullscreen(); | 333 controller_->OnEnteredFullscreen(); |
| 305 RunUntilIdle(); | 334 RunUntilIdle(); |
| 306 EXPECT_FALSE(is_rendering_remotely_); | 335 EXPECT_FALSE(is_rendering_remotely_); |
| 307 controller_->OnMetadataChanged(EncryptedMetadata()); | 336 controller_->OnMetadataChanged(EncryptedMetadata()); |
| 308 RunUntilIdle(); | 337 RunUntilIdle(); |
| 309 EXPECT_FALSE(is_rendering_remotely_); | 338 EXPECT_FALSE(is_rendering_remotely_); |
| 310 controller_->OnRemotePlaybackDisabled(false); | 339 controller_->OnRemotePlaybackDisabled(false); |
| 311 RunUntilIdle(); | 340 RunUntilIdle(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 341 RunUntilIdle(); | 370 RunUntilIdle(); |
| 342 // Switch to using the remoting renderer, even when the remoting CDM session | 371 // Switch to using the remoting renderer, even when the remoting CDM session |
| 343 // was already terminated, to show the failure interstitial. | 372 // was already terminated, to show the failure interstitial. |
| 344 EXPECT_TRUE(is_rendering_remotely_); | 373 EXPECT_TRUE(is_rendering_remotely_); |
| 345 EXPECT_EQ(SharedSession::SESSION_PERMANENTLY_STOPPED, | 374 EXPECT_EQ(SharedSession::SESSION_PERMANENTLY_STOPPED, |
| 346 controller_->session()->state()); | 375 controller_->session()->state()); |
| 347 } | 376 } |
| 348 | 377 |
| 349 } // namespace remoting | 378 } // namespace remoting |
| 350 } // namespace media | 379 } // namespace media |
| OLD | NEW |