| Index: cc/CCLayerTreeHostImplTest.cpp
|
| diff --git a/cc/CCLayerTreeHostImplTest.cpp b/cc/CCLayerTreeHostImplTest.cpp
|
| index f897409b69609f66d8c49b165854414ae7aa8efb..c1edc70cdd544e07c5dbe90368482c45a6ca34d0 100644
|
| --- a/cc/CCLayerTreeHostImplTest.cpp
|
| +++ b/cc/CCLayerTreeHostImplTest.cpp
|
| @@ -7,6 +7,7 @@
|
| #include "CCLayerTreeHostImpl.h"
|
|
|
| #include "CCAnimationTestCommon.h"
|
| +#include "CCDelegatedRendererLayerImpl.h"
|
| #include "CCGeometryTestUtils.h"
|
| #include "CCHeadsUpDisplayLayerImpl.h"
|
| #include "CCIOSurfaceLayerImpl.h"
|
| @@ -15,6 +16,7 @@
|
| #include "CCLayerTilingData.h"
|
| #include "CCQuadSink.h"
|
| #include "CCRenderPassDrawQuad.h"
|
| +#include "CCRenderPassTestCommon.h"
|
| #include "CCRendererGL.h"
|
| #include "CCScrollbarGeometryFixedThumb.h"
|
| #include "CCScrollbarLayerImpl.h"
|
| @@ -22,6 +24,7 @@
|
| #include "CCSingleThreadProxy.h"
|
| #include "CCSolidColorDrawQuad.h"
|
| #include "CCTestCommon.h"
|
| +#include "CCTextureDrawQuad.h"
|
| #include "CCTextureLayerImpl.h"
|
| #include "CCTileDrawQuad.h"
|
| #include "CCTiledLayerImpl.h"
|
| @@ -2480,6 +2483,20 @@ protected:
|
| }
|
| };
|
|
|
| +static inline PassOwnPtr<CCRenderPass> createRenderPassWithResource(CCResourceProvider* provider)
|
| +{
|
| + CCResourceProvider::ResourceId resourceId = provider->createResource(0, IntSize(1, 1), GraphicsContext3D::RGBA, CCResourceProvider::TextureUsageAny);
|
| +
|
| + OwnPtr<CCRenderPass> pass = CCRenderPass::create(CCRenderPass::Id(1, 1), IntRect(0, 0, 1, 1), WebTransformationMatrix());
|
| + OwnPtr<CCSharedQuadState> sharedState = CCSharedQuadState::create(WebTransformationMatrix(), IntRect(0, 0, 1, 1), IntRect(0, 0, 1, 1), 1, false);
|
| + OwnPtr<CCTextureDrawQuad> quad = CCTextureDrawQuad::create(sharedState.get(), IntRect(0, 0, 1, 1), resourceId, false, FloatRect(0, 0, 1, 1), false);
|
| +
|
| + static_cast<CCTestRenderPass*>(pass.get())->appendSharedQuadState(sharedState.release());
|
| + static_cast<CCTestRenderPass*>(pass.get())->appendQuad(quad.release());
|
| +
|
| + return pass.release();
|
| +}
|
| +
|
| TEST_F(CCLayerTreeHostImplTest, dontUseOldResourcesAfterLostContext)
|
| {
|
| OwnPtr<CCLayerImpl> rootLayer(CCLayerImpl::create(1));
|
| @@ -2546,7 +2563,6 @@ TEST_F(CCLayerTreeHostImplTest, dontUseOldResourcesAfterLostContext)
|
| rootLayer->addChild(hudLayer.release());
|
|
|
| OwnPtr<FakeScrollbarLayerImpl> scrollbarLayer(FakeScrollbarLayerImpl::create(8));
|
| - scrollbarLayer->setLayerTreeHostImpl(m_hostImpl.get());
|
| scrollbarLayer->setBounds(IntSize(10, 10));
|
| scrollbarLayer->setContentBounds(IntSize(10, 10));
|
| scrollbarLayer->setDrawsContent(true);
|
| @@ -2554,6 +2570,17 @@ TEST_F(CCLayerTreeHostImplTest, dontUseOldResourcesAfterLostContext)
|
| scrollbarLayer->createResources(m_hostImpl->resourceProvider());
|
| rootLayer->addChild(scrollbarLayer.release());
|
|
|
| + OwnPtr<CCDelegatedRendererLayerImpl> delegatedRendererLayer(CCDelegatedRendererLayerImpl::create(9));
|
| + delegatedRendererLayer->setBounds(IntSize(10, 10));
|
| + delegatedRendererLayer->setContentBounds(IntSize(10, 10));
|
| + delegatedRendererLayer->setDrawsContent(true);
|
| + delegatedRendererLayer->setLayerTreeHostImpl(m_hostImpl.get());
|
| + OwnPtrVector<CCRenderPass> passList;
|
| + passList.append(createRenderPassWithResource(m_hostImpl->resourceProvider()));
|
| + delegatedRendererLayer->setRenderPasses(passList);
|
| + EXPECT_TRUE(passList.isEmpty());
|
| + rootLayer->addChild(delegatedRendererLayer.release());
|
| +
|
| // Use a context that supports IOSurfaces
|
| m_hostImpl->initializeRenderer(FakeWebCompositorOutputSurface::create(adoptPtr(new FakeWebGraphicsContext3DWithIOSurface)), UnthrottledUploader);
|
|
|
| @@ -3862,16 +3889,6 @@ struct RenderPassRemovalTestData : public CCLayerTreeHostImpl::FrameData {
|
| OwnPtr<CCSharedQuadState> sharedQuadState;
|
| };
|
|
|
| -class CCTestRenderPass: public CCRenderPass {
|
| -public:
|
| - static PassOwnPtr<CCRenderPass> create(CCRenderPass::Id id, IntRect outputRect, const WebTransformationMatrix& rootTransform) { return adoptPtr(new CCTestRenderPass(id, outputRect, rootTransform)); }
|
| -
|
| - void appendQuad(PassOwnPtr<CCDrawQuad> quad) { m_quadList.append(quad); }
|
| -
|
| -protected:
|
| - CCTestRenderPass(CCRenderPass::Id id, IntRect outputRect, const WebTransformationMatrix& rootTransform) : CCRenderPass(id, outputRect, rootTransform) { }
|
| -};
|
| -
|
| class CCTestRenderer : public CCRendererGL, public CCRendererClient {
|
| public:
|
| static PassOwnPtr<CCTestRenderer> create(CCResourceProvider* resourceProvider)
|
| @@ -3917,7 +3934,7 @@ static void configureRenderPassTestData(const char* testScript, RenderPassRemova
|
|
|
| // Pre-create root pass
|
| CCRenderPass::Id rootRenderPassId = CCRenderPass::Id(testScript[0], testScript[1]);
|
| - OwnPtr<CCRenderPass> rootRenderPass = CCTestRenderPass::create(rootRenderPassId, IntRect(), WebTransformationMatrix());
|
| + OwnPtr<CCRenderPass> rootRenderPass = CCRenderPass::create(rootRenderPassId, IntRect(), WebTransformationMatrix());
|
| testData.renderPassCache.insert(std::pair<CCRenderPass::Id, RenderPassCacheEntry>(rootRenderPassId, RenderPassCacheEntry(rootRenderPass.release())));
|
| while (*currentChar) {
|
| int layerId = *currentChar;
|
|
|