Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(287)

Side by Side Diff: cc/CCRenderSurfaceTest.cpp

Issue 11108020: [cc] Change cc_tests.gyp filenames to Chromium style (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/CCRenderSurfaceFiltersTest.cpp ('k') | cc/CCRendererGLTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "config.h"
6
7 #include "CCRenderSurface.h"
8
9 #include "CCAppendQuadsData.h"
10 #include "CCLayerImpl.h"
11 #include "CCRenderPassSink.h"
12 #include "CCSharedQuadState.h"
13 #include "CCSingleThreadProxy.h"
14 #include "MockCCQuadCuller.h"
15 #include "cc/own_ptr_vector.h"
16 #include "cc/scoped_ptr_vector.h"
17 #include "testing/gmock/include/gmock/gmock.h"
18 #include "testing/gtest/include/gtest/gtest.h"
19 #include <public/WebTransformationMatrix.h>
20
21 using namespace cc;
22 using WebKit::WebTransformationMatrix;
23
24 namespace {
25
26 #define EXECUTE_AND_VERIFY_SURFACE_CHANGED(codeToTest) \
27 renderSurface->resetPropertyChangedFlag(); \
28 codeToTest; \
29 EXPECT_TRUE(renderSurface->surfacePropertyChanged())
30
31 #define EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(codeToTest) \
32 renderSurface->resetPropertyChangedFlag(); \
33 codeToTest; \
34 EXPECT_FALSE(renderSurface->surfacePropertyChanged())
35
36 TEST(CCRenderSurfaceTest, verifySurfaceChangesAreTrackedProperly)
37 {
38 //
39 // This test checks that surfacePropertyChanged() has the correct behavior.
40 //
41
42 // This will fake that we are on the correct thread for testing purposes.
43 DebugScopedSetImplThread setImplThread;
44
45 scoped_ptr<CCLayerImpl> owningLayer = CCLayerImpl::create(1);
46 owningLayer->createRenderSurface();
47 ASSERT_TRUE(owningLayer->renderSurface());
48 CCRenderSurface* renderSurface = owningLayer->renderSurface();
49 IntRect testRect = IntRect(IntPoint(3, 4), IntSize(5, 6));
50 owningLayer->resetAllChangeTrackingForSubtree();
51
52 // Currently, the contentRect, clipRect, and owningLayer->layerPropertyChang ed() are
53 // the only sources of change.
54 EXECUTE_AND_VERIFY_SURFACE_CHANGED(renderSurface->setClipRect(testRect));
55 EXECUTE_AND_VERIFY_SURFACE_CHANGED(renderSurface->setContentRect(testRect));
56
57 owningLayer->setOpacity(0.5f);
58 EXPECT_TRUE(renderSurface->surfacePropertyChanged());
59 owningLayer->resetAllChangeTrackingForSubtree();
60
61 // Setting the surface properties to the same values again should not be con sidered "change".
62 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->setClipRect(testRec t));
63 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->setContentRect(test Rect));
64
65 scoped_ptr<CCLayerImpl> dummyMask = CCLayerImpl::create(1);
66 WebTransformationMatrix dummyMatrix;
67 dummyMatrix.translate(1.0, 2.0);
68
69 // The rest of the surface properties are either internal and should not cau se change,
70 // or they are already accounted for by the owninglayer->layerPropertyChange d().
71 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->setDrawOpacity(0.5) );
72 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->setDrawTransform(du mmyMatrix));
73 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->setReplicaDrawTrans form(dummyMatrix));
74 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->clearLayerLists());
75 }
76
77 TEST(CCRenderSurfaceTest, sanityCheckSurfaceCreatesCorrectSharedQuadState)
78 {
79 // This will fake that we are on the correct thread for testing purposes.
80 DebugScopedSetImplThread setImplThread;
81
82 scoped_ptr<CCLayerImpl> rootLayer = CCLayerImpl::create(1);
83
84 scoped_ptr<CCLayerImpl> owningLayer = CCLayerImpl::create(2);
85 owningLayer->createRenderSurface();
86 ASSERT_TRUE(owningLayer->renderSurface());
87 owningLayer->setRenderTarget(owningLayer.get());
88 CCRenderSurface* renderSurface = owningLayer->renderSurface();
89
90 rootLayer->addChild(owningLayer.Pass());
91
92 IntRect contentRect = IntRect(IntPoint::zero(), IntSize(50, 50));
93 IntRect clipRect = IntRect(IntPoint(5, 5), IntSize(40, 40));
94 WebTransformationMatrix origin;
95
96 origin.translate(30, 40);
97
98 renderSurface->setDrawTransform(origin);
99 renderSurface->setContentRect(contentRect);
100 renderSurface->setClipRect(clipRect);
101 renderSurface->setDrawOpacity(1);
102
103 CCQuadList quadList;
104 CCSharedQuadStateList sharedStateList;
105 MockCCQuadCuller mockQuadCuller(quadList, sharedStateList);
106 CCAppendQuadsData appendQuadsData;
107
108 bool forReplica = false;
109 renderSurface->appendQuads(mockQuadCuller, appendQuadsData, forReplica, CCRe nderPass::Id(2, 0));
110
111 ASSERT_EQ(1u, sharedStateList.size());
112 CCSharedQuadState* sharedQuadState = sharedStateList[0];
113
114 EXPECT_EQ(30, sharedQuadState->quadTransform.m41());
115 EXPECT_EQ(40, sharedQuadState->quadTransform.m42());
116 EXPECT_EQ(contentRect, IntRect(sharedQuadState->visibleContentRect));
117 EXPECT_EQ(1, sharedQuadState->opacity);
118 EXPECT_FALSE(sharedQuadState->opaque);
119 }
120
121 class TestCCRenderPassSink : public CCRenderPassSink {
122 public:
123 virtual void appendRenderPass(scoped_ptr<CCRenderPass> renderPass) OVERRIDE { m_renderPasses.append(renderPass.Pass()); }
124
125 const ScopedPtrVector<CCRenderPass>& renderPasses() const { return m_renderP asses; }
126
127 private:
128 ScopedPtrVector<CCRenderPass> m_renderPasses;
129 };
130
131 TEST(CCRenderSurfaceTest, sanityCheckSurfaceCreatesCorrectRenderPass)
132 {
133 // This will fake that we are on the correct thread for testing purposes.
134 DebugScopedSetImplThread setImplThread;
135
136 scoped_ptr<CCLayerImpl> rootLayer = CCLayerImpl::create(1);
137
138 scoped_ptr<CCLayerImpl> owningLayer = CCLayerImpl::create(2);
139 owningLayer->createRenderSurface();
140 ASSERT_TRUE(owningLayer->renderSurface());
141 owningLayer->setRenderTarget(owningLayer.get());
142 CCRenderSurface* renderSurface = owningLayer->renderSurface();
143
144 rootLayer->addChild(owningLayer.Pass());
145
146 IntRect contentRect = IntRect(IntPoint::zero(), IntSize(50, 50));
147 WebTransformationMatrix origin;
148 origin.translate(30, 40);
149
150 renderSurface->setScreenSpaceTransform(origin);
151 renderSurface->setContentRect(contentRect);
152
153 TestCCRenderPassSink passSink;
154
155 renderSurface->appendRenderPasses(passSink);
156
157 ASSERT_EQ(1u, passSink.renderPasses().size());
158 CCRenderPass* pass = passSink.renderPasses()[0];
159
160 EXPECT_EQ(CCRenderPass::Id(2, 0), pass->id());
161 EXPECT_EQ(contentRect, pass->outputRect());
162 EXPECT_EQ(origin, pass->transformToRootTarget());
163 }
164
165 } // namespace
OLDNEW
« no previous file with comments | « cc/CCRenderSurfaceFiltersTest.cpp ('k') | cc/CCRendererGLTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698