| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 "config.h" | 5 #include "config.h" |
| 6 | 6 |
| 7 #include "CCDelegatedRendererLayerImpl.h" | 7 #include "CCDelegatedRendererLayerImpl.h" |
| 8 | 8 |
| 9 #include "CCAppendQuadsData.h" | 9 #include "CCAppendQuadsData.h" |
| 10 #include "CCLayerTreeHostImpl.h" | 10 #include "CCLayerTreeHostImpl.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 using WebKit::FakeWebCompositorOutputSurface; | 25 using WebKit::FakeWebCompositorOutputSurface; |
| 26 using WebKit::FakeWebGraphicsContext3D; | 26 using WebKit::FakeWebGraphicsContext3D; |
| 27 using WebKit::WebTransformationMatrix; | 27 using WebKit::WebTransformationMatrix; |
| 28 | 28 |
| 29 using namespace cc; | 29 using namespace cc; |
| 30 using namespace WebKitTests; | 30 using namespace WebKitTests; |
| 31 | 31 |
| 32 namespace { | 32 namespace { |
| 33 | 33 |
| 34 class CCDelegatedRendererLayerImplTest : public testing::Test, public CCLayerTre
eHostImplClient { | 34 class DelegatedRendererLayerImplTest : public testing::Test, public LayerTreeHos
tImplClient { |
| 35 public: | 35 public: |
| 36 CCDelegatedRendererLayerImplTest() | 36 DelegatedRendererLayerImplTest() |
| 37 { | 37 { |
| 38 CCLayerTreeSettings settings; | 38 LayerTreeSettings settings; |
| 39 settings.minimumOcclusionTrackingSize = IntSize(); | 39 settings.minimumOcclusionTrackingSize = IntSize(); |
| 40 | 40 |
| 41 m_hostImpl = CCLayerTreeHostImpl::create(settings, this); | 41 m_hostImpl = LayerTreeHostImpl::create(settings, this); |
| 42 m_hostImpl->initializeRenderer(createContext()); | 42 m_hostImpl->initializeRenderer(createContext()); |
| 43 m_hostImpl->setViewportSize(IntSize(10, 10), IntSize(10, 10)); | 43 m_hostImpl->setViewportSize(IntSize(10, 10), IntSize(10, 10)); |
| 44 } | 44 } |
| 45 | 45 |
| 46 // CCLayerTreeHostImplClient implementation. | 46 // LayerTreeHostImplClient implementation. |
| 47 virtual void didLoseContextOnImplThread() OVERRIDE { } | 47 virtual void didLoseContextOnImplThread() OVERRIDE { } |
| 48 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE { } | 48 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE { } |
| 49 virtual void onVSyncParametersChanged(double, double) OVERRIDE { } | 49 virtual void onVSyncParametersChanged(double, double) OVERRIDE { } |
| 50 virtual void onCanDrawStateChanged(bool) OVERRIDE { } | 50 virtual void onCanDrawStateChanged(bool) OVERRIDE { } |
| 51 virtual void setNeedsRedrawOnImplThread() OVERRIDE { } | 51 virtual void setNeedsRedrawOnImplThread() OVERRIDE { } |
| 52 virtual void setNeedsCommitOnImplThread() OVERRIDE { } | 52 virtual void setNeedsCommitOnImplThread() OVERRIDE { } |
| 53 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<CCAnimat
ionEventsVector>, double wallClockTime) OVERRIDE { } | 53 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<Animatio
nEventsVector>, double wallClockTime) OVERRIDE { } |
| 54 virtual bool reduceContentsTextureMemoryOnImplThread(size_t limitBytes) OVER
RIDE { return true; } | 54 virtual bool reduceContentsTextureMemoryOnImplThread(size_t limitBytes) OVER
RIDE { return true; } |
| 55 | 55 |
| 56 protected: | 56 protected: |
| 57 scoped_ptr<CCGraphicsContext> createContext() | 57 scoped_ptr<GraphicsContext> createContext() |
| 58 { | 58 { |
| 59 return FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::WebGrap
hicsContext3D>(new FakeWebGraphicsContext3D)).PassAs<CCGraphicsContext>(); | 59 return FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::WebGrap
hicsContext3D>(new FakeWebGraphicsContext3D)).PassAs<GraphicsContext>(); |
| 60 } | 60 } |
| 61 | 61 |
| 62 DebugScopedSetImplThread m_alwaysImplThread; | 62 DebugScopedSetImplThread m_alwaysImplThread; |
| 63 DebugScopedSetMainThreadBlocked m_alwaysMainThreadBlocked; | 63 DebugScopedSetMainThreadBlocked m_alwaysMainThreadBlocked; |
| 64 | 64 |
| 65 scoped_ptr<CCLayerTreeHostImpl> m_hostImpl; | 65 scoped_ptr<LayerTreeHostImpl> m_hostImpl; |
| 66 }; | 66 }; |
| 67 | 67 |
| 68 static CCTestRenderPass* addRenderPass(ScopedPtrVector<CCRenderPass>& passList,
CCRenderPass::Id id, IntRect outputRect, WebTransformationMatrix rootTransform) | 68 static TestRenderPass* addRenderPass(ScopedPtrVector<RenderPass>& passList, Rend
erPass::Id id, IntRect outputRect, WebTransformationMatrix rootTransform) |
| 69 { | 69 { |
| 70 scoped_ptr<CCRenderPass> pass(CCRenderPass::create(id, outputRect, rootTrans
form)); | 70 scoped_ptr<RenderPass> pass(RenderPass::create(id, outputRect, rootTransform
)); |
| 71 CCTestRenderPass* testPass = static_cast<CCTestRenderPass*>(pass.get()); | 71 TestRenderPass* testPass = static_cast<TestRenderPass*>(pass.get()); |
| 72 passList.append(pass.Pass()); | 72 passList.append(pass.Pass()); |
| 73 return testPass; | 73 return testPass; |
| 74 } | 74 } |
| 75 | 75 |
| 76 static CCSolidColorDrawQuad* addQuad(CCTestRenderPass* pass, IntRect rect, SkCol
or color) | 76 static SolidColorDrawQuad* addQuad(TestRenderPass* pass, IntRect rect, SkColor c
olor) |
| 77 { | 77 { |
| 78 MockCCQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); | 78 MockQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); |
| 79 CCAppendQuadsData data(pass->id()); | 79 AppendQuadsData data(pass->id()); |
| 80 CCSharedQuadState* sharedState = quadSink.useSharedQuadState(CCSharedQuadSta
te::create(WebTransformationMatrix(), rect, rect, 1, false)); | 80 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadState::
create(WebTransformationMatrix(), rect, rect, 1, false)); |
| 81 scoped_ptr<CCSolidColorDrawQuad> quad = CCSolidColorDrawQuad::create(sharedS
tate, rect, color); | 81 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::create(sharedState
, rect, color); |
| 82 CCSolidColorDrawQuad* quadPtr = quad.get(); | 82 SolidColorDrawQuad* quadPtr = quad.get(); |
| 83 quadSink.append(quad.PassAs<CCDrawQuad>(), data); | 83 quadSink.append(quad.PassAs<DrawQuad>(), data); |
| 84 return quadPtr; | 84 return quadPtr; |
| 85 } | 85 } |
| 86 | 86 |
| 87 static void addRenderPassQuad(CCTestRenderPass* toPass, CCTestRenderPass* contri
butingPass) | 87 static void addRenderPassQuad(TestRenderPass* toPass, TestRenderPass* contributi
ngPass) |
| 88 { | 88 { |
| 89 MockCCQuadCuller quadSink(toPass->quadList(), toPass->sharedQuadStateList())
; | 89 MockQuadCuller quadSink(toPass->quadList(), toPass->sharedQuadStateList()); |
| 90 CCAppendQuadsData data(toPass->id()); | 90 AppendQuadsData data(toPass->id()); |
| 91 IntRect outputRect = contributingPass->outputRect(); | 91 IntRect outputRect = contributingPass->outputRect(); |
| 92 CCSharedQuadState* sharedState = quadSink.useSharedQuadState(CCSharedQuadSta
te::create(WebTransformationMatrix(), outputRect, outputRect, 1, false)); | 92 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadState::
create(WebTransformationMatrix(), outputRect, outputRect, 1, false)); |
| 93 scoped_ptr<CCRenderPassDrawQuad> quad = CCRenderPassDrawQuad::create(sharedS
tate, outputRect, contributingPass->id(), false, 0, outputRect, 0, 0, 0, 0); | 93 scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::create(sharedState
, outputRect, contributingPass->id(), false, 0, outputRect, 0, 0, 0, 0); |
| 94 quadSink.append(quad.PassAs<CCDrawQuad>(), data); | 94 quadSink.append(quad.PassAs<DrawQuad>(), data); |
| 95 } | 95 } |
| 96 | 96 |
| 97 class CCDelegatedRendererLayerImplTestSimple : public CCDelegatedRendererLayerIm
plTest { | 97 class DelegatedRendererLayerImplTestSimple : public DelegatedRendererLayerImplTe
st { |
| 98 public: | 98 public: |
| 99 CCDelegatedRendererLayerImplTestSimple() | 99 DelegatedRendererLayerImplTestSimple() |
| 100 : CCDelegatedRendererLayerImplTest() | 100 : DelegatedRendererLayerImplTest() |
| 101 { | 101 { |
| 102 scoped_ptr<CCLayerImpl> rootLayer = CCSolidColorLayerImpl::create(1).Pas
sAs<CCLayerImpl>(); | 102 scoped_ptr<LayerImpl> rootLayer = SolidColorLayerImpl::create(1).PassAs<
LayerImpl>(); |
| 103 scoped_ptr<CCLayerImpl> layerBefore = CCSolidColorLayerImpl::create(2).P
assAs<CCLayerImpl>(); | 103 scoped_ptr<LayerImpl> layerBefore = SolidColorLayerImpl::create(2).PassA
s<LayerImpl>(); |
| 104 scoped_ptr<CCLayerImpl> layerAfter = CCSolidColorLayerImpl::create(3).Pa
ssAs<CCLayerImpl>(); | 104 scoped_ptr<LayerImpl> layerAfter = SolidColorLayerImpl::create(3).PassAs
<LayerImpl>(); |
| 105 scoped_ptr<CCDelegatedRendererLayerImpl> delegatedRendererLayer = CCDele
gatedRendererLayerImpl::create(4); | 105 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(4); |
| 106 | 106 |
| 107 m_hostImpl->setViewportSize(IntSize(100, 100), IntSize(100, 100)); | 107 m_hostImpl->setViewportSize(IntSize(100, 100), IntSize(100, 100)); |
| 108 rootLayer->setBounds(IntSize(100, 100)); | 108 rootLayer->setBounds(IntSize(100, 100)); |
| 109 | 109 |
| 110 layerBefore->setPosition(IntPoint(20, 20)); | 110 layerBefore->setPosition(IntPoint(20, 20)); |
| 111 layerBefore->setBounds(IntSize(14, 14)); | 111 layerBefore->setBounds(IntSize(14, 14)); |
| 112 layerBefore->setContentBounds(IntSize(14, 14)); | 112 layerBefore->setContentBounds(IntSize(14, 14)); |
| 113 layerBefore->setDrawsContent(true); | 113 layerBefore->setDrawsContent(true); |
| 114 layerBefore->setForceRenderSurface(true); | 114 layerBefore->setForceRenderSurface(true); |
| 115 | 115 |
| 116 layerAfter->setPosition(IntPoint(5, 5)); | 116 layerAfter->setPosition(IntPoint(5, 5)); |
| 117 layerAfter->setBounds(IntSize(15, 15)); | 117 layerAfter->setBounds(IntSize(15, 15)); |
| 118 layerAfter->setContentBounds(IntSize(15, 15)); | 118 layerAfter->setContentBounds(IntSize(15, 15)); |
| 119 layerAfter->setDrawsContent(true); | 119 layerAfter->setDrawsContent(true); |
| 120 layerAfter->setForceRenderSurface(true); | 120 layerAfter->setForceRenderSurface(true); |
| 121 | 121 |
| 122 delegatedRendererLayer->setPosition(IntPoint(3, 3)); | 122 delegatedRendererLayer->setPosition(IntPoint(3, 3)); |
| 123 delegatedRendererLayer->setBounds(IntSize(10, 10)); | 123 delegatedRendererLayer->setBounds(IntSize(10, 10)); |
| 124 delegatedRendererLayer->setContentBounds(IntSize(10, 10)); | 124 delegatedRendererLayer->setContentBounds(IntSize(10, 10)); |
| 125 delegatedRendererLayer->setDrawsContent(true); | 125 delegatedRendererLayer->setDrawsContent(true); |
| 126 WebTransformationMatrix transform; | 126 WebTransformationMatrix transform; |
| 127 transform.translate(1, 1); | 127 transform.translate(1, 1); |
| 128 delegatedRendererLayer->setTransform(transform); | 128 delegatedRendererLayer->setTransform(transform); |
| 129 | 129 |
| 130 ScopedPtrVector<CCRenderPass> delegatedRenderPasses; | 130 ScopedPtrVector<RenderPass> delegatedRenderPasses; |
| 131 CCTestRenderPass* pass1 = addRenderPass(delegatedRenderPasses, CCRenderP
ass::Id(9, 6), IntRect(6, 6, 6, 6), WebTransformationMatrix()); | 131 TestRenderPass* pass1 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 6), IntRect(6, 6, 6, 6), WebTransformationMatrix()); |
| 132 addQuad(pass1, IntRect(0, 0, 6, 6), 33u); | 132 addQuad(pass1, IntRect(0, 0, 6, 6), 33u); |
| 133 CCTestRenderPass* pass2 = addRenderPass(delegatedRenderPasses, CCRenderP
ass::Id(9, 7), IntRect(7, 7, 7, 7), WebTransformationMatrix()); | 133 TestRenderPass* pass2 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 7), IntRect(7, 7, 7, 7), WebTransformationMatrix()); |
| 134 addQuad(pass2, IntRect(0, 0, 7, 7), 22u); | 134 addQuad(pass2, IntRect(0, 0, 7, 7), 22u); |
| 135 addRenderPassQuad(pass2, pass1); | 135 addRenderPassQuad(pass2, pass1); |
| 136 CCTestRenderPass* pass3 = addRenderPass(delegatedRenderPasses, CCRenderP
ass::Id(9, 8), IntRect(8, 8, 8, 8), WebTransformationMatrix()); | 136 TestRenderPass* pass3 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 8), IntRect(8, 8, 8, 8), WebTransformationMatrix()); |
| 137 addRenderPassQuad(pass3, pass2); | 137 addRenderPassQuad(pass3, pass2); |
| 138 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); | 138 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); |
| 139 | 139 |
| 140 // The RenderPasses should be taken by the layer. | 140 // The RenderPasses should be taken by the layer. |
| 141 EXPECT_EQ(0u, delegatedRenderPasses.size()); | 141 EXPECT_EQ(0u, delegatedRenderPasses.size()); |
| 142 | 142 |
| 143 m_rootLayerPtr = rootLayer.get(); | 143 m_rootLayerPtr = rootLayer.get(); |
| 144 m_layerBeforePtr = layerBefore.get(); | 144 m_layerBeforePtr = layerBefore.get(); |
| 145 m_layerAfterPtr = layerAfter.get(); | 145 m_layerAfterPtr = layerAfter.get(); |
| 146 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); | 146 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); |
| 147 | 147 |
| 148 // Force the delegated RenderPasses to come before the RenderPass from l
ayerAfter. | 148 // Force the delegated RenderPasses to come before the RenderPass from l
ayerAfter. |
| 149 layerAfter->addChild(delegatedRendererLayer.PassAs<CCLayerImpl>()); | 149 layerAfter->addChild(delegatedRendererLayer.PassAs<LayerImpl>()); |
| 150 rootLayer->addChild(layerAfter.Pass()); | 150 rootLayer->addChild(layerAfter.Pass()); |
| 151 | 151 |
| 152 // Get the RenderPass generated by layerBefore to come before the delega
ted RenderPasses. | 152 // Get the RenderPass generated by layerBefore to come before the delega
ted RenderPasses. |
| 153 rootLayer->addChild(layerBefore.Pass()); | 153 rootLayer->addChild(layerBefore.Pass()); |
| 154 | 154 |
| 155 m_hostImpl->setRootLayer(rootLayer.Pass()); | 155 m_hostImpl->setRootLayer(rootLayer.Pass()); |
| 156 } | 156 } |
| 157 | 157 |
| 158 protected: | 158 protected: |
| 159 CCLayerImpl* m_rootLayerPtr; | 159 LayerImpl* m_rootLayerPtr; |
| 160 CCLayerImpl* m_layerBeforePtr; | 160 LayerImpl* m_layerBeforePtr; |
| 161 CCLayerImpl* m_layerAfterPtr; | 161 LayerImpl* m_layerAfterPtr; |
| 162 CCDelegatedRendererLayerImpl* m_delegatedRendererLayerPtr; | 162 DelegatedRendererLayerImpl* m_delegatedRendererLayerPtr; |
| 163 }; | 163 }; |
| 164 | 164 |
| 165 TEST_F(CCDelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) | 165 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) |
| 166 { | 166 { |
| 167 CCLayerTreeHostImpl::FrameData frame; | 167 LayerTreeHostImpl::FrameData frame; |
| 168 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 168 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 169 m_hostImpl->drawLayers(frame); | 169 m_hostImpl->drawLayers(frame); |
| 170 m_hostImpl->didDrawAllLayers(frame); | 170 m_hostImpl->didDrawAllLayers(frame); |
| 171 | 171 |
| 172 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 172 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
| 173 ASSERT_EQ(5u, frame.renderPasses.size()); | 173 ASSERT_EQ(5u, frame.renderPasses.size()); |
| 174 | 174 |
| 175 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 175 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
| 176 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 176 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); |
| 177 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 177 EXPECT_EQ(1, frame.renderPasses[1]->id().index); |
| 178 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 178 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); |
| 179 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 179 EXPECT_EQ(2, frame.renderPasses[2]->id().index); |
| 180 // And all other RenderPasses should be non-delegated. | 180 // And all other RenderPasses should be non-delegated. |
| 181 EXPECT_NE(4, frame.renderPasses[0]->id().layerId); | 181 EXPECT_NE(4, frame.renderPasses[0]->id().layerId); |
| 182 EXPECT_EQ(0, frame.renderPasses[0]->id().index); | 182 EXPECT_EQ(0, frame.renderPasses[0]->id().index); |
| 183 EXPECT_NE(4, frame.renderPasses[3]->id().layerId); | 183 EXPECT_NE(4, frame.renderPasses[3]->id().layerId); |
| 184 EXPECT_EQ(0, frame.renderPasses[3]->id().index); | 184 EXPECT_EQ(0, frame.renderPasses[3]->id().index); |
| 185 EXPECT_NE(4, frame.renderPasses[4]->id().layerId); | 185 EXPECT_NE(4, frame.renderPasses[4]->id().layerId); |
| 186 EXPECT_EQ(0, frame.renderPasses[4]->id().index); | 186 EXPECT_EQ(0, frame.renderPasses[4]->id().index); |
| 187 | 187 |
| 188 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. | 188 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. |
| 189 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[1]->outputRect()); | 189 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[1]->outputRect()); |
| 190 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[2]->outputRect()); | 190 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[2]->outputRect()); |
| 191 } | 191 } |
| 192 | 192 |
| 193 TEST_F(CCDelegatedRendererLayerImplTestSimple, AddsQuadsToContributingRenderPass
es) | 193 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToContributingRenderPasses
) |
| 194 { | 194 { |
| 195 CCLayerTreeHostImpl::FrameData frame; | 195 LayerTreeHostImpl::FrameData frame; |
| 196 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 196 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 197 m_hostImpl->drawLayers(frame); | 197 m_hostImpl->drawLayers(frame); |
| 198 m_hostImpl->didDrawAllLayers(frame); | 198 m_hostImpl->didDrawAllLayers(frame); |
| 199 | 199 |
| 200 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 200 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
| 201 ASSERT_EQ(5u, frame.renderPasses.size()); | 201 ASSERT_EQ(5u, frame.renderPasses.size()); |
| 202 | 202 |
| 203 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 203 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
| 204 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 204 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); |
| 205 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 205 EXPECT_EQ(1, frame.renderPasses[1]->id().index); |
| 206 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 206 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); |
| 207 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 207 EXPECT_EQ(2, frame.renderPasses[2]->id().index); |
| 208 | 208 |
| 209 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. | 209 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. |
| 210 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 210 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
| 211 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); | 211 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); |
| 212 | 212 |
| 213 // Verify it added the right quads. | 213 // Verify it added the right quads. |
| 214 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 214 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); |
| 215 EXPECT_RECT_EQ(IntRect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->qu
adRect()); | 215 EXPECT_RECT_EQ(IntRect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->qu
adRect()); |
| 216 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->qu
adRect()); | 216 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->qu
adRect()); |
| 217 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 217 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
| 218 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); | 218 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); |
| 219 } | 219 } |
| 220 | 220 |
| 221 TEST_F(CCDelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) | 221 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) |
| 222 { | 222 { |
| 223 CCLayerTreeHostImpl::FrameData frame; | 223 LayerTreeHostImpl::FrameData frame; |
| 224 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 224 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 225 m_hostImpl->drawLayers(frame); | 225 m_hostImpl->drawLayers(frame); |
| 226 m_hostImpl->didDrawAllLayers(frame); | 226 m_hostImpl->didDrawAllLayers(frame); |
| 227 | 227 |
| 228 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 228 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
| 229 ASSERT_EQ(5u, frame.renderPasses.size()); | 229 ASSERT_EQ(5u, frame.renderPasses.size()); |
| 230 | 230 |
| 231 // The layer's target is the RenderPass from m_layerAfter. | 231 // The layer's target is the RenderPass from m_layerAfter. |
| 232 EXPECT_EQ(CCRenderPass::Id(3, 0), frame.renderPasses[3]->id()); | 232 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id()); |
| 233 | 233 |
| 234 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. | 234 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. |
| 235 // The m_layerAfter also adds one quad. | 235 // The m_layerAfter also adds one quad. |
| 236 ASSERT_EQ(2u, frame.renderPasses[3]->quadList().size()); | 236 ASSERT_EQ(2u, frame.renderPasses[3]->quadList().size()); |
| 237 | 237 |
| 238 // Verify it added the right quads. | 238 // Verify it added the right quads. |
| 239 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->qu
adRect()); | 239 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->qu
adRect()); |
| 240 | 240 |
| 241 // Its target layer should have a quad as well. | 241 // Its target layer should have a quad as well. |
| 242 EXPECT_RECT_EQ(IntRect(0, 0, 15, 15), frame.renderPasses[3]->quadList()[1]->
quadRect()); | 242 EXPECT_RECT_EQ(IntRect(0, 0, 15, 15), frame.renderPasses[3]->quadList()[1]->
quadRect()); |
| 243 } | 243 } |
| 244 | 244 |
| 245 TEST_F(CCDelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifie
dForTheTarget) | 245 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF
orTheTarget) |
| 246 { | 246 { |
| 247 CCLayerTreeHostImpl::FrameData frame; | 247 LayerTreeHostImpl::FrameData frame; |
| 248 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 248 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 249 m_hostImpl->drawLayers(frame); | 249 m_hostImpl->drawLayers(frame); |
| 250 m_hostImpl->didDrawAllLayers(frame); | 250 m_hostImpl->didDrawAllLayers(frame); |
| 251 | 251 |
| 252 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 252 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
| 253 ASSERT_EQ(5u, frame.renderPasses.size()); | 253 ASSERT_EQ(5u, frame.renderPasses.size()); |
| 254 | 254 |
| 255 // The DelegatedRendererLayer is at position 3,3 compared to its target, and
has a translation transform of 1,1. | 255 // The DelegatedRendererLayer is at position 3,3 compared to its target, and
has a translation transform of 1,1. |
| 256 // So its root RenderPass' quads should all be transformed by that combined
amount. | 256 // So its root RenderPass' quads should all be transformed by that combined
amount. |
| 257 WebTransformationMatrix transform; | 257 WebTransformationMatrix transform; |
| 258 transform.translate(4, 4); | 258 transform.translate(4, 4); |
| 259 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, frame.renderPasses[3]->quadList()
[0]->quadTransform()); | 259 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, frame.renderPasses[3]->quadList()
[0]->quadTransform()); |
| 260 | 260 |
| 261 // Quads from non-root RenderPasses should not be shifted though. | 261 // Quads from non-root RenderPasses should not be shifted though. |
| 262 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 262 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); |
| 263 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quadList()[0]->quadTransform()); | 263 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quadList()[0]->quadTransform()); |
| 264 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quadList()[1]->quadTransform()); | 264 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quadList()[1]->quadTransform()); |
| 265 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 265 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
| 266 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[1]->quadList()[0]->quadTransform()); | 266 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[1]->quadList()[0]->quadTransform()); |
| 267 } | 267 } |
| 268 | 268 |
| 269 class CCDelegatedRendererLayerImplTestOwnSurface : public CCDelegatedRendererLay
erImplTestSimple { | 269 class DelegatedRendererLayerImplTestOwnSurface : public DelegatedRendererLayerIm
plTestSimple { |
| 270 public: | 270 public: |
| 271 CCDelegatedRendererLayerImplTestOwnSurface() | 271 DelegatedRendererLayerImplTestOwnSurface() |
| 272 : CCDelegatedRendererLayerImplTestSimple() | 272 : DelegatedRendererLayerImplTestSimple() |
| 273 { | 273 { |
| 274 m_delegatedRendererLayerPtr->setForceRenderSurface(true); | 274 m_delegatedRendererLayerPtr->setForceRenderSurface(true); |
| 275 } | 275 } |
| 276 }; | 276 }; |
| 277 | 277 |
| 278 TEST_F(CCDelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) | 278 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) |
| 279 { | 279 { |
| 280 CCLayerTreeHostImpl::FrameData frame; | 280 LayerTreeHostImpl::FrameData frame; |
| 281 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 281 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 282 m_hostImpl->drawLayers(frame); | 282 m_hostImpl->drawLayers(frame); |
| 283 m_hostImpl->didDrawAllLayers(frame); | 283 m_hostImpl->didDrawAllLayers(frame); |
| 284 | 284 |
| 285 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 285 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
| 286 ASSERT_EQ(6u, frame.renderPasses.size()); | 286 ASSERT_EQ(6u, frame.renderPasses.size()); |
| 287 | 287 |
| 288 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 288 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
| 289 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 289 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); |
| 290 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 290 EXPECT_EQ(1, frame.renderPasses[1]->id().index); |
| 291 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 291 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); |
| 292 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 292 EXPECT_EQ(2, frame.renderPasses[2]->id().index); |
| 293 // The DelegatedRendererLayer should have added a RenderPass for its surface
to the frame. | 293 // The DelegatedRendererLayer should have added a RenderPass for its surface
to the frame. |
| 294 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 294 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); |
| 295 EXPECT_EQ(0, frame.renderPasses[3]->id().index); | 295 EXPECT_EQ(0, frame.renderPasses[3]->id().index); |
| 296 // And all other RenderPasses should be non-delegated. | 296 // And all other RenderPasses should be non-delegated. |
| 297 EXPECT_NE(4, frame.renderPasses[0]->id().layerId); | 297 EXPECT_NE(4, frame.renderPasses[0]->id().layerId); |
| 298 EXPECT_EQ(0, frame.renderPasses[0]->id().index); | 298 EXPECT_EQ(0, frame.renderPasses[0]->id().index); |
| 299 EXPECT_NE(4, frame.renderPasses[4]->id().layerId); | 299 EXPECT_NE(4, frame.renderPasses[4]->id().layerId); |
| 300 EXPECT_EQ(0, frame.renderPasses[4]->id().index); | 300 EXPECT_EQ(0, frame.renderPasses[4]->id().index); |
| 301 EXPECT_NE(4, frame.renderPasses[5]->id().layerId); | 301 EXPECT_NE(4, frame.renderPasses[5]->id().layerId); |
| 302 EXPECT_EQ(0, frame.renderPasses[5]->id().index); | 302 EXPECT_EQ(0, frame.renderPasses[5]->id().index); |
| 303 | 303 |
| 304 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. | 304 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. |
| 305 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[1]->outputRect()); | 305 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[1]->outputRect()); |
| 306 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[2]->outputRect()); | 306 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[2]->outputRect()); |
| 307 } | 307 } |
| 308 | 308 |
| 309 TEST_F(CCDelegatedRendererLayerImplTestOwnSurface, AddsQuadsToContributingRender
Passes) | 309 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToContributingRenderPa
sses) |
| 310 { | 310 { |
| 311 CCLayerTreeHostImpl::FrameData frame; | 311 LayerTreeHostImpl::FrameData frame; |
| 312 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 312 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 313 m_hostImpl->drawLayers(frame); | 313 m_hostImpl->drawLayers(frame); |
| 314 m_hostImpl->didDrawAllLayers(frame); | 314 m_hostImpl->didDrawAllLayers(frame); |
| 315 | 315 |
| 316 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 316 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
| 317 ASSERT_EQ(6u, frame.renderPasses.size()); | 317 ASSERT_EQ(6u, frame.renderPasses.size()); |
| 318 | 318 |
| 319 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 319 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
| 320 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 320 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); |
| 321 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 321 EXPECT_EQ(1, frame.renderPasses[1]->id().index); |
| 322 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 322 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); |
| 323 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 323 EXPECT_EQ(2, frame.renderPasses[2]->id().index); |
| 324 | 324 |
| 325 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. | 325 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. |
| 326 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 326 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
| 327 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); | 327 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); |
| 328 | 328 |
| 329 // Verify it added the right quads. | 329 // Verify it added the right quads. |
| 330 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 330 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); |
| 331 EXPECT_RECT_EQ(IntRect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->qu
adRect()); | 331 EXPECT_RECT_EQ(IntRect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->qu
adRect()); |
| 332 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->qu
adRect()); | 332 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->qu
adRect()); |
| 333 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 333 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
| 334 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); | 334 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); |
| 335 } | 335 } |
| 336 | 336 |
| 337 TEST_F(CCDelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) | 337 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) |
| 338 { | 338 { |
| 339 CCLayerTreeHostImpl::FrameData frame; | 339 LayerTreeHostImpl::FrameData frame; |
| 340 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 340 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 341 m_hostImpl->drawLayers(frame); | 341 m_hostImpl->drawLayers(frame); |
| 342 m_hostImpl->didDrawAllLayers(frame); | 342 m_hostImpl->didDrawAllLayers(frame); |
| 343 | 343 |
| 344 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 344 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
| 345 ASSERT_EQ(6u, frame.renderPasses.size()); | 345 ASSERT_EQ(6u, frame.renderPasses.size()); |
| 346 | 346 |
| 347 // The layer's target is the RenderPass owned by itself. | 347 // The layer's target is the RenderPass owned by itself. |
| 348 EXPECT_EQ(CCRenderPass::Id(4, 0), frame.renderPasses[3]->id()); | 348 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id()); |
| 349 | 349 |
| 350 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. | 350 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. |
| 351 // The m_layerAfter also adds one quad. | 351 // The m_layerAfter also adds one quad. |
| 352 ASSERT_EQ(1u, frame.renderPasses[3]->quadList().size()); | 352 ASSERT_EQ(1u, frame.renderPasses[3]->quadList().size()); |
| 353 | 353 |
| 354 // Verify it added the right quads. | 354 // Verify it added the right quads. |
| 355 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->qu
adRect()); | 355 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->qu
adRect()); |
| 356 } | 356 } |
| 357 | 357 |
| 358 TEST_F(CCDelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNot
ModifiedForTheTarget) | 358 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo
difiedForTheTarget) |
| 359 { | 359 { |
| 360 CCLayerTreeHostImpl::FrameData frame; | 360 LayerTreeHostImpl::FrameData frame; |
| 361 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 361 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 362 m_hostImpl->drawLayers(frame); | 362 m_hostImpl->drawLayers(frame); |
| 363 m_hostImpl->didDrawAllLayers(frame); | 363 m_hostImpl->didDrawAllLayers(frame); |
| 364 | 364 |
| 365 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 365 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
| 366 ASSERT_EQ(6u, frame.renderPasses.size()); | 366 ASSERT_EQ(6u, frame.renderPasses.size()); |
| 367 | 367 |
| 368 // Because the DelegatedRendererLayer owns a RenderSurface, its root RenderP
ass' quads do not need to be | 368 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root Ren
derPass' quads do not need to be |
| 369 // modified at all. | 369 // modified at all. |
| 370 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[3]->quadList()[0]->quadTransform()); | 370 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[3]->quadList()[0]->quadTransform()); |
| 371 | 371 |
| 372 // Quads from non-root RenderPasses should not be shifted though. | 372 // Quads from non-root RenderPasses should not be shifted though. |
| 373 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 373 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); |
| 374 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quadList()[0]->quadTransform()); | 374 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quadList()[0]->quadTransform()); |
| 375 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quadList()[1]->quadTransform()); | 375 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quadList()[1]->quadTransform()); |
| 376 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 376 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
| 377 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[1]->quadList()[0]->quadTransform()); | 377 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[1]->quadList()[0]->quadTransform()); |
| 378 } | 378 } |
| 379 | 379 |
| 380 class CCDelegatedRendererLayerImplTestSharedData : public CCDelegatedRendererLay
erImplTest { | 380 class DelegatedRendererLayerImplTestSharedData : public DelegatedRendererLayerIm
plTest { |
| 381 public: | 381 public: |
| 382 CCDelegatedRendererLayerImplTestSharedData() | 382 DelegatedRendererLayerImplTestSharedData() |
| 383 : CCDelegatedRendererLayerImplTest() | 383 : DelegatedRendererLayerImplTest() |
| 384 { | 384 { |
| 385 scoped_ptr<CCLayerImpl> rootLayer = CCLayerImpl::create(1); | 385 scoped_ptr<LayerImpl> rootLayer = LayerImpl::create(1); |
| 386 scoped_ptr<CCDelegatedRendererLayerImpl> delegatedRendererLayer = CCDele
gatedRendererLayerImpl::create(2); | 386 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(2); |
| 387 | 387 |
| 388 m_hostImpl->setViewportSize(IntSize(100, 100), IntSize(100, 100)); | 388 m_hostImpl->setViewportSize(IntSize(100, 100), IntSize(100, 100)); |
| 389 rootLayer->setBounds(IntSize(100, 100)); | 389 rootLayer->setBounds(IntSize(100, 100)); |
| 390 | 390 |
| 391 delegatedRendererLayer->setPosition(IntPoint(20, 20)); | 391 delegatedRendererLayer->setPosition(IntPoint(20, 20)); |
| 392 delegatedRendererLayer->setBounds(IntSize(20, 20)); | 392 delegatedRendererLayer->setBounds(IntSize(20, 20)); |
| 393 delegatedRendererLayer->setContentBounds(IntSize(20, 20)); | 393 delegatedRendererLayer->setContentBounds(IntSize(20, 20)); |
| 394 delegatedRendererLayer->setDrawsContent(true); | 394 delegatedRendererLayer->setDrawsContent(true); |
| 395 WebTransformationMatrix transform; | 395 WebTransformationMatrix transform; |
| 396 transform.translate(10, 10); | 396 transform.translate(10, 10); |
| 397 delegatedRendererLayer->setTransform(transform); | 397 delegatedRendererLayer->setTransform(transform); |
| 398 | 398 |
| 399 ScopedPtrVector<CCRenderPass> delegatedRenderPasses; | 399 ScopedPtrVector<RenderPass> delegatedRenderPasses; |
| 400 IntRect passRect(0, 0, 50, 50); | 400 IntRect passRect(0, 0, 50, 50); |
| 401 CCTestRenderPass* pass = addRenderPass(delegatedRenderPasses, CCRenderPa
ss::Id(9, 6), passRect, WebTransformationMatrix()); | 401 TestRenderPass* pass = addRenderPass(delegatedRenderPasses, RenderPass::
Id(9, 6), passRect, WebTransformationMatrix()); |
| 402 MockCCQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList())
; | 402 MockQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); |
| 403 CCAppendQuadsData data(pass->id()); | 403 AppendQuadsData data(pass->id()); |
| 404 CCSharedQuadState* sharedState = quadSink.useSharedQuadState(CCSharedQua
dState::create(WebTransformationMatrix(), passRect, passRect, 1, false)); | 404 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadSta
te::create(WebTransformationMatrix(), passRect, passRect, 1, false)); |
| 405 quadSink.append(CCSolidColorDrawQuad::create(sharedState, IntRect(0, 0,
10, 10), 1u).PassAs<CCDrawQuad>(), data); | 405 quadSink.append(SolidColorDrawQuad::create(sharedState, IntRect(0, 0, 10
, 10), 1u).PassAs<DrawQuad>(), data); |
| 406 quadSink.append(CCSolidColorDrawQuad::create(sharedState, IntRect(0, 10,
10, 10), 2u).PassAs<CCDrawQuad>(), data); | 406 quadSink.append(SolidColorDrawQuad::create(sharedState, IntRect(0, 10, 1
0, 10), 2u).PassAs<DrawQuad>(), data); |
| 407 quadSink.append(CCSolidColorDrawQuad::create(sharedState, IntRect(10, 0,
10, 10), 3u).PassAs<CCDrawQuad>(), data); | 407 quadSink.append(SolidColorDrawQuad::create(sharedState, IntRect(10, 0, 1
0, 10), 3u).PassAs<DrawQuad>(), data); |
| 408 quadSink.append(CCSolidColorDrawQuad::create(sharedState, IntRect(10, 10
, 10, 10), 4u).PassAs<CCDrawQuad>(), data); | 408 quadSink.append(SolidColorDrawQuad::create(sharedState, IntRect(10, 10,
10, 10), 4u).PassAs<DrawQuad>(), data); |
| 409 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); | 409 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); |
| 410 | 410 |
| 411 // The RenderPasses should be taken by the layer. | 411 // The RenderPasses should be taken by the layer. |
| 412 EXPECT_EQ(0u, delegatedRenderPasses.size()); | 412 EXPECT_EQ(0u, delegatedRenderPasses.size()); |
| 413 | 413 |
| 414 m_rootLayerPtr = rootLayer.get(); | 414 m_rootLayerPtr = rootLayer.get(); |
| 415 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); | 415 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); |
| 416 | 416 |
| 417 rootLayer->addChild(delegatedRendererLayer.PassAs<CCLayerImpl>()); | 417 rootLayer->addChild(delegatedRendererLayer.PassAs<LayerImpl>()); |
| 418 | 418 |
| 419 m_hostImpl->setRootLayer(rootLayer.Pass()); | 419 m_hostImpl->setRootLayer(rootLayer.Pass()); |
| 420 } | 420 } |
| 421 | 421 |
| 422 protected: | 422 protected: |
| 423 CCLayerImpl* m_rootLayerPtr; | 423 LayerImpl* m_rootLayerPtr; |
| 424 CCDelegatedRendererLayerImpl* m_delegatedRendererLayerPtr; | 424 DelegatedRendererLayerImpl* m_delegatedRendererLayerPtr; |
| 425 }; | 425 }; |
| 426 | 426 |
| 427 TEST_F(CCDelegatedRendererLayerImplTestSharedData, SharedData) | 427 TEST_F(DelegatedRendererLayerImplTestSharedData, SharedData) |
| 428 { | 428 { |
| 429 CCLayerTreeHostImpl::FrameData frame; | 429 LayerTreeHostImpl::FrameData frame; |
| 430 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 430 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 431 m_hostImpl->drawLayers(frame); | 431 m_hostImpl->drawLayers(frame); |
| 432 m_hostImpl->didDrawAllLayers(frame); | 432 m_hostImpl->didDrawAllLayers(frame); |
| 433 | 433 |
| 434 ASSERT_EQ(1u, frame.renderPasses.size()); | 434 ASSERT_EQ(1u, frame.renderPasses.size()); |
| 435 EXPECT_EQ(1, frame.renderPasses[0]->id().layerId); | 435 EXPECT_EQ(1, frame.renderPasses[0]->id().layerId); |
| 436 EXPECT_EQ(0, frame.renderPasses[0]->id().index); | 436 EXPECT_EQ(0, frame.renderPasses[0]->id().index); |
| 437 | 437 |
| 438 const CCQuadList& quadList = frame.renderPasses[0]->quadList(); | 438 const QuadList& quadList = frame.renderPasses[0]->quadList(); |
| 439 ASSERT_EQ(4u, quadList.size()); | 439 ASSERT_EQ(4u, quadList.size()); |
| 440 | 440 |
| 441 // All quads should share the same state. | 441 // All quads should share the same state. |
| 442 const CCSharedQuadState* sharedState = quadList[0]->sharedQuadState(); | 442 const SharedQuadState* sharedState = quadList[0]->sharedQuadState(); |
| 443 EXPECT_EQ(sharedState, quadList[1]->sharedQuadState()); | 443 EXPECT_EQ(sharedState, quadList[1]->sharedQuadState()); |
| 444 EXPECT_EQ(sharedState, quadList[2]->sharedQuadState()); | 444 EXPECT_EQ(sharedState, quadList[2]->sharedQuadState()); |
| 445 EXPECT_EQ(sharedState, quadList[3]->sharedQuadState()); | 445 EXPECT_EQ(sharedState, quadList[3]->sharedQuadState()); |
| 446 | 446 |
| 447 // The state should be transformed only once. | 447 // The state should be transformed only once. |
| 448 EXPECT_RECT_EQ(IntRect(30, 30, 50, 50), sharedState->clippedRectInTarget); | 448 EXPECT_RECT_EQ(IntRect(30, 30, 50, 50), sharedState->clippedRectInTarget); |
| 449 WebTransformationMatrix expected; | 449 WebTransformationMatrix expected; |
| 450 expected.translate(30, 30); | 450 expected.translate(30, 30); |
| 451 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->quadTransform); | 451 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->quadTransform); |
| 452 } | 452 } |
| 453 | 453 |
| 454 } // namespace | 454 } // namespace |
| OLD | NEW |