diff options
Diffstat (limited to 'Source/WebKit/chromium/tests/CCRenderSurfaceTest.cpp')
-rw-r--r-- | Source/WebKit/chromium/tests/CCRenderSurfaceTest.cpp | 184 |
1 files changed, 0 insertions, 184 deletions
diff --git a/Source/WebKit/chromium/tests/CCRenderSurfaceTest.cpp b/Source/WebKit/chromium/tests/CCRenderSurfaceTest.cpp deleted file mode 100644 index d66b8c951..000000000 --- a/Source/WebKit/chromium/tests/CCRenderSurfaceTest.cpp +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright (C) 2011 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "config.h" - -#include "CCRenderSurface.h" - -#include "CCAppendQuadsData.h" -#include "CCLayerImpl.h" -#include "CCRenderPassSink.h" -#include "CCSharedQuadState.h" -#include "CCSingleThreadProxy.h" -#include "MockCCQuadCuller.h" -#include <gmock/gmock.h> -#include <gtest/gtest.h> -#include <public/WebTransformationMatrix.h> - -using namespace WebCore; -using WebKit::WebTransformationMatrix; - -namespace { - -#define EXECUTE_AND_VERIFY_SURFACE_CHANGED(codeToTest) \ - renderSurface->resetPropertyChangedFlag(); \ - codeToTest; \ - EXPECT_TRUE(renderSurface->surfacePropertyChanged()) - -#define EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(codeToTest) \ - renderSurface->resetPropertyChangedFlag(); \ - codeToTest; \ - EXPECT_FALSE(renderSurface->surfacePropertyChanged()) - -TEST(CCRenderSurfaceTest, verifySurfaceChangesAreTrackedProperly) -{ - // - // This test checks that surfacePropertyChanged() has the correct behavior. - // - - // This will fake that we are on the correct thread for testing purposes. - DebugScopedSetImplThread setImplThread; - - OwnPtr<CCLayerImpl> owningLayer = CCLayerImpl::create(1); - owningLayer->createRenderSurface(); - ASSERT_TRUE(owningLayer->renderSurface()); - CCRenderSurface* renderSurface = owningLayer->renderSurface(); - IntRect testRect = IntRect(IntPoint(3, 4), IntSize(5, 6)); - owningLayer->resetAllChangeTrackingForSubtree(); - - // Currently, the contentRect, clipRect, and owningLayer->layerPropertyChanged() are - // the only sources of change. - EXECUTE_AND_VERIFY_SURFACE_CHANGED(renderSurface->setClipRect(testRect)); - EXECUTE_AND_VERIFY_SURFACE_CHANGED(renderSurface->setContentRect(testRect)); - - owningLayer->setOpacity(0.5f); - EXPECT_TRUE(renderSurface->surfacePropertyChanged()); - owningLayer->resetAllChangeTrackingForSubtree(); - - // Setting the surface properties to the same values again should not be considered "change". - EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->setClipRect(testRect)); - EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->setContentRect(testRect)); - - OwnPtr<CCLayerImpl> dummyMask = CCLayerImpl::create(1); - WebTransformationMatrix dummyMatrix; - dummyMatrix.translate(1.0, 2.0); - - // The rest of the surface properties are either internal and should not cause change, - // or they are already accounted for by the owninglayer->layerPropertyChanged(). - EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->setDrawOpacity(0.5)); - EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->setDrawTransform(dummyMatrix)); - EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->setReplicaDrawTransform(dummyMatrix)); - EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->clearLayerList()); -} - -TEST(CCRenderSurfaceTest, sanityCheckSurfaceCreatesCorrectSharedQuadState) -{ - // This will fake that we are on the correct thread for testing purposes. - DebugScopedSetImplThread setImplThread; - - OwnPtr<CCLayerImpl> rootLayer = CCLayerImpl::create(1); - - OwnPtr<CCLayerImpl> owningLayer = CCLayerImpl::create(2); - owningLayer->createRenderSurface(); - ASSERT_TRUE(owningLayer->renderSurface()); - owningLayer->setRenderTarget(owningLayer.get()); - CCRenderSurface* renderSurface = owningLayer->renderSurface(); - - rootLayer->addChild(owningLayer.release()); - - IntRect contentRect = IntRect(IntPoint::zero(), IntSize(50, 50)); - IntRect clipRect = IntRect(IntPoint(5, 5), IntSize(40, 40)); - WebTransformationMatrix origin; - - origin.translate(30, 40); - - renderSurface->setDrawTransform(origin); - renderSurface->setContentRect(contentRect); - renderSurface->setClipRect(clipRect); - renderSurface->setDrawOpacity(1); - - CCQuadList quadList; - CCSharedQuadStateList sharedStateList; - MockCCQuadCuller mockQuadCuller(quadList, sharedStateList); - CCAppendQuadsData appendQuadsData; - - bool forReplica = false; - renderSurface->appendQuads(mockQuadCuller, appendQuadsData, forReplica, CCRenderPass::Id(2, 0)); - - ASSERT_EQ(1u, sharedStateList.size()); - CCSharedQuadState* sharedQuadState = sharedStateList[0].get(); - - EXPECT_EQ(30, sharedQuadState->quadTransform.m41()); - EXPECT_EQ(40, sharedQuadState->quadTransform.m42()); - EXPECT_EQ(contentRect, IntRect(sharedQuadState->visibleContentRect)); - EXPECT_EQ(1, sharedQuadState->opacity); - EXPECT_FALSE(sharedQuadState->opaque); -} - -class TestCCRenderPassSink : public CCRenderPassSink { -public: - virtual void appendRenderPass(PassOwnPtr<CCRenderPass> renderPass) OVERRIDE { m_renderPasses.append(renderPass); } - - const Vector<OwnPtr<CCRenderPass> >& renderPasses() const { return m_renderPasses; } - -private: - Vector<OwnPtr<CCRenderPass> > m_renderPasses; - -}; - -TEST(CCRenderSurfaceTest, sanityCheckSurfaceCreatesCorrectRenderPass) -{ - // This will fake that we are on the correct thread for testing purposes. - DebugScopedSetImplThread setImplThread; - - OwnPtr<CCLayerImpl> rootLayer = CCLayerImpl::create(1); - - OwnPtr<CCLayerImpl> owningLayer = CCLayerImpl::create(2); - owningLayer->createRenderSurface(); - ASSERT_TRUE(owningLayer->renderSurface()); - owningLayer->setRenderTarget(owningLayer.get()); - CCRenderSurface* renderSurface = owningLayer->renderSurface(); - - rootLayer->addChild(owningLayer.release()); - - IntRect contentRect = IntRect(IntPoint::zero(), IntSize(50, 50)); - WebTransformationMatrix origin; - origin.translate(30, 40); - - renderSurface->setScreenSpaceTransform(origin); - renderSurface->setContentRect(contentRect); - - TestCCRenderPassSink passSink; - - renderSurface->appendRenderPasses(passSink); - - ASSERT_EQ(1u, passSink.renderPasses().size()); - CCRenderPass* pass = passSink.renderPasses()[0].get(); - - EXPECT_EQ(CCRenderPass::Id(2, 0), pass->id()); - EXPECT_EQ(contentRect, pass->outputRect()); - EXPECT_EQ(origin, pass->transformToRootTarget()); -} - -} // namespace |