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

Side by Side Diff: cc/layer_impl_unittest.cc

Issue 11447028: cc: Split out calcDrawEtc from drawLayers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Testing Created 8 years 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
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 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 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 "cc/layer_impl.h" 5 #include "cc/layer_impl.h"
6 6
7 #include "cc/single_thread_proxy.h" 7 #include "cc/single_thread_proxy.h"
8 #include "cc/test/fake_impl_proxy.h" 8 #include "cc/test/fake_impl_proxy.h"
9 #include "cc/test/fake_layer_tree_host_impl.h" 9 #include "cc/test/fake_layer_tree_host_impl.h"
10 #include "cc/thread.h"
10 #include "testing/gmock/include/gmock/gmock.h" 11 #include "testing/gmock/include/gmock/gmock.h"
11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
12 #include "third_party/skia/include/effects/SkBlurImageFilter.h" 13 #include "third_party/skia/include/effects/SkBlurImageFilter.h"
13 #include <public/WebFilterOperation.h> 14 #include <public/WebFilterOperation.h>
14 #include <public/WebFilterOperations.h> 15 #include <public/WebFilterOperations.h>
15 16
16 using namespace WebKit; 17 using namespace WebKit;
17 18
18 namespace cc { 19 namespace cc {
19 namespace { 20 namespace {
(...skipping 24 matching lines...) Expand all
44 EXPECT_FALSE(root->layerSurfacePropertyChanged()) 45 EXPECT_FALSE(root->layerSurfacePropertyChanged())
45 46
46 #define EXECUTE_AND_VERIFY_ONLY_SURFACE_CHANGED(codeToTest) \ 47 #define EXECUTE_AND_VERIFY_ONLY_SURFACE_CHANGED(codeToTest) \
47 root->resetAllChangeTrackingForSubtree(); \ 48 root->resetAllChangeTrackingForSubtree(); \
48 codeToTest; \ 49 codeToTest; \
49 EXPECT_FALSE(root->layerPropertyChanged()); \ 50 EXPECT_FALSE(root->layerPropertyChanged()); \
50 EXPECT_FALSE(child->layerPropertyChanged()); \ 51 EXPECT_FALSE(child->layerPropertyChanged()); \
51 EXPECT_FALSE(grandChild->layerPropertyChanged()); \ 52 EXPECT_FALSE(grandChild->layerPropertyChanged()); \
52 EXPECT_TRUE(root->layerSurfacePropertyChanged()) 53 EXPECT_TRUE(root->layerSurfacePropertyChanged())
53 54
55 #define VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(codeToTest) \
56 root->resetAllChangeTrackingForSubtree(); \
57 hostImpl.resetNeedsUpdateDrawPropertiesForTesting(); \
58 codeToTest; \
59 EXPECT_TRUE(hostImpl.needsUpdateDrawProperties());
60
61 #define VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(codeToTest) \
62 root->resetAllChangeTrackingForSubtree(); \
63 hostImpl.resetNeedsUpdateDrawPropertiesForTesting(); \
64 codeToTest; \
65 EXPECT_FALSE(hostImpl.needsUpdateDrawProperties());
66
54 TEST(LayerImplTest, verifyLayerChangesAreTrackedProperly) 67 TEST(LayerImplTest, verifyLayerChangesAreTrackedProperly)
55 { 68 {
56 // 69 //
57 // This test checks that layerPropertyChanged() has the correct behavior. 70 // This test checks that layerPropertyChanged() has the correct behavior.
58 // 71 //
59 72
60 // The constructor on this will fake that we are on the correct thread. 73 // The constructor on this will fake that we are on the correct thread.
61 // Create a simple LayerImpl tree: 74 // Create a simple LayerImpl tree:
62 FakeImplProxy proxy; 75 FakeImplProxy proxy;
63 FakeLayerTreeHostImpl hostImpl(&proxy); 76 FakeLayerTreeHostImpl hostImpl(&proxy);
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setImplTransform(arbitraryTr ansform)); 160 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setImplTransform(arbitraryTr ansform));
148 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setContentBounds(arbitrarySi ze)); 161 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setContentBounds(arbitrarySi ze));
149 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setContentsScale(arbitraryNu mber, arbitraryNumber)); 162 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setContentsScale(arbitraryNu mber, arbitraryNumber));
150 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setContentsOpaque(true)); 163 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setContentsOpaque(true));
151 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setOpacity(arbitraryNumber)) ; 164 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setOpacity(arbitraryNumber)) ;
152 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setDrawsContent(true)); 165 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setDrawsContent(true));
153 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setSublayerTransform(arbitra ryTransform)); 166 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setSublayerTransform(arbitra ryTransform));
154 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setBounds(arbitrarySize)); 167 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setBounds(arbitrarySize));
155 } 168 }
156 169
170 TEST(LayerImplTest, VerifyNeedsUpdateDrawProperties)
171 {
172 FakeImplProxy proxy;
173 FakeLayerTreeHostImpl hostImpl(&proxy);
174 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 1);
175
176 gfx::PointF arbitraryPointF = gfx::PointF(0.125f, 0.25f);
177 float arbitraryNumber = 0.352f;
178 gfx::Size arbitrarySize = gfx::Size(111, 222);
179 gfx::Point arbitraryPoint = gfx::Point(333, 444);
180 gfx::Vector2d arbitraryVector2d = gfx::Vector2d(111, 222);
181 gfx::Vector2d largeVector2d = gfx::Vector2d(1000, 1000);
182 gfx::Rect arbitraryRect = gfx::Rect(arbitraryPoint, arbitrarySize);
183 gfx::RectF arbitraryRectF = gfx::RectF(arbitraryPointF, gfx::SizeF(1.234f, 5 .678f));
184 SkColor arbitraryColor = SkColorSetRGB(10, 20, 30);
185 gfx::Transform arbitraryTransform;
186 arbitraryTransform.Scale3d(0.1, 0.2, 0.3);
187 WebFilterOperations arbitraryFilters;
188 arbitraryFilters.append(WebFilterOperation::createOpacityFilter(0.5));
189 skia::RefPtr<SkImageFilter> arbitraryFilter = skia::AdoptRef(new SkBlurImage Filter(SK_Scalar1, SK_Scalar1));
190
191 // Related filter functions.
192 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setFilters(arbitraryFilters));
193 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setFilters(arbitraryFilters));
194 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setFilters(WebFilterOperations())) ;
195 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setFilter(arbitraryFilter));
196 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setFilter(arbitraryFilter));
197
198 // Related scrolling functions.
199 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMaxScrollOffset(largeVector2d)) ;
200 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMaxScrollOffset(largeVector2 d));
201 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->scrollBy(arbitraryVector2d));
202 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->scrollBy(gfx::Vector2d()));
203 root->setScrollDelta(gfx::Vector2d(0, 0));
danakj 2012/12/07 23:12:49 should we clear resetNeedsUpdateDrawProps after th
enne (OOO) 2012/12/07 23:25:05 Done.
204 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollDelta(arbitraryVector2d)) ;
205 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollDelta(arbitraryVector2 d));
206 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollOffset(arbitraryVector2d) );
207 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollOffset(arbitraryVector 2d));
208
209 // Unrelated functions, always set to new values, always set needs update.
210 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setAnchorPointZ(arbitraryNumber));
211 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMaskLayer(LayerImpl::create(&ho stImpl, 4)));
212 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMasksToBounds(true));
213 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setContentsOpaque(true));
214 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setReplicaLayer(LayerImpl::create( &hostImpl, 5)));
215 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setPosition(arbitraryPointF));
216 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setPreserves3D(true));
217 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setDoubleSided(false)); // constru ctor initializes it to "true".
218 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setImplTransform(arbitraryTransfor m));
219 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setContentBounds(arbitrarySize));
220 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setContentsScale(arbitraryNumber, arbitraryNumber));
221 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setDrawsContent(true));
222 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setBackgroundColor(SK_ColorGRAY));
223 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setBackgroundFilters(arbitraryFilt ers));
224 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setOpacity(arbitraryNumber));
225 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setTransform(arbitraryTransform));
226 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setSublayerTransform(arbitraryTran sform));
227 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setBounds(arbitrarySize));
228
229 // Unrelated functions, set to the same values, no needs update.
230 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setAnchorPointZ(arbitraryNumber ));
231 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setFilter(arbitraryFilter));
232 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMaskLayer(LayerImpl::create( &hostImpl, 4)));
233 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMasksToBounds(true));
234 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setContentsOpaque(true));
235 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setReplicaLayer(LayerImpl::crea te(&hostImpl, 5)));
236 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setPosition(arbitraryPointF));
237 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setPreserves3D(true));
238 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setDoubleSided(false)); // cons tructor initializes it to "true".
239 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setImplTransform(arbitraryTrans form));
240 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setContentBounds(arbitrarySize) );
241 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setContentsScale(arbitraryNumbe r, arbitraryNumber));
242 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setDrawsContent(true));
243 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setBackgroundColor(SK_ColorGRAY ));
244 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setBackgroundFilters(arbitraryF ilters));
245 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setOpacity(arbitraryNumber));
246 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setTransform(arbitraryTransform ));
247 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setSublayerTransform(arbitraryT ransform));
248 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setBounds(arbitrarySize));
249 }
250
157 } // namespace 251 } // namespace
158 } // namespace cc 252 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698