| OLD | NEW | 
|     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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|    46 #include "cc/test/fake_rendering_stats_instrumentation.h" |    46 #include "cc/test/fake_rendering_stats_instrumentation.h" | 
|    47 #include "cc/test/fake_video_frame_provider.h" |    47 #include "cc/test/fake_video_frame_provider.h" | 
|    48 #include "cc/test/geometry_test_utils.h" |    48 #include "cc/test/geometry_test_utils.h" | 
|    49 #include "cc/test/layer_test_common.h" |    49 #include "cc/test/layer_test_common.h" | 
|    50 #include "cc/test/render_pass_test_common.h" |    50 #include "cc/test/render_pass_test_common.h" | 
|    51 #include "cc/trees/layer_tree_impl.h" |    51 #include "cc/trees/layer_tree_impl.h" | 
|    52 #include "cc/trees/single_thread_proxy.h" |    52 #include "cc/trees/single_thread_proxy.h" | 
|    53 #include "media/base/media.h" |    53 #include "media/base/media.h" | 
|    54 #include "testing/gmock/include/gmock/gmock.h" |    54 #include "testing/gmock/include/gmock/gmock.h" | 
|    55 #include "testing/gtest/include/gtest/gtest.h" |    55 #include "testing/gtest/include/gtest/gtest.h" | 
 |    56 #include "ui/gfx/frame_time.h" | 
|    56 #include "ui/gfx/rect_conversions.h" |    57 #include "ui/gfx/rect_conversions.h" | 
|    57 #include "ui/gfx/size_conversions.h" |    58 #include "ui/gfx/size_conversions.h" | 
|    58 #include "ui/gfx/vector2d_conversions.h" |    59 #include "ui/gfx/vector2d_conversions.h" | 
|    59  |    60  | 
|    60 using ::testing::Mock; |    61 using ::testing::Mock; | 
|    61 using ::testing::Return; |    62 using ::testing::Return; | 
|    62 using ::testing::AnyNumber; |    63 using ::testing::AnyNumber; | 
|    63 using ::testing::AtLeast; |    64 using ::testing::AtLeast; | 
|    64 using ::testing::_; |    65 using ::testing::_; | 
|    65 using media::VideoFrame; |    66 using media::VideoFrame; | 
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   266   } |   267   } | 
|   267  |   268  | 
|   268   void InitializeRendererAndDrawFrame() { |   269   void InitializeRendererAndDrawFrame() { | 
|   269     host_impl_->InitializeRenderer(CreateOutputSurface()); |   270     host_impl_->InitializeRenderer(CreateOutputSurface()); | 
|   270     DrawFrame(); |   271     DrawFrame(); | 
|   271   } |   272   } | 
|   272  |   273  | 
|   273   void DrawFrame() { |   274   void DrawFrame() { | 
|   274     LayerTreeHostImpl::FrameData frame; |   275     LayerTreeHostImpl::FrameData frame; | 
|   275     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |   276     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|   276     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |   277     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|   277     host_impl_->DidDrawAllLayers(frame); |   278     host_impl_->DidDrawAllLayers(frame); | 
|   278   } |   279   } | 
|   279  |   280  | 
|   280   void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor); |   281   void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor); | 
|   281   void pinch_zoom_pan_viewport_test(float device_scale_factor); |   282   void pinch_zoom_pan_viewport_test(float device_scale_factor); | 
|   282   void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor); |   283   void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor); | 
|   283   void pinch_zoom_pan_viewport_and_scroll_boundary_test( |   284   void pinch_zoom_pan_viewport_and_scroll_boundary_test( | 
|   284       float device_scale_factor); |   285       float device_scale_factor); | 
|   285  |   286  | 
|   286   void CheckNotifyCalledIfCanDrawChanged(bool always_draw) { |   287   void CheckNotifyCalledIfCanDrawChanged(bool always_draw) { | 
| (...skipping 866 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1153   scroll->SetVerticalScrollbarLayer(scrollbar.get()); |  1154   scroll->SetVerticalScrollbarLayer(scrollbar.get()); | 
|  1154  |  1155  | 
|  1155   scroll->AddChild(contents.Pass()); |  1156   scroll->AddChild(contents.Pass()); | 
|  1156   root->AddChild(scroll.Pass()); |  1157   root->AddChild(scroll.Pass()); | 
|  1157   root->AddChild(scrollbar.PassAs<LayerImpl>()); |  1158   root->AddChild(scrollbar.PassAs<LayerImpl>()); | 
|  1158  |  1159  | 
|  1159   host_impl_->active_tree()->SetRootLayer(root.Pass()); |  1160   host_impl_->active_tree()->SetRootLayer(root.Pass()); | 
|  1160   host_impl_->active_tree()->DidBecomeActive(); |  1161   host_impl_->active_tree()->DidBecomeActive(); | 
|  1161   InitializeRendererAndDrawFrame(); |  1162   InitializeRendererAndDrawFrame(); | 
|  1162  |  1163  | 
|  1163   base::TimeTicks fake_now = base::TimeTicks::Now(); |  1164   base::TimeTicks fake_now = gfx::FrameTime::Now(); | 
|  1164   host_impl_override_time->SetCurrentPhysicalTimeTicksForTest(fake_now); |  1165   host_impl_override_time->SetCurrentPhysicalTimeTicksForTest(fake_now); | 
|  1165  |  1166  | 
|  1166   // If no scroll happened recently, StartScrollbarAnimation should have no |  1167   // If no scroll happened recently, StartScrollbarAnimation should have no | 
|  1167   // effect. |  1168   // effect. | 
|  1168   host_impl_->StartScrollbarAnimation(); |  1169   host_impl_->StartScrollbarAnimation(); | 
|  1169   EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_); |  1170   EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_); | 
|  1170   EXPECT_FALSE(did_request_redraw_); |  1171   EXPECT_FALSE(did_request_redraw_); | 
|  1171  |  1172  | 
|  1172   // If no scroll happened during a scroll gesture, StartScrollbarAnimation |  1173   // If no scroll happened during a scroll gesture, StartScrollbarAnimation | 
|  1173   // should have no effect. |  1174   // should have no effect. | 
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1452   DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( |  1453   DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( | 
|  1453       host_impl_->active_tree()->root_layer()); |  1454       host_impl_->active_tree()->root_layer()); | 
|  1454  |  1455  | 
|  1455   root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |  1456   root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 
|  1456   DidDrawCheckLayer* layer = |  1457   DidDrawCheckLayer* layer = | 
|  1457       static_cast<DidDrawCheckLayer*>(root->children()[0]); |  1458       static_cast<DidDrawCheckLayer*>(root->children()[0]); | 
|  1458  |  1459  | 
|  1459   { |  1460   { | 
|  1460     LayerTreeHostImpl::FrameData frame; |  1461     LayerTreeHostImpl::FrameData frame; | 
|  1461     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect(10, 10))); |  1462     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect(10, 10))); | 
|  1462     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  1463     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  1463     host_impl_->DidDrawAllLayers(frame); |  1464     host_impl_->DidDrawAllLayers(frame); | 
|  1464  |  1465  | 
|  1465     EXPECT_TRUE(layer->will_draw_called()); |  1466     EXPECT_TRUE(layer->will_draw_called()); | 
|  1466     EXPECT_TRUE(layer->append_quads_called()); |  1467     EXPECT_TRUE(layer->append_quads_called()); | 
|  1467     EXPECT_TRUE(layer->did_draw_called()); |  1468     EXPECT_TRUE(layer->did_draw_called()); | 
|  1468   } |  1469   } | 
|  1469  |  1470  | 
|  1470   { |  1471   { | 
|  1471     LayerTreeHostImpl::FrameData frame; |  1472     LayerTreeHostImpl::FrameData frame; | 
|  1472  |  1473  | 
|  1473     layer->set_will_draw_returns_false(); |  1474     layer->set_will_draw_returns_false(); | 
|  1474     layer->ClearDidDrawCheck(); |  1475     layer->ClearDidDrawCheck(); | 
|  1475  |  1476  | 
|  1476     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect(10, 10))); |  1477     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect(10, 10))); | 
|  1477     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  1478     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  1478     host_impl_->DidDrawAllLayers(frame); |  1479     host_impl_->DidDrawAllLayers(frame); | 
|  1479  |  1480  | 
|  1480     EXPECT_TRUE(layer->will_draw_called()); |  1481     EXPECT_TRUE(layer->will_draw_called()); | 
|  1481     EXPECT_FALSE(layer->append_quads_called()); |  1482     EXPECT_FALSE(layer->append_quads_called()); | 
|  1482     EXPECT_FALSE(layer->did_draw_called()); |  1483     EXPECT_FALSE(layer->did_draw_called()); | 
|  1483   } |  1484   } | 
|  1484 } |  1485 } | 
|  1485  |  1486  | 
|  1486 TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) { |  1487 TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) { | 
|  1487   // The root layer is always drawn, so run this test on a child layer that |  1488   // The root layer is always drawn, so run this test on a child layer that | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
|  1499   layer->SetPosition(gfx::PointF(100.f, 100.f)); |  1500   layer->SetPosition(gfx::PointF(100.f, 100.f)); | 
|  1500   layer->SetBounds(gfx::Size(10, 10)); |  1501   layer->SetBounds(gfx::Size(10, 10)); | 
|  1501   layer->SetContentBounds(gfx::Size(10, 10)); |  1502   layer->SetContentBounds(gfx::Size(10, 10)); | 
|  1502  |  1503  | 
|  1503   LayerTreeHostImpl::FrameData frame; |  1504   LayerTreeHostImpl::FrameData frame; | 
|  1504  |  1505  | 
|  1505   EXPECT_FALSE(layer->will_draw_called()); |  1506   EXPECT_FALSE(layer->will_draw_called()); | 
|  1506   EXPECT_FALSE(layer->did_draw_called()); |  1507   EXPECT_FALSE(layer->did_draw_called()); | 
|  1507  |  1508  | 
|  1508   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  1509   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  1509   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  1510   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  1510   host_impl_->DidDrawAllLayers(frame); |  1511   host_impl_->DidDrawAllLayers(frame); | 
|  1511  |  1512  | 
|  1512   EXPECT_FALSE(layer->will_draw_called()); |  1513   EXPECT_FALSE(layer->will_draw_called()); | 
|  1513   EXPECT_FALSE(layer->did_draw_called()); |  1514   EXPECT_FALSE(layer->did_draw_called()); | 
|  1514  |  1515  | 
|  1515   EXPECT_TRUE(layer->visible_content_rect().IsEmpty()); |  1516   EXPECT_TRUE(layer->visible_content_rect().IsEmpty()); | 
|  1516  |  1517  | 
|  1517   // Ensure visible_content_rect for layer is not empty |  1518   // Ensure visible_content_rect for layer is not empty | 
|  1518   layer->SetPosition(gfx::PointF()); |  1519   layer->SetPosition(gfx::PointF()); | 
|  1519  |  1520  | 
|  1520   EXPECT_FALSE(layer->will_draw_called()); |  1521   EXPECT_FALSE(layer->will_draw_called()); | 
|  1521   EXPECT_FALSE(layer->did_draw_called()); |  1522   EXPECT_FALSE(layer->did_draw_called()); | 
|  1522  |  1523  | 
|  1523   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  1524   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  1524   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  1525   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  1525   host_impl_->DidDrawAllLayers(frame); |  1526   host_impl_->DidDrawAllLayers(frame); | 
|  1526  |  1527  | 
|  1527   EXPECT_TRUE(layer->will_draw_called()); |  1528   EXPECT_TRUE(layer->will_draw_called()); | 
|  1528   EXPECT_TRUE(layer->did_draw_called()); |  1529   EXPECT_TRUE(layer->did_draw_called()); | 
|  1529  |  1530  | 
|  1530   EXPECT_FALSE(layer->visible_content_rect().IsEmpty()); |  1531   EXPECT_FALSE(layer->visible_content_rect().IsEmpty()); | 
|  1531 } |  1532 } | 
|  1532  |  1533  | 
|  1533 TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) { |  1534 TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) { | 
|  1534   gfx::Size big_size(1000, 1000); |  1535   gfx::Size big_size(1000, 1000); | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
|  1553   top_layer->SetContentsOpaque(true); |  1554   top_layer->SetContentsOpaque(true); | 
|  1554  |  1555  | 
|  1555   LayerTreeHostImpl::FrameData frame; |  1556   LayerTreeHostImpl::FrameData frame; | 
|  1556  |  1557  | 
|  1557   EXPECT_FALSE(occluded_layer->will_draw_called()); |  1558   EXPECT_FALSE(occluded_layer->will_draw_called()); | 
|  1558   EXPECT_FALSE(occluded_layer->did_draw_called()); |  1559   EXPECT_FALSE(occluded_layer->did_draw_called()); | 
|  1559   EXPECT_FALSE(top_layer->will_draw_called()); |  1560   EXPECT_FALSE(top_layer->will_draw_called()); | 
|  1560   EXPECT_FALSE(top_layer->did_draw_called()); |  1561   EXPECT_FALSE(top_layer->did_draw_called()); | 
|  1561  |  1562  | 
|  1562   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  1563   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  1563   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  1564   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  1564   host_impl_->DidDrawAllLayers(frame); |  1565   host_impl_->DidDrawAllLayers(frame); | 
|  1565  |  1566  | 
|  1566   EXPECT_FALSE(occluded_layer->will_draw_called()); |  1567   EXPECT_FALSE(occluded_layer->will_draw_called()); | 
|  1567   EXPECT_FALSE(occluded_layer->did_draw_called()); |  1568   EXPECT_FALSE(occluded_layer->did_draw_called()); | 
|  1568   EXPECT_TRUE(top_layer->will_draw_called()); |  1569   EXPECT_TRUE(top_layer->will_draw_called()); | 
|  1569   EXPECT_TRUE(top_layer->did_draw_called()); |  1570   EXPECT_TRUE(top_layer->did_draw_called()); | 
|  1570 } |  1571 } | 
|  1571  |  1572  | 
|  1572 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) { |  1573 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) { | 
|  1573   host_impl_->active_tree()->SetRootLayer( |  1574   host_impl_->active_tree()->SetRootLayer( | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
|  1585  |  1586  | 
|  1586   layer1->SetOpacity(0.3f); |  1587   layer1->SetOpacity(0.3f); | 
|  1587   layer1->SetPreserves3d(false); |  1588   layer1->SetPreserves3d(false); | 
|  1588  |  1589  | 
|  1589   EXPECT_FALSE(root->did_draw_called()); |  1590   EXPECT_FALSE(root->did_draw_called()); | 
|  1590   EXPECT_FALSE(layer1->did_draw_called()); |  1591   EXPECT_FALSE(layer1->did_draw_called()); | 
|  1591   EXPECT_FALSE(layer2->did_draw_called()); |  1592   EXPECT_FALSE(layer2->did_draw_called()); | 
|  1592  |  1593  | 
|  1593   LayerTreeHostImpl::FrameData frame; |  1594   LayerTreeHostImpl::FrameData frame; | 
|  1594   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  1595   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  1595   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  1596   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  1596   host_impl_->DidDrawAllLayers(frame); |  1597   host_impl_->DidDrawAllLayers(frame); | 
|  1597  |  1598  | 
|  1598   EXPECT_TRUE(root->did_draw_called()); |  1599   EXPECT_TRUE(root->did_draw_called()); | 
|  1599   EXPECT_TRUE(layer1->did_draw_called()); |  1600   EXPECT_TRUE(layer1->did_draw_called()); | 
|  1600   EXPECT_TRUE(layer2->did_draw_called()); |  1601   EXPECT_TRUE(layer2->did_draw_called()); | 
|  1601  |  1602  | 
|  1602   EXPECT_NE(root->render_surface(), layer1->render_surface()); |  1603   EXPECT_NE(root->render_surface(), layer1->render_surface()); | 
|  1603   EXPECT_TRUE(!!layer1->render_surface()); |  1604   EXPECT_TRUE(!!layer1->render_surface()); | 
|  1604 } |  1605 } | 
|  1605  |  1606  | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1658       MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |  1659       MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 
|  1659                                            2, |  1660                                            2, | 
|  1660                                            false, |  1661                                            false, | 
|  1661                                            false, |  1662                                            false, | 
|  1662                                            true, |  1663                                            true, | 
|  1663                                            host_impl_->resource_provider())); |  1664                                            host_impl_->resource_provider())); | 
|  1664  |  1665  | 
|  1665   LayerTreeHostImpl::FrameData frame; |  1666   LayerTreeHostImpl::FrameData frame; | 
|  1666  |  1667  | 
|  1667   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  1668   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  1668   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  1669   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  1669   host_impl_->DidDrawAllLayers(frame); |  1670   host_impl_->DidDrawAllLayers(frame); | 
|  1670  |  1671  | 
|  1671   // When a texture is missing and we're not animating, we draw as usual with |  1672   // When a texture is missing and we're not animating, we draw as usual with | 
|  1672   // checkerboarding. |  1673   // checkerboarding. | 
|  1673   host_impl_->active_tree()->SetRootLayer( |  1674   host_impl_->active_tree()->SetRootLayer( | 
|  1674       DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); |  1675       DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); | 
|  1675   root = |  1676   root = | 
|  1676       static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |  1677       static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 
|  1677   root->AddChild( |  1678   root->AddChild( | 
|  1678       MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |  1679       MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 
|  1679                                            4, |  1680                                            4, | 
|  1680                                            true, |  1681                                            true, | 
|  1681                                            false, |  1682                                            false, | 
|  1682                                            false, |  1683                                            false, | 
|  1683                                            host_impl_->resource_provider())); |  1684                                            host_impl_->resource_provider())); | 
|  1684  |  1685  | 
|  1685   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  1686   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  1686   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  1687   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  1687   host_impl_->DidDrawAllLayers(frame); |  1688   host_impl_->DidDrawAllLayers(frame); | 
|  1688  |  1689  | 
|  1689   // When a texture is missing and we're animating, we don't want to draw |  1690   // When a texture is missing and we're animating, we don't want to draw | 
|  1690   // anything. |  1691   // anything. | 
|  1691   host_impl_->active_tree()->SetRootLayer( |  1692   host_impl_->active_tree()->SetRootLayer( | 
|  1692       DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); |  1693       DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); | 
|  1693   root = |  1694   root = | 
|  1694       static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |  1695       static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 
|  1695   root->AddChild( |  1696   root->AddChild( | 
|  1696       MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |  1697       MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 
|  1697                                            6, |  1698                                            6, | 
|  1698                                            true, |  1699                                            true, | 
|  1699                                            false, |  1700                                            false, | 
|  1700                                            true, |  1701                                            true, | 
|  1701                                            host_impl_->resource_provider())); |  1702                                            host_impl_->resource_provider())); | 
|  1702  |  1703  | 
|  1703   EXPECT_FALSE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  1704   EXPECT_FALSE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  1704   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  1705   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  1705   host_impl_->DidDrawAllLayers(frame); |  1706   host_impl_->DidDrawAllLayers(frame); | 
|  1706  |  1707  | 
|  1707   // When the layer skips draw and we're animating, we still draw the frame. |  1708   // When the layer skips draw and we're animating, we still draw the frame. | 
|  1708   host_impl_->active_tree()->SetRootLayer( |  1709   host_impl_->active_tree()->SetRootLayer( | 
|  1709       DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); |  1710       DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); | 
|  1710   root = |  1711   root = | 
|  1711       static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |  1712       static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 
|  1712   root->AddChild( |  1713   root->AddChild( | 
|  1713       MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |  1714       MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 
|  1714                                            8, |  1715                                            8, | 
|  1715                                            false, |  1716                                            false, | 
|  1716                                            true, |  1717                                            true, | 
|  1717                                            true, |  1718                                            true, | 
|  1718                                            host_impl_->resource_provider())); |  1719                                            host_impl_->resource_provider())); | 
|  1719  |  1720  | 
|  1720   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  1721   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  1721   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  1722   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  1722   host_impl_->DidDrawAllLayers(frame); |  1723   host_impl_->DidDrawAllLayers(frame); | 
|  1723 } |  1724 } | 
|  1724  |  1725  | 
|  1725 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { |  1726 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { | 
|  1726   scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |  1727   scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 
|  1727   root->SetScrollable(false); |  1728   root->SetScrollable(false); | 
|  1728   host_impl_->active_tree()->SetRootLayer(root.Pass()); |  1729   host_impl_->active_tree()->SetRootLayer(root.Pass()); | 
|  1729   InitializeRendererAndDrawFrame(); |  1730   InitializeRendererAndDrawFrame(); | 
|  1730  |  1731  | 
|  1731   // Scroll event is ignored because layer is not scrollable. |  1732   // Scroll event is ignored because layer is not scrollable. | 
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2007   EXPECT_EQ(1.f, scroll->contents_scale_y()); |  2008   EXPECT_EQ(1.f, scroll->contents_scale_y()); | 
|  2008   EXPECT_EQ(1.f, child->contents_scale_x()); |  2009   EXPECT_EQ(1.f, child->contents_scale_x()); | 
|  2009   EXPECT_EQ(1.f, child->contents_scale_y()); |  2010   EXPECT_EQ(1.f, child->contents_scale_y()); | 
|  2010   EXPECT_EQ(1.f, grand_child->contents_scale_x()); |  2011   EXPECT_EQ(1.f, grand_child->contents_scale_x()); | 
|  2011   EXPECT_EQ(1.f, grand_child->contents_scale_y()); |  2012   EXPECT_EQ(1.f, grand_child->contents_scale_y()); | 
|  2012  |  2013  | 
|  2013   // Make sure all the layers are drawn with the page scale delta applied, i.e., |  2014   // Make sure all the layers are drawn with the page scale delta applied, i.e., | 
|  2014   // the page scale delta on the root layer is applied hierarchically. |  2015   // the page scale delta on the root layer is applied hierarchically. | 
|  2015   LayerTreeHostImpl::FrameData frame; |  2016   LayerTreeHostImpl::FrameData frame; | 
|  2016   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  2017   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  2017   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  2018   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  2018   host_impl_->DidDrawAllLayers(frame); |  2019   host_impl_->DidDrawAllLayers(frame); | 
|  2019  |  2020  | 
|  2020   EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(0, 0)); |  2021   EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(0, 0)); | 
|  2021   EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(1, 1)); |  2022   EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(1, 1)); | 
|  2022   EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(0, 0)); |  2023   EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(0, 0)); | 
|  2023   EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(1, 1)); |  2024   EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(1, 1)); | 
|  2024   EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(0, 0)); |  2025   EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(0, 0)); | 
|  2025   EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(1, 1)); |  2026   EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(1, 1)); | 
|  2026   EXPECT_EQ(new_page_scale, |  2027   EXPECT_EQ(new_page_scale, | 
|  2027             grand_child->draw_transform().matrix().getDouble(0, 0)); |  2028             grand_child->draw_transform().matrix().getDouble(0, 0)); | 
| (...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2842       static_cast<BlendStateCheckLayer*>(root->children()[0]); |  2843       static_cast<BlendStateCheckLayer*>(root->children()[0]); | 
|  2843   layer1->SetPosition(gfx::PointF(2.f, 2.f)); |  2844   layer1->SetPosition(gfx::PointF(2.f, 2.f)); | 
|  2844  |  2845  | 
|  2845   LayerTreeHostImpl::FrameData frame; |  2846   LayerTreeHostImpl::FrameData frame; | 
|  2846  |  2847  | 
|  2847   // Opaque layer, drawn without blending. |  2848   // Opaque layer, drawn without blending. | 
|  2848   layer1->SetContentsOpaque(true); |  2849   layer1->SetContentsOpaque(true); | 
|  2849   layer1->SetExpectation(false, false); |  2850   layer1->SetExpectation(false, false); | 
|  2850   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2851   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2851   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  2852   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  2852   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  2853   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  2853   EXPECT_TRUE(layer1->quads_appended()); |  2854   EXPECT_TRUE(layer1->quads_appended()); | 
|  2854   host_impl_->DidDrawAllLayers(frame); |  2855   host_impl_->DidDrawAllLayers(frame); | 
|  2855  |  2856  | 
|  2856   // Layer with translucent content and painting, so drawn with blending. |  2857   // Layer with translucent content and painting, so drawn with blending. | 
|  2857   layer1->SetContentsOpaque(false); |  2858   layer1->SetContentsOpaque(false); | 
|  2858   layer1->SetExpectation(true, false); |  2859   layer1->SetExpectation(true, false); | 
|  2859   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2860   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2860   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  2861   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  2861   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  2862   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  2862   EXPECT_TRUE(layer1->quads_appended()); |  2863   EXPECT_TRUE(layer1->quads_appended()); | 
|  2863   host_impl_->DidDrawAllLayers(frame); |  2864   host_impl_->DidDrawAllLayers(frame); | 
|  2864  |  2865  | 
|  2865   // Layer with translucent opacity, drawn with blending. |  2866   // Layer with translucent opacity, drawn with blending. | 
|  2866   layer1->SetContentsOpaque(true); |  2867   layer1->SetContentsOpaque(true); | 
|  2867   layer1->SetOpacity(0.5f); |  2868   layer1->SetOpacity(0.5f); | 
|  2868   layer1->SetExpectation(true, false); |  2869   layer1->SetExpectation(true, false); | 
|  2869   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2870   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2870   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  2871   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  2871   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  2872   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  2872   EXPECT_TRUE(layer1->quads_appended()); |  2873   EXPECT_TRUE(layer1->quads_appended()); | 
|  2873   host_impl_->DidDrawAllLayers(frame); |  2874   host_impl_->DidDrawAllLayers(frame); | 
|  2874  |  2875  | 
|  2875   // Layer with translucent opacity and painting, drawn with blending. |  2876   // Layer with translucent opacity and painting, drawn with blending. | 
|  2876   layer1->SetContentsOpaque(true); |  2877   layer1->SetContentsOpaque(true); | 
|  2877   layer1->SetOpacity(0.5f); |  2878   layer1->SetOpacity(0.5f); | 
|  2878   layer1->SetExpectation(true, false); |  2879   layer1->SetExpectation(true, false); | 
|  2879   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2880   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2880   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  2881   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  2881   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  2882   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  2882   EXPECT_TRUE(layer1->quads_appended()); |  2883   EXPECT_TRUE(layer1->quads_appended()); | 
|  2883   host_impl_->DidDrawAllLayers(frame); |  2884   host_impl_->DidDrawAllLayers(frame); | 
|  2884  |  2885  | 
|  2885   layer1->AddChild( |  2886   layer1->AddChild( | 
|  2886       BlendStateCheckLayer::Create(host_impl_->active_tree(), |  2887       BlendStateCheckLayer::Create(host_impl_->active_tree(), | 
|  2887                                    3, |  2888                                    3, | 
|  2888                                    host_impl_->resource_provider())); |  2889                                    host_impl_->resource_provider())); | 
|  2889   BlendStateCheckLayer* layer2 = |  2890   BlendStateCheckLayer* layer2 = | 
|  2890       static_cast<BlendStateCheckLayer*>(layer1->children()[0]); |  2891       static_cast<BlendStateCheckLayer*>(layer1->children()[0]); | 
|  2891   layer2->SetPosition(gfx::PointF(4.f, 4.f)); |  2892   layer2->SetPosition(gfx::PointF(4.f, 4.f)); | 
|  2892  |  2893  | 
|  2893   // 2 opaque layers, drawn without blending. |  2894   // 2 opaque layers, drawn without blending. | 
|  2894   layer1->SetContentsOpaque(true); |  2895   layer1->SetContentsOpaque(true); | 
|  2895   layer1->SetOpacity(1.f); |  2896   layer1->SetOpacity(1.f); | 
|  2896   layer1->SetExpectation(false, false); |  2897   layer1->SetExpectation(false, false); | 
|  2897   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2898   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2898   layer2->SetContentsOpaque(true); |  2899   layer2->SetContentsOpaque(true); | 
|  2899   layer2->SetOpacity(1.f); |  2900   layer2->SetOpacity(1.f); | 
|  2900   layer2->SetExpectation(false, false); |  2901   layer2->SetExpectation(false, false); | 
|  2901   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2902   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2902   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  2903   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  2903   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  2904   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  2904   EXPECT_TRUE(layer1->quads_appended()); |  2905   EXPECT_TRUE(layer1->quads_appended()); | 
|  2905   EXPECT_TRUE(layer2->quads_appended()); |  2906   EXPECT_TRUE(layer2->quads_appended()); | 
|  2906   host_impl_->DidDrawAllLayers(frame); |  2907   host_impl_->DidDrawAllLayers(frame); | 
|  2907  |  2908  | 
|  2908   // Parent layer with translucent content, drawn with blending. |  2909   // Parent layer with translucent content, drawn with blending. | 
|  2909   // Child layer with opaque content, drawn without blending. |  2910   // Child layer with opaque content, drawn without blending. | 
|  2910   layer1->SetContentsOpaque(false); |  2911   layer1->SetContentsOpaque(false); | 
|  2911   layer1->SetExpectation(true, false); |  2912   layer1->SetExpectation(true, false); | 
|  2912   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2913   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2913   layer2->SetExpectation(false, false); |  2914   layer2->SetExpectation(false, false); | 
|  2914   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2915   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2915   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  2916   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  2916   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  2917   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  2917   EXPECT_TRUE(layer1->quads_appended()); |  2918   EXPECT_TRUE(layer1->quads_appended()); | 
|  2918   EXPECT_TRUE(layer2->quads_appended()); |  2919   EXPECT_TRUE(layer2->quads_appended()); | 
|  2919   host_impl_->DidDrawAllLayers(frame); |  2920   host_impl_->DidDrawAllLayers(frame); | 
|  2920  |  2921  | 
|  2921   // Parent layer with translucent content but opaque painting, drawn without |  2922   // Parent layer with translucent content but opaque painting, drawn without | 
|  2922   // blending. |  2923   // blending. | 
|  2923   // Child layer with opaque content, drawn without blending. |  2924   // Child layer with opaque content, drawn without blending. | 
|  2924   layer1->SetContentsOpaque(true); |  2925   layer1->SetContentsOpaque(true); | 
|  2925   layer1->SetExpectation(false, false); |  2926   layer1->SetExpectation(false, false); | 
|  2926   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2927   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2927   layer2->SetExpectation(false, false); |  2928   layer2->SetExpectation(false, false); | 
|  2928   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2929   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2929   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  2930   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  2930   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  2931   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  2931   EXPECT_TRUE(layer1->quads_appended()); |  2932   EXPECT_TRUE(layer1->quads_appended()); | 
|  2932   EXPECT_TRUE(layer2->quads_appended()); |  2933   EXPECT_TRUE(layer2->quads_appended()); | 
|  2933   host_impl_->DidDrawAllLayers(frame); |  2934   host_impl_->DidDrawAllLayers(frame); | 
|  2934  |  2935  | 
|  2935   // Parent layer with translucent opacity and opaque content. Since it has a |  2936   // Parent layer with translucent opacity and opaque content. Since it has a | 
|  2936   // drawing child, it's drawn to a render surface which carries the opacity, |  2937   // drawing child, it's drawn to a render surface which carries the opacity, | 
|  2937   // so it's itself drawn without blending. |  2938   // so it's itself drawn without blending. | 
|  2938   // Child layer with opaque content, drawn without blending (parent surface |  2939   // Child layer with opaque content, drawn without blending (parent surface | 
|  2939   // carries the inherited opacity). |  2940   // carries the inherited opacity). | 
|  2940   layer1->SetContentsOpaque(true); |  2941   layer1->SetContentsOpaque(true); | 
|  2941   layer1->SetOpacity(0.5f); |  2942   layer1->SetOpacity(0.5f); | 
|  2942   layer1->SetExpectation(false, true); |  2943   layer1->SetExpectation(false, true); | 
|  2943   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2944   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2944   layer2->SetExpectation(false, false); |  2945   layer2->SetExpectation(false, false); | 
|  2945   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2946   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2946   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  2947   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  2947   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  2948   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  2948   EXPECT_TRUE(layer1->quads_appended()); |  2949   EXPECT_TRUE(layer1->quads_appended()); | 
|  2949   EXPECT_TRUE(layer2->quads_appended()); |  2950   EXPECT_TRUE(layer2->quads_appended()); | 
|  2950   host_impl_->DidDrawAllLayers(frame); |  2951   host_impl_->DidDrawAllLayers(frame); | 
|  2951  |  2952  | 
|  2952   // Draw again, but with child non-opaque, to make sure |  2953   // Draw again, but with child non-opaque, to make sure | 
|  2953   // layer1 not culled. |  2954   // layer1 not culled. | 
|  2954   layer1->SetContentsOpaque(true); |  2955   layer1->SetContentsOpaque(true); | 
|  2955   layer1->SetOpacity(1.f); |  2956   layer1->SetOpacity(1.f); | 
|  2956   layer1->SetExpectation(false, false); |  2957   layer1->SetExpectation(false, false); | 
|  2957   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2958   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2958   layer2->SetContentsOpaque(true); |  2959   layer2->SetContentsOpaque(true); | 
|  2959   layer2->SetOpacity(0.5f); |  2960   layer2->SetOpacity(0.5f); | 
|  2960   layer2->SetExpectation(true, false); |  2961   layer2->SetExpectation(true, false); | 
|  2961   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2962   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2962   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  2963   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  2963   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  2964   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  2964   EXPECT_TRUE(layer1->quads_appended()); |  2965   EXPECT_TRUE(layer1->quads_appended()); | 
|  2965   EXPECT_TRUE(layer2->quads_appended()); |  2966   EXPECT_TRUE(layer2->quads_appended()); | 
|  2966   host_impl_->DidDrawAllLayers(frame); |  2967   host_impl_->DidDrawAllLayers(frame); | 
|  2967  |  2968  | 
|  2968   // A second way of making the child non-opaque. |  2969   // A second way of making the child non-opaque. | 
|  2969   layer1->SetContentsOpaque(true); |  2970   layer1->SetContentsOpaque(true); | 
|  2970   layer1->SetOpacity(1.f); |  2971   layer1->SetOpacity(1.f); | 
|  2971   layer1->SetExpectation(false, false); |  2972   layer1->SetExpectation(false, false); | 
|  2972   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2973   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2973   layer2->SetContentsOpaque(false); |  2974   layer2->SetContentsOpaque(false); | 
|  2974   layer2->SetOpacity(1.f); |  2975   layer2->SetOpacity(1.f); | 
|  2975   layer2->SetExpectation(true, false); |  2976   layer2->SetExpectation(true, false); | 
|  2976   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2977   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2977   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  2978   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  2978   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  2979   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  2979   EXPECT_TRUE(layer1->quads_appended()); |  2980   EXPECT_TRUE(layer1->quads_appended()); | 
|  2980   EXPECT_TRUE(layer2->quads_appended()); |  2981   EXPECT_TRUE(layer2->quads_appended()); | 
|  2981   host_impl_->DidDrawAllLayers(frame); |  2982   host_impl_->DidDrawAllLayers(frame); | 
|  2982  |  2983  | 
|  2983   // And when the layer says its not opaque but is painted opaque, it is not |  2984   // And when the layer says its not opaque but is painted opaque, it is not | 
|  2984   // blended. |  2985   // blended. | 
|  2985   layer1->SetContentsOpaque(true); |  2986   layer1->SetContentsOpaque(true); | 
|  2986   layer1->SetOpacity(1.f); |  2987   layer1->SetOpacity(1.f); | 
|  2987   layer1->SetExpectation(false, false); |  2988   layer1->SetExpectation(false, false); | 
|  2988   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2989   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2989   layer2->SetContentsOpaque(true); |  2990   layer2->SetContentsOpaque(true); | 
|  2990   layer2->SetOpacity(1.f); |  2991   layer2->SetOpacity(1.f); | 
|  2991   layer2->SetExpectation(false, false); |  2992   layer2->SetExpectation(false, false); | 
|  2992   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |  2993   layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  2993   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  2994   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  2994   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  2995   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  2995   EXPECT_TRUE(layer1->quads_appended()); |  2996   EXPECT_TRUE(layer1->quads_appended()); | 
|  2996   EXPECT_TRUE(layer2->quads_appended()); |  2997   EXPECT_TRUE(layer2->quads_appended()); | 
|  2997   host_impl_->DidDrawAllLayers(frame); |  2998   host_impl_->DidDrawAllLayers(frame); | 
|  2998  |  2999  | 
|  2999   // Layer with partially opaque contents, drawn with blending. |  3000   // Layer with partially opaque contents, drawn with blending. | 
|  3000   layer1->SetContentsOpaque(false); |  3001   layer1->SetContentsOpaque(false); | 
|  3001   layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); |  3002   layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); | 
|  3002   layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 5)); |  3003   layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 5)); | 
|  3003   layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); |  3004   layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); | 
|  3004   layer1->SetExpectation(true, false); |  3005   layer1->SetExpectation(true, false); | 
|  3005   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  3006   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  3006   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  3007   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  3007   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  3008   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3008   EXPECT_TRUE(layer1->quads_appended()); |  3009   EXPECT_TRUE(layer1->quads_appended()); | 
|  3009   host_impl_->DidDrawAllLayers(frame); |  3010   host_impl_->DidDrawAllLayers(frame); | 
|  3010  |  3011  | 
|  3011   // Layer with partially opaque contents partially culled, drawn with blending. |  3012   // Layer with partially opaque contents partially culled, drawn with blending. | 
|  3012   layer1->SetContentsOpaque(false); |  3013   layer1->SetContentsOpaque(false); | 
|  3013   layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); |  3014   layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); | 
|  3014   layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 2)); |  3015   layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 2)); | 
|  3015   layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); |  3016   layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); | 
|  3016   layer1->SetExpectation(true, false); |  3017   layer1->SetExpectation(true, false); | 
|  3017   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  3018   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  3018   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  3019   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  3019   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  3020   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3020   EXPECT_TRUE(layer1->quads_appended()); |  3021   EXPECT_TRUE(layer1->quads_appended()); | 
|  3021   host_impl_->DidDrawAllLayers(frame); |  3022   host_impl_->DidDrawAllLayers(frame); | 
|  3022  |  3023  | 
|  3023   // Layer with partially opaque contents culled, drawn with blending. |  3024   // Layer with partially opaque contents culled, drawn with blending. | 
|  3024   layer1->SetContentsOpaque(false); |  3025   layer1->SetContentsOpaque(false); | 
|  3025   layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); |  3026   layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); | 
|  3026   layer1->SetQuadVisibleRect(gfx::Rect(7, 5, 3, 5)); |  3027   layer1->SetQuadVisibleRect(gfx::Rect(7, 5, 3, 5)); | 
|  3027   layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); |  3028   layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); | 
|  3028   layer1->SetExpectation(true, false); |  3029   layer1->SetExpectation(true, false); | 
|  3029   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  3030   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  3030   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  3031   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  3031   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  3032   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3032   EXPECT_TRUE(layer1->quads_appended()); |  3033   EXPECT_TRUE(layer1->quads_appended()); | 
|  3033   host_impl_->DidDrawAllLayers(frame); |  3034   host_impl_->DidDrawAllLayers(frame); | 
|  3034  |  3035  | 
|  3035   // Layer with partially opaque contents and translucent contents culled, drawn |  3036   // Layer with partially opaque contents and translucent contents culled, drawn | 
|  3036   // without blending. |  3037   // without blending. | 
|  3037   layer1->SetContentsOpaque(false); |  3038   layer1->SetContentsOpaque(false); | 
|  3038   layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); |  3039   layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); | 
|  3039   layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 2, 5)); |  3040   layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 2, 5)); | 
|  3040   layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); |  3041   layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); | 
|  3041   layer1->SetExpectation(false, false); |  3042   layer1->SetExpectation(false, false); | 
|  3042   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |  3043   layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); | 
|  3043   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  3044   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  3044   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  3045   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3045   EXPECT_TRUE(layer1->quads_appended()); |  3046   EXPECT_TRUE(layer1->quads_appended()); | 
|  3046   host_impl_->DidDrawAllLayers(frame); |  3047   host_impl_->DidDrawAllLayers(frame); | 
|  3047 } |  3048 } | 
|  3048  |  3049  | 
|  3049 class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest { |  3050 class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest { | 
|  3050  public: |  3051  public: | 
|  3051   LayerTreeHostImplViewportCoveredTest() : |  3052   LayerTreeHostImplViewportCoveredTest() : | 
|  3052       gutter_quad_material_(DrawQuad::SOLID_COLOR), |  3053       gutter_quad_material_(DrawQuad::SOLID_COLOR), | 
|  3053       child_(NULL), |  3054       child_(NULL), | 
|  3054       did_activate_pending_tree_(false) {} |  3055       did_activate_pending_tree_(false) {} | 
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3392   root->SetContentBounds(gfx::Size(10, 10)); |  3393   root->SetContentBounds(gfx::Size(10, 10)); | 
|  3393   root->SetDrawsContent(true); |  3394   root->SetDrawsContent(true); | 
|  3394   host_impl_->active_tree()->SetRootLayer(root.Pass()); |  3395   host_impl_->active_tree()->SetRootLayer(root.Pass()); | 
|  3395   EXPECT_FALSE(reshape_tracker->reshape_called()); |  3396   EXPECT_FALSE(reshape_tracker->reshape_called()); | 
|  3396   reshape_tracker->clear_reshape_called(); |  3397   reshape_tracker->clear_reshape_called(); | 
|  3397  |  3398  | 
|  3398   LayerTreeHostImpl::FrameData frame; |  3399   LayerTreeHostImpl::FrameData frame; | 
|  3399   host_impl_->SetViewportSize(gfx::Size(10, 10)); |  3400   host_impl_->SetViewportSize(gfx::Size(10, 10)); | 
|  3400   host_impl_->SetDeviceScaleFactor(1.f); |  3401   host_impl_->SetDeviceScaleFactor(1.f); | 
|  3401   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  3402   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  3402   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  3403   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3403   EXPECT_TRUE(reshape_tracker->reshape_called()); |  3404   EXPECT_TRUE(reshape_tracker->reshape_called()); | 
|  3404   EXPECT_EQ(reshape_tracker->last_reshape_width(), 10); |  3405   EXPECT_EQ(reshape_tracker->last_reshape_width(), 10); | 
|  3405   EXPECT_EQ(reshape_tracker->last_reshape_height(), 10); |  3406   EXPECT_EQ(reshape_tracker->last_reshape_height(), 10); | 
|  3406   EXPECT_EQ(reshape_tracker->last_reshape_scale_factor(), 1.f); |  3407   EXPECT_EQ(reshape_tracker->last_reshape_scale_factor(), 1.f); | 
|  3407   host_impl_->DidDrawAllLayers(frame); |  3408   host_impl_->DidDrawAllLayers(frame); | 
|  3408   reshape_tracker->clear_reshape_called(); |  3409   reshape_tracker->clear_reshape_called(); | 
|  3409  |  3410  | 
|  3410   host_impl_->SetViewportSize(gfx::Size(20, 30)); |  3411   host_impl_->SetViewportSize(gfx::Size(20, 30)); | 
|  3411   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  3412   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  3412   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  3413   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3413   EXPECT_TRUE(reshape_tracker->reshape_called()); |  3414   EXPECT_TRUE(reshape_tracker->reshape_called()); | 
|  3414   EXPECT_EQ(reshape_tracker->last_reshape_width(), 20); |  3415   EXPECT_EQ(reshape_tracker->last_reshape_width(), 20); | 
|  3415   EXPECT_EQ(reshape_tracker->last_reshape_height(), 30); |  3416   EXPECT_EQ(reshape_tracker->last_reshape_height(), 30); | 
|  3416   EXPECT_EQ(reshape_tracker->last_reshape_scale_factor(), 1.f); |  3417   EXPECT_EQ(reshape_tracker->last_reshape_scale_factor(), 1.f); | 
|  3417   host_impl_->DidDrawAllLayers(frame); |  3418   host_impl_->DidDrawAllLayers(frame); | 
|  3418   reshape_tracker->clear_reshape_called(); |  3419   reshape_tracker->clear_reshape_called(); | 
|  3419  |  3420  | 
|  3420   host_impl_->SetDeviceScaleFactor(2.f); |  3421   host_impl_->SetDeviceScaleFactor(2.f); | 
|  3421   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  3422   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  3422   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  3423   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3423   EXPECT_TRUE(reshape_tracker->reshape_called()); |  3424   EXPECT_TRUE(reshape_tracker->reshape_called()); | 
|  3424   EXPECT_EQ(reshape_tracker->last_reshape_width(), 20); |  3425   EXPECT_EQ(reshape_tracker->last_reshape_width(), 20); | 
|  3425   EXPECT_EQ(reshape_tracker->last_reshape_height(), 30); |  3426   EXPECT_EQ(reshape_tracker->last_reshape_height(), 30); | 
|  3426   EXPECT_EQ(reshape_tracker->last_reshape_scale_factor(), 2.f); |  3427   EXPECT_EQ(reshape_tracker->last_reshape_scale_factor(), 2.f); | 
|  3427   host_impl_->DidDrawAllLayers(frame); |  3428   host_impl_->DidDrawAllLayers(frame); | 
|  3428   reshape_tracker->clear_reshape_called(); |  3429   reshape_tracker->clear_reshape_called(); | 
|  3429 } |  3430 } | 
|  3430  |  3431  | 
|  3431 class SwapTrackerContext : public TestWebGraphicsContext3D { |  3432 class SwapTrackerContext : public TestWebGraphicsContext3D { | 
|  3432  public: |  3433  public: | 
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3498   root->SetBounds(gfx::Size(500, 500)); |  3499   root->SetBounds(gfx::Size(500, 500)); | 
|  3499   root->SetContentBounds(gfx::Size(500, 500)); |  3500   root->SetContentBounds(gfx::Size(500, 500)); | 
|  3500   root->SetDrawsContent(true); |  3501   root->SetDrawsContent(true); | 
|  3501   root->AddChild(child.Pass()); |  3502   root->AddChild(child.Pass()); | 
|  3502   layer_tree_host_impl->active_tree()->SetRootLayer(root.Pass()); |  3503   layer_tree_host_impl->active_tree()->SetRootLayer(root.Pass()); | 
|  3503  |  3504  | 
|  3504   LayerTreeHostImpl::FrameData frame; |  3505   LayerTreeHostImpl::FrameData frame; | 
|  3505  |  3506  | 
|  3506   // First frame, the entire screen should get swapped. |  3507   // First frame, the entire screen should get swapped. | 
|  3507   EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); |  3508   EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); | 
|  3508   layer_tree_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); |  3509   layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3509   layer_tree_host_impl->DidDrawAllLayers(frame); |  3510   layer_tree_host_impl->DidDrawAllLayers(frame); | 
|  3510   layer_tree_host_impl->SwapBuffers(frame); |  3511   layer_tree_host_impl->SwapBuffers(frame); | 
|  3511   gfx::Rect actual_swap_rect = swap_tracker->update_rect(); |  3512   gfx::Rect actual_swap_rect = swap_tracker->update_rect(); | 
|  3512   gfx::Rect expected_swap_rect = gfx::Rect(0, 0, 500, 500); |  3513   gfx::Rect expected_swap_rect = gfx::Rect(0, 0, 500, 500); | 
|  3513   EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x()); |  3514   EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x()); | 
|  3514   EXPECT_EQ(expected_swap_rect.y(), actual_swap_rect.y()); |  3515   EXPECT_EQ(expected_swap_rect.y(), actual_swap_rect.y()); | 
|  3515   EXPECT_EQ(expected_swap_rect.width(), actual_swap_rect.width()); |  3516   EXPECT_EQ(expected_swap_rect.width(), actual_swap_rect.width()); | 
|  3516   EXPECT_EQ(expected_swap_rect.height(), actual_swap_rect.height()); |  3517   EXPECT_EQ(expected_swap_rect.height(), actual_swap_rect.height()); | 
|  3517   EXPECT_EQ(swap_tracker->last_update_type(), |  3518   EXPECT_EQ(swap_tracker->last_update_type(), | 
|  3518             SwapTrackerContext::PrepareTexture); |  3519             SwapTrackerContext::PrepareTexture); | 
|  3519   // Second frame, only the damaged area should get swapped. Damage should be |  3520   // Second frame, only the damaged area should get swapped. Damage should be | 
|  3520   // the union of old and new child rects. |  3521   // the union of old and new child rects. | 
|  3521   // expected damage rect: gfx::Rect(26, 28); |  3522   // expected damage rect: gfx::Rect(26, 28); | 
|  3522   // expected swap rect: vertically flipped, with origin at bottom left corner. |  3523   // expected swap rect: vertically flipped, with origin at bottom left corner. | 
|  3523   layer_tree_host_impl->active_tree()->root_layer()->children()[0]->SetPosition( |  3524   layer_tree_host_impl->active_tree()->root_layer()->children()[0]->SetPosition( | 
|  3524       gfx::PointF()); |  3525       gfx::PointF()); | 
|  3525   EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); |  3526   EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); | 
|  3526   layer_tree_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); |  3527   layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3527   host_impl_->DidDrawAllLayers(frame); |  3528   host_impl_->DidDrawAllLayers(frame); | 
|  3528   layer_tree_host_impl->SwapBuffers(frame); |  3529   layer_tree_host_impl->SwapBuffers(frame); | 
|  3529   actual_swap_rect = swap_tracker->update_rect(); |  3530   actual_swap_rect = swap_tracker->update_rect(); | 
|  3530   expected_swap_rect = gfx::Rect(0, 500-28, 26, 28); |  3531   expected_swap_rect = gfx::Rect(0, 500-28, 26, 28); | 
|  3531   EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x()); |  3532   EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x()); | 
|  3532   EXPECT_EQ(expected_swap_rect.y(), actual_swap_rect.y()); |  3533   EXPECT_EQ(expected_swap_rect.y(), actual_swap_rect.y()); | 
|  3533   EXPECT_EQ(expected_swap_rect.width(), actual_swap_rect.width()); |  3534   EXPECT_EQ(expected_swap_rect.width(), actual_swap_rect.width()); | 
|  3534   EXPECT_EQ(expected_swap_rect.height(), actual_swap_rect.height()); |  3535   EXPECT_EQ(expected_swap_rect.height(), actual_swap_rect.height()); | 
|  3535   EXPECT_EQ(swap_tracker->last_update_type(), |  3536   EXPECT_EQ(swap_tracker->last_update_type(), | 
|  3536             SwapTrackerContext::PostSubBuffer); |  3537             SwapTrackerContext::PostSubBuffer); | 
|  3537  |  3538  | 
|  3538   // Make sure that partial swap is constrained to the viewport dimensions |  3539   // Make sure that partial swap is constrained to the viewport dimensions | 
|  3539   // expected damage rect: gfx::Rect(500, 500); |  3540   // expected damage rect: gfx::Rect(500, 500); | 
|  3540   // expected swap rect: flipped damage rect, but also clamped to viewport |  3541   // expected swap rect: flipped damage rect, but also clamped to viewport | 
|  3541   layer_tree_host_impl->SetViewportSize(gfx::Size(10, 10)); |  3542   layer_tree_host_impl->SetViewportSize(gfx::Size(10, 10)); | 
|  3542   // This will damage everything. |  3543   // This will damage everything. | 
|  3543   layer_tree_host_impl->active_tree()->root_layer()->SetBackgroundColor( |  3544   layer_tree_host_impl->active_tree()->root_layer()->SetBackgroundColor( | 
|  3544       SK_ColorBLACK); |  3545       SK_ColorBLACK); | 
|  3545   EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); |  3546   EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); | 
|  3546   layer_tree_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); |  3547   layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3547   host_impl_->DidDrawAllLayers(frame); |  3548   host_impl_->DidDrawAllLayers(frame); | 
|  3548   layer_tree_host_impl->SwapBuffers(frame); |  3549   layer_tree_host_impl->SwapBuffers(frame); | 
|  3549   actual_swap_rect = swap_tracker->update_rect(); |  3550   actual_swap_rect = swap_tracker->update_rect(); | 
|  3550   expected_swap_rect = gfx::Rect(10, 10); |  3551   expected_swap_rect = gfx::Rect(10, 10); | 
|  3551   EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x()); |  3552   EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x()); | 
|  3552   EXPECT_EQ(expected_swap_rect.y(), actual_swap_rect.y()); |  3553   EXPECT_EQ(expected_swap_rect.y(), actual_swap_rect.y()); | 
|  3553   EXPECT_EQ(expected_swap_rect.width(), actual_swap_rect.width()); |  3554   EXPECT_EQ(expected_swap_rect.width(), actual_swap_rect.width()); | 
|  3554   EXPECT_EQ(expected_swap_rect.height(), actual_swap_rect.height()); |  3555   EXPECT_EQ(expected_swap_rect.height(), actual_swap_rect.height()); | 
|  3555   EXPECT_EQ(swap_tracker->last_update_type(), |  3556   EXPECT_EQ(swap_tracker->last_update_type(), | 
|  3556             SwapTrackerContext::PrepareTexture); |  3557             SwapTrackerContext::PrepareTexture); | 
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3704   // Run test case |  3705   // Run test case | 
|  3705   CreateLayerTreeHost(false, output_surface.Pass()); |  3706   CreateLayerTreeHost(false, output_surface.Pass()); | 
|  3706   SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); |  3707   SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); | 
|  3707  |  3708  | 
|  3708   // Without partial swap, and no clipping, no scissor is set. |  3709   // Without partial swap, and no clipping, no scissor is set. | 
|  3709   harness.MustDrawSolidQuad(); |  3710   harness.MustDrawSolidQuad(); | 
|  3710   harness.MustSetNoScissor(); |  3711   harness.MustSetNoScissor(); | 
|  3711   { |  3712   { | 
|  3712     LayerTreeHostImpl::FrameData frame; |  3713     LayerTreeHostImpl::FrameData frame; | 
|  3713     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  3714     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  3714     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  3715     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3715     host_impl_->DidDrawAllLayers(frame); |  3716     host_impl_->DidDrawAllLayers(frame); | 
|  3716   } |  3717   } | 
|  3717   Mock::VerifyAndClearExpectations(&mock_context); |  3718   Mock::VerifyAndClearExpectations(&mock_context); | 
|  3718  |  3719  | 
|  3719   // Without partial swap, but a layer does clip its subtree, one scissor is |  3720   // Without partial swap, but a layer does clip its subtree, one scissor is | 
|  3720   // set. |  3721   // set. | 
|  3721   host_impl_->active_tree()->root_layer()->SetMasksToBounds(true); |  3722   host_impl_->active_tree()->root_layer()->SetMasksToBounds(true); | 
|  3722   harness.MustDrawSolidQuad(); |  3723   harness.MustDrawSolidQuad(); | 
|  3723   harness.MustSetScissor(0, 0, 10, 10); |  3724   harness.MustSetScissor(0, 0, 10, 10); | 
|  3724   { |  3725   { | 
|  3725     LayerTreeHostImpl::FrameData frame; |  3726     LayerTreeHostImpl::FrameData frame; | 
|  3726     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  3727     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  3727     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  3728     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3728     host_impl_->DidDrawAllLayers(frame); |  3729     host_impl_->DidDrawAllLayers(frame); | 
|  3729   } |  3730   } | 
|  3730   Mock::VerifyAndClearExpectations(&mock_context); |  3731   Mock::VerifyAndClearExpectations(&mock_context); | 
|  3731 } |  3732 } | 
|  3732  |  3733  | 
|  3733 TEST_F(LayerTreeHostImplTest, PartialSwap) { |  3734 TEST_F(LayerTreeHostImplTest, PartialSwap) { | 
|  3734   scoped_ptr<MockContext> context_owned(new MockContext); |  3735   scoped_ptr<MockContext> context_owned(new MockContext); | 
|  3735   MockContext* mock_context = context_owned.get(); |  3736   MockContext* mock_context = context_owned.get(); | 
|  3736   scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( |  3737   scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | 
|  3737       context_owned.PassAs<TestWebGraphicsContext3D>())); |  3738       context_owned.PassAs<TestWebGraphicsContext3D>())); | 
|  3738   MockContextHarness harness(mock_context); |  3739   MockContextHarness harness(mock_context); | 
|  3739  |  3740  | 
|  3740   CreateLayerTreeHost(true, output_surface.Pass()); |  3741   CreateLayerTreeHost(true, output_surface.Pass()); | 
|  3741   SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); |  3742   SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); | 
|  3742  |  3743  | 
|  3743   // The first frame is not a partially-swapped one. |  3744   // The first frame is not a partially-swapped one. | 
|  3744   harness.MustSetScissor(0, 0, 10, 10); |  3745   harness.MustSetScissor(0, 0, 10, 10); | 
|  3745   harness.MustDrawSolidQuad(); |  3746   harness.MustDrawSolidQuad(); | 
|  3746   { |  3747   { | 
|  3747     LayerTreeHostImpl::FrameData frame; |  3748     LayerTreeHostImpl::FrameData frame; | 
|  3748     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  3749     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  3749     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  3750     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3750     host_impl_->DidDrawAllLayers(frame); |  3751     host_impl_->DidDrawAllLayers(frame); | 
|  3751   } |  3752   } | 
|  3752   Mock::VerifyAndClearExpectations(&mock_context); |  3753   Mock::VerifyAndClearExpectations(&mock_context); | 
|  3753  |  3754  | 
|  3754   // Damage a portion of the frame. |  3755   // Damage a portion of the frame. | 
|  3755   host_impl_->active_tree()->root_layer()->set_update_rect( |  3756   host_impl_->active_tree()->root_layer()->set_update_rect( | 
|  3756       gfx::Rect(0, 0, 2, 3)); |  3757       gfx::Rect(0, 0, 2, 3)); | 
|  3757  |  3758  | 
|  3758   // The second frame will be partially-swapped (the y coordinates are flipped). |  3759   // The second frame will be partially-swapped (the y coordinates are flipped). | 
|  3759   harness.MustSetScissor(0, 7, 2, 3); |  3760   harness.MustSetScissor(0, 7, 2, 3); | 
|  3760   harness.MustDrawSolidQuad(); |  3761   harness.MustDrawSolidQuad(); | 
|  3761   { |  3762   { | 
|  3762     LayerTreeHostImpl::FrameData frame; |  3763     LayerTreeHostImpl::FrameData frame; | 
|  3763     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  3764     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  3764     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  3765     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3765     host_impl_->DidDrawAllLayers(frame); |  3766     host_impl_->DidDrawAllLayers(frame); | 
|  3766   } |  3767   } | 
|  3767   Mock::VerifyAndClearExpectations(&mock_context); |  3768   Mock::VerifyAndClearExpectations(&mock_context); | 
|  3768 } |  3769 } | 
|  3769  |  3770  | 
|  3770 class PartialSwapContext : public TestWebGraphicsContext3D { |  3771 class PartialSwapContext : public TestWebGraphicsContext3D { | 
|  3771  public: |  3772  public: | 
|  3772   PartialSwapContext() { |  3773   PartialSwapContext() { | 
|  3773     test_capabilities_.post_sub_buffer = true; |  3774     test_capabilities_.post_sub_buffer = true; | 
|  3774   } |  3775   } | 
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3868  |  3869  | 
|  3869     // Verify all quads have been computed |  3870     // Verify all quads have been computed | 
|  3870     ASSERT_EQ(2U, frame.render_passes.size()); |  3871     ASSERT_EQ(2U, frame.render_passes.size()); | 
|  3871     ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |  3872     ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 
|  3872     ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |  3873     ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 
|  3873     EXPECT_EQ(DrawQuad::SOLID_COLOR, |  3874     EXPECT_EQ(DrawQuad::SOLID_COLOR, | 
|  3874               frame.render_passes[0]->quad_list[0]->material); |  3875               frame.render_passes[0]->quad_list[0]->material); | 
|  3875     EXPECT_EQ(DrawQuad::RENDER_PASS, |  3876     EXPECT_EQ(DrawQuad::RENDER_PASS, | 
|  3876               frame.render_passes[1]->quad_list[0]->material); |  3877               frame.render_passes[1]->quad_list[0]->material); | 
|  3877  |  3878  | 
|  3878     my_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); |  3879     my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3879     my_host_impl->DidDrawAllLayers(frame); |  3880     my_host_impl->DidDrawAllLayers(frame); | 
|  3880   } |  3881   } | 
|  3881 } |  3882 } | 
|  3882  |  3883  | 
|  3883 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { |  3884 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { | 
|  3884   scoped_ptr<LayerTreeHostImpl> my_host_impl = |  3885   scoped_ptr<LayerTreeHostImpl> my_host_impl = | 
|  3885       SetupLayersForOpacity(false, this, &proxy_, &stats_instrumentation_); |  3886       SetupLayersForOpacity(false, this, &proxy_, &stats_instrumentation_); | 
|  3886   { |  3887   { | 
|  3887     LayerTreeHostImpl::FrameData frame; |  3888     LayerTreeHostImpl::FrameData frame; | 
|  3888     EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |  3889     EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); | 
|  3889  |  3890  | 
|  3890     // Verify all quads have been computed |  3891     // Verify all quads have been computed | 
|  3891     ASSERT_EQ(2U, frame.render_passes.size()); |  3892     ASSERT_EQ(2U, frame.render_passes.size()); | 
|  3892     ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |  3893     ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 
|  3893     ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |  3894     ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 
|  3894     EXPECT_EQ(DrawQuad::SOLID_COLOR, |  3895     EXPECT_EQ(DrawQuad::SOLID_COLOR, | 
|  3895               frame.render_passes[0]->quad_list[0]->material); |  3896               frame.render_passes[0]->quad_list[0]->material); | 
|  3896     EXPECT_EQ(DrawQuad::RENDER_PASS, |  3897     EXPECT_EQ(DrawQuad::RENDER_PASS, | 
|  3897               frame.render_passes[1]->quad_list[0]->material); |  3898               frame.render_passes[1]->quad_list[0]->material); | 
|  3898  |  3899  | 
|  3899     my_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); |  3900     my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3900     my_host_impl->DidDrawAllLayers(frame); |  3901     my_host_impl->DidDrawAllLayers(frame); | 
|  3901   } |  3902   } | 
|  3902 } |  3903 } | 
|  3903  |  3904  | 
|  3904 // Fake WebKit::WebGraphicsContext3D that tracks the number of textures in use. |  3905 // Fake WebKit::WebGraphicsContext3D that tracks the number of textures in use. | 
|  3905 class TrackingWebGraphicsContext3D : public TestWebGraphicsContext3D { |  3906 class TrackingWebGraphicsContext3D : public TestWebGraphicsContext3D { | 
|  3906  public: |  3907  public: | 
|  3907   TrackingWebGraphicsContext3D() |  3908   TrackingWebGraphicsContext3D() | 
|  3908       : TestWebGraphicsContext3D(), |  3909       : TestWebGraphicsContext3D(), | 
|  3909         num_textures_(0) { |  3910         num_textures_(0) { | 
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3968   io_surface_layer->SetDrawsContent(true); |  3969   io_surface_layer->SetDrawsContent(true); | 
|  3969   io_surface_layer->SetIOSurfaceProperties(1, gfx::Size(10, 10)); |  3970   io_surface_layer->SetIOSurfaceProperties(1, gfx::Size(10, 10)); | 
|  3970   root_layer->AddChild(io_surface_layer.PassAs<LayerImpl>()); |  3971   root_layer->AddChild(io_surface_layer.PassAs<LayerImpl>()); | 
|  3971  |  3972  | 
|  3972   host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |  3973   host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 
|  3973  |  3974  | 
|  3974   EXPECT_EQ(0u, context3d->NumTextures()); |  3975   EXPECT_EQ(0u, context3d->NumTextures()); | 
|  3975  |  3976  | 
|  3976   LayerTreeHostImpl::FrameData frame; |  3977   LayerTreeHostImpl::FrameData frame; | 
|  3977   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  3978   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  3978   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  3979   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  3979   host_impl_->DidDrawAllLayers(frame); |  3980   host_impl_->DidDrawAllLayers(frame); | 
|  3980   host_impl_->SwapBuffers(frame); |  3981   host_impl_->SwapBuffers(frame); | 
|  3981  |  3982  | 
|  3982   EXPECT_GT(context3d->NumTextures(), 0u); |  3983   EXPECT_GT(context3d->NumTextures(), 0u); | 
|  3983  |  3984  | 
|  3984   // Kill the layer tree. |  3985   // Kill the layer tree. | 
|  3985   host_impl_->active_tree()->SetRootLayer( |  3986   host_impl_->active_tree()->SetRootLayer( | 
|  3986       LayerImpl::Create(host_impl_->active_tree(), 100)); |  3987       LayerImpl::Create(host_impl_->active_tree(), 100)); | 
|  3987   // There should be no textures left in use after. |  3988   // There should be no textures left in use after. | 
|  3988   EXPECT_EQ(0u, context3d->NumTextures()); |  3989   EXPECT_EQ(0u, context3d->NumTextures()); | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
|  4011   host_impl_->active_tree()->set_background_color(SK_ColorWHITE); |  4012   host_impl_->active_tree()->set_background_color(SK_ColorWHITE); | 
|  4012  |  4013  | 
|  4013   // Verify one quad is drawn when transparent background set is not set. |  4014   // Verify one quad is drawn when transparent background set is not set. | 
|  4014   host_impl_->active_tree()->set_has_transparent_background(false); |  4015   host_impl_->active_tree()->set_has_transparent_background(false); | 
|  4015   EXPECT_CALL(*mock_context, useProgram(_)) |  4016   EXPECT_CALL(*mock_context, useProgram(_)) | 
|  4016       .Times(1); |  4017       .Times(1); | 
|  4017   EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) |  4018   EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) | 
|  4018       .Times(1); |  4019       .Times(1); | 
|  4019   LayerTreeHostImpl::FrameData frame; |  4020   LayerTreeHostImpl::FrameData frame; | 
|  4020   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  4021   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  4021   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4022   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4022   host_impl_->DidDrawAllLayers(frame); |  4023   host_impl_->DidDrawAllLayers(frame); | 
|  4023   Mock::VerifyAndClearExpectations(&mock_context); |  4024   Mock::VerifyAndClearExpectations(&mock_context); | 
|  4024  |  4025  | 
|  4025   // Verify no quads are drawn when transparent background is set. |  4026   // Verify no quads are drawn when transparent background is set. | 
|  4026   host_impl_->active_tree()->set_has_transparent_background(true); |  4027   host_impl_->active_tree()->set_has_transparent_background(true); | 
|  4027   host_impl_->SetFullRootLayerDamage(); |  4028   host_impl_->SetFullRootLayerDamage(); | 
|  4028   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  4029   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  4029   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4030   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4030   host_impl_->DidDrawAllLayers(frame); |  4031   host_impl_->DidDrawAllLayers(frame); | 
|  4031   Mock::VerifyAndClearExpectations(&mock_context); |  4032   Mock::VerifyAndClearExpectations(&mock_context); | 
|  4032 } |  4033 } | 
|  4033  |  4034  | 
|  4034 TEST_F(LayerTreeHostImplTest, ReleaseContentsTextureShouldTriggerCommit) { |  4035 TEST_F(LayerTreeHostImplTest, ReleaseContentsTextureShouldTriggerCommit) { | 
|  4035   set_reduce_memory_result(false); |  4036   set_reduce_memory_result(false); | 
|  4036  |  4037  | 
|  4037   // If changing the memory limit wouldn't result in changing what was |  4038   // If changing the memory limit wouldn't result in changing what was | 
|  4038   // committed, then no commit should be requested. |  4039   // committed, then no commit should be requested. | 
|  4039   set_reduce_memory_result(false); |  4040   set_reduce_memory_result(false); | 
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4106       gfx::RectF expected_child_visible_rect(child->content_bounds()); |  4107       gfx::RectF expected_child_visible_rect(child->content_bounds()); | 
|  4107       EXPECT_RECT_EQ(expected_child_visible_rect, |  4108       EXPECT_RECT_EQ(expected_child_visible_rect, | 
|  4108                      root_render_pass->quad_list[0]->visible_rect); |  4109                      root_render_pass->quad_list[0]->visible_rect); | 
|  4109  |  4110  | 
|  4110       LayerImpl* root = host_impl_->active_tree()->root_layer(); |  4111       LayerImpl* root = host_impl_->active_tree()->root_layer(); | 
|  4111       gfx::RectF expected_root_visible_rect(root->content_bounds()); |  4112       gfx::RectF expected_root_visible_rect(root->content_bounds()); | 
|  4112       EXPECT_RECT_EQ(expected_root_visible_rect, |  4113       EXPECT_RECT_EQ(expected_root_visible_rect, | 
|  4113                      root_render_pass->quad_list[1]->visible_rect); |  4114                      root_render_pass->quad_list[1]->visible_rect); | 
|  4114     } |  4115     } | 
|  4115  |  4116  | 
|  4116     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4117     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4117     host_impl_->DidDrawAllLayers(frame); |  4118     host_impl_->DidDrawAllLayers(frame); | 
|  4118     EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); |  4119     EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); | 
|  4119   } |  4120   } | 
|  4120 }; |  4121 }; | 
|  4121  |  4122  | 
|  4122 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { |  4123 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { | 
|  4123   scoped_ptr<SolidColorLayerImpl> root = |  4124   scoped_ptr<SolidColorLayerImpl> root = | 
|  4124       SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); |  4125       SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); | 
|  4125   root->SetAnchorPoint(gfx::PointF()); |  4126   root->SetAnchorPoint(gfx::PointF()); | 
|  4126   root->SetPosition(gfx::PointF()); |  4127   root->SetPosition(gfx::PointF()); | 
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4248     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |  4249     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 
|  4249     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4250     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4250               frame.render_passes[0]->quad_list[0]->material); |  4251               frame.render_passes[0]->quad_list[0]->material); | 
|  4251     const RenderPassDrawQuad* render_pass_quad = |  4252     const RenderPassDrawQuad* render_pass_quad = | 
|  4252         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |  4253         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 
|  4253     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |  4254     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 
|  4254               render_pass_quad->rect.ToString()); |  4255               render_pass_quad->rect.ToString()); | 
|  4255     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |  4256     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 
|  4256               render_pass_quad->mask_uv_rect.ToString()); |  4257               render_pass_quad->mask_uv_rect.ToString()); | 
|  4257  |  4258  | 
|  4258     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4259     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4259     host_impl_->DidDrawAllLayers(frame); |  4260     host_impl_->DidDrawAllLayers(frame); | 
|  4260   } |  4261   } | 
|  4261  |  4262  | 
|  4262  |  4263  | 
|  4263   // Applying a DSF should change the render surface size, but won't affect |  4264   // Applying a DSF should change the render surface size, but won't affect | 
|  4264   // which part of the mask is used. |  4265   // which part of the mask is used. | 
|  4265   device_scale_factor = 2.f; |  4266   device_scale_factor = 2.f; | 
|  4266   gfx::Size device_viewport = |  4267   gfx::Size device_viewport = | 
|  4267       gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |  4268       gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 
|  4268   host_impl_->SetViewportSize(device_viewport); |  4269   host_impl_->SetViewportSize(device_viewport); | 
|  4269   host_impl_->SetDeviceScaleFactor(device_scale_factor); |  4270   host_impl_->SetDeviceScaleFactor(device_scale_factor); | 
|  4270   host_impl_->active_tree()->set_needs_update_draw_properties(); |  4271   host_impl_->active_tree()->set_needs_update_draw_properties(); | 
|  4271   { |  4272   { | 
|  4272     LayerTreeHostImpl::FrameData frame; |  4273     LayerTreeHostImpl::FrameData frame; | 
|  4273     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  4274     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  4274  |  4275  | 
|  4275     ASSERT_EQ(1u, frame.render_passes.size()); |  4276     ASSERT_EQ(1u, frame.render_passes.size()); | 
|  4276     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |  4277     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 
|  4277     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4278     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4278               frame.render_passes[0]->quad_list[0]->material); |  4279               frame.render_passes[0]->quad_list[0]->material); | 
|  4279     const RenderPassDrawQuad* render_pass_quad = |  4280     const RenderPassDrawQuad* render_pass_quad = | 
|  4280         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |  4281         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 
|  4281     EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |  4282     EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), | 
|  4282               render_pass_quad->rect.ToString()); |  4283               render_pass_quad->rect.ToString()); | 
|  4283     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |  4284     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 
|  4284               render_pass_quad->mask_uv_rect.ToString()); |  4285               render_pass_quad->mask_uv_rect.ToString()); | 
|  4285  |  4286  | 
|  4286     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4287     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4287     host_impl_->DidDrawAllLayers(frame); |  4288     host_impl_->DidDrawAllLayers(frame); | 
|  4288   } |  4289   } | 
|  4289  |  4290  | 
|  4290  |  4291  | 
|  4291   // Applying an equivalent content scale on the content layer and the mask |  4292   // Applying an equivalent content scale on the content layer and the mask | 
|  4292   // should still result in the same part of the mask being used. |  4293   // should still result in the same part of the mask being used. | 
|  4293   gfx::Size content_bounds = |  4294   gfx::Size content_bounds = | 
|  4294       gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, |  4295       gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, | 
|  4295                                         device_scale_factor)); |  4296                                         device_scale_factor)); | 
|  4296   content_layer->SetContentBounds(content_bounds); |  4297   content_layer->SetContentBounds(content_bounds); | 
|  4297   content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |  4298   content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 
|  4298   mask_layer->SetContentBounds(content_bounds); |  4299   mask_layer->SetContentBounds(content_bounds); | 
|  4299   mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |  4300   mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 
|  4300   host_impl_->active_tree()->set_needs_update_draw_properties(); |  4301   host_impl_->active_tree()->set_needs_update_draw_properties(); | 
|  4301   { |  4302   { | 
|  4302     LayerTreeHostImpl::FrameData frame; |  4303     LayerTreeHostImpl::FrameData frame; | 
|  4303     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  4304     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  4304  |  4305  | 
|  4305     ASSERT_EQ(1u, frame.render_passes.size()); |  4306     ASSERT_EQ(1u, frame.render_passes.size()); | 
|  4306     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |  4307     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 
|  4307     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4308     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4308               frame.render_passes[0]->quad_list[0]->material); |  4309               frame.render_passes[0]->quad_list[0]->material); | 
|  4309     const RenderPassDrawQuad* render_pass_quad = |  4310     const RenderPassDrawQuad* render_pass_quad = | 
|  4310         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |  4311         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 
|  4311     EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |  4312     EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), | 
|  4312               render_pass_quad->rect.ToString()); |  4313               render_pass_quad->rect.ToString()); | 
|  4313     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |  4314     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 
|  4314               render_pass_quad->mask_uv_rect.ToString()); |  4315               render_pass_quad->mask_uv_rect.ToString()); | 
|  4315  |  4316  | 
|  4316     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4317     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4317     host_impl_->DidDrawAllLayers(frame); |  4318     host_impl_->DidDrawAllLayers(frame); | 
|  4318   } |  4319   } | 
|  4319 } |  4320 } | 
|  4320  |  4321  | 
|  4321 TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) { |  4322 TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) { | 
|  4322   // The mask layer has bounds 100x100 but is attached to a layer with bounds |  4323   // The mask layer has bounds 100x100 but is attached to a layer with bounds | 
|  4323   // 50x50. |  4324   // 50x50. | 
|  4324  |  4325  | 
|  4325   scoped_ptr<LayerImpl> scoped_root = |  4326   scoped_ptr<LayerImpl> scoped_root = | 
|  4326       LayerImpl::Create(host_impl_->active_tree(), 1); |  4327       LayerImpl::Create(host_impl_->active_tree(), 1); | 
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4369     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |  4370     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 
|  4370     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4371     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4371               frame.render_passes[0]->quad_list[0]->material); |  4372               frame.render_passes[0]->quad_list[0]->material); | 
|  4372     const RenderPassDrawQuad* render_pass_quad = |  4373     const RenderPassDrawQuad* render_pass_quad = | 
|  4373         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |  4374         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 
|  4374     EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |  4375     EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), | 
|  4375               render_pass_quad->rect.ToString()); |  4376               render_pass_quad->rect.ToString()); | 
|  4376     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |  4377     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 
|  4377               render_pass_quad->mask_uv_rect.ToString()); |  4378               render_pass_quad->mask_uv_rect.ToString()); | 
|  4378  |  4379  | 
|  4379     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4380     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4380     host_impl_->DidDrawAllLayers(frame); |  4381     host_impl_->DidDrawAllLayers(frame); | 
|  4381   } |  4382   } | 
|  4382  |  4383  | 
|  4383   // Applying a DSF should change the render surface size, but won't affect |  4384   // Applying a DSF should change the render surface size, but won't affect | 
|  4384   // which part of the mask is used. |  4385   // which part of the mask is used. | 
|  4385   device_scale_factor = 2.f; |  4386   device_scale_factor = 2.f; | 
|  4386   gfx::Size device_viewport = |  4387   gfx::Size device_viewport = | 
|  4387       gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |  4388       gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 
|  4388   host_impl_->SetViewportSize(device_viewport); |  4389   host_impl_->SetViewportSize(device_viewport); | 
|  4389   host_impl_->SetDeviceScaleFactor(device_scale_factor); |  4390   host_impl_->SetDeviceScaleFactor(device_scale_factor); | 
|  4390   host_impl_->active_tree()->set_needs_update_draw_properties(); |  4391   host_impl_->active_tree()->set_needs_update_draw_properties(); | 
|  4391   { |  4392   { | 
|  4392     LayerTreeHostImpl::FrameData frame; |  4393     LayerTreeHostImpl::FrameData frame; | 
|  4393     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  4394     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  4394  |  4395  | 
|  4395     ASSERT_EQ(1u, frame.render_passes.size()); |  4396     ASSERT_EQ(1u, frame.render_passes.size()); | 
|  4396     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |  4397     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 
|  4397     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4398     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4398               frame.render_passes[0]->quad_list[0]->material); |  4399               frame.render_passes[0]->quad_list[0]->material); | 
|  4399     const RenderPassDrawQuad* render_pass_quad = |  4400     const RenderPassDrawQuad* render_pass_quad = | 
|  4400         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |  4401         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 
|  4401     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |  4402     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 
|  4402               render_pass_quad->rect.ToString()); |  4403               render_pass_quad->rect.ToString()); | 
|  4403     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |  4404     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 
|  4404               render_pass_quad->mask_uv_rect.ToString()); |  4405               render_pass_quad->mask_uv_rect.ToString()); | 
|  4405  |  4406  | 
|  4406     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4407     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4407     host_impl_->DidDrawAllLayers(frame); |  4408     host_impl_->DidDrawAllLayers(frame); | 
|  4408   } |  4409   } | 
|  4409  |  4410  | 
|  4410   // Applying an equivalent content scale on the content layer and the mask |  4411   // Applying an equivalent content scale on the content layer and the mask | 
|  4411   // should still result in the same part of the mask being used. |  4412   // should still result in the same part of the mask being used. | 
|  4412   gfx::Size layer_size_large = |  4413   gfx::Size layer_size_large = | 
|  4413       gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); |  4414       gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); | 
|  4414   content_layer->SetContentBounds(layer_size_large); |  4415   content_layer->SetContentBounds(layer_size_large); | 
|  4415   content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |  4416   content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 
|  4416   gfx::Size mask_size_large = |  4417   gfx::Size mask_size_large = | 
|  4417       gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); |  4418       gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); | 
|  4418   mask_layer->SetContentBounds(mask_size_large); |  4419   mask_layer->SetContentBounds(mask_size_large); | 
|  4419   mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |  4420   mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 
|  4420   host_impl_->active_tree()->set_needs_update_draw_properties(); |  4421   host_impl_->active_tree()->set_needs_update_draw_properties(); | 
|  4421   { |  4422   { | 
|  4422     LayerTreeHostImpl::FrameData frame; |  4423     LayerTreeHostImpl::FrameData frame; | 
|  4423     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  4424     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  4424  |  4425  | 
|  4425     ASSERT_EQ(1u, frame.render_passes.size()); |  4426     ASSERT_EQ(1u, frame.render_passes.size()); | 
|  4426     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |  4427     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 
|  4427     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4428     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4428               frame.render_passes[0]->quad_list[0]->material); |  4429               frame.render_passes[0]->quad_list[0]->material); | 
|  4429     const RenderPassDrawQuad* render_pass_quad = |  4430     const RenderPassDrawQuad* render_pass_quad = | 
|  4430         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |  4431         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 
|  4431     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |  4432     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 
|  4432               render_pass_quad->rect.ToString()); |  4433               render_pass_quad->rect.ToString()); | 
|  4433     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |  4434     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 
|  4434               render_pass_quad->mask_uv_rect.ToString()); |  4435               render_pass_quad->mask_uv_rect.ToString()); | 
|  4435  |  4436  | 
|  4436     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4437     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4437     host_impl_->DidDrawAllLayers(frame); |  4438     host_impl_->DidDrawAllLayers(frame); | 
|  4438   } |  4439   } | 
|  4439  |  4440  | 
|  4440   // Applying a different contents scale to the mask layer means it will have |  4441   // Applying a different contents scale to the mask layer means it will have | 
|  4441   // a larger texture, but it should use the same tex coords to cover the |  4442   // a larger texture, but it should use the same tex coords to cover the | 
|  4442   // layer it masks. |  4443   // layer it masks. | 
|  4443   mask_layer->SetContentBounds(mask_size); |  4444   mask_layer->SetContentBounds(mask_size); | 
|  4444   mask_layer->SetContentsScale(1.f, 1.f); |  4445   mask_layer->SetContentsScale(1.f, 1.f); | 
|  4445   host_impl_->active_tree()->set_needs_update_draw_properties(); |  4446   host_impl_->active_tree()->set_needs_update_draw_properties(); | 
|  4446   { |  4447   { | 
|  4447     LayerTreeHostImpl::FrameData frame; |  4448     LayerTreeHostImpl::FrameData frame; | 
|  4448     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  4449     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  4449  |  4450  | 
|  4450     ASSERT_EQ(1u, frame.render_passes.size()); |  4451     ASSERT_EQ(1u, frame.render_passes.size()); | 
|  4451     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |  4452     ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 
|  4452     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4453     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4453               frame.render_passes[0]->quad_list[0]->material); |  4454               frame.render_passes[0]->quad_list[0]->material); | 
|  4454     const RenderPassDrawQuad* render_pass_quad = |  4455     const RenderPassDrawQuad* render_pass_quad = | 
|  4455         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |  4456         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 
|  4456     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |  4457     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 
|  4457               render_pass_quad->rect.ToString()); |  4458               render_pass_quad->rect.ToString()); | 
|  4458     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |  4459     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 
|  4459               render_pass_quad->mask_uv_rect.ToString()); |  4460               render_pass_quad->mask_uv_rect.ToString()); | 
|  4460  |  4461  | 
|  4461     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4462     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4462     host_impl_->DidDrawAllLayers(frame); |  4463     host_impl_->DidDrawAllLayers(frame); | 
|  4463   } |  4464   } | 
|  4464 } |  4465 } | 
|  4465  |  4466  | 
|  4466 TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerWithDifferentBounds) { |  4467 TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerWithDifferentBounds) { | 
|  4467   // The replica's mask layer has bounds 100x100 but the replica is of a |  4468   // The replica's mask layer has bounds 100x100 but the replica is of a | 
|  4468   // layer with bounds 50x50. |  4469   // layer with bounds 50x50. | 
|  4469  |  4470  | 
|  4470   scoped_ptr<LayerImpl> scoped_root = |  4471   scoped_ptr<LayerImpl> scoped_root = | 
|  4471       LayerImpl::Create(host_impl_->active_tree(), 1); |  4472       LayerImpl::Create(host_impl_->active_tree(), 1); | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4520     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4521     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4521               frame.render_passes[0]->quad_list[1]->material); |  4522               frame.render_passes[0]->quad_list[1]->material); | 
|  4522     const RenderPassDrawQuad* replica_quad = |  4523     const RenderPassDrawQuad* replica_quad = | 
|  4523         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); |  4524         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 
|  4524     EXPECT_TRUE(replica_quad->is_replica); |  4525     EXPECT_TRUE(replica_quad->is_replica); | 
|  4525     EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |  4526     EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), | 
|  4526               replica_quad->rect.ToString()); |  4527               replica_quad->rect.ToString()); | 
|  4527     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |  4528     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 
|  4528               replica_quad->mask_uv_rect.ToString()); |  4529               replica_quad->mask_uv_rect.ToString()); | 
|  4529  |  4530  | 
|  4530     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4531     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4531     host_impl_->DidDrawAllLayers(frame); |  4532     host_impl_->DidDrawAllLayers(frame); | 
|  4532   } |  4533   } | 
|  4533  |  4534  | 
|  4534   // Applying a DSF should change the render surface size, but won't affect |  4535   // Applying a DSF should change the render surface size, but won't affect | 
|  4535   // which part of the mask is used. |  4536   // which part of the mask is used. | 
|  4536   device_scale_factor = 2.f; |  4537   device_scale_factor = 2.f; | 
|  4537   gfx::Size device_viewport = |  4538   gfx::Size device_viewport = | 
|  4538       gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |  4539       gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 
|  4539   host_impl_->SetViewportSize(device_viewport); |  4540   host_impl_->SetViewportSize(device_viewport); | 
|  4540   host_impl_->SetDeviceScaleFactor(device_scale_factor); |  4541   host_impl_->SetDeviceScaleFactor(device_scale_factor); | 
|  4541   host_impl_->active_tree()->set_needs_update_draw_properties(); |  4542   host_impl_->active_tree()->set_needs_update_draw_properties(); | 
|  4542   { |  4543   { | 
|  4543     LayerTreeHostImpl::FrameData frame; |  4544     LayerTreeHostImpl::FrameData frame; | 
|  4544     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  4545     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  4545  |  4546  | 
|  4546     ASSERT_EQ(1u, frame.render_passes.size()); |  4547     ASSERT_EQ(1u, frame.render_passes.size()); | 
|  4547     ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |  4548     ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 
|  4548     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4549     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4549               frame.render_passes[0]->quad_list[1]->material); |  4550               frame.render_passes[0]->quad_list[1]->material); | 
|  4550     const RenderPassDrawQuad* replica_quad = |  4551     const RenderPassDrawQuad* replica_quad = | 
|  4551         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); |  4552         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 
|  4552     EXPECT_TRUE(replica_quad->is_replica); |  4553     EXPECT_TRUE(replica_quad->is_replica); | 
|  4553     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |  4554     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 
|  4554               replica_quad->rect.ToString()); |  4555               replica_quad->rect.ToString()); | 
|  4555     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |  4556     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 
|  4556               replica_quad->mask_uv_rect.ToString()); |  4557               replica_quad->mask_uv_rect.ToString()); | 
|  4557  |  4558  | 
|  4558     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4559     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4559     host_impl_->DidDrawAllLayers(frame); |  4560     host_impl_->DidDrawAllLayers(frame); | 
|  4560   } |  4561   } | 
|  4561  |  4562  | 
|  4562   // Applying an equivalent content scale on the content layer and the mask |  4563   // Applying an equivalent content scale on the content layer and the mask | 
|  4563   // should still result in the same part of the mask being used. |  4564   // should still result in the same part of the mask being used. | 
|  4564   gfx::Size layer_size_large = |  4565   gfx::Size layer_size_large = | 
|  4565       gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); |  4566       gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); | 
|  4566   content_layer->SetContentBounds(layer_size_large); |  4567   content_layer->SetContentBounds(layer_size_large); | 
|  4567   content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |  4568   content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 
|  4568   gfx::Size mask_size_large = |  4569   gfx::Size mask_size_large = | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
|  4579     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4580     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4580               frame.render_passes[0]->quad_list[1]->material); |  4581               frame.render_passes[0]->quad_list[1]->material); | 
|  4581     const RenderPassDrawQuad* replica_quad = |  4582     const RenderPassDrawQuad* replica_quad = | 
|  4582         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); |  4583         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 
|  4583     EXPECT_TRUE(replica_quad->is_replica); |  4584     EXPECT_TRUE(replica_quad->is_replica); | 
|  4584     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |  4585     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 
|  4585               replica_quad->rect.ToString()); |  4586               replica_quad->rect.ToString()); | 
|  4586     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |  4587     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 
|  4587               replica_quad->mask_uv_rect.ToString()); |  4588               replica_quad->mask_uv_rect.ToString()); | 
|  4588  |  4589  | 
|  4589     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4590     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4590     host_impl_->DidDrawAllLayers(frame); |  4591     host_impl_->DidDrawAllLayers(frame); | 
|  4591   } |  4592   } | 
|  4592  |  4593  | 
|  4593   // Applying a different contents scale to the mask layer means it will have |  4594   // Applying a different contents scale to the mask layer means it will have | 
|  4594   // a larger texture, but it should use the same tex coords to cover the |  4595   // a larger texture, but it should use the same tex coords to cover the | 
|  4595   // layer it masks. |  4596   // layer it masks. | 
|  4596   mask_layer->SetContentBounds(mask_size); |  4597   mask_layer->SetContentBounds(mask_size); | 
|  4597   mask_layer->SetContentsScale(1.f, 1.f); |  4598   mask_layer->SetContentsScale(1.f, 1.f); | 
|  4598   host_impl_->active_tree()->set_needs_update_draw_properties(); |  4599   host_impl_->active_tree()->set_needs_update_draw_properties(); | 
|  4599   { |  4600   { | 
|  4600     LayerTreeHostImpl::FrameData frame; |  4601     LayerTreeHostImpl::FrameData frame; | 
|  4601     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  4602     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  4602  |  4603  | 
|  4603     ASSERT_EQ(1u, frame.render_passes.size()); |  4604     ASSERT_EQ(1u, frame.render_passes.size()); | 
|  4604     ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |  4605     ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 
|  4605     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4606     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4606               frame.render_passes[0]->quad_list[1]->material); |  4607               frame.render_passes[0]->quad_list[1]->material); | 
|  4607     const RenderPassDrawQuad* replica_quad = |  4608     const RenderPassDrawQuad* replica_quad = | 
|  4608         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); |  4609         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 
|  4609     EXPECT_TRUE(replica_quad->is_replica); |  4610     EXPECT_TRUE(replica_quad->is_replica); | 
|  4610     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |  4611     EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 
|  4611               replica_quad->rect.ToString()); |  4612               replica_quad->rect.ToString()); | 
|  4612     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |  4613     EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 
|  4613               replica_quad->mask_uv_rect.ToString()); |  4614               replica_quad->mask_uv_rect.ToString()); | 
|  4614  |  4615  | 
|  4615     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4616     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4616     host_impl_->DidDrawAllLayers(frame); |  4617     host_impl_->DidDrawAllLayers(frame); | 
|  4617   } |  4618   } | 
|  4618 } |  4619 } | 
|  4619  |  4620  | 
|  4620 TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerForSurfaceWithUnclippedChild) { |  4621 TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerForSurfaceWithUnclippedChild) { | 
|  4621   // The replica is of a layer with bounds 50x50, but it has a child that causes |  4622   // The replica is of a layer with bounds 50x50, but it has a child that causes | 
|  4622   // the surface bounds to be larger. |  4623   // the surface bounds to be larger. | 
|  4623  |  4624  | 
|  4624   scoped_ptr<LayerImpl> scoped_root = |  4625   scoped_ptr<LayerImpl> scoped_root = | 
|  4625       LayerImpl::Create(host_impl_->active_tree(), 1); |  4626       LayerImpl::Create(host_impl_->active_tree(), 1); | 
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4696     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4697     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4697               frame.render_passes[0]->quad_list[1]->material); |  4698               frame.render_passes[0]->quad_list[1]->material); | 
|  4698     const RenderPassDrawQuad* replica_quad = |  4699     const RenderPassDrawQuad* replica_quad = | 
|  4699         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); |  4700         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 
|  4700     EXPECT_TRUE(replica_quad->is_replica); |  4701     EXPECT_TRUE(replica_quad->is_replica); | 
|  4701     EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), |  4702     EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), | 
|  4702               replica_quad->rect.ToString()); |  4703               replica_quad->rect.ToString()); | 
|  4703     EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(), |  4704     EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(), | 
|  4704               replica_quad->mask_uv_rect.ToString()); |  4705               replica_quad->mask_uv_rect.ToString()); | 
|  4705  |  4706  | 
|  4706     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4707     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4707     host_impl_->DidDrawAllLayers(frame); |  4708     host_impl_->DidDrawAllLayers(frame); | 
|  4708   } |  4709   } | 
|  4709  |  4710  | 
|  4710   // Move the child to (-50, 0) instead. Now the mask should be moved to still |  4711   // Move the child to (-50, 0) instead. Now the mask should be moved to still | 
|  4711   // cover the layer being replicated. |  4712   // cover the layer being replicated. | 
|  4712   content_child_layer->SetPosition(gfx::Point(-50, 0)); |  4713   content_child_layer->SetPosition(gfx::Point(-50, 0)); | 
|  4713   { |  4714   { | 
|  4714     LayerTreeHostImpl::FrameData frame; |  4715     LayerTreeHostImpl::FrameData frame; | 
|  4715     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  4716     EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  4716  |  4717  | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|  4730     ASSERT_EQ(DrawQuad::RENDER_PASS, |  4731     ASSERT_EQ(DrawQuad::RENDER_PASS, | 
|  4731               frame.render_passes[0]->quad_list[1]->material); |  4732               frame.render_passes[0]->quad_list[1]->material); | 
|  4732     const RenderPassDrawQuad* replica_quad = |  4733     const RenderPassDrawQuad* replica_quad = | 
|  4733         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); |  4734         RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 
|  4734     EXPECT_TRUE(replica_quad->is_replica); |  4735     EXPECT_TRUE(replica_quad->is_replica); | 
|  4735     EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), |  4736     EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), | 
|  4736               replica_quad->rect.ToString()); |  4737               replica_quad->rect.ToString()); | 
|  4737     EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(), |  4738     EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(), | 
|  4738               replica_quad->mask_uv_rect.ToString()); |  4739               replica_quad->mask_uv_rect.ToString()); | 
|  4739  |  4740  | 
|  4740     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4741     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4741     host_impl_->DidDrawAllLayers(frame); |  4742     host_impl_->DidDrawAllLayers(frame); | 
|  4742   } |  4743   } | 
|  4743 } |  4744 } | 
|  4744  |  4745  | 
|  4745 TEST_F(LayerTreeHostImplTest, MaskLayerForSurfaceWithClippedLayer) { |  4746 TEST_F(LayerTreeHostImplTest, MaskLayerForSurfaceWithClippedLayer) { | 
|  4746   // The masked layer has bounds 50x50, but it has a child that causes |  4747   // The masked layer has bounds 50x50, but it has a child that causes | 
|  4747   // the surface bounds to be larger. It also has a parent that clips the |  4748   // the surface bounds to be larger. It also has a parent that clips the | 
|  4748   // masked layer and its surface. |  4749   // masked layer and its surface. | 
|  4749  |  4750  | 
|  4750   scoped_ptr<LayerImpl> scoped_root = |  4751   scoped_ptr<LayerImpl> scoped_root = | 
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4826               render_pass_quad->rect.ToString()); |  4827               render_pass_quad->rect.ToString()); | 
|  4827  |  4828  | 
|  4828     // The masked layer is 50x50, but the surface size is 10x20. So the texture |  4829     // The masked layer is 50x50, but the surface size is 10x20. So the texture | 
|  4829     // coords in the mask are scaled by 10/50 and 20/50. |  4830     // coords in the mask are scaled by 10/50 and 20/50. | 
|  4830     // The surface is clipped to (20,10) so the mask texture coords are offset |  4831     // The surface is clipped to (20,10) so the mask texture coords are offset | 
|  4831     // by 20/50 and 10/50 |  4832     // by 20/50 and 10/50 | 
|  4832     EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), |  4833     EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), | 
|  4833                              1.f / 50.f).ToString(), |  4834                              1.f / 50.f).ToString(), | 
|  4834               render_pass_quad->mask_uv_rect.ToString()); |  4835               render_pass_quad->mask_uv_rect.ToString()); | 
|  4835  |  4836  | 
|  4836     host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4837     host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4837     host_impl_->DidDrawAllLayers(frame); |  4838     host_impl_->DidDrawAllLayers(frame); | 
|  4838   } |  4839   } | 
|  4839 } |  4840 } | 
|  4840  |  4841  | 
|  4841 class GLRendererWithSetupQuadForAntialiasing : public GLRenderer { |  4842 class GLRendererWithSetupQuadForAntialiasing : public GLRenderer { | 
|  4842  public: |  4843  public: | 
|  4843   using GLRenderer::SetupQuadForAntialiasing; |  4844   using GLRenderer::SetupQuadForAntialiasing; | 
|  4844 }; |  4845 }; | 
|  4845  |  4846  | 
|  4846 TEST_F(LayerTreeHostImplTest, FarAwayQuadsDontNeedAA) { |  4847 TEST_F(LayerTreeHostImplTest, FarAwayQuadsDontNeedAA) { | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4899   ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); |  4900   ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); | 
|  4900   const DrawQuad* quad = frame.render_passes[0]->quad_list[0]; |  4901   const DrawQuad* quad = frame.render_passes[0]->quad_list[0]; | 
|  4901  |  4902  | 
|  4902   float edge[24]; |  4903   float edge[24]; | 
|  4903   gfx::QuadF device_layer_quad; |  4904   gfx::QuadF device_layer_quad; | 
|  4904   bool antialiased = |  4905   bool antialiased = | 
|  4905       GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( |  4906       GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( | 
|  4906           quad->quadTransform(), quad, &device_layer_quad, edge); |  4907           quad->quadTransform(), quad, &device_layer_quad, edge); | 
|  4907   EXPECT_FALSE(antialiased); |  4908   EXPECT_FALSE(antialiased); | 
|  4908  |  4909  | 
|  4909   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  4910   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  4910   host_impl_->DidDrawAllLayers(frame); |  4911   host_impl_->DidDrawAllLayers(frame); | 
|  4911 } |  4912 } | 
|  4912  |  4913  | 
|  4913  |  4914  | 
|  4914 class CompositorFrameMetadataTest : public LayerTreeHostImplTest { |  4915 class CompositorFrameMetadataTest : public LayerTreeHostImplTest { | 
|  4915  public: |  4916  public: | 
|  4916   CompositorFrameMetadataTest() |  4917   CompositorFrameMetadataTest() | 
|  4917       : swap_buffers_complete_(0) {} |  4918       : swap_buffers_complete_(0) {} | 
|  4918  |  4919  | 
|  4919   virtual void OnSwapBuffersCompleteOnImplThread() OVERRIDE { |  4920   virtual void OnSwapBuffersCompleteOnImplThread() OVERRIDE { | 
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  5000   scoped_ptr<VideoLayerImpl> video_layer = |  5001   scoped_ptr<VideoLayerImpl> video_layer = | 
|  5001       VideoLayerImpl::Create(host_impl_->active_tree(), 2, &provider); |  5002       VideoLayerImpl::Create(host_impl_->active_tree(), 2, &provider); | 
|  5002   video_layer->SetBounds(gfx::Size(10, 10)); |  5003   video_layer->SetBounds(gfx::Size(10, 10)); | 
|  5003   video_layer->SetContentBounds(gfx::Size(10, 10)); |  5004   video_layer->SetContentBounds(gfx::Size(10, 10)); | 
|  5004   video_layer->SetDrawsContent(true); |  5005   video_layer->SetDrawsContent(true); | 
|  5005   root_layer->AddChild(video_layer.PassAs<LayerImpl>()); |  5006   root_layer->AddChild(video_layer.PassAs<LayerImpl>()); | 
|  5006   SetupRootLayerImpl(root_layer.PassAs<LayerImpl>()); |  5007   SetupRootLayerImpl(root_layer.PassAs<LayerImpl>()); | 
|  5007  |  5008  | 
|  5008   LayerTreeHostImpl::FrameData frame; |  5009   LayerTreeHostImpl::FrameData frame; | 
|  5009   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  5010   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  5010   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  5011   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  5011   host_impl_->DidDrawAllLayers(frame); |  5012   host_impl_->DidDrawAllLayers(frame); | 
|  5012  |  5013  | 
|  5013   EXPECT_EQ(1u, frame.will_draw_layers.size()); |  5014   EXPECT_EQ(1u, frame.will_draw_layers.size()); | 
|  5014   EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]); |  5015   EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]); | 
|  5015 } |  5016 } | 
|  5016  |  5017  | 
|  5017 class LayerTreeHostImplTestDeferredInitialize : public LayerTreeHostImplTest { |  5018 class LayerTreeHostImplTestDeferredInitialize : public LayerTreeHostImplTest { | 
|  5018  protected: |  5019  protected: | 
|  5019   virtual void SetUp() OVERRIDE { |  5020   virtual void SetUp() OVERRIDE { | 
|  5020     LayerTreeHostImplTest::SetUp(); |  5021     LayerTreeHostImplTest::SetUp(); | 
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  5288   SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); |  5289   SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); | 
|  5289  |  5290  | 
|  5290   ScopedPtrVector<CopyOutputRequest> requests; |  5291   ScopedPtrVector<CopyOutputRequest> requests; | 
|  5291   requests.push_back(CopyOutputRequest::CreateRequest( |  5292   requests.push_back(CopyOutputRequest::CreateRequest( | 
|  5292       base::Bind(&ShutdownReleasesContext_Callback))); |  5293       base::Bind(&ShutdownReleasesContext_Callback))); | 
|  5293  |  5294  | 
|  5294   host_impl_->active_tree()->root_layer()->PassCopyRequests(&requests); |  5295   host_impl_->active_tree()->root_layer()->PassCopyRequests(&requests); | 
|  5295  |  5296  | 
|  5296   LayerTreeHostImpl::FrameData frame; |  5297   LayerTreeHostImpl::FrameData frame; | 
|  5297   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |  5298   EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 
|  5298   host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |  5299   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 
|  5299   host_impl_->DidDrawAllLayers(frame); |  5300   host_impl_->DidDrawAllLayers(frame); | 
|  5300  |  5301  | 
|  5301   // The CopyOutputResult's callback has a ref on the ContextProvider and a |  5302   // The CopyOutputResult's callback has a ref on the ContextProvider and a | 
|  5302   // texture in a texture mailbox. |  5303   // texture in a texture mailbox. | 
|  5303   EXPECT_FALSE(context_provider->HasOneRef()); |  5304   EXPECT_FALSE(context_provider->HasOneRef()); | 
|  5304   EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); |  5305   EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); | 
|  5305  |  5306  | 
|  5306   host_impl_.reset(); |  5307   host_impl_.reset(); | 
|  5307  |  5308  | 
|  5308   // The CopyOutputResult's callback was cancelled, the CopyOutputResult |  5309   // The CopyOutputResult's callback was cancelled, the CopyOutputResult | 
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  5430     // The root should have scrolled. |  5431     // The root should have scrolled. | 
|  5431     ASSERT_EQ(2u, scroll_info->scrolls.size()); |  5432     ASSERT_EQ(2u, scroll_info->scrolls.size()); | 
|  5432     ExpectContains(*scroll_info.get(), |  5433     ExpectContains(*scroll_info.get(), | 
|  5433                    host_impl_->active_tree()->root_layer()->id(), |  5434                    host_impl_->active_tree()->root_layer()->id(), | 
|  5434                    gfx::Vector2d(0, 10)); |  5435                    gfx::Vector2d(0, 10)); | 
|  5435   } |  5436   } | 
|  5436 } |  5437 } | 
|  5437  |  5438  | 
|  5438 }  // namespace |  5439 }  // namespace | 
|  5439 }  // namespace cc |  5440 }  // namespace cc | 
| OLD | NEW |