summaryrefslogtreecommitdiffstats
path: root/cc/layers/video_layer_impl_unittest.cc
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-29 04:27:38 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-29 04:27:38 +0000
commit69fb3d53a0799a578d3564fd3735eb6e8c34d5b8 (patch)
treeadc2667d80b02b0f0183f20adace0163bc101658 /cc/layers/video_layer_impl_unittest.cc
parent8035e22f828c698aad23f8d44c9656f8a8aa97ee (diff)
downloadchromium_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.cc18
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