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

Side by Side Diff: cc/layers/layer_impl_unittest.cc

Issue 131683005: cc: Make PrepareToDraw return an enum for why it aborts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: wrapping... Created 6 years, 10 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
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/layers/layer_impl.h" 5 #include "cc/layers/layer_impl.h"
6 6
7 #include "cc/output/filter_operation.h" 7 #include "cc/output/filter_operation.h"
8 #include "cc/output/filter_operations.h" 8 #include "cc/output/filter_operations.h"
9 #include "cc/test/fake_impl_proxy.h" 9 #include "cc/test/fake_impl_proxy.h"
10 #include "cc/test/fake_layer_tree_host_impl.h" 10 #include "cc/test/fake_layer_tree_host_impl.h"
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( 250 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(
251 root->SetClipParent(clip_parent.get())); 251 root->SetClipParent(clip_parent.get()));
252 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE( 252 EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(
253 root->SetClipChildren(clip_children)); 253 root->SetClipChildren(clip_children));
254 } 254 }
255 255
256 TEST(LayerImplTest, VerifyNeedsUpdateDrawProperties) { 256 TEST(LayerImplTest, VerifyNeedsUpdateDrawProperties) {
257 FakeImplProxy proxy; 257 FakeImplProxy proxy;
258 FakeLayerTreeHostImpl host_impl(&proxy); 258 FakeLayerTreeHostImpl host_impl(&proxy);
259 EXPECT_TRUE(host_impl.InitializeRenderer(CreateFakeOutputSurface())); 259 EXPECT_TRUE(host_impl.InitializeRenderer(CreateFakeOutputSurface()));
260 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl.active_tree(), 1); 260 host_impl.active_tree()->SetRootLayer(
261 root->SetScrollable(true); 261 LayerImpl::Create(host_impl.active_tree(), 1));
262 LayerImpl* root = host_impl.active_tree()->root_layer();
263 scoped_ptr<LayerImpl> layer_ptr =
264 LayerImpl::Create(host_impl.active_tree(), 2);
265 LayerImpl* layer = layer_ptr.get();
266 root->AddChild(layer_ptr.Pass());
267 layer->SetScrollable(true);
268 DCHECK(host_impl.CanDraw());
262 269
263 gfx::PointF arbitrary_point_f = gfx::PointF(0.125f, 0.25f); 270 gfx::PointF arbitrary_point_f = gfx::PointF(0.125f, 0.25f);
264 float arbitrary_number = 0.352f; 271 float arbitrary_number = 0.352f;
265 gfx::Size arbitrary_size = gfx::Size(111, 222); 272 gfx::Size arbitrary_size = gfx::Size(111, 222);
266 gfx::Point arbitrary_point = gfx::Point(333, 444); 273 gfx::Point arbitrary_point = gfx::Point(333, 444);
267 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222); 274 gfx::Vector2d arbitrary_vector2d = gfx::Vector2d(111, 222);
268 gfx::Vector2d large_vector2d = gfx::Vector2d(1000, 1000); 275 gfx::Vector2d large_vector2d = gfx::Vector2d(1000, 1000);
269 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size); 276 gfx::Rect arbitrary_rect = gfx::Rect(arbitrary_point, arbitrary_size);
270 gfx::RectF arbitrary_rect_f = 277 gfx::RectF arbitrary_rect_f =
271 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f)); 278 gfx::RectF(arbitrary_point_f, gfx::SizeF(1.234f, 5.678f));
272 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30); 279 SkColor arbitrary_color = SkColorSetRGB(10, 20, 30);
273 gfx::Transform arbitrary_transform; 280 gfx::Transform arbitrary_transform;
274 arbitrary_transform.Scale3d(0.1f, 0.2f, 0.3f); 281 arbitrary_transform.Scale3d(0.1f, 0.2f, 0.3f);
275 FilterOperations arbitrary_filters; 282 FilterOperations arbitrary_filters;
276 arbitrary_filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); 283 arbitrary_filters.Append(FilterOperation::CreateOpacityFilter(0.5f));
277 SkXfermode::Mode arbitrary_blend_mode = SkXfermode::kMultiply_Mode; 284 SkXfermode::Mode arbitrary_blend_mode = SkXfermode::kMultiply_Mode;
278 285
279 // Related filter functions. 286 // Related filter functions.
280 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); 287 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetFilters(arbitrary_filters));
281 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); 288 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetFilters(arbitrary_filters));
282 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(FilterOperations())); 289 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetFilters(FilterOperations()));
283 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters)); 290 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetFilters(arbitrary_filters));
284 291
285 // Related scrolling functions. 292 // Related scrolling functions.
286 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetMaxScrollOffset(large_vector2d)); 293 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
294 layer->SetMaxScrollOffset(large_vector2d));
287 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( 295 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
288 root->SetMaxScrollOffset(large_vector2d)); 296 layer->SetMaxScrollOffset(large_vector2d));
289 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->ScrollBy(arbitrary_vector2d)); 297 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->ScrollBy(arbitrary_vector2d));
290 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->ScrollBy(gfx::Vector2d())); 298 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->ScrollBy(gfx::Vector2d()));
291 root->SetScrollDelta(gfx::Vector2d(0, 0)); 299 layer->SetScrollDelta(gfx::Vector2d(0, 0));
292 host_impl.ForcePrepareToDraw(); 300 host_impl.ForcePrepareToDraw();
293 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetScrollDelta(arbitrary_vector2d)); 301 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
302 layer->SetScrollDelta(arbitrary_vector2d));
294 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( 303 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
295 root->SetScrollDelta(arbitrary_vector2d)); 304 layer->SetScrollDelta(arbitrary_vector2d));
296 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( 305 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
297 root->SetScrollOffset(arbitrary_vector2d)); 306 layer->SetScrollOffset(arbitrary_vector2d));
298 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( 307 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
299 root->SetScrollOffset(arbitrary_vector2d)); 308 layer->SetScrollOffset(arbitrary_vector2d));
300 309
301 // Unrelated functions, always set to new values, always set needs update. 310 // Unrelated functions, always set to new values, always set needs update.
302 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetAnchorPointZ(arbitrary_number)); 311 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetAnchorPointZ(arbitrary_number));
303 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( 312 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
304 root->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 4))); 313 layer->SetMaskLayer(LayerImpl::Create(host_impl.active_tree(), 4)));
305 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetMasksToBounds(true)); 314 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetMasksToBounds(true));
306 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetContentsOpaque(true)); 315 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetContentsOpaque(true));
307 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( 316 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
308 root->SetReplicaLayer(LayerImpl::Create(host_impl.active_tree(), 5))); 317 layer->SetReplicaLayer(LayerImpl::Create(host_impl.active_tree(), 5)));
309 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetPosition(arbitrary_point_f)); 318 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetPosition(arbitrary_point_f));
310 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetPreserves3d(true)); 319 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetPreserves3d(true));
311 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( 320 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
312 root->SetDoubleSided(false)); // constructor initializes it to "true". 321 layer->SetDoubleSided(false)); // constructor initializes it to "true".
313 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetContentBounds(arbitrary_size)); 322 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetContentBounds(arbitrary_size));
314 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( 323 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
315 root->SetContentsScale(arbitrary_number, arbitrary_number)); 324 layer->SetContentsScale(arbitrary_number, arbitrary_number));
316 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetDrawsContent(true)); 325 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetDrawsContent(true));
317 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( 326 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
318 root->SetBackgroundColor(arbitrary_color)); 327 layer->SetBackgroundColor(arbitrary_color));
319 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( 328 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
320 root->SetBackgroundFilters(arbitrary_filters)); 329 layer->SetBackgroundFilters(arbitrary_filters));
321 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetOpacity(arbitrary_number)); 330 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetOpacity(arbitrary_number));
322 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetBlendMode(arbitrary_blend_mode));
323 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetTransform(arbitrary_transform));
324 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES( 331 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
325 root->SetSublayerTransform(arbitrary_transform)); 332 layer->SetBlendMode(arbitrary_blend_mode));
326 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetBounds(arbitrary_size)); 333 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetTransform(arbitrary_transform));
334 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
335 layer->SetSublayerTransform(arbitrary_transform));
336 VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetBounds(arbitrary_size));
327 337
328 // Unrelated functions, set to the same values, no needs update. 338 // Unrelated functions, set to the same values, no needs update.
329 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( 339 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
330 root->SetAnchorPointZ(arbitrary_number)); 340 layer->SetAnchorPointZ(arbitrary_number));
331 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetIsRootForIsolatedGroup(true));
332 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetFilters(arbitrary_filters));
333 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetMasksToBounds(true));
334 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetContentsOpaque(true));
335 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetPosition(arbitrary_point_f));
336 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetPreserves3d(true));
337 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( 341 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
338 root->SetDoubleSided(false)); // constructor initializes it to "true". 342 layer->SetIsRootForIsolatedGroup(true));
343 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetFilters(arbitrary_filters));
344 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetMasksToBounds(true));
345 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetContentsOpaque(true));
346 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetPosition(arbitrary_point_f));
347 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetPreserves3d(true));
339 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( 348 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
340 root->SetContentBounds(arbitrary_size)); 349 layer->SetDoubleSided(false)); // constructor initializes it to "true".
341 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( 350 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
342 root->SetContentsScale(arbitrary_number, arbitrary_number)); 351 layer->SetContentBounds(arbitrary_size));
343 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetDrawsContent(true));
344 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( 352 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
345 root->SetBackgroundColor(arbitrary_color)); 353 layer->SetContentsScale(arbitrary_number, arbitrary_number));
354 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetDrawsContent(true));
346 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( 355 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
347 root->SetBackgroundFilters(arbitrary_filters)); 356 layer->SetBackgroundColor(arbitrary_color));
348 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetOpacity(arbitrary_number));
349 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( 357 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
350 root->SetBlendMode(arbitrary_blend_mode)); 358 layer->SetBackgroundFilters(arbitrary_filters));
351 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetIsRootForIsolatedGroup(true)); 359 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetOpacity(arbitrary_number));
352 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( 360 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
353 root->SetTransform(arbitrary_transform)); 361 layer->SetBlendMode(arbitrary_blend_mode));
354 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES( 362 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
355 root->SetSublayerTransform(arbitrary_transform)); 363 layer->SetIsRootForIsolatedGroup(true));
356 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->SetBounds(arbitrary_size)); 364 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
365 layer->SetTransform(arbitrary_transform));
366 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
367 layer->SetSublayerTransform(arbitrary_transform));
368 VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetBounds(arbitrary_size));
357 } 369 }
358 370
359 TEST(LayerImplTest, SafeOpaqueBackgroundColor) { 371 TEST(LayerImplTest, SafeOpaqueBackgroundColor) {
360 FakeImplProxy proxy; 372 FakeImplProxy proxy;
361 FakeLayerTreeHostImpl host_impl(&proxy); 373 FakeLayerTreeHostImpl host_impl(&proxy);
362 EXPECT_TRUE(host_impl.InitializeRenderer(CreateFakeOutputSurface())); 374 EXPECT_TRUE(host_impl.InitializeRenderer(CreateFakeOutputSurface()));
363 scoped_ptr<LayerImpl> layer = LayerImpl::Create(host_impl.active_tree(), 1); 375 scoped_ptr<LayerImpl> layer = LayerImpl::Create(host_impl.active_tree(), 1);
364 376
365 for (int contents_opaque = 0; contents_opaque < 2; ++contents_opaque) { 377 for (int contents_opaque = 0; contents_opaque < 2; ++contents_opaque) {
366 for (int layer_opaque = 0; layer_opaque < 2; ++layer_opaque) { 378 for (int layer_opaque = 0; layer_opaque < 2; ++layer_opaque) {
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 layer()->SetMaxScrollOffset(max_scroll_offset); 653 layer()->SetMaxScrollOffset(max_scroll_offset);
642 layer()->SetScrollOffset(scroll_offset); 654 layer()->SetScrollOffset(scroll_offset);
643 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); 655 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta);
644 656
645 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled); 657 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled);
646 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset()); 658 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset());
647 } 659 }
648 660
649 } // namespace 661 } // namespace
650 } // namespace cc 662 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/delegated_renderer_layer_impl_unittest.cc ('k') | cc/layers/texture_layer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698