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

Side by Side Diff: cc/trees/layer_tree_host_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: 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/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 layer->SetDrawsContent(true); 253 layer->SetDrawsContent(true);
254 layer->SetBounds(size); 254 layer->SetBounds(size);
255 layer->SetContentBounds(size); 255 layer->SetContentBounds(size);
256 layer->SetMaxScrollOffset(gfx::Vector2d(size.width() * 2, 256 layer->SetMaxScrollOffset(gfx::Vector2d(size.width() * 2,
257 size.height() * 2)); 257 size.height() * 2));
258 return layer.Pass(); 258 return layer.Pass();
259 } 259 }
260 260
261 void DrawFrame() { 261 void DrawFrame() {
262 LayerTreeHostImpl::FrameData frame; 262 LayerTreeHostImpl::FrameData frame;
263 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 263 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
264 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
264 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 265 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
265 host_impl_->DidDrawAllLayers(frame); 266 host_impl_->DidDrawAllLayers(frame);
266 } 267 }
267 268
268 void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor); 269 void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor);
269 void pinch_zoom_pan_viewport_test(float device_scale_factor); 270 void pinch_zoom_pan_viewport_test(float device_scale_factor);
270 void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor); 271 void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor);
271 void pinch_zoom_pan_viewport_and_scroll_boundary_test( 272 void pinch_zoom_pan_viewport_and_scroll_boundary_test(
272 float device_scale_factor); 273 float device_scale_factor);
273 274
(...skipping 1202 matching lines...) Expand 10 before | Expand all | Expand 10 after
1476 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 1477 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
1477 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( 1478 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(
1478 host_impl_->active_tree()->root_layer()); 1479 host_impl_->active_tree()->root_layer());
1479 1480
1480 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); 1481 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2));
1481 DidDrawCheckLayer* layer = 1482 DidDrawCheckLayer* layer =
1482 static_cast<DidDrawCheckLayer*>(root->children()[0]); 1483 static_cast<DidDrawCheckLayer*>(root->children()[0]);
1483 1484
1484 { 1485 {
1485 LayerTreeHostImpl::FrameData frame; 1486 LayerTreeHostImpl::FrameData frame;
1486 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect(10, 10))); 1487 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
1488 host_impl_->PrepareToDraw(&frame, gfx::Rect(10, 10)));
1487 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1489 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1488 host_impl_->DidDrawAllLayers(frame); 1490 host_impl_->DidDrawAllLayers(frame);
1489 1491
1490 EXPECT_TRUE(layer->will_draw_called()); 1492 EXPECT_TRUE(layer->will_draw_called());
1491 EXPECT_TRUE(layer->append_quads_called()); 1493 EXPECT_TRUE(layer->append_quads_called());
1492 EXPECT_TRUE(layer->did_draw_called()); 1494 EXPECT_TRUE(layer->did_draw_called());
1493 } 1495 }
1494 1496
1495 { 1497 {
1496 LayerTreeHostImpl::FrameData frame; 1498 LayerTreeHostImpl::FrameData frame;
1497 1499
1498 layer->set_will_draw_returns_false(); 1500 layer->set_will_draw_returns_false();
1499 layer->ClearDidDrawCheck(); 1501 layer->ClearDidDrawCheck();
1500 1502
1501 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect(10, 10))); 1503 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
1504 host_impl_->PrepareToDraw(&frame, gfx::Rect(10, 10)));
1502 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1505 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1503 host_impl_->DidDrawAllLayers(frame); 1506 host_impl_->DidDrawAllLayers(frame);
1504 1507
1505 EXPECT_TRUE(layer->will_draw_called()); 1508 EXPECT_TRUE(layer->will_draw_called());
1506 EXPECT_FALSE(layer->append_quads_called()); 1509 EXPECT_FALSE(layer->append_quads_called());
1507 EXPECT_FALSE(layer->did_draw_called()); 1510 EXPECT_FALSE(layer->did_draw_called());
1508 } 1511 }
1509 } 1512 }
1510 1513
1511 TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) { 1514 TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) {
(...skipping 11 matching lines...) Expand all
1523 // Ensure visible_content_rect for layer is empty. 1526 // Ensure visible_content_rect for layer is empty.
1524 layer->SetPosition(gfx::PointF(100.f, 100.f)); 1527 layer->SetPosition(gfx::PointF(100.f, 100.f));
1525 layer->SetBounds(gfx::Size(10, 10)); 1528 layer->SetBounds(gfx::Size(10, 10));
1526 layer->SetContentBounds(gfx::Size(10, 10)); 1529 layer->SetContentBounds(gfx::Size(10, 10));
1527 1530
1528 LayerTreeHostImpl::FrameData frame; 1531 LayerTreeHostImpl::FrameData frame;
1529 1532
1530 EXPECT_FALSE(layer->will_draw_called()); 1533 EXPECT_FALSE(layer->will_draw_called());
1531 EXPECT_FALSE(layer->did_draw_called()); 1534 EXPECT_FALSE(layer->did_draw_called());
1532 1535
1533 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 1536 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
1537 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1534 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1538 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1535 host_impl_->DidDrawAllLayers(frame); 1539 host_impl_->DidDrawAllLayers(frame);
1536 1540
1537 EXPECT_FALSE(layer->will_draw_called()); 1541 EXPECT_FALSE(layer->will_draw_called());
1538 EXPECT_FALSE(layer->did_draw_called()); 1542 EXPECT_FALSE(layer->did_draw_called());
1539 1543
1540 EXPECT_TRUE(layer->visible_content_rect().IsEmpty()); 1544 EXPECT_TRUE(layer->visible_content_rect().IsEmpty());
1541 1545
1542 // Ensure visible_content_rect for layer is not empty 1546 // Ensure visible_content_rect for layer is not empty
1543 layer->SetPosition(gfx::PointF()); 1547 layer->SetPosition(gfx::PointF());
1544 1548
1545 EXPECT_FALSE(layer->will_draw_called()); 1549 EXPECT_FALSE(layer->will_draw_called());
1546 EXPECT_FALSE(layer->did_draw_called()); 1550 EXPECT_FALSE(layer->did_draw_called());
1547 1551
1548 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 1552 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
1553 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1549 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1554 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1550 host_impl_->DidDrawAllLayers(frame); 1555 host_impl_->DidDrawAllLayers(frame);
1551 1556
1552 EXPECT_TRUE(layer->will_draw_called()); 1557 EXPECT_TRUE(layer->will_draw_called());
1553 EXPECT_TRUE(layer->did_draw_called()); 1558 EXPECT_TRUE(layer->did_draw_called());
1554 1559
1555 EXPECT_FALSE(layer->visible_content_rect().IsEmpty()); 1560 EXPECT_FALSE(layer->visible_content_rect().IsEmpty());
1556 } 1561 }
1557 1562
1558 TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) { 1563 TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) {
(...skipping 18 matching lines...) Expand all
1577 top_layer->SetContentBounds(big_size); 1582 top_layer->SetContentBounds(big_size);
1578 top_layer->SetContentsOpaque(true); 1583 top_layer->SetContentsOpaque(true);
1579 1584
1580 LayerTreeHostImpl::FrameData frame; 1585 LayerTreeHostImpl::FrameData frame;
1581 1586
1582 EXPECT_FALSE(occluded_layer->will_draw_called()); 1587 EXPECT_FALSE(occluded_layer->will_draw_called());
1583 EXPECT_FALSE(occluded_layer->did_draw_called()); 1588 EXPECT_FALSE(occluded_layer->did_draw_called());
1584 EXPECT_FALSE(top_layer->will_draw_called()); 1589 EXPECT_FALSE(top_layer->will_draw_called());
1585 EXPECT_FALSE(top_layer->did_draw_called()); 1590 EXPECT_FALSE(top_layer->did_draw_called());
1586 1591
1587 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 1592 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
1593 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1588 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1594 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1589 host_impl_->DidDrawAllLayers(frame); 1595 host_impl_->DidDrawAllLayers(frame);
1590 1596
1591 EXPECT_FALSE(occluded_layer->will_draw_called()); 1597 EXPECT_FALSE(occluded_layer->will_draw_called());
1592 EXPECT_FALSE(occluded_layer->did_draw_called()); 1598 EXPECT_FALSE(occluded_layer->did_draw_called());
1593 EXPECT_TRUE(top_layer->will_draw_called()); 1599 EXPECT_TRUE(top_layer->will_draw_called());
1594 EXPECT_TRUE(top_layer->did_draw_called()); 1600 EXPECT_TRUE(top_layer->did_draw_called());
1595 } 1601 }
1596 1602
1597 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) { 1603 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) {
(...skipping 11 matching lines...) Expand all
1609 static_cast<DidDrawCheckLayer*>(layer1->children()[0]); 1615 static_cast<DidDrawCheckLayer*>(layer1->children()[0]);
1610 1616
1611 layer1->SetOpacity(0.3f); 1617 layer1->SetOpacity(0.3f);
1612 layer1->SetPreserves3d(false); 1618 layer1->SetPreserves3d(false);
1613 1619
1614 EXPECT_FALSE(root->did_draw_called()); 1620 EXPECT_FALSE(root->did_draw_called());
1615 EXPECT_FALSE(layer1->did_draw_called()); 1621 EXPECT_FALSE(layer1->did_draw_called());
1616 EXPECT_FALSE(layer2->did_draw_called()); 1622 EXPECT_FALSE(layer2->did_draw_called());
1617 1623
1618 LayerTreeHostImpl::FrameData frame; 1624 LayerTreeHostImpl::FrameData frame;
1619 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 1625 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
1626 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1620 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1627 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1621 host_impl_->DidDrawAllLayers(frame); 1628 host_impl_->DidDrawAllLayers(frame);
1622 1629
1623 EXPECT_TRUE(root->did_draw_called()); 1630 EXPECT_TRUE(root->did_draw_called());
1624 EXPECT_TRUE(layer1->did_draw_called()); 1631 EXPECT_TRUE(layer1->did_draw_called());
1625 EXPECT_TRUE(layer2->did_draw_called()); 1632 EXPECT_TRUE(layer2->did_draw_called());
1626 1633
1627 EXPECT_NE(root->render_surface(), layer1->render_surface()); 1634 EXPECT_NE(root->render_surface(), layer1->render_surface());
1628 EXPECT_TRUE(!!layer1->render_surface()); 1635 EXPECT_TRUE(!!layer1->render_surface());
1629 } 1636 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1682 root->AddChild( 1689 root->AddChild(
1683 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 1690 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
1684 2, 1691 2,
1685 false, 1692 false,
1686 false, 1693 false,
1687 true, 1694 true,
1688 host_impl_->resource_provider())); 1695 host_impl_->resource_provider()));
1689 1696
1690 LayerTreeHostImpl::FrameData frame; 1697 LayerTreeHostImpl::FrameData frame;
1691 1698
1692 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 1699 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
1700 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1693 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1701 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1694 host_impl_->DidDrawAllLayers(frame); 1702 host_impl_->DidDrawAllLayers(frame);
1695 1703
1696 // When a texture is missing and we're not animating, we draw as usual with 1704 // When a texture is missing and we're not animating, we draw as usual with
1697 // checkerboarding. 1705 // checkerboarding.
1698 host_impl_->active_tree()->SetRootLayer( 1706 host_impl_->active_tree()->SetRootLayer(
1699 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); 1707 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3));
1700 root = 1708 root =
1701 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 1709 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
1702 root->AddChild( 1710 root->AddChild(
1703 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 1711 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
1704 4, 1712 4,
1705 true, 1713 true,
1706 false, 1714 false,
1707 false, 1715 false,
1708 host_impl_->resource_provider())); 1716 host_impl_->resource_provider()));
1709 1717
1710 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 1718 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
1719 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1711 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1720 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1712 host_impl_->DidDrawAllLayers(frame); 1721 host_impl_->DidDrawAllLayers(frame);
1713 1722
1714 // When a texture is missing and we're animating, we don't want to draw 1723 // When a texture is missing and we're animating, we don't want to draw
1715 // anything. 1724 // anything.
1716 host_impl_->active_tree()->SetRootLayer( 1725 host_impl_->active_tree()->SetRootLayer(
1717 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); 1726 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5));
1718 root = 1727 root =
1719 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 1728 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
1720 root->AddChild( 1729 root->AddChild(
1721 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 1730 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
1722 6, 1731 6,
1723 true, 1732 true,
1724 false, 1733 false,
1725 true, 1734 true,
1726 host_impl_->resource_provider())); 1735 host_impl_->resource_provider()));
1727 1736
1728 EXPECT_FALSE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 1737 EXPECT_EQ(DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS,
1738 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1729 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1739 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1730 host_impl_->DidDrawAllLayers(frame); 1740 host_impl_->DidDrawAllLayers(frame);
1731 1741
1732 // When the layer skips draw and we're animating, we still draw the frame. 1742 // When the layer skips draw and we're animating, we still draw the frame.
1733 host_impl_->active_tree()->SetRootLayer( 1743 host_impl_->active_tree()->SetRootLayer(
1734 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); 1744 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7));
1735 root = 1745 root =
1736 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 1746 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
1737 root->AddChild( 1747 root->AddChild(
1738 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 1748 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
2028 EXPECT_EQ(1.f, scroll->contents_scale_x()); 2038 EXPECT_EQ(1.f, scroll->contents_scale_x());
2029 EXPECT_EQ(1.f, scroll->contents_scale_y()); 2039 EXPECT_EQ(1.f, scroll->contents_scale_y());
2030 EXPECT_EQ(1.f, child->contents_scale_x()); 2040 EXPECT_EQ(1.f, child->contents_scale_x());
2031 EXPECT_EQ(1.f, child->contents_scale_y()); 2041 EXPECT_EQ(1.f, child->contents_scale_y());
2032 EXPECT_EQ(1.f, grand_child->contents_scale_x()); 2042 EXPECT_EQ(1.f, grand_child->contents_scale_x());
2033 EXPECT_EQ(1.f, grand_child->contents_scale_y()); 2043 EXPECT_EQ(1.f, grand_child->contents_scale_y());
2034 2044
2035 // Make sure all the layers are drawn with the page scale delta applied, i.e., 2045 // Make sure all the layers are drawn with the page scale delta applied, i.e.,
2036 // the page scale delta on the root layer is applied hierarchically. 2046 // the page scale delta on the root layer is applied hierarchically.
2037 LayerTreeHostImpl::FrameData frame; 2047 LayerTreeHostImpl::FrameData frame;
2038 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 2048 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
2049 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
2039 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2050 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2040 host_impl_->DidDrawAllLayers(frame); 2051 host_impl_->DidDrawAllLayers(frame);
2041 2052
2042 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(0, 0)); 2053 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(0, 0));
2043 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(1, 1)); 2054 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(1, 1));
2044 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(0, 0)); 2055 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(0, 0));
2045 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(1, 1)); 2056 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(1, 1));
2046 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(0, 0)); 2057 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(0, 0));
2047 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(1, 1)); 2058 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(1, 1));
2048 EXPECT_EQ(new_page_scale, 2059 EXPECT_EQ(new_page_scale,
(...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after
2844 BlendStateCheckLayer* layer1 = 2855 BlendStateCheckLayer* layer1 =
2845 static_cast<BlendStateCheckLayer*>(root->children()[0]); 2856 static_cast<BlendStateCheckLayer*>(root->children()[0]);
2846 layer1->SetPosition(gfx::PointF(2.f, 2.f)); 2857 layer1->SetPosition(gfx::PointF(2.f, 2.f));
2847 2858
2848 LayerTreeHostImpl::FrameData frame; 2859 LayerTreeHostImpl::FrameData frame;
2849 2860
2850 // Opaque layer, drawn without blending. 2861 // Opaque layer, drawn without blending.
2851 layer1->SetContentsOpaque(true); 2862 layer1->SetContentsOpaque(true);
2852 layer1->SetExpectation(false, false); 2863 layer1->SetExpectation(false, false);
2853 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2864 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2854 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 2865 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
2866 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
2855 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2867 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2856 EXPECT_TRUE(layer1->quads_appended()); 2868 EXPECT_TRUE(layer1->quads_appended());
2857 host_impl_->DidDrawAllLayers(frame); 2869 host_impl_->DidDrawAllLayers(frame);
2858 2870
2859 // Layer with translucent content and painting, so drawn with blending. 2871 // Layer with translucent content and painting, so drawn with blending.
2860 layer1->SetContentsOpaque(false); 2872 layer1->SetContentsOpaque(false);
2861 layer1->SetExpectation(true, false); 2873 layer1->SetExpectation(true, false);
2862 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2874 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2863 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 2875 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
2876 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
2864 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2877 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2865 EXPECT_TRUE(layer1->quads_appended()); 2878 EXPECT_TRUE(layer1->quads_appended());
2866 host_impl_->DidDrawAllLayers(frame); 2879 host_impl_->DidDrawAllLayers(frame);
2867 2880
2868 // Layer with translucent opacity, drawn with blending. 2881 // Layer with translucent opacity, drawn with blending.
2869 layer1->SetContentsOpaque(true); 2882 layer1->SetContentsOpaque(true);
2870 layer1->SetOpacity(0.5f); 2883 layer1->SetOpacity(0.5f);
2871 layer1->SetExpectation(true, false); 2884 layer1->SetExpectation(true, false);
2872 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2885 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2873 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 2886 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
2887 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
2874 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2888 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2875 EXPECT_TRUE(layer1->quads_appended()); 2889 EXPECT_TRUE(layer1->quads_appended());
2876 host_impl_->DidDrawAllLayers(frame); 2890 host_impl_->DidDrawAllLayers(frame);
2877 2891
2878 // Layer with translucent opacity and painting, drawn with blending. 2892 // Layer with translucent opacity and painting, drawn with blending.
2879 layer1->SetContentsOpaque(true); 2893 layer1->SetContentsOpaque(true);
2880 layer1->SetOpacity(0.5f); 2894 layer1->SetOpacity(0.5f);
2881 layer1->SetExpectation(true, false); 2895 layer1->SetExpectation(true, false);
2882 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2896 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2883 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 2897 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
2898 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
2884 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2899 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2885 EXPECT_TRUE(layer1->quads_appended()); 2900 EXPECT_TRUE(layer1->quads_appended());
2886 host_impl_->DidDrawAllLayers(frame); 2901 host_impl_->DidDrawAllLayers(frame);
2887 2902
2888 layer1->AddChild( 2903 layer1->AddChild(
2889 BlendStateCheckLayer::Create(host_impl_->active_tree(), 2904 BlendStateCheckLayer::Create(host_impl_->active_tree(),
2890 3, 2905 3,
2891 host_impl_->resource_provider())); 2906 host_impl_->resource_provider()));
2892 BlendStateCheckLayer* layer2 = 2907 BlendStateCheckLayer* layer2 =
2893 static_cast<BlendStateCheckLayer*>(layer1->children()[0]); 2908 static_cast<BlendStateCheckLayer*>(layer1->children()[0]);
2894 layer2->SetPosition(gfx::PointF(4.f, 4.f)); 2909 layer2->SetPosition(gfx::PointF(4.f, 4.f));
2895 2910
2896 // 2 opaque layers, drawn without blending. 2911 // 2 opaque layers, drawn without blending.
2897 layer1->SetContentsOpaque(true); 2912 layer1->SetContentsOpaque(true);
2898 layer1->SetOpacity(1.f); 2913 layer1->SetOpacity(1.f);
2899 layer1->SetExpectation(false, false); 2914 layer1->SetExpectation(false, false);
2900 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2915 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2901 layer2->SetContentsOpaque(true); 2916 layer2->SetContentsOpaque(true);
2902 layer2->SetOpacity(1.f); 2917 layer2->SetOpacity(1.f);
2903 layer2->SetExpectation(false, false); 2918 layer2->SetExpectation(false, false);
2904 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2919 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2905 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 2920 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
2921 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
2906 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2922 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2907 EXPECT_TRUE(layer1->quads_appended()); 2923 EXPECT_TRUE(layer1->quads_appended());
2908 EXPECT_TRUE(layer2->quads_appended()); 2924 EXPECT_TRUE(layer2->quads_appended());
2909 host_impl_->DidDrawAllLayers(frame); 2925 host_impl_->DidDrawAllLayers(frame);
2910 2926
2911 // Parent layer with translucent content, drawn with blending. 2927 // Parent layer with translucent content, drawn with blending.
2912 // Child layer with opaque content, drawn without blending. 2928 // Child layer with opaque content, drawn without blending.
2913 layer1->SetContentsOpaque(false); 2929 layer1->SetContentsOpaque(false);
2914 layer1->SetExpectation(true, false); 2930 layer1->SetExpectation(true, false);
2915 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2931 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2916 layer2->SetExpectation(false, false); 2932 layer2->SetExpectation(false, false);
2917 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2933 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2918 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 2934 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
2935 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
2919 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2936 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2920 EXPECT_TRUE(layer1->quads_appended()); 2937 EXPECT_TRUE(layer1->quads_appended());
2921 EXPECT_TRUE(layer2->quads_appended()); 2938 EXPECT_TRUE(layer2->quads_appended());
2922 host_impl_->DidDrawAllLayers(frame); 2939 host_impl_->DidDrawAllLayers(frame);
2923 2940
2924 // Parent layer with translucent content but opaque painting, drawn without 2941 // Parent layer with translucent content but opaque painting, drawn without
2925 // blending. 2942 // blending.
2926 // Child layer with opaque content, drawn without blending. 2943 // Child layer with opaque content, drawn without blending.
2927 layer1->SetContentsOpaque(true); 2944 layer1->SetContentsOpaque(true);
2928 layer1->SetExpectation(false, false); 2945 layer1->SetExpectation(false, false);
2929 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2946 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2930 layer2->SetExpectation(false, false); 2947 layer2->SetExpectation(false, false);
2931 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2948 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2932 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 2949 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
2950 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
2933 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2951 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2934 EXPECT_TRUE(layer1->quads_appended()); 2952 EXPECT_TRUE(layer1->quads_appended());
2935 EXPECT_TRUE(layer2->quads_appended()); 2953 EXPECT_TRUE(layer2->quads_appended());
2936 host_impl_->DidDrawAllLayers(frame); 2954 host_impl_->DidDrawAllLayers(frame);
2937 2955
2938 // Parent layer with translucent opacity and opaque content. Since it has a 2956 // Parent layer with translucent opacity and opaque content. Since it has a
2939 // drawing child, it's drawn to a render surface which carries the opacity, 2957 // drawing child, it's drawn to a render surface which carries the opacity,
2940 // so it's itself drawn without blending. 2958 // so it's itself drawn without blending.
2941 // Child layer with opaque content, drawn without blending (parent surface 2959 // Child layer with opaque content, drawn without blending (parent surface
2942 // carries the inherited opacity). 2960 // carries the inherited opacity).
2943 layer1->SetContentsOpaque(true); 2961 layer1->SetContentsOpaque(true);
2944 layer1->SetOpacity(0.5f); 2962 layer1->SetOpacity(0.5f);
2945 layer1->SetExpectation(false, true); 2963 layer1->SetExpectation(false, true);
2946 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2964 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2947 layer2->SetExpectation(false, false); 2965 layer2->SetExpectation(false, false);
2948 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2966 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2949 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 2967 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
2968 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
2950 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2969 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2951 EXPECT_TRUE(layer1->quads_appended()); 2970 EXPECT_TRUE(layer1->quads_appended());
2952 EXPECT_TRUE(layer2->quads_appended()); 2971 EXPECT_TRUE(layer2->quads_appended());
2953 host_impl_->DidDrawAllLayers(frame); 2972 host_impl_->DidDrawAllLayers(frame);
2954 2973
2955 // Draw again, but with child non-opaque, to make sure 2974 // Draw again, but with child non-opaque, to make sure
2956 // layer1 not culled. 2975 // layer1 not culled.
2957 layer1->SetContentsOpaque(true); 2976 layer1->SetContentsOpaque(true);
2958 layer1->SetOpacity(1.f); 2977 layer1->SetOpacity(1.f);
2959 layer1->SetExpectation(false, false); 2978 layer1->SetExpectation(false, false);
2960 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2979 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2961 layer2->SetContentsOpaque(true); 2980 layer2->SetContentsOpaque(true);
2962 layer2->SetOpacity(0.5f); 2981 layer2->SetOpacity(0.5f);
2963 layer2->SetExpectation(true, false); 2982 layer2->SetExpectation(true, false);
2964 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2983 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2965 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 2984 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
2985 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
2966 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2986 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2967 EXPECT_TRUE(layer1->quads_appended()); 2987 EXPECT_TRUE(layer1->quads_appended());
2968 EXPECT_TRUE(layer2->quads_appended()); 2988 EXPECT_TRUE(layer2->quads_appended());
2969 host_impl_->DidDrawAllLayers(frame); 2989 host_impl_->DidDrawAllLayers(frame);
2970 2990
2971 // A second way of making the child non-opaque. 2991 // A second way of making the child non-opaque.
2972 layer1->SetContentsOpaque(true); 2992 layer1->SetContentsOpaque(true);
2973 layer1->SetOpacity(1.f); 2993 layer1->SetOpacity(1.f);
2974 layer1->SetExpectation(false, false); 2994 layer1->SetExpectation(false, false);
2975 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2995 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2976 layer2->SetContentsOpaque(false); 2996 layer2->SetContentsOpaque(false);
2977 layer2->SetOpacity(1.f); 2997 layer2->SetOpacity(1.f);
2978 layer2->SetExpectation(true, false); 2998 layer2->SetExpectation(true, false);
2979 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 2999 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2980 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3000 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3001 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
2981 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3002 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2982 EXPECT_TRUE(layer1->quads_appended()); 3003 EXPECT_TRUE(layer1->quads_appended());
2983 EXPECT_TRUE(layer2->quads_appended()); 3004 EXPECT_TRUE(layer2->quads_appended());
2984 host_impl_->DidDrawAllLayers(frame); 3005 host_impl_->DidDrawAllLayers(frame);
2985 3006
2986 // And when the layer says its not opaque but is painted opaque, it is not 3007 // And when the layer says its not opaque but is painted opaque, it is not
2987 // blended. 3008 // blended.
2988 layer1->SetContentsOpaque(true); 3009 layer1->SetContentsOpaque(true);
2989 layer1->SetOpacity(1.f); 3010 layer1->SetOpacity(1.f);
2990 layer1->SetExpectation(false, false); 3011 layer1->SetExpectation(false, false);
2991 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 3012 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2992 layer2->SetContentsOpaque(true); 3013 layer2->SetContentsOpaque(true);
2993 layer2->SetOpacity(1.f); 3014 layer2->SetOpacity(1.f);
2994 layer2->SetExpectation(false, false); 3015 layer2->SetExpectation(false, false);
2995 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 3016 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
2996 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3017 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3018 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
2997 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3019 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2998 EXPECT_TRUE(layer1->quads_appended()); 3020 EXPECT_TRUE(layer1->quads_appended());
2999 EXPECT_TRUE(layer2->quads_appended()); 3021 EXPECT_TRUE(layer2->quads_appended());
3000 host_impl_->DidDrawAllLayers(frame); 3022 host_impl_->DidDrawAllLayers(frame);
3001 3023
3002 // Layer with partially opaque contents, drawn with blending. 3024 // Layer with partially opaque contents, drawn with blending.
3003 layer1->SetContentsOpaque(false); 3025 layer1->SetContentsOpaque(false);
3004 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); 3026 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5));
3005 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 5)); 3027 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 5));
3006 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); 3028 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5));
3007 layer1->SetExpectation(true, false); 3029 layer1->SetExpectation(true, false);
3008 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 3030 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
3009 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3031 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3032 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3010 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3033 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3011 EXPECT_TRUE(layer1->quads_appended()); 3034 EXPECT_TRUE(layer1->quads_appended());
3012 host_impl_->DidDrawAllLayers(frame); 3035 host_impl_->DidDrawAllLayers(frame);
3013 3036
3014 // Layer with partially opaque contents partially culled, drawn with blending. 3037 // Layer with partially opaque contents partially culled, drawn with blending.
3015 layer1->SetContentsOpaque(false); 3038 layer1->SetContentsOpaque(false);
3016 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); 3039 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5));
3017 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 2)); 3040 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 2));
3018 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); 3041 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5));
3019 layer1->SetExpectation(true, false); 3042 layer1->SetExpectation(true, false);
3020 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 3043 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
3021 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3044 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3045 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3022 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3046 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3023 EXPECT_TRUE(layer1->quads_appended()); 3047 EXPECT_TRUE(layer1->quads_appended());
3024 host_impl_->DidDrawAllLayers(frame); 3048 host_impl_->DidDrawAllLayers(frame);
3025 3049
3026 // Layer with partially opaque contents culled, drawn with blending. 3050 // Layer with partially opaque contents culled, drawn with blending.
3027 layer1->SetContentsOpaque(false); 3051 layer1->SetContentsOpaque(false);
3028 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); 3052 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5));
3029 layer1->SetQuadVisibleRect(gfx::Rect(7, 5, 3, 5)); 3053 layer1->SetQuadVisibleRect(gfx::Rect(7, 5, 3, 5));
3030 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); 3054 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5));
3031 layer1->SetExpectation(true, false); 3055 layer1->SetExpectation(true, false);
3032 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 3056 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
3033 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3057 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3058 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3034 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3059 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3035 EXPECT_TRUE(layer1->quads_appended()); 3060 EXPECT_TRUE(layer1->quads_appended());
3036 host_impl_->DidDrawAllLayers(frame); 3061 host_impl_->DidDrawAllLayers(frame);
3037 3062
3038 // Layer with partially opaque contents and translucent contents culled, drawn 3063 // Layer with partially opaque contents and translucent contents culled, drawn
3039 // without blending. 3064 // without blending.
3040 layer1->SetContentsOpaque(false); 3065 layer1->SetContentsOpaque(false);
3041 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); 3066 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5));
3042 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 2, 5)); 3067 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 2, 5));
3043 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); 3068 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5));
3044 layer1->SetExpectation(false, false); 3069 layer1->SetExpectation(false, false);
3045 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); 3070 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds()));
3046 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3071 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3072 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3047 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3073 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3048 EXPECT_TRUE(layer1->quads_appended()); 3074 EXPECT_TRUE(layer1->quads_appended());
3049 host_impl_->DidDrawAllLayers(frame); 3075 host_impl_->DidDrawAllLayers(frame);
3050 } 3076 }
3051 3077
3052 class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest { 3078 class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest {
3053 protected: 3079 protected:
3054 LayerTreeHostImplViewportCoveredTest() : 3080 LayerTreeHostImplViewportCoveredTest() :
3055 gutter_quad_material_(DrawQuad::SOLID_COLOR), 3081 gutter_quad_material_(DrawQuad::SOLID_COLOR),
3056 child_(NULL), 3082 child_(NULL),
(...skipping 24 matching lines...) Expand all
3081 // Expect no gutter rects. 3107 // Expect no gutter rects.
3082 void TestLayerCoversFullViewport() { 3108 void TestLayerCoversFullViewport() {
3083 gfx::Rect layer_rect(viewport_size_); 3109 gfx::Rect layer_rect(viewport_size_);
3084 child_->SetPosition(layer_rect.origin()); 3110 child_->SetPosition(layer_rect.origin());
3085 child_->SetBounds(layer_rect.size()); 3111 child_->SetBounds(layer_rect.size());
3086 child_->SetContentBounds(layer_rect.size()); 3112 child_->SetContentBounds(layer_rect.size());
3087 child_->SetQuadRect(gfx::Rect(layer_rect.size())); 3113 child_->SetQuadRect(gfx::Rect(layer_rect.size()));
3088 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); 3114 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size()));
3089 3115
3090 LayerTreeHostImpl::FrameData frame; 3116 LayerTreeHostImpl::FrameData frame;
3091 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3117 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3118 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3092 ASSERT_EQ(1u, frame.render_passes.size()); 3119 ASSERT_EQ(1u, frame.render_passes.size());
3093 3120
3094 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list)); 3121 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list));
3095 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); 3122 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size());
3096 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); 3123 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list);
3097 3124
3098 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); 3125 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list);
3099 host_impl_->DidDrawAllLayers(frame); 3126 host_impl_->DidDrawAllLayers(frame);
3100 } 3127 }
3101 3128
3102 // Expect fullscreen gutter rect. 3129 // Expect fullscreen gutter rect.
3103 void TestEmptyLayer() { 3130 void TestEmptyLayer() {
3104 gfx::Rect layer_rect(0, 0, 0, 0); 3131 gfx::Rect layer_rect(0, 0, 0, 0);
3105 child_->SetPosition(layer_rect.origin()); 3132 child_->SetPosition(layer_rect.origin());
3106 child_->SetBounds(layer_rect.size()); 3133 child_->SetBounds(layer_rect.size());
3107 child_->SetContentBounds(layer_rect.size()); 3134 child_->SetContentBounds(layer_rect.size());
3108 child_->SetQuadRect(gfx::Rect(layer_rect.size())); 3135 child_->SetQuadRect(gfx::Rect(layer_rect.size()));
3109 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); 3136 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size()));
3110 3137
3111 LayerTreeHostImpl::FrameData frame; 3138 LayerTreeHostImpl::FrameData frame;
3112 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3139 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3140 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3113 ASSERT_EQ(1u, frame.render_passes.size()); 3141 ASSERT_EQ(1u, frame.render_passes.size());
3114 3142
3115 EXPECT_EQ(1u, CountGutterQuads(frame.render_passes[0]->quad_list)); 3143 EXPECT_EQ(1u, CountGutterQuads(frame.render_passes[0]->quad_list));
3116 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); 3144 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size());
3117 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); 3145 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list);
3118 3146
3119 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); 3147 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list);
3120 host_impl_->DidDrawAllLayers(frame); 3148 host_impl_->DidDrawAllLayers(frame);
3121 } 3149 }
3122 3150
3123 // Expect four surrounding gutter rects. 3151 // Expect four surrounding gutter rects.
3124 void TestLayerInMiddleOfViewport() { 3152 void TestLayerInMiddleOfViewport() {
3125 gfx::Rect layer_rect(500, 500, 200, 200); 3153 gfx::Rect layer_rect(500, 500, 200, 200);
3126 child_->SetPosition(layer_rect.origin()); 3154 child_->SetPosition(layer_rect.origin());
3127 child_->SetBounds(layer_rect.size()); 3155 child_->SetBounds(layer_rect.size());
3128 child_->SetContentBounds(layer_rect.size()); 3156 child_->SetContentBounds(layer_rect.size());
3129 child_->SetQuadRect(gfx::Rect(layer_rect.size())); 3157 child_->SetQuadRect(gfx::Rect(layer_rect.size()));
3130 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); 3158 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size()));
3131 3159
3132 LayerTreeHostImpl::FrameData frame; 3160 LayerTreeHostImpl::FrameData frame;
3133 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3161 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3162 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3134 ASSERT_EQ(1u, frame.render_passes.size()); 3163 ASSERT_EQ(1u, frame.render_passes.size());
3135 3164
3136 EXPECT_EQ(4u, CountGutterQuads(frame.render_passes[0]->quad_list)); 3165 EXPECT_EQ(4u, CountGutterQuads(frame.render_passes[0]->quad_list));
3137 EXPECT_EQ(5u, frame.render_passes[0]->quad_list.size()); 3166 EXPECT_EQ(5u, frame.render_passes[0]->quad_list.size());
3138 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); 3167 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list);
3139 3168
3140 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); 3169 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list);
3141 host_impl_->DidDrawAllLayers(frame); 3170 host_impl_->DidDrawAllLayers(frame);
3142 } 3171 }
3143 3172
3144 // Expect no gutter rects. 3173 // Expect no gutter rects.
3145 void TestLayerIsLargerThanViewport() { 3174 void TestLayerIsLargerThanViewport() {
3146 gfx::Rect layer_rect(viewport_size_.width() + 10, 3175 gfx::Rect layer_rect(viewport_size_.width() + 10,
3147 viewport_size_.height() + 10); 3176 viewport_size_.height() + 10);
3148 child_->SetPosition(layer_rect.origin()); 3177 child_->SetPosition(layer_rect.origin());
3149 child_->SetBounds(layer_rect.size()); 3178 child_->SetBounds(layer_rect.size());
3150 child_->SetContentBounds(layer_rect.size()); 3179 child_->SetContentBounds(layer_rect.size());
3151 child_->SetQuadRect(gfx::Rect(layer_rect.size())); 3180 child_->SetQuadRect(gfx::Rect(layer_rect.size()));
3152 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); 3181 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size()));
3153 3182
3154 LayerTreeHostImpl::FrameData frame; 3183 LayerTreeHostImpl::FrameData frame;
3155 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3184 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3185 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3156 ASSERT_EQ(1u, frame.render_passes.size()); 3186 ASSERT_EQ(1u, frame.render_passes.size());
3157 3187
3158 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list)); 3188 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list));
3159 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); 3189 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size());
3160 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); 3190 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list);
3161 3191
3162 host_impl_->DidDrawAllLayers(frame); 3192 host_impl_->DidDrawAllLayers(frame);
3163 } 3193 }
3164 3194
3165 virtual void DidActivatePendingTree() OVERRIDE { 3195 virtual void DidActivatePendingTree() OVERRIDE {
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
3364 root->SetBounds(gfx::Size(10, 10)); 3394 root->SetBounds(gfx::Size(10, 10));
3365 root->SetContentBounds(gfx::Size(10, 10)); 3395 root->SetContentBounds(gfx::Size(10, 10));
3366 root->SetDrawsContent(true); 3396 root->SetDrawsContent(true);
3367 host_impl_->active_tree()->SetRootLayer(root.Pass()); 3397 host_impl_->active_tree()->SetRootLayer(root.Pass());
3368 EXPECT_FALSE(provider->TestContext3d()->reshape_called()); 3398 EXPECT_FALSE(provider->TestContext3d()->reshape_called());
3369 provider->TestContext3d()->clear_reshape_called(); 3399 provider->TestContext3d()->clear_reshape_called();
3370 3400
3371 LayerTreeHostImpl::FrameData frame; 3401 LayerTreeHostImpl::FrameData frame;
3372 host_impl_->SetViewportSize(gfx::Size(10, 10)); 3402 host_impl_->SetViewportSize(gfx::Size(10, 10));
3373 host_impl_->SetDeviceScaleFactor(1.f); 3403 host_impl_->SetDeviceScaleFactor(1.f);
3374 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3404 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3405 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3375 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3406 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3376 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); 3407 EXPECT_TRUE(provider->TestContext3d()->reshape_called());
3377 EXPECT_EQ(provider->TestContext3d()->width(), 10); 3408 EXPECT_EQ(provider->TestContext3d()->width(), 10);
3378 EXPECT_EQ(provider->TestContext3d()->height(), 10); 3409 EXPECT_EQ(provider->TestContext3d()->height(), 10);
3379 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f); 3410 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f);
3380 host_impl_->DidDrawAllLayers(frame); 3411 host_impl_->DidDrawAllLayers(frame);
3381 provider->TestContext3d()->clear_reshape_called(); 3412 provider->TestContext3d()->clear_reshape_called();
3382 3413
3383 host_impl_->SetViewportSize(gfx::Size(20, 30)); 3414 host_impl_->SetViewportSize(gfx::Size(20, 30));
3384 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3415 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3416 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3385 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3417 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3386 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); 3418 EXPECT_TRUE(provider->TestContext3d()->reshape_called());
3387 EXPECT_EQ(provider->TestContext3d()->width(), 20); 3419 EXPECT_EQ(provider->TestContext3d()->width(), 20);
3388 EXPECT_EQ(provider->TestContext3d()->height(), 30); 3420 EXPECT_EQ(provider->TestContext3d()->height(), 30);
3389 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f); 3421 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f);
3390 host_impl_->DidDrawAllLayers(frame); 3422 host_impl_->DidDrawAllLayers(frame);
3391 provider->TestContext3d()->clear_reshape_called(); 3423 provider->TestContext3d()->clear_reshape_called();
3392 3424
3393 host_impl_->SetDeviceScaleFactor(2.f); 3425 host_impl_->SetDeviceScaleFactor(2.f);
3394 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3426 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3427 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3395 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3428 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3396 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); 3429 EXPECT_TRUE(provider->TestContext3d()->reshape_called());
3397 EXPECT_EQ(provider->TestContext3d()->width(), 20); 3430 EXPECT_EQ(provider->TestContext3d()->width(), 20);
3398 EXPECT_EQ(provider->TestContext3d()->height(), 30); 3431 EXPECT_EQ(provider->TestContext3d()->height(), 30);
3399 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 2.f); 3432 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 2.f);
3400 host_impl_->DidDrawAllLayers(frame); 3433 host_impl_->DidDrawAllLayers(frame);
3401 provider->TestContext3d()->clear_reshape_called(); 3434 provider->TestContext3d()->clear_reshape_called();
3402 } 3435 }
3403 3436
3404 // Make sure damage tracking propagates all the way to the graphics context, 3437 // Make sure damage tracking propagates all the way to the graphics context,
(...skipping 29 matching lines...) Expand all
3434 root->SetAnchorPoint(gfx::PointF()); 3467 root->SetAnchorPoint(gfx::PointF());
3435 root->SetBounds(gfx::Size(500, 500)); 3468 root->SetBounds(gfx::Size(500, 500));
3436 root->SetContentBounds(gfx::Size(500, 500)); 3469 root->SetContentBounds(gfx::Size(500, 500));
3437 root->SetDrawsContent(true); 3470 root->SetDrawsContent(true);
3438 root->AddChild(child.Pass()); 3471 root->AddChild(child.Pass());
3439 layer_tree_host_impl->active_tree()->SetRootLayer(root.Pass()); 3472 layer_tree_host_impl->active_tree()->SetRootLayer(root.Pass());
3440 3473
3441 LayerTreeHostImpl::FrameData frame; 3474 LayerTreeHostImpl::FrameData frame;
3442 3475
3443 // First frame, the entire screen should get swapped. 3476 // First frame, the entire screen should get swapped.
3444 EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); 3477 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3478 layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect()));
3445 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 3479 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
3446 layer_tree_host_impl->DidDrawAllLayers(frame); 3480 layer_tree_host_impl->DidDrawAllLayers(frame);
3447 layer_tree_host_impl->SwapBuffers(frame); 3481 layer_tree_host_impl->SwapBuffers(frame);
3448 EXPECT_EQ(TestContextSupport::SWAP, 3482 EXPECT_EQ(TestContextSupport::SWAP,
3449 context_provider->support()->last_swap_type()); 3483 context_provider->support()->last_swap_type());
3450 3484
3451 // Second frame, only the damaged area should get swapped. Damage should be 3485 // Second frame, only the damaged area should get swapped. Damage should be
3452 // the union of old and new child rects. 3486 // the union of old and new child rects.
3453 // expected damage rect: gfx::Rect(26, 28); 3487 // expected damage rect: gfx::Rect(26, 28);
3454 // expected swap rect: vertically flipped, with origin at bottom left corner. 3488 // expected swap rect: vertically flipped, with origin at bottom left corner.
3455 layer_tree_host_impl->active_tree()->root_layer()->children()[0]->SetPosition( 3489 layer_tree_host_impl->active_tree()->root_layer()->children()[0]->SetPosition(
3456 gfx::PointF()); 3490 gfx::PointF());
3457 EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); 3491 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3492 layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect()));
3458 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 3493 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
3459 host_impl_->DidDrawAllLayers(frame); 3494 host_impl_->DidDrawAllLayers(frame);
3460 layer_tree_host_impl->SwapBuffers(frame); 3495 layer_tree_host_impl->SwapBuffers(frame);
3461 3496
3462 // Make sure that partial swap is constrained to the viewport dimensions 3497 // Make sure that partial swap is constrained to the viewport dimensions
3463 // expected damage rect: gfx::Rect(500, 500); 3498 // expected damage rect: gfx::Rect(500, 500);
3464 // expected swap rect: flipped damage rect, but also clamped to viewport 3499 // expected swap rect: flipped damage rect, but also clamped to viewport
3465 EXPECT_EQ(TestContextSupport::PARTIAL_SWAP, 3500 EXPECT_EQ(TestContextSupport::PARTIAL_SWAP,
3466 context_provider->support()->last_swap_type()); 3501 context_provider->support()->last_swap_type());
3467 gfx::Rect expected_swap_rect(0, 500-28, 26, 28); 3502 gfx::Rect expected_swap_rect(0, 500-28, 26, 28);
3468 EXPECT_EQ(expected_swap_rect.ToString(), 3503 EXPECT_EQ(expected_swap_rect.ToString(),
3469 context_provider->support()-> 3504 context_provider->support()->
3470 last_partial_swap_rect().ToString()); 3505 last_partial_swap_rect().ToString());
3471 3506
3472 layer_tree_host_impl->SetViewportSize(gfx::Size(10, 10)); 3507 layer_tree_host_impl->SetViewportSize(gfx::Size(10, 10));
3473 // This will damage everything. 3508 // This will damage everything.
3474 layer_tree_host_impl->active_tree()->root_layer()->SetBackgroundColor( 3509 layer_tree_host_impl->active_tree()->root_layer()->SetBackgroundColor(
3475 SK_ColorBLACK); 3510 SK_ColorBLACK);
3476 EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); 3511 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3512 layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect()));
3477 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 3513 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
3478 host_impl_->DidDrawAllLayers(frame); 3514 host_impl_->DidDrawAllLayers(frame);
3479 layer_tree_host_impl->SwapBuffers(frame); 3515 layer_tree_host_impl->SwapBuffers(frame);
3480 3516
3481 EXPECT_EQ(TestContextSupport::SWAP, 3517 EXPECT_EQ(TestContextSupport::SWAP,
3482 context_provider->support()->last_swap_type()); 3518 context_provider->support()->last_swap_type());
3483 } 3519 }
3484 3520
3485 TEST_F(LayerTreeHostImplTest, RootLayerDoesntCreateExtraSurface) { 3521 TEST_F(LayerTreeHostImplTest, RootLayerDoesntCreateExtraSurface) {
3486 scoped_ptr<LayerImpl> root = 3522 scoped_ptr<LayerImpl> root =
3487 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); 3523 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1);
3488 scoped_ptr<LayerImpl> child = 3524 scoped_ptr<LayerImpl> child =
3489 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 2); 3525 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 2);
3490 child->SetAnchorPoint(gfx::PointF()); 3526 child->SetAnchorPoint(gfx::PointF());
3491 child->SetBounds(gfx::Size(10, 10)); 3527 child->SetBounds(gfx::Size(10, 10));
3492 child->SetContentBounds(gfx::Size(10, 10)); 3528 child->SetContentBounds(gfx::Size(10, 10));
3493 child->SetDrawsContent(true); 3529 child->SetDrawsContent(true);
3494 root->SetAnchorPoint(gfx::PointF()); 3530 root->SetAnchorPoint(gfx::PointF());
3495 root->SetBounds(gfx::Size(10, 10)); 3531 root->SetBounds(gfx::Size(10, 10));
3496 root->SetContentBounds(gfx::Size(10, 10)); 3532 root->SetContentBounds(gfx::Size(10, 10));
3497 root->SetDrawsContent(true); 3533 root->SetDrawsContent(true);
3498 root->SetForceRenderSurface(true); 3534 root->SetForceRenderSurface(true);
3499 root->AddChild(child.Pass()); 3535 root->AddChild(child.Pass());
3500 3536
3501 host_impl_->active_tree()->SetRootLayer(root.Pass()); 3537 host_impl_->active_tree()->SetRootLayer(root.Pass());
3502 3538
3503 LayerTreeHostImpl::FrameData frame; 3539 LayerTreeHostImpl::FrameData frame;
3504 3540
3505 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3541 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3542 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3506 EXPECT_EQ(1u, frame.render_surface_layer_list->size()); 3543 EXPECT_EQ(1u, frame.render_surface_layer_list->size());
3507 EXPECT_EQ(1u, frame.render_passes.size()); 3544 EXPECT_EQ(1u, frame.render_passes.size());
3508 host_impl_->DidDrawAllLayers(frame); 3545 host_impl_->DidDrawAllLayers(frame);
3509 } 3546 }
3510 3547
3511 class FakeLayerWithQuads : public LayerImpl { 3548 class FakeLayerWithQuads : public LayerImpl {
3512 public: 3549 public:
3513 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { 3550 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) {
3514 return scoped_ptr<LayerImpl>(new FakeLayerWithQuads(tree_impl, id)); 3551 return scoped_ptr<LayerImpl>(new FakeLayerWithQuads(tree_impl, id));
3515 } 3552 }
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
3630 LayerTreeSettings settings = DefaultSettings(); 3667 LayerTreeSettings settings = DefaultSettings();
3631 settings.partial_swap_enabled = false; 3668 settings.partial_swap_enabled = false;
3632 CreateHostImpl(settings, output_surface.Pass()); 3669 CreateHostImpl(settings, output_surface.Pass());
3633 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); 3670 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1));
3634 3671
3635 // Without partial swap, and no clipping, no scissor is set. 3672 // Without partial swap, and no clipping, no scissor is set.
3636 harness.MustDrawSolidQuad(); 3673 harness.MustDrawSolidQuad();
3637 harness.MustSetNoScissor(); 3674 harness.MustSetNoScissor();
3638 { 3675 {
3639 LayerTreeHostImpl::FrameData frame; 3676 LayerTreeHostImpl::FrameData frame;
3640 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3677 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3678 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3641 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3679 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3642 host_impl_->DidDrawAllLayers(frame); 3680 host_impl_->DidDrawAllLayers(frame);
3643 } 3681 }
3644 Mock::VerifyAndClearExpectations(&mock_context); 3682 Mock::VerifyAndClearExpectations(&mock_context);
3645 3683
3646 // Without partial swap, but a layer does clip its subtree, one scissor is 3684 // Without partial swap, but a layer does clip its subtree, one scissor is
3647 // set. 3685 // set.
3648 host_impl_->active_tree()->root_layer()->SetMasksToBounds(true); 3686 host_impl_->active_tree()->root_layer()->SetMasksToBounds(true);
3649 harness.MustDrawSolidQuad(); 3687 harness.MustDrawSolidQuad();
3650 harness.MustSetScissor(0, 0, 10, 10); 3688 harness.MustSetScissor(0, 0, 10, 10);
3651 { 3689 {
3652 LayerTreeHostImpl::FrameData frame; 3690 LayerTreeHostImpl::FrameData frame;
3653 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3691 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3692 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3654 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3693 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3655 host_impl_->DidDrawAllLayers(frame); 3694 host_impl_->DidDrawAllLayers(frame);
3656 } 3695 }
3657 Mock::VerifyAndClearExpectations(&mock_context); 3696 Mock::VerifyAndClearExpectations(&mock_context);
3658 } 3697 }
3659 3698
3660 TEST_F(LayerTreeHostImplTest, PartialSwap) { 3699 TEST_F(LayerTreeHostImplTest, PartialSwap) {
3661 scoped_ptr<MockContext> context_owned(new MockContext); 3700 scoped_ptr<MockContext> context_owned(new MockContext);
3662 MockContext* mock_context = context_owned.get(); 3701 MockContext* mock_context = context_owned.get();
3663 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( 3702 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d(
3664 context_owned.PassAs<TestWebGraphicsContext3D>())); 3703 context_owned.PassAs<TestWebGraphicsContext3D>()));
3665 MockContextHarness harness(mock_context); 3704 MockContextHarness harness(mock_context);
3666 3705
3667 LayerTreeSettings settings = DefaultSettings(); 3706 LayerTreeSettings settings = DefaultSettings();
3668 settings.partial_swap_enabled = true; 3707 settings.partial_swap_enabled = true;
3669 CreateHostImpl(settings, output_surface.Pass()); 3708 CreateHostImpl(settings, output_surface.Pass());
3670 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); 3709 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1));
3671 3710
3672 // The first frame is not a partially-swapped one. 3711 // The first frame is not a partially-swapped one.
3673 harness.MustSetScissor(0, 0, 10, 10); 3712 harness.MustSetScissor(0, 0, 10, 10);
3674 harness.MustDrawSolidQuad(); 3713 harness.MustDrawSolidQuad();
3675 { 3714 {
3676 LayerTreeHostImpl::FrameData frame; 3715 LayerTreeHostImpl::FrameData frame;
3677 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3716 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3717 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3678 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3718 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3679 host_impl_->DidDrawAllLayers(frame); 3719 host_impl_->DidDrawAllLayers(frame);
3680 } 3720 }
3681 Mock::VerifyAndClearExpectations(&mock_context); 3721 Mock::VerifyAndClearExpectations(&mock_context);
3682 3722
3683 // Damage a portion of the frame. 3723 // Damage a portion of the frame.
3684 host_impl_->active_tree()->root_layer()->SetUpdateRect( 3724 host_impl_->active_tree()->root_layer()->SetUpdateRect(
3685 gfx::Rect(0, 0, 2, 3)); 3725 gfx::Rect(0, 0, 2, 3));
3686 3726
3687 // The second frame will be partially-swapped (the y coordinates are flipped). 3727 // The second frame will be partially-swapped (the y coordinates are flipped).
3688 harness.MustSetScissor(0, 7, 2, 3); 3728 harness.MustSetScissor(0, 7, 2, 3);
3689 harness.MustDrawSolidQuad(); 3729 harness.MustDrawSolidQuad();
3690 { 3730 {
3691 LayerTreeHostImpl::FrameData frame; 3731 LayerTreeHostImpl::FrameData frame;
3692 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3732 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3733 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3693 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3734 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3694 host_impl_->DidDrawAllLayers(frame); 3735 host_impl_->DidDrawAllLayers(frame);
3695 } 3736 }
3696 Mock::VerifyAndClearExpectations(&mock_context); 3737 Mock::VerifyAndClearExpectations(&mock_context);
3697 } 3738 }
3698 3739
3699 static scoped_ptr<LayerTreeHostImpl> SetupLayersForOpacity( 3740 static scoped_ptr<LayerTreeHostImpl> SetupLayersForOpacity(
3700 bool partial_swap, 3741 bool partial_swap,
3701 LayerTreeHostImplClient* client, 3742 LayerTreeHostImplClient* client,
3702 Proxy* proxy, 3743 Proxy* proxy,
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
3773 3814
3774 my_host_impl->active_tree()->SetRootLayer(root.Pass()); 3815 my_host_impl->active_tree()->SetRootLayer(root.Pass());
3775 return my_host_impl.Pass(); 3816 return my_host_impl.Pass();
3776 } 3817 }
3777 3818
3778 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorPartialSwap) { 3819 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorPartialSwap) {
3779 scoped_ptr<LayerTreeHostImpl> my_host_impl = 3820 scoped_ptr<LayerTreeHostImpl> my_host_impl =
3780 SetupLayersForOpacity(true, this, &proxy_, &stats_instrumentation_); 3821 SetupLayersForOpacity(true, this, &proxy_, &stats_instrumentation_);
3781 { 3822 {
3782 LayerTreeHostImpl::FrameData frame; 3823 LayerTreeHostImpl::FrameData frame;
3783 EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); 3824 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3825 my_host_impl->PrepareToDraw(&frame, gfx::Rect()));
3784 3826
3785 // Verify all quads have been computed 3827 // Verify all quads have been computed
3786 ASSERT_EQ(2U, frame.render_passes.size()); 3828 ASSERT_EQ(2U, frame.render_passes.size());
3787 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); 3829 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size());
3788 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); 3830 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size());
3789 EXPECT_EQ(DrawQuad::SOLID_COLOR, 3831 EXPECT_EQ(DrawQuad::SOLID_COLOR,
3790 frame.render_passes[0]->quad_list[0]->material); 3832 frame.render_passes[0]->quad_list[0]->material);
3791 EXPECT_EQ(DrawQuad::RENDER_PASS, 3833 EXPECT_EQ(DrawQuad::RENDER_PASS,
3792 frame.render_passes[1]->quad_list[0]->material); 3834 frame.render_passes[1]->quad_list[0]->material);
3793 3835
3794 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 3836 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
3795 my_host_impl->DidDrawAllLayers(frame); 3837 my_host_impl->DidDrawAllLayers(frame);
3796 } 3838 }
3797 } 3839 }
3798 3840
3799 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { 3841 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) {
3800 scoped_ptr<LayerTreeHostImpl> my_host_impl = 3842 scoped_ptr<LayerTreeHostImpl> my_host_impl =
3801 SetupLayersForOpacity(false, this, &proxy_, &stats_instrumentation_); 3843 SetupLayersForOpacity(false, this, &proxy_, &stats_instrumentation_);
3802 { 3844 {
3803 LayerTreeHostImpl::FrameData frame; 3845 LayerTreeHostImpl::FrameData frame;
3804 EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); 3846 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3847 my_host_impl->PrepareToDraw(&frame, gfx::Rect()));
3805 3848
3806 // Verify all quads have been computed 3849 // Verify all quads have been computed
3807 ASSERT_EQ(2U, frame.render_passes.size()); 3850 ASSERT_EQ(2U, frame.render_passes.size());
3808 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); 3851 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size());
3809 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); 3852 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size());
3810 EXPECT_EQ(DrawQuad::SOLID_COLOR, 3853 EXPECT_EQ(DrawQuad::SOLID_COLOR,
3811 frame.render_passes[0]->quad_list[0]->material); 3854 frame.render_passes[0]->quad_list[0]->material);
3812 EXPECT_EQ(DrawQuad::RENDER_PASS, 3855 EXPECT_EQ(DrawQuad::RENDER_PASS,
3813 frame.render_passes[1]->quad_list[0]->material); 3856 frame.render_passes[1]->quad_list[0]->material);
3814 3857
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
3850 io_surface_layer->SetContentBounds(gfx::Size(10, 10)); 3893 io_surface_layer->SetContentBounds(gfx::Size(10, 10));
3851 io_surface_layer->SetDrawsContent(true); 3894 io_surface_layer->SetDrawsContent(true);
3852 io_surface_layer->SetIOSurfaceProperties(1, gfx::Size(10, 10)); 3895 io_surface_layer->SetIOSurfaceProperties(1, gfx::Size(10, 10));
3853 root_layer->AddChild(io_surface_layer.PassAs<LayerImpl>()); 3896 root_layer->AddChild(io_surface_layer.PassAs<LayerImpl>());
3854 3897
3855 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); 3898 host_impl_->active_tree()->SetRootLayer(root_layer.Pass());
3856 3899
3857 EXPECT_EQ(0u, context3d->NumTextures()); 3900 EXPECT_EQ(0u, context3d->NumTextures());
3858 3901
3859 LayerTreeHostImpl::FrameData frame; 3902 LayerTreeHostImpl::FrameData frame;
3860 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3903 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3904 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3861 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3905 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3862 host_impl_->DidDrawAllLayers(frame); 3906 host_impl_->DidDrawAllLayers(frame);
3863 host_impl_->SwapBuffers(frame); 3907 host_impl_->SwapBuffers(frame);
3864 3908
3865 EXPECT_GT(context3d->NumTextures(), 0u); 3909 EXPECT_GT(context3d->NumTextures(), 0u);
3866 3910
3867 // Kill the layer tree. 3911 // Kill the layer tree.
3868 host_impl_->active_tree()->SetRootLayer( 3912 host_impl_->active_tree()->SetRootLayer(
3869 LayerImpl::Create(host_impl_->active_tree(), 100)); 3913 LayerImpl::Create(host_impl_->active_tree(), 100));
3870 // There should be no textures left in use after. 3914 // There should be no textures left in use after.
(...skipping 24 matching lines...) Expand all
3895 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); 3939 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1));
3896 host_impl_->active_tree()->set_background_color(SK_ColorWHITE); 3940 host_impl_->active_tree()->set_background_color(SK_ColorWHITE);
3897 3941
3898 // Verify one quad is drawn when transparent background set is not set. 3942 // Verify one quad is drawn when transparent background set is not set.
3899 host_impl_->active_tree()->set_has_transparent_background(false); 3943 host_impl_->active_tree()->set_has_transparent_background(false);
3900 EXPECT_CALL(*mock_context, useProgram(_)) 3944 EXPECT_CALL(*mock_context, useProgram(_))
3901 .Times(1); 3945 .Times(1);
3902 EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) 3946 EXPECT_CALL(*mock_context, drawElements(_, _, _, _))
3903 .Times(1); 3947 .Times(1);
3904 LayerTreeHostImpl::FrameData frame; 3948 LayerTreeHostImpl::FrameData frame;
3905 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3949 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3950 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3906 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3951 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3907 host_impl_->DidDrawAllLayers(frame); 3952 host_impl_->DidDrawAllLayers(frame);
3908 Mock::VerifyAndClearExpectations(&mock_context); 3953 Mock::VerifyAndClearExpectations(&mock_context);
3909 3954
3910 // Verify no quads are drawn when transparent background is set. 3955 // Verify no quads are drawn when transparent background is set.
3911 host_impl_->active_tree()->set_has_transparent_background(true); 3956 host_impl_->active_tree()->set_has_transparent_background(true);
3912 host_impl_->SetFullRootLayerDamage(); 3957 host_impl_->SetFullRootLayerDamage();
3913 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 3958 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
3959 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3914 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3960 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3915 host_impl_->DidDrawAllLayers(frame); 3961 host_impl_->DidDrawAllLayers(frame);
3916 Mock::VerifyAndClearExpectations(&mock_context); 3962 Mock::VerifyAndClearExpectations(&mock_context);
3917 } 3963 }
3918 3964
3919 TEST_F(LayerTreeHostImplTest, ReleaseContentsTextureShouldTriggerCommit) { 3965 TEST_F(LayerTreeHostImplTest, ReleaseContentsTextureShouldTriggerCommit) {
3920 set_reduce_memory_result(false); 3966 set_reduce_memory_result(false);
3921 3967
3922 // If changing the memory limit wouldn't result in changing what was 3968 // If changing the memory limit wouldn't result in changing what was
3923 // committed, then no commit should be requested. 3969 // committed, then no commit should be requested.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3960 : public LayerTreeHostImplTest { 4006 : public LayerTreeHostImplTest {
3961 protected: 4007 protected:
3962 virtual scoped_ptr<OutputSurface> CreateOutputSurface() OVERRIDE { 4008 virtual scoped_ptr<OutputSurface> CreateOutputSurface() OVERRIDE {
3963 return FakeOutputSurface::CreateDelegating3d().PassAs<OutputSurface>(); 4009 return FakeOutputSurface::CreateDelegating3d().PassAs<OutputSurface>();
3964 } 4010 }
3965 4011
3966 void DrawFrameAndTestDamage(const gfx::RectF& expected_damage) { 4012 void DrawFrameAndTestDamage(const gfx::RectF& expected_damage) {
3967 bool expect_to_draw = !expected_damage.IsEmpty(); 4013 bool expect_to_draw = !expected_damage.IsEmpty();
3968 4014
3969 LayerTreeHostImpl::FrameData frame; 4015 LayerTreeHostImpl::FrameData frame;
3970 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4016 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4017 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
3971 4018
3972 if (!expect_to_draw) { 4019 if (!expect_to_draw) {
3973 // With no damage, we don't draw, and no quads are created. 4020 // With no damage, we don't draw, and no quads are created.
3974 ASSERT_EQ(0u, frame.render_passes.size()); 4021 ASSERT_EQ(0u, frame.render_passes.size());
3975 } else { 4022 } else {
3976 ASSERT_EQ(1u, frame.render_passes.size()); 4023 ASSERT_EQ(1u, frame.render_passes.size());
3977 4024
3978 // Verify the damage rect for the root render pass. 4025 // Verify the damage rect for the root render pass.
3979 const RenderPass* root_render_pass = frame.render_passes.back(); 4026 const RenderPass* root_render_pass = frame.render_passes.back();
3980 EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect); 4027 EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect);
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
4111 mask_layer->SetDrawsContent(true); 4158 mask_layer->SetDrawsContent(true);
4112 4159
4113 4160
4114 // Check that the tree scaling is correctly taken into account for the mask, 4161 // Check that the tree scaling is correctly taken into account for the mask,
4115 // that should fully map onto the quad. 4162 // that should fully map onto the quad.
4116 float device_scale_factor = 1.f; 4163 float device_scale_factor = 1.f;
4117 host_impl_->SetViewportSize(root_size); 4164 host_impl_->SetViewportSize(root_size);
4118 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4165 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4119 { 4166 {
4120 LayerTreeHostImpl::FrameData frame; 4167 LayerTreeHostImpl::FrameData frame;
4121 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4168 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4169 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4122 4170
4123 ASSERT_EQ(1u, frame.render_passes.size()); 4171 ASSERT_EQ(1u, frame.render_passes.size());
4124 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4172 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4125 ASSERT_EQ(DrawQuad::RENDER_PASS, 4173 ASSERT_EQ(DrawQuad::RENDER_PASS,
4126 frame.render_passes[0]->quad_list[0]->material); 4174 frame.render_passes[0]->quad_list[0]->material);
4127 const RenderPassDrawQuad* render_pass_quad = 4175 const RenderPassDrawQuad* render_pass_quad =
4128 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4176 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]);
4129 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 4177 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
4130 render_pass_quad->rect.ToString()); 4178 render_pass_quad->rect.ToString());
4131 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 4179 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
4132 render_pass_quad->mask_uv_rect.ToString()); 4180 render_pass_quad->mask_uv_rect.ToString());
4133 4181
4134 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4182 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4135 host_impl_->DidDrawAllLayers(frame); 4183 host_impl_->DidDrawAllLayers(frame);
4136 } 4184 }
4137 4185
4138 4186
4139 // Applying a DSF should change the render surface size, but won't affect 4187 // Applying a DSF should change the render surface size, but won't affect
4140 // which part of the mask is used. 4188 // which part of the mask is used.
4141 device_scale_factor = 2.f; 4189 device_scale_factor = 2.f;
4142 gfx::Size device_viewport = 4190 gfx::Size device_viewport =
4143 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); 4191 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor));
4144 host_impl_->SetViewportSize(device_viewport); 4192 host_impl_->SetViewportSize(device_viewport);
4145 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4193 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4146 host_impl_->active_tree()->set_needs_update_draw_properties(); 4194 host_impl_->active_tree()->set_needs_update_draw_properties();
4147 { 4195 {
4148 LayerTreeHostImpl::FrameData frame; 4196 LayerTreeHostImpl::FrameData frame;
4149 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4197 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4198 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4150 4199
4151 ASSERT_EQ(1u, frame.render_passes.size()); 4200 ASSERT_EQ(1u, frame.render_passes.size());
4152 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4201 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4153 ASSERT_EQ(DrawQuad::RENDER_PASS, 4202 ASSERT_EQ(DrawQuad::RENDER_PASS,
4154 frame.render_passes[0]->quad_list[0]->material); 4203 frame.render_passes[0]->quad_list[0]->material);
4155 const RenderPassDrawQuad* render_pass_quad = 4204 const RenderPassDrawQuad* render_pass_quad =
4156 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4205 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]);
4157 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), 4206 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(),
4158 render_pass_quad->rect.ToString()); 4207 render_pass_quad->rect.ToString());
4159 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 4208 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
4160 render_pass_quad->mask_uv_rect.ToString()); 4209 render_pass_quad->mask_uv_rect.ToString());
4161 4210
4162 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4211 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4163 host_impl_->DidDrawAllLayers(frame); 4212 host_impl_->DidDrawAllLayers(frame);
4164 } 4213 }
4165 4214
4166 4215
4167 // Applying an equivalent content scale on the content layer and the mask 4216 // Applying an equivalent content scale on the content layer and the mask
4168 // should still result in the same part of the mask being used. 4217 // should still result in the same part of the mask being used.
4169 gfx::Size content_bounds = 4218 gfx::Size content_bounds =
4170 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, 4219 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size,
4171 device_scale_factor)); 4220 device_scale_factor));
4172 content_layer->SetContentBounds(content_bounds); 4221 content_layer->SetContentBounds(content_bounds);
4173 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); 4222 content_layer->SetContentsScale(device_scale_factor, device_scale_factor);
4174 mask_layer->SetContentBounds(content_bounds); 4223 mask_layer->SetContentBounds(content_bounds);
4175 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); 4224 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor);
4176 host_impl_->active_tree()->set_needs_update_draw_properties(); 4225 host_impl_->active_tree()->set_needs_update_draw_properties();
4177 { 4226 {
4178 LayerTreeHostImpl::FrameData frame; 4227 LayerTreeHostImpl::FrameData frame;
4179 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4228 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4229 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4180 4230
4181 ASSERT_EQ(1u, frame.render_passes.size()); 4231 ASSERT_EQ(1u, frame.render_passes.size());
4182 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4232 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4183 ASSERT_EQ(DrawQuad::RENDER_PASS, 4233 ASSERT_EQ(DrawQuad::RENDER_PASS,
4184 frame.render_passes[0]->quad_list[0]->material); 4234 frame.render_passes[0]->quad_list[0]->material);
4185 const RenderPassDrawQuad* render_pass_quad = 4235 const RenderPassDrawQuad* render_pass_quad =
4186 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4236 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]);
4187 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), 4237 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(),
4188 render_pass_quad->rect.ToString()); 4238 render_pass_quad->rect.ToString());
4189 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 4239 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
4232 mask_layer->SetPosition(gfx::PointF()); 4282 mask_layer->SetPosition(gfx::PointF());
4233 mask_layer->SetAnchorPoint(gfx::PointF()); 4283 mask_layer->SetAnchorPoint(gfx::PointF());
4234 mask_layer->SetDrawsContent(true); 4284 mask_layer->SetDrawsContent(true);
4235 4285
4236 // Check that the mask fills the surface. 4286 // Check that the mask fills the surface.
4237 float device_scale_factor = 1.f; 4287 float device_scale_factor = 1.f;
4238 host_impl_->SetViewportSize(root_size); 4288 host_impl_->SetViewportSize(root_size);
4239 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4289 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4240 { 4290 {
4241 LayerTreeHostImpl::FrameData frame; 4291 LayerTreeHostImpl::FrameData frame;
4242 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4292 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4293 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4243 4294
4244 ASSERT_EQ(1u, frame.render_passes.size()); 4295 ASSERT_EQ(1u, frame.render_passes.size());
4245 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4296 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4246 ASSERT_EQ(DrawQuad::RENDER_PASS, 4297 ASSERT_EQ(DrawQuad::RENDER_PASS,
4247 frame.render_passes[0]->quad_list[0]->material); 4298 frame.render_passes[0]->quad_list[0]->material);
4248 const RenderPassDrawQuad* render_pass_quad = 4299 const RenderPassDrawQuad* render_pass_quad =
4249 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4300 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]);
4250 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), 4301 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(),
4251 render_pass_quad->rect.ToString()); 4302 render_pass_quad->rect.ToString());
4252 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 4303 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
4253 render_pass_quad->mask_uv_rect.ToString()); 4304 render_pass_quad->mask_uv_rect.ToString());
4254 4305
4255 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4306 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4256 host_impl_->DidDrawAllLayers(frame); 4307 host_impl_->DidDrawAllLayers(frame);
4257 } 4308 }
4258 4309
4259 // Applying a DSF should change the render surface size, but won't affect 4310 // Applying a DSF should change the render surface size, but won't affect
4260 // which part of the mask is used. 4311 // which part of the mask is used.
4261 device_scale_factor = 2.f; 4312 device_scale_factor = 2.f;
4262 gfx::Size device_viewport = 4313 gfx::Size device_viewport =
4263 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); 4314 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor));
4264 host_impl_->SetViewportSize(device_viewport); 4315 host_impl_->SetViewportSize(device_viewport);
4265 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4316 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4266 host_impl_->active_tree()->set_needs_update_draw_properties(); 4317 host_impl_->active_tree()->set_needs_update_draw_properties();
4267 { 4318 {
4268 LayerTreeHostImpl::FrameData frame; 4319 LayerTreeHostImpl::FrameData frame;
4269 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4320 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4321 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4270 4322
4271 ASSERT_EQ(1u, frame.render_passes.size()); 4323 ASSERT_EQ(1u, frame.render_passes.size());
4272 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4324 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4273 ASSERT_EQ(DrawQuad::RENDER_PASS, 4325 ASSERT_EQ(DrawQuad::RENDER_PASS,
4274 frame.render_passes[0]->quad_list[0]->material); 4326 frame.render_passes[0]->quad_list[0]->material);
4275 const RenderPassDrawQuad* render_pass_quad = 4327 const RenderPassDrawQuad* render_pass_quad =
4276 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4328 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]);
4277 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 4329 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
4278 render_pass_quad->rect.ToString()); 4330 render_pass_quad->rect.ToString());
4279 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 4331 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
4280 render_pass_quad->mask_uv_rect.ToString()); 4332 render_pass_quad->mask_uv_rect.ToString());
4281 4333
4282 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4334 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4283 host_impl_->DidDrawAllLayers(frame); 4335 host_impl_->DidDrawAllLayers(frame);
4284 } 4336 }
4285 4337
4286 // Applying an equivalent content scale on the content layer and the mask 4338 // Applying an equivalent content scale on the content layer and the mask
4287 // should still result in the same part of the mask being used. 4339 // should still result in the same part of the mask being used.
4288 gfx::Size layer_size_large = 4340 gfx::Size layer_size_large =
4289 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); 4341 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor));
4290 content_layer->SetContentBounds(layer_size_large); 4342 content_layer->SetContentBounds(layer_size_large);
4291 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); 4343 content_layer->SetContentsScale(device_scale_factor, device_scale_factor);
4292 gfx::Size mask_size_large = 4344 gfx::Size mask_size_large =
4293 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); 4345 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor));
4294 mask_layer->SetContentBounds(mask_size_large); 4346 mask_layer->SetContentBounds(mask_size_large);
4295 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); 4347 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor);
4296 host_impl_->active_tree()->set_needs_update_draw_properties(); 4348 host_impl_->active_tree()->set_needs_update_draw_properties();
4297 { 4349 {
4298 LayerTreeHostImpl::FrameData frame; 4350 LayerTreeHostImpl::FrameData frame;
4299 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4351 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4352 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4300 4353
4301 ASSERT_EQ(1u, frame.render_passes.size()); 4354 ASSERT_EQ(1u, frame.render_passes.size());
4302 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4355 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4303 ASSERT_EQ(DrawQuad::RENDER_PASS, 4356 ASSERT_EQ(DrawQuad::RENDER_PASS,
4304 frame.render_passes[0]->quad_list[0]->material); 4357 frame.render_passes[0]->quad_list[0]->material);
4305 const RenderPassDrawQuad* render_pass_quad = 4358 const RenderPassDrawQuad* render_pass_quad =
4306 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4359 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]);
4307 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 4360 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
4308 render_pass_quad->rect.ToString()); 4361 render_pass_quad->rect.ToString());
4309 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 4362 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
4310 render_pass_quad->mask_uv_rect.ToString()); 4363 render_pass_quad->mask_uv_rect.ToString());
4311 4364
4312 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4365 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4313 host_impl_->DidDrawAllLayers(frame); 4366 host_impl_->DidDrawAllLayers(frame);
4314 } 4367 }
4315 4368
4316 // Applying a different contents scale to the mask layer means it will have 4369 // Applying a different contents scale to the mask layer means it will have
4317 // a larger texture, but it should use the same tex coords to cover the 4370 // a larger texture, but it should use the same tex coords to cover the
4318 // layer it masks. 4371 // layer it masks.
4319 mask_layer->SetContentBounds(mask_size); 4372 mask_layer->SetContentBounds(mask_size);
4320 mask_layer->SetContentsScale(1.f, 1.f); 4373 mask_layer->SetContentsScale(1.f, 1.f);
4321 host_impl_->active_tree()->set_needs_update_draw_properties(); 4374 host_impl_->active_tree()->set_needs_update_draw_properties();
4322 { 4375 {
4323 LayerTreeHostImpl::FrameData frame; 4376 LayerTreeHostImpl::FrameData frame;
4324 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4377 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4378 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4325 4379
4326 ASSERT_EQ(1u, frame.render_passes.size()); 4380 ASSERT_EQ(1u, frame.render_passes.size());
4327 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4381 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4328 ASSERT_EQ(DrawQuad::RENDER_PASS, 4382 ASSERT_EQ(DrawQuad::RENDER_PASS,
4329 frame.render_passes[0]->quad_list[0]->material); 4383 frame.render_passes[0]->quad_list[0]->material);
4330 const RenderPassDrawQuad* render_pass_quad = 4384 const RenderPassDrawQuad* render_pass_quad =
4331 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4385 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]);
4332 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 4386 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
4333 render_pass_quad->rect.ToString()); 4387 render_pass_quad->rect.ToString());
4334 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 4388 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
4382 mask_layer->SetPosition(gfx::PointF()); 4436 mask_layer->SetPosition(gfx::PointF());
4383 mask_layer->SetAnchorPoint(gfx::PointF()); 4437 mask_layer->SetAnchorPoint(gfx::PointF());
4384 mask_layer->SetDrawsContent(true); 4438 mask_layer->SetDrawsContent(true);
4385 4439
4386 // Check that the mask fills the surface. 4440 // Check that the mask fills the surface.
4387 float device_scale_factor = 1.f; 4441 float device_scale_factor = 1.f;
4388 host_impl_->SetViewportSize(root_size); 4442 host_impl_->SetViewportSize(root_size);
4389 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4443 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4390 { 4444 {
4391 LayerTreeHostImpl::FrameData frame; 4445 LayerTreeHostImpl::FrameData frame;
4392 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4446 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4447 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4393 4448
4394 ASSERT_EQ(1u, frame.render_passes.size()); 4449 ASSERT_EQ(1u, frame.render_passes.size());
4395 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 4450 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
4396 ASSERT_EQ(DrawQuad::RENDER_PASS, 4451 ASSERT_EQ(DrawQuad::RENDER_PASS,
4397 frame.render_passes[0]->quad_list[1]->material); 4452 frame.render_passes[0]->quad_list[1]->material);
4398 const RenderPassDrawQuad* replica_quad = 4453 const RenderPassDrawQuad* replica_quad =
4399 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); 4454 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]);
4400 EXPECT_TRUE(replica_quad->is_replica); 4455 EXPECT_TRUE(replica_quad->is_replica);
4401 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), 4456 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(),
4402 replica_quad->rect.ToString()); 4457 replica_quad->rect.ToString());
4403 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 4458 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
4404 replica_quad->mask_uv_rect.ToString()); 4459 replica_quad->mask_uv_rect.ToString());
4405 4460
4406 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4461 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4407 host_impl_->DidDrawAllLayers(frame); 4462 host_impl_->DidDrawAllLayers(frame);
4408 } 4463 }
4409 4464
4410 // Applying a DSF should change the render surface size, but won't affect 4465 // Applying a DSF should change the render surface size, but won't affect
4411 // which part of the mask is used. 4466 // which part of the mask is used.
4412 device_scale_factor = 2.f; 4467 device_scale_factor = 2.f;
4413 gfx::Size device_viewport = 4468 gfx::Size device_viewport =
4414 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); 4469 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor));
4415 host_impl_->SetViewportSize(device_viewport); 4470 host_impl_->SetViewportSize(device_viewport);
4416 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4471 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4417 host_impl_->active_tree()->set_needs_update_draw_properties(); 4472 host_impl_->active_tree()->set_needs_update_draw_properties();
4418 { 4473 {
4419 LayerTreeHostImpl::FrameData frame; 4474 LayerTreeHostImpl::FrameData frame;
4420 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4475 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4476 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4421 4477
4422 ASSERT_EQ(1u, frame.render_passes.size()); 4478 ASSERT_EQ(1u, frame.render_passes.size());
4423 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 4479 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
4424 ASSERT_EQ(DrawQuad::RENDER_PASS, 4480 ASSERT_EQ(DrawQuad::RENDER_PASS,
4425 frame.render_passes[0]->quad_list[1]->material); 4481 frame.render_passes[0]->quad_list[1]->material);
4426 const RenderPassDrawQuad* replica_quad = 4482 const RenderPassDrawQuad* replica_quad =
4427 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); 4483 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]);
4428 EXPECT_TRUE(replica_quad->is_replica); 4484 EXPECT_TRUE(replica_quad->is_replica);
4429 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 4485 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
4430 replica_quad->rect.ToString()); 4486 replica_quad->rect.ToString());
(...skipping 10 matching lines...) Expand all
4441 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); 4497 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor));
4442 content_layer->SetContentBounds(layer_size_large); 4498 content_layer->SetContentBounds(layer_size_large);
4443 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); 4499 content_layer->SetContentsScale(device_scale_factor, device_scale_factor);
4444 gfx::Size mask_size_large = 4500 gfx::Size mask_size_large =
4445 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); 4501 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor));
4446 mask_layer->SetContentBounds(mask_size_large); 4502 mask_layer->SetContentBounds(mask_size_large);
4447 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); 4503 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor);
4448 host_impl_->active_tree()->set_needs_update_draw_properties(); 4504 host_impl_->active_tree()->set_needs_update_draw_properties();
4449 { 4505 {
4450 LayerTreeHostImpl::FrameData frame; 4506 LayerTreeHostImpl::FrameData frame;
4451 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4507 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4508 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4452 4509
4453 ASSERT_EQ(1u, frame.render_passes.size()); 4510 ASSERT_EQ(1u, frame.render_passes.size());
4454 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 4511 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
4455 ASSERT_EQ(DrawQuad::RENDER_PASS, 4512 ASSERT_EQ(DrawQuad::RENDER_PASS,
4456 frame.render_passes[0]->quad_list[1]->material); 4513 frame.render_passes[0]->quad_list[1]->material);
4457 const RenderPassDrawQuad* replica_quad = 4514 const RenderPassDrawQuad* replica_quad =
4458 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); 4515 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]);
4459 EXPECT_TRUE(replica_quad->is_replica); 4516 EXPECT_TRUE(replica_quad->is_replica);
4460 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 4517 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
4461 replica_quad->rect.ToString()); 4518 replica_quad->rect.ToString());
4462 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 4519 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
4463 replica_quad->mask_uv_rect.ToString()); 4520 replica_quad->mask_uv_rect.ToString());
4464 4521
4465 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4522 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4466 host_impl_->DidDrawAllLayers(frame); 4523 host_impl_->DidDrawAllLayers(frame);
4467 } 4524 }
4468 4525
4469 // Applying a different contents scale to the mask layer means it will have 4526 // Applying a different contents scale to the mask layer means it will have
4470 // a larger texture, but it should use the same tex coords to cover the 4527 // a larger texture, but it should use the same tex coords to cover the
4471 // layer it masks. 4528 // layer it masks.
4472 mask_layer->SetContentBounds(mask_size); 4529 mask_layer->SetContentBounds(mask_size);
4473 mask_layer->SetContentsScale(1.f, 1.f); 4530 mask_layer->SetContentsScale(1.f, 1.f);
4474 host_impl_->active_tree()->set_needs_update_draw_properties(); 4531 host_impl_->active_tree()->set_needs_update_draw_properties();
4475 { 4532 {
4476 LayerTreeHostImpl::FrameData frame; 4533 LayerTreeHostImpl::FrameData frame;
4477 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4534 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4535 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4478 4536
4479 ASSERT_EQ(1u, frame.render_passes.size()); 4537 ASSERT_EQ(1u, frame.render_passes.size());
4480 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 4538 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
4481 ASSERT_EQ(DrawQuad::RENDER_PASS, 4539 ASSERT_EQ(DrawQuad::RENDER_PASS,
4482 frame.render_passes[0]->quad_list[1]->material); 4540 frame.render_passes[0]->quad_list[1]->material);
4483 const RenderPassDrawQuad* replica_quad = 4541 const RenderPassDrawQuad* replica_quad =
4484 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); 4542 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]);
4485 EXPECT_TRUE(replica_quad->is_replica); 4543 EXPECT_TRUE(replica_quad->is_replica);
4486 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 4544 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
4487 replica_quad->rect.ToString()); 4545 replica_quad->rect.ToString());
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
4547 mask_layer->SetContentBounds(mask_size); 4605 mask_layer->SetContentBounds(mask_size);
4548 mask_layer->SetPosition(gfx::PointF()); 4606 mask_layer->SetPosition(gfx::PointF());
4549 mask_layer->SetAnchorPoint(gfx::PointF()); 4607 mask_layer->SetAnchorPoint(gfx::PointF());
4550 mask_layer->SetDrawsContent(true); 4608 mask_layer->SetDrawsContent(true);
4551 4609
4552 float device_scale_factor = 1.f; 4610 float device_scale_factor = 1.f;
4553 host_impl_->SetViewportSize(root_size); 4611 host_impl_->SetViewportSize(root_size);
4554 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4612 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4555 { 4613 {
4556 LayerTreeHostImpl::FrameData frame; 4614 LayerTreeHostImpl::FrameData frame;
4557 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4615 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4616 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4558 4617
4559 ASSERT_EQ(1u, frame.render_passes.size()); 4618 ASSERT_EQ(1u, frame.render_passes.size());
4560 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 4619 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
4561 4620
4562 // The surface is 100x50. 4621 // The surface is 100x50.
4563 ASSERT_EQ(DrawQuad::RENDER_PASS, 4622 ASSERT_EQ(DrawQuad::RENDER_PASS,
4564 frame.render_passes[0]->quad_list[0]->material); 4623 frame.render_passes[0]->quad_list[0]->material);
4565 const RenderPassDrawQuad* render_pass_quad = 4624 const RenderPassDrawQuad* render_pass_quad =
4566 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4625 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]);
4567 EXPECT_FALSE(render_pass_quad->is_replica); 4626 EXPECT_FALSE(render_pass_quad->is_replica);
(...skipping 13 matching lines...) Expand all
4581 4640
4582 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4641 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4583 host_impl_->DidDrawAllLayers(frame); 4642 host_impl_->DidDrawAllLayers(frame);
4584 } 4643 }
4585 4644
4586 // Move the child to (-50, 0) instead. Now the mask should be moved to still 4645 // Move the child to (-50, 0) instead. Now the mask should be moved to still
4587 // cover the layer being replicated. 4646 // cover the layer being replicated.
4588 content_child_layer->SetPosition(gfx::Point(-50, 0)); 4647 content_child_layer->SetPosition(gfx::Point(-50, 0));
4589 { 4648 {
4590 LayerTreeHostImpl::FrameData frame; 4649 LayerTreeHostImpl::FrameData frame;
4591 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4650 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4651 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4592 4652
4593 ASSERT_EQ(1u, frame.render_passes.size()); 4653 ASSERT_EQ(1u, frame.render_passes.size());
4594 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 4654 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
4595 4655
4596 // The surface is 100x50 with its origin at (-50, 0). 4656 // The surface is 100x50 with its origin at (-50, 0).
4597 ASSERT_EQ(DrawQuad::RENDER_PASS, 4657 ASSERT_EQ(DrawQuad::RENDER_PASS,
4598 frame.render_passes[0]->quad_list[0]->material); 4658 frame.render_passes[0]->quad_list[0]->material);
4599 const RenderPassDrawQuad* render_pass_quad = 4659 const RenderPassDrawQuad* render_pass_quad =
4600 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4660 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]);
4601 EXPECT_FALSE(render_pass_quad->is_replica); 4661 EXPECT_FALSE(render_pass_quad->is_replica);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
4680 mask_layer->SetContentBounds(mask_size); 4740 mask_layer->SetContentBounds(mask_size);
4681 mask_layer->SetPosition(gfx::PointF()); 4741 mask_layer->SetPosition(gfx::PointF());
4682 mask_layer->SetAnchorPoint(gfx::PointF()); 4742 mask_layer->SetAnchorPoint(gfx::PointF());
4683 mask_layer->SetDrawsContent(true); 4743 mask_layer->SetDrawsContent(true);
4684 4744
4685 float device_scale_factor = 1.f; 4745 float device_scale_factor = 1.f;
4686 host_impl_->SetViewportSize(root_size); 4746 host_impl_->SetViewportSize(root_size);
4687 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4747 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4688 { 4748 {
4689 LayerTreeHostImpl::FrameData frame; 4749 LayerTreeHostImpl::FrameData frame;
4690 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4750 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4751 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4691 4752
4692 ASSERT_EQ(1u, frame.render_passes.size()); 4753 ASSERT_EQ(1u, frame.render_passes.size());
4693 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4754 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4694 4755
4695 // The surface is clipped to 10x20. 4756 // The surface is clipped to 10x20.
4696 ASSERT_EQ(DrawQuad::RENDER_PASS, 4757 ASSERT_EQ(DrawQuad::RENDER_PASS,
4697 frame.render_passes[0]->quad_list[0]->material); 4758 frame.render_passes[0]->quad_list[0]->material);
4698 const RenderPassDrawQuad* render_pass_quad = 4759 const RenderPassDrawQuad* render_pass_quad =
4699 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4760 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]);
4700 EXPECT_FALSE(render_pass_quad->is_replica); 4761 EXPECT_FALSE(render_pass_quad->is_replica);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
4762 scrolling_layer->SetScrollable(true); 4823 scrolling_layer->SetScrollable(true);
4763 scrolling_layer->SetMaxScrollOffset(scroll_offset); 4824 scrolling_layer->SetMaxScrollOffset(scroll_offset);
4764 scrolling_layer->SetScrollOffset(scroll_offset); 4825 scrolling_layer->SetScrollOffset(scroll_offset);
4765 4826
4766 host_impl_->ActivatePendingTree(); 4827 host_impl_->ActivatePendingTree();
4767 4828
4768 host_impl_->active_tree()->UpdateDrawProperties(); 4829 host_impl_->active_tree()->UpdateDrawProperties();
4769 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); 4830 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size());
4770 4831
4771 LayerTreeHostImpl::FrameData frame; 4832 LayerTreeHostImpl::FrameData frame;
4772 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4833 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4834 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4773 4835
4774 ASSERT_EQ(1u, frame.render_passes.size()); 4836 ASSERT_EQ(1u, frame.render_passes.size());
4775 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); 4837 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size());
4776 const DrawQuad* quad = frame.render_passes[0]->quad_list[0]; 4838 const DrawQuad* quad = frame.render_passes[0]->quad_list[0];
4777 4839
4778 float edge[24]; 4840 float edge[24];
4779 gfx::QuadF device_layer_quad; 4841 gfx::QuadF device_layer_quad;
4780 bool antialiased = 4842 bool antialiased =
4781 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( 4843 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing(
4782 quad->quadTransform(), quad, &device_layer_quad, edge); 4844 quad->quadTransform(), quad, &device_layer_quad, edge);
(...skipping 13 matching lines...) Expand all
4796 swap_buffers_complete_++; 4858 swap_buffers_complete_++;
4797 } 4859 }
4798 4860
4799 int swap_buffers_complete_; 4861 int swap_buffers_complete_;
4800 }; 4862 };
4801 4863
4802 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) { 4864 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) {
4803 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); 4865 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1));
4804 { 4866 {
4805 LayerTreeHostImpl::FrameData frame; 4867 LayerTreeHostImpl::FrameData frame;
4806 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4868 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4869 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4807 host_impl_->DrawLayers(&frame, base::TimeTicks()); 4870 host_impl_->DrawLayers(&frame, base::TimeTicks());
4808 host_impl_->DidDrawAllLayers(frame); 4871 host_impl_->DidDrawAllLayers(frame);
4809 } 4872 }
4810 CompositorFrameAck ack; 4873 CompositorFrameAck ack;
4811 host_impl_->ReclaimResources(&ack); 4874 host_impl_->ReclaimResources(&ack);
4812 host_impl_->OnSwapBuffersComplete(); 4875 host_impl_->OnSwapBuffersComplete();
4813 EXPECT_EQ(swap_buffers_complete_, 1); 4876 EXPECT_EQ(swap_buffers_complete_, 1);
4814 } 4877 }
4815 4878
4816 class CountingSoftwareDevice : public SoftwareOutputDevice { 4879 class CountingSoftwareDevice : public SoftwareOutputDevice {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
4876 FakeVideoFrameProvider provider; 4939 FakeVideoFrameProvider provider;
4877 scoped_ptr<VideoLayerImpl> video_layer = 4940 scoped_ptr<VideoLayerImpl> video_layer =
4878 VideoLayerImpl::Create(host_impl_->active_tree(), 2, &provider); 4941 VideoLayerImpl::Create(host_impl_->active_tree(), 2, &provider);
4879 video_layer->SetBounds(gfx::Size(10, 10)); 4942 video_layer->SetBounds(gfx::Size(10, 10));
4880 video_layer->SetContentBounds(gfx::Size(10, 10)); 4943 video_layer->SetContentBounds(gfx::Size(10, 10));
4881 video_layer->SetDrawsContent(true); 4944 video_layer->SetDrawsContent(true);
4882 root_layer->AddChild(video_layer.PassAs<LayerImpl>()); 4945 root_layer->AddChild(video_layer.PassAs<LayerImpl>());
4883 SetupRootLayerImpl(root_layer.PassAs<LayerImpl>()); 4946 SetupRootLayerImpl(root_layer.PassAs<LayerImpl>());
4884 4947
4885 LayerTreeHostImpl::FrameData frame; 4948 LayerTreeHostImpl::FrameData frame;
4886 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4949 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
4950 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4887 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4951 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4888 host_impl_->DidDrawAllLayers(frame); 4952 host_impl_->DidDrawAllLayers(frame);
4889 4953
4890 EXPECT_EQ(1u, frame.will_draw_layers.size()); 4954 EXPECT_EQ(1u, frame.will_draw_layers.size());
4891 EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]); 4955 EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]);
4892 } 4956 }
4893 4957
4894 class LayerTreeHostImplTestDeferredInitialize : public LayerTreeHostImplTest { 4958 class LayerTreeHostImplTestDeferredInitialize : public LayerTreeHostImplTest {
4895 protected: 4959 protected:
4896 virtual void SetUp() OVERRIDE { 4960 virtual void SetUp() OVERRIDE {
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
5181 5245
5182 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); 5246 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1));
5183 5247
5184 ScopedPtrVector<CopyOutputRequest> requests; 5248 ScopedPtrVector<CopyOutputRequest> requests;
5185 requests.push_back(CopyOutputRequest::CreateRequest( 5249 requests.push_back(CopyOutputRequest::CreateRequest(
5186 base::Bind(&ShutdownReleasesContext_Callback))); 5250 base::Bind(&ShutdownReleasesContext_Callback)));
5187 5251
5188 host_impl_->active_tree()->root_layer()->PassCopyRequests(&requests); 5252 host_impl_->active_tree()->root_layer()->PassCopyRequests(&requests);
5189 5253
5190 LayerTreeHostImpl::FrameData frame; 5254 LayerTreeHostImpl::FrameData frame;
5191 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 5255 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
5256 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
5192 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5257 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5193 host_impl_->DidDrawAllLayers(frame); 5258 host_impl_->DidDrawAllLayers(frame);
5194 5259
5195 // The CopyOutputResult's callback has a ref on the ContextProvider and a 5260 // The CopyOutputResult's callback has a ref on the ContextProvider and a
5196 // texture in a texture mailbox. 5261 // texture in a texture mailbox.
5197 EXPECT_FALSE(context_provider->HasOneRef()); 5262 EXPECT_FALSE(context_provider->HasOneRef());
5198 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); 5263 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures());
5199 5264
5200 host_impl_.reset(); 5265 host_impl_.reset();
5201 5266
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
5369 ui::LatencyInfo latency_info; 5434 ui::LatencyInfo latency_info;
5370 latency_info.AddLatencyNumber( 5435 latency_info.AddLatencyNumber(
5371 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, 0); 5436 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, 0);
5372 scoped_ptr<SwapPromise> swap_promise( 5437 scoped_ptr<SwapPromise> swap_promise(
5373 new LatencyInfoSwapPromise(latency_info)); 5438 new LatencyInfoSwapPromise(latency_info));
5374 host_impl_->active_tree()->QueueSwapPromise(swap_promise.Pass()); 5439 host_impl_->active_tree()->QueueSwapPromise(swap_promise.Pass());
5375 host_impl_->SetNeedsRedraw(); 5440 host_impl_->SetNeedsRedraw();
5376 5441
5377 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); 5442 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize());
5378 LayerTreeHostImpl::FrameData frame; 5443 LayerTreeHostImpl::FrameData frame;
5379 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 5444 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW,
5445 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
5380 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5446 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5381 host_impl_->DidDrawAllLayers(frame); 5447 host_impl_->DidDrawAllLayers(frame);
5382 EXPECT_TRUE(host_impl_->SwapBuffers(frame)); 5448 EXPECT_TRUE(host_impl_->SwapBuffers(frame));
5383 5449
5384 const std::vector<ui::LatencyInfo>& metadata_latency_after = 5450 const std::vector<ui::LatencyInfo>& metadata_latency_after =
5385 fake_output_surface->last_sent_frame().metadata.latency_info; 5451 fake_output_surface->last_sent_frame().metadata.latency_info;
5386 EXPECT_EQ(1u, metadata_latency_after.size()); 5452 EXPECT_EQ(1u, metadata_latency_after.size());
5387 EXPECT_TRUE(metadata_latency_after[0].FindLatency( 5453 EXPECT_TRUE(metadata_latency_after[0].FindLatency(
5388 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL)); 5454 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL));
5389 } 5455 }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
5453 &set_needs_redraw_count)); 5519 &set_needs_redraw_count));
5454 // Empty damage rect won't signal the monitor. 5520 // Empty damage rect won't signal the monitor.
5455 host_impl_->SetNeedsRedrawRect(gfx::Rect()); 5521 host_impl_->SetNeedsRedrawRect(gfx::Rect());
5456 EXPECT_EQ(0, set_needs_commit_count); 5522 EXPECT_EQ(0, set_needs_commit_count);
5457 EXPECT_EQ(2, set_needs_redraw_count); 5523 EXPECT_EQ(2, set_needs_redraw_count);
5458 } 5524 }
5459 } 5525 }
5460 5526
5461 } // namespace 5527 } // namespace
5462 } // namespace cc 5528 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698