diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-29 04:27:38 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-29 04:27:38 +0000 |
commit | 69fb3d53a0799a578d3564fd3735eb6e8c34d5b8 (patch) | |
tree | adc2667d80b02b0f0183f20adace0163bc101658 /cc/layers/video_layer_impl_unittest.cc | |
parent | 8035e22f828c698aad23f8d44c9656f8a8aa97ee (diff) | |
download | chromium_src-69fb3d53a0799a578d3564fd3735eb6e8c34d5b8.zip chromium_src-69fb3d53a0799a578d3564fd3735eb6e8c34d5b8.tar.gz chromium_src-69fb3d53a0799a578d3564fd3735eb6e8c34d5b8.tar.bz2 |
Initialize cc::VideoFrameProviderClientImpl::active_video_layer_.
As of r259048, WebMediaPlayerImpl now notifies the compositor of new
frames directly on the compositing thread. If
VideoFrameProviderClientImpl::DidRecieveFrame() is called before
VideoLayerImpl::DidBecomeActive() is called,
VideoFrameProviderClientImpl may attempt to call
VideoLayerImpl::SetNeedsRedraw() using an uninitialized pointer.
BUG=357145
R=enne@chromium.org
Review URL: https://codereview.chromium.org/214543011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@260360 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/layers/video_layer_impl_unittest.cc')
-rw-r--r-- | cc/layers/video_layer_impl_unittest.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/cc/layers/video_layer_impl_unittest.cc b/cc/layers/video_layer_impl_unittest.cc index dc9c6fb..68a2b2e 100644 --- a/cc/layers/video_layer_impl_unittest.cc +++ b/cc/layers/video_layer_impl_unittest.cc @@ -4,6 +4,7 @@ #include "cc/layers/video_layer_impl.h" +#include "cc/layers/video_frame_provider_client_impl.h" #include "cc/output/context_provider.h" #include "cc/output/output_surface.h" #include "cc/test/fake_video_frame_provider.h" @@ -76,5 +77,22 @@ TEST(VideoLayerImplTest, Occlusion) { } } +TEST(VideoLayerImplTest, DidBecomeActiveShouldSetActiveVideoLayer) { + LayerTestCommon::LayerImplTest impl; + DebugScopedSetImplThreadAndMainThreadBlocked thread(impl.proxy()); + + FakeVideoFrameProvider provider; + VideoLayerImpl* video_layer_impl = + impl.AddChildToRoot<VideoLayerImpl>(&provider); + + VideoFrameProviderClientImpl* client = + static_cast<VideoFrameProviderClientImpl*>(provider.client()); + ASSERT_TRUE(client); + EXPECT_FALSE(client->active_video_layer()); + + video_layer_impl->DidBecomeActive(); + EXPECT_EQ(video_layer_impl, client->active_video_layer()); +} + } // namespace } // namespace cc |