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

Side by Side Diff: cc/layer_impl_unittest.cc

Issue 11596005: Revert 173406 - Crashes on Win & Mac (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: 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
« no previous file with comments | « no previous file | cc/layer_tree_host_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/test/fake_output_surface.h"
11 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
13 #include "third_party/skia/include/effects/SkBlurImageFilter.h" 12 #include "third_party/skia/include/effects/SkBlurImageFilter.h"
14 #include <public/WebFilterOperation.h> 13 #include <public/WebFilterOperation.h>
15 #include <public/WebFilterOperations.h> 14 #include <public/WebFilterOperations.h>
16 15
17 using namespace WebKit; 16 using namespace WebKit;
18 17
19 namespace cc { 18 namespace cc {
20 namespace { 19 namespace {
(...skipping 26 matching lines...) Expand all
47 #define EXECUTE_AND_VERIFY_ONLY_SURFACE_CHANGED(codeToTest) \ 46 #define EXECUTE_AND_VERIFY_ONLY_SURFACE_CHANGED(codeToTest) \
48 root->resetAllChangeTrackingForSubtree(); \ 47 root->resetAllChangeTrackingForSubtree(); \
49 codeToTest; \ 48 codeToTest; \
50 EXPECT_FALSE(root->layerPropertyChanged()); \ 49 EXPECT_FALSE(root->layerPropertyChanged()); \
51 EXPECT_FALSE(child->layerPropertyChanged()); \ 50 EXPECT_FALSE(child->layerPropertyChanged()); \
52 EXPECT_FALSE(grandChild->layerPropertyChanged()); \ 51 EXPECT_FALSE(grandChild->layerPropertyChanged()); \
53 EXPECT_TRUE(root->layerSurfacePropertyChanged()) 52 EXPECT_TRUE(root->layerSurfacePropertyChanged())
54 53
55 #define VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(codeToTest) \ 54 #define VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(codeToTest) \
56 root->resetAllChangeTrackingForSubtree(); \ 55 root->resetAllChangeTrackingForSubtree(); \
57 hostImpl.forcePrepareToDraw(); \ 56 hostImpl.resetNeedsUpdateDrawPropertiesForTesting(); \
58 codeToTest; \ 57 codeToTest; \
59 EXPECT_TRUE(hostImpl.needsUpdateDrawProperties()); 58 EXPECT_TRUE(hostImpl.needsUpdateDrawProperties());
60 59
61 #define VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(codeToTest) \ 60 #define VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(codeToTest) \
62 root->resetAllChangeTrackingForSubtree(); \ 61 root->resetAllChangeTrackingForSubtree(); \
63 hostImpl.forcePrepareToDraw(); \ 62 hostImpl.resetNeedsUpdateDrawPropertiesForTesting(); \
64 codeToTest; \ 63 codeToTest; \
65 EXPECT_FALSE(hostImpl.needsUpdateDrawProperties()); 64 EXPECT_FALSE(hostImpl.needsUpdateDrawProperties());
66 65
67 TEST(LayerImplTest, verifyLayerChangesAreTrackedProperly) 66 TEST(LayerImplTest, verifyLayerChangesAreTrackedProperly)
68 { 67 {
69 // 68 //
70 // This test checks that layerPropertyChanged() has the correct behavior. 69 // This test checks that layerPropertyChanged() has the correct behavior.
71 // 70 //
72 71
73 // The constructor on this will fake that we are on the correct thread. 72 // The constructor on this will fake that we are on the correct thread.
74 // Create a simple LayerImpl tree: 73 // Create a simple LayerImpl tree:
75 FakeImplProxy proxy; 74 FakeImplProxy proxy;
76 FakeLayerTreeHostImpl hostImpl(&proxy); 75 FakeLayerTreeHostImpl hostImpl(&proxy);
77 EXPECT_TRUE(hostImpl.initializeRenderer(createFakeOutputSurface()));
78 scoped_ptr<LayerImpl> root = LayerImpl::create(hostImpl.activeTree(), 1); 76 scoped_ptr<LayerImpl> root = LayerImpl::create(hostImpl.activeTree(), 1);
79 root->addChild(LayerImpl::create(hostImpl.activeTree(), 2)); 77 root->addChild(LayerImpl::create(hostImpl.activeTree(), 2));
80 LayerImpl* child = root->children()[0]; 78 LayerImpl* child = root->children()[0];
81 child->addChild(LayerImpl::create(hostImpl.activeTree(), 3)); 79 child->addChild(LayerImpl::create(hostImpl.activeTree(), 3));
82 LayerImpl* grandChild = child->children()[0]; 80 LayerImpl* grandChild = child->children()[0];
83 81
84 // Adding children is an internal operation and should not mark layers as ch anged. 82 // Adding children is an internal operation and should not mark layers as ch anged.
85 EXPECT_FALSE(root->layerPropertyChanged()); 83 EXPECT_FALSE(root->layerPropertyChanged());
86 EXPECT_FALSE(child->layerPropertyChanged()); 84 EXPECT_FALSE(child->layerPropertyChanged());
87 EXPECT_FALSE(grandChild->layerPropertyChanged()); 85 EXPECT_FALSE(grandChild->layerPropertyChanged());
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setOpacity(arbitraryNumber)) ; 162 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setOpacity(arbitraryNumber)) ;
165 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setDrawsContent(true)); 163 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setDrawsContent(true));
166 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setSublayerTransform(arbitra ryTransform)); 164 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setSublayerTransform(arbitra ryTransform));
167 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setBounds(arbitrarySize)); 165 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setBounds(arbitrarySize));
168 } 166 }
169 167
170 TEST(LayerImplTest, VerifyNeedsUpdateDrawProperties) 168 TEST(LayerImplTest, VerifyNeedsUpdateDrawProperties)
171 { 169 {
172 FakeImplProxy proxy; 170 FakeImplProxy proxy;
173 FakeLayerTreeHostImpl hostImpl(&proxy); 171 FakeLayerTreeHostImpl hostImpl(&proxy);
174 EXPECT_TRUE(hostImpl.initializeRenderer(createFakeOutputSurface()));
175 scoped_ptr<LayerImpl> root = LayerImpl::create(hostImpl.activeTree(), 1); 172 scoped_ptr<LayerImpl> root = LayerImpl::create(hostImpl.activeTree(), 1);
176 173
177 gfx::PointF arbitraryPointF = gfx::PointF(0.125f, 0.25f); 174 gfx::PointF arbitraryPointF = gfx::PointF(0.125f, 0.25f);
178 float arbitraryNumber = 0.352f; 175 float arbitraryNumber = 0.352f;
179 gfx::Size arbitrarySize = gfx::Size(111, 222); 176 gfx::Size arbitrarySize = gfx::Size(111, 222);
180 gfx::Point arbitraryPoint = gfx::Point(333, 444); 177 gfx::Point arbitraryPoint = gfx::Point(333, 444);
181 gfx::Vector2d arbitraryVector2d = gfx::Vector2d(111, 222); 178 gfx::Vector2d arbitraryVector2d = gfx::Vector2d(111, 222);
182 gfx::Vector2d largeVector2d = gfx::Vector2d(1000, 1000); 179 gfx::Vector2d largeVector2d = gfx::Vector2d(1000, 1000);
183 gfx::Rect arbitraryRect = gfx::Rect(arbitraryPoint, arbitrarySize); 180 gfx::Rect arbitraryRect = gfx::Rect(arbitraryPoint, arbitrarySize);
184 gfx::RectF arbitraryRectF = gfx::RectF(arbitraryPointF, gfx::SizeF(1.234f, 5 .678f)); 181 gfx::RectF arbitraryRectF = gfx::RectF(arbitraryPointF, gfx::SizeF(1.234f, 5 .678f));
(...skipping 10 matching lines...) Expand all
195 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setFilters(WebFilterOperations())) ; 192 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setFilters(WebFilterOperations())) ;
196 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setFilter(arbitraryFilter)); 193 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setFilter(arbitraryFilter));
197 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setFilter(arbitraryFilter)); 194 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setFilter(arbitraryFilter));
198 195
199 // Related scrolling functions. 196 // Related scrolling functions.
200 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMaxScrollOffset(largeVector2d)) ; 197 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMaxScrollOffset(largeVector2d)) ;
201 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMaxScrollOffset(largeVector2 d)); 198 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMaxScrollOffset(largeVector2 d));
202 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->scrollBy(arbitraryVector2d)); 199 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->scrollBy(arbitraryVector2d));
203 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->scrollBy(gfx::Vector2d())); 200 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->scrollBy(gfx::Vector2d()));
204 root->setScrollDelta(gfx::Vector2d(0, 0)); 201 root->setScrollDelta(gfx::Vector2d(0, 0));
205 hostImpl.forcePrepareToDraw(); 202 hostImpl.resetNeedsUpdateDrawPropertiesForTesting();
206 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollDelta(arbitraryVector2d)) ; 203 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollDelta(arbitraryVector2d)) ;
207 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollDelta(arbitraryVector2 d)); 204 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollDelta(arbitraryVector2 d));
208 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollOffset(arbitraryVector2d) ); 205 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollOffset(arbitraryVector2d) );
209 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollOffset(arbitraryVector 2d)); 206 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollOffset(arbitraryVector 2d));
210 207
211 // Unrelated functions, always set to new values, always set needs update. 208 // Unrelated functions, always set to new values, always set needs update.
212 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setAnchorPointZ(arbitraryNumber)); 209 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setAnchorPointZ(arbitraryNumber));
213 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMaskLayer(LayerImpl::create(hos tImpl.activeTree(), 4))); 210 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMaskLayer(LayerImpl::create(hos tImpl.activeTree(), 4)));
214 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMasksToBounds(true)); 211 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setMasksToBounds(true));
215 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setContentsOpaque(true)); 212 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setContentsOpaque(true));
(...skipping 27 matching lines...) Expand all
243 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setBackgroundColor(SK_ColorGRAY )); 240 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setBackgroundColor(SK_ColorGRAY ));
244 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setBackgroundFilters(arbitraryF ilters)); 241 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setBackgroundFilters(arbitraryF ilters));
245 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setOpacity(arbitraryNumber)); 242 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setOpacity(arbitraryNumber));
246 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setTransform(arbitraryTransform )); 243 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setTransform(arbitraryTransform ));
247 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setSublayerTransform(arbitraryT ransform)); 244 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setSublayerTransform(arbitraryT ransform));
248 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setBounds(arbitrarySize)); 245 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setBounds(arbitrarySize));
249 } 246 }
250 247
251 } // namespace 248 } // namespace
252 } // namespace cc 249 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/layer_tree_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698