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

Side by Side Diff: ui/compositor/layer_unittest.cc

Issue 962833003: UI impl side painting default on (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rm unused layer unittest from compositor unittest Created 5 years, 9 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 TestLayerDelegate delegate; 517 TestLayerDelegate delegate;
518 l1->set_delegate(&delegate); 518 l1->set_delegate(&delegate);
519 delegate.AddColor(SK_ColorWHITE); 519 delegate.AddColor(SK_ColorWHITE);
520 delegate.AddColor(SK_ColorYELLOW); 520 delegate.AddColor(SK_ColorYELLOW);
521 delegate.AddColor(SK_ColorGREEN); 521 delegate.AddColor(SK_ColorGREEN);
522 522
523 l1->SchedulePaint(gfx::Rect(0, 0, 400, 400)); 523 l1->SchedulePaint(gfx::Rect(0, 0, 400, 400));
524 WaitForDraw(); 524 WaitForDraw();
525 525
526 EXPECT_EQ(delegate.color_index(), 1); 526 EXPECT_EQ(delegate.color_index(), 1);
527 EXPECT_EQ(delegate.paint_size(), l1->bounds().size());
enne (OOO) 2015/03/02 21:59:27 You could land these test fixes now if you wanted,
weiliangc 2015/03/02 22:37:22 https://codereview.chromium.org/974603002/
528 527
529 l1->SchedulePaint(gfx::Rect(10, 10, 200, 200)); 528 l1->SchedulePaint(gfx::Rect(10, 10, 200, 200));
530 WaitForDraw(); 529 WaitForDraw();
531 EXPECT_EQ(delegate.color_index(), 2); 530 EXPECT_EQ(delegate.color_index(), 2);
532 EXPECT_EQ(delegate.paint_size(), gfx::Size(200, 200));
533 531
534 l1->SchedulePaint(gfx::Rect(5, 5, 50, 50)); 532 l1->SchedulePaint(gfx::Rect(5, 5, 50, 50));
535 WaitForDraw(); 533 WaitForDraw();
536 EXPECT_EQ(delegate.color_index(), 0); 534 EXPECT_EQ(delegate.color_index(), 0);
537 EXPECT_EQ(delegate.paint_size(), gfx::Size(50, 50));
538 } 535 }
539 536
540 TEST_F(LayerWithRealCompositorTest, DrawTree) { 537 TEST_F(LayerWithRealCompositorTest, DrawTree) {
541 scoped_ptr<Layer> l1(CreateColorLayer(SK_ColorRED, 538 scoped_ptr<Layer> l1(CreateColorLayer(SK_ColorRED,
542 gfx::Rect(20, 20, 400, 400))); 539 gfx::Rect(20, 20, 400, 400)));
543 scoped_ptr<Layer> l2(CreateColorLayer(SK_ColorBLUE, 540 scoped_ptr<Layer> l2(CreateColorLayer(SK_ColorBLUE,
544 gfx::Rect(10, 10, 350, 350))); 541 gfx::Rect(10, 10, 350, 350)));
545 scoped_ptr<Layer> l3(CreateColorLayer(SK_ColorYELLOW, 542 scoped_ptr<Layer> l3(CreateColorLayer(SK_ColorYELLOW,
546 gfx::Rect(10, 10, 100, 100))); 543 gfx::Rect(10, 10, 100, 100)));
547 l1->Add(l2.get()); 544 l1->Add(l2.get());
(...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after
1301 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); 1298 EXPECT_EQ("10,20 200x220", root->bounds().ToString());
1302 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); 1299 EXPECT_EQ("10,20 140x180", l1->bounds().ToString());
1303 gfx::Size cc_bounds_size = root->cc_layer()->bounds(); 1300 gfx::Size cc_bounds_size = root->cc_layer()->bounds();
1304 EXPECT_EQ("200x220", cc_bounds_size.ToString()); 1301 EXPECT_EQ("200x220", cc_bounds_size.ToString());
1305 cc_bounds_size = l1->cc_layer()->bounds(); 1302 cc_bounds_size = l1->cc_layer()->bounds();
1306 EXPECT_EQ("140x180", cc_bounds_size.ToString()); 1303 EXPECT_EQ("140x180", cc_bounds_size.ToString());
1307 // No scale change, so no scale notification. 1304 // No scale change, so no scale notification.
1308 EXPECT_EQ(0.0f, root_delegate.device_scale_factor()); 1305 EXPECT_EQ(0.0f, root_delegate.device_scale_factor());
1309 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor()); 1306 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor());
1310 1307
1311 EXPECT_EQ("200x220", root_delegate.paint_size().ToString());
1312 EXPECT_EQ("140x180", l1_delegate.paint_size().ToString());
1313
1314 // Scale up to 2.0. Changing scale doesn't change the bounds in DIP. 1308 // Scale up to 2.0. Changing scale doesn't change the bounds in DIP.
1315 GetCompositor()->SetScaleAndSize(2.0f, gfx::Size(500, 500)); 1309 GetCompositor()->SetScaleAndSize(2.0f, gfx::Size(500, 500));
1316 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); 1310 EXPECT_EQ("10,20 200x220", root->bounds().ToString());
1317 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); 1311 EXPECT_EQ("10,20 140x180", l1->bounds().ToString());
1318 // CC layer should still match the UI layer bounds. 1312 // CC layer should still match the UI layer bounds.
1319 cc_bounds_size = root->cc_layer()->bounds(); 1313 cc_bounds_size = root->cc_layer()->bounds();
1320 EXPECT_EQ("200x220", cc_bounds_size.ToString()); 1314 EXPECT_EQ("200x220", cc_bounds_size.ToString());
1321 cc_bounds_size = l1->cc_layer()->bounds(); 1315 cc_bounds_size = l1->cc_layer()->bounds();
1322 EXPECT_EQ("140x180", cc_bounds_size.ToString()); 1316 EXPECT_EQ("140x180", cc_bounds_size.ToString());
1323 // New scale factor must have been notified. 1317 // New scale factor must have been notified.
1324 EXPECT_EQ(2.0f, root_delegate.device_scale_factor()); 1318 EXPECT_EQ(2.0f, root_delegate.device_scale_factor());
1325 EXPECT_EQ(2.0f, l1_delegate.device_scale_factor()); 1319 EXPECT_EQ(2.0f, l1_delegate.device_scale_factor());
1326 1320
1327 // Canvas size must have been scaled down up. 1321 // Canvas size must have been scaled down up.
1328 WaitForDraw(); 1322 WaitForDraw();
1329 EXPECT_EQ("400x440", root_delegate.paint_size().ToString());
1330 EXPECT_EQ("2.0 2.0", root_delegate.ToScaleString());
1331 EXPECT_EQ("280x360", l1_delegate.paint_size().ToString());
1332 EXPECT_EQ("2.0 2.0", l1_delegate.ToScaleString());
1333 1323
1334 // Scale down back to 1.0f. 1324 // Scale down back to 1.0f.
1335 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500)); 1325 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500));
1336 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); 1326 EXPECT_EQ("10,20 200x220", root->bounds().ToString());
1337 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); 1327 EXPECT_EQ("10,20 140x180", l1->bounds().ToString());
1338 // CC layer should still match the UI layer bounds. 1328 // CC layer should still match the UI layer bounds.
1339 cc_bounds_size = root->cc_layer()->bounds(); 1329 cc_bounds_size = root->cc_layer()->bounds();
1340 EXPECT_EQ("200x220", cc_bounds_size.ToString()); 1330 EXPECT_EQ("200x220", cc_bounds_size.ToString());
1341 cc_bounds_size = l1->cc_layer()->bounds(); 1331 cc_bounds_size = l1->cc_layer()->bounds();
1342 EXPECT_EQ("140x180", cc_bounds_size.ToString()); 1332 EXPECT_EQ("140x180", cc_bounds_size.ToString());
1343 // New scale factor must have been notified. 1333 // New scale factor must have been notified.
1344 EXPECT_EQ(1.0f, root_delegate.device_scale_factor()); 1334 EXPECT_EQ(1.0f, root_delegate.device_scale_factor());
1345 EXPECT_EQ(1.0f, l1_delegate.device_scale_factor()); 1335 EXPECT_EQ(1.0f, l1_delegate.device_scale_factor());
1346 1336
1347 // Canvas size must have been scaled down too. 1337 // Canvas size must have been scaled down too.
1348 WaitForDraw(); 1338 WaitForDraw();
1349 EXPECT_EQ("200x220", root_delegate.paint_size().ToString());
1350 EXPECT_EQ("1.0 1.0", root_delegate.ToScaleString()); 1339 EXPECT_EQ("1.0 1.0", root_delegate.ToScaleString());
1351 EXPECT_EQ("140x180", l1_delegate.paint_size().ToString());
1352 EXPECT_EQ("1.0 1.0", l1_delegate.ToScaleString()); 1340 EXPECT_EQ("1.0 1.0", l1_delegate.ToScaleString());
1353 1341
1354 root_delegate.reset(); 1342 root_delegate.reset();
1355 l1_delegate.reset(); 1343 l1_delegate.reset();
1356 // Just changing the size shouldn't notify the scale change nor 1344 // Just changing the size shouldn't notify the scale change nor
1357 // trigger repaint. 1345 // trigger repaint.
1358 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(1000, 1000)); 1346 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(1000, 1000));
1359 // No scale change, so no scale notification. 1347 // No scale change, so no scale notification.
1360 EXPECT_EQ(0.0f, root_delegate.device_scale_factor()); 1348 EXPECT_EQ(0.0f, root_delegate.device_scale_factor());
1361 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor()); 1349 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor());
(...skipping 17 matching lines...) Expand all
1379 GetCompositor()->SetRootLayer(root.get()); 1367 GetCompositor()->SetRootLayer(root.get());
1380 WaitForDraw(); 1368 WaitForDraw();
1381 1369
1382 root->Add(l1.get()); 1370 root->Add(l1.get());
1383 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); 1371 EXPECT_EQ("10,20 140x180", l1->bounds().ToString());
1384 gfx::Size cc_bounds_size = l1->cc_layer()->bounds(); 1372 gfx::Size cc_bounds_size = l1->cc_layer()->bounds();
1385 EXPECT_EQ("140x180", cc_bounds_size.ToString()); 1373 EXPECT_EQ("140x180", cc_bounds_size.ToString());
1386 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor()); 1374 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor());
1387 1375
1388 WaitForDraw(); 1376 WaitForDraw();
1389 EXPECT_EQ("140x180", l1_delegate.paint_size().ToString());
1390 EXPECT_EQ("1.0 1.0", l1_delegate.ToScaleString());
1391 1377
1392 // Remove l1 from root and change the scale. 1378 // Remove l1 from root and change the scale.
1393 root->Remove(l1.get()); 1379 root->Remove(l1.get());
1394 EXPECT_EQ(NULL, l1->parent()); 1380 EXPECT_EQ(NULL, l1->parent());
1395 EXPECT_EQ(NULL, l1->GetCompositor()); 1381 EXPECT_EQ(NULL, l1->GetCompositor());
1396 GetCompositor()->SetScaleAndSize(2.0f, gfx::Size(500, 500)); 1382 GetCompositor()->SetScaleAndSize(2.0f, gfx::Size(500, 500));
1397 // Sanity check on root and l1. 1383 // Sanity check on root and l1.
1398 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); 1384 EXPECT_EQ("10,20 200x220", root->bounds().ToString());
1399 cc_bounds_size = l1->cc_layer()->bounds(); 1385 cc_bounds_size = l1->cc_layer()->bounds();
1400 EXPECT_EQ("140x180", cc_bounds_size.ToString()); 1386 EXPECT_EQ("140x180", cc_bounds_size.ToString());
1401 1387
1402 root->Add(l1.get()); 1388 root->Add(l1.get());
1403 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); 1389 EXPECT_EQ("10,20 140x180", l1->bounds().ToString());
1404 cc_bounds_size = l1->cc_layer()->bounds(); 1390 cc_bounds_size = l1->cc_layer()->bounds();
1405 EXPECT_EQ("140x180", cc_bounds_size.ToString()); 1391 EXPECT_EQ("140x180", cc_bounds_size.ToString());
1406 EXPECT_EQ(2.0f, l1_delegate.device_scale_factor()); 1392 EXPECT_EQ(2.0f, l1_delegate.device_scale_factor());
1407 WaitForDraw(); 1393 WaitForDraw();
1408 EXPECT_EQ("280x360", l1_delegate.paint_size().ToString());
1409 EXPECT_EQ("2.0 2.0", l1_delegate.ToScaleString());
1410 } 1394 }
1411 1395
1412 // Verifies that when changing bounds on a layer that is invisible, and then 1396 // Verifies that when changing bounds on a layer that is invisible, and then
1413 // made visible, the right thing happens: 1397 // made visible, the right thing happens:
1414 // - if just a move, then no painting should happen. 1398 // - if just a move, then no painting should happen.
1415 // - if a resize, the layer should be repainted. 1399 // - if a resize, the layer should be repainted.
1416 TEST_F(LayerWithDelegateTest, SetBoundsWhenInvisible) { 1400 TEST_F(LayerWithDelegateTest, SetBoundsWhenInvisible) {
1417 scoped_ptr<Layer> root(CreateNoTextureLayer(gfx::Rect(0, 0, 1000, 1000))); 1401 scoped_ptr<Layer> root(CreateNoTextureLayer(gfx::Rect(0, 0, 1000, 1000)));
1418 1402
1419 scoped_ptr<Layer> child(CreateLayer(LAYER_TEXTURED)); 1403 scoped_ptr<Layer> child(CreateLayer(LAYER_TEXTURED));
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
1766 MakeFrameData(gfx::Size(10, 10)))); 1750 MakeFrameData(gfx::Size(10, 10))));
1767 layer->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10)); 1751 layer->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10));
1768 1752
1769 EXPECT_FALSE(delegate.delegated_frame_damage_called()); 1753 EXPECT_FALSE(delegate.delegated_frame_damage_called());
1770 layer->OnDelegatedFrameDamage(damage_rect); 1754 layer->OnDelegatedFrameDamage(damage_rect);
1771 EXPECT_TRUE(delegate.delegated_frame_damage_called()); 1755 EXPECT_TRUE(delegate.delegated_frame_damage_called());
1772 EXPECT_EQ(damage_rect, delegate.delegated_frame_damage_rect()); 1756 EXPECT_EQ(damage_rect, delegate.delegated_frame_damage_rect());
1773 } 1757 }
1774 1758
1775 } // namespace ui 1759 } // namespace ui
OLDNEW
« ui/compositor/layer_delegate.h ('K') | « ui/compositor/layer_delegate.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698