| 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/tiled_layer.h" |     5 #include "cc/tiled_layer.h" | 
|     6  |     6  | 
|     7 #include "cc/bitmap_content_layer_updater.h" |     7 #include "cc/bitmap_content_layer_updater.h" | 
|     8 #include "cc/layer_painter.h" |     8 #include "cc/layer_painter.h" | 
|     9 #include "cc/overdraw_metrics.h" |     9 #include "cc/overdraw_metrics.h" | 
|    10 #include "cc/rendering_stats.h" |    10 #include "cc/rendering_stats.h" | 
| (...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   756     layer->update(*m_queue.get(), 0, m_stats); |   756     layer->update(*m_queue.get(), 0, m_stats); | 
|   757     updateTextures(); |   757     updateTextures(); | 
|   758     layerPushPropertiesTo(layer.get(), layerImpl.get()); |   758     layerPushPropertiesTo(layer.get(), layerImpl.get()); | 
|   759     EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); |   759     EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); | 
|   760     EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1)); |   760     EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1)); | 
|   761     EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 0)); |   761     EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 0)); | 
|   762     EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 1)); |   762     EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 1)); | 
|   763  |   763  | 
|   764     // Change the contents scale and verify that the content rectangle requiring
       painting |   764     // Change the contents scale and verify that the content rectangle requiring
       painting | 
|   765     // is not scaled. |   765     // is not scaled. | 
|   766     layer->setContentsScale(2); |   766     layer->setIdealContentsScale(2); | 
|   767     layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 200, 200); |   767     layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 200, 200); | 
|   768     EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->lastNeedsDisplayRect
      ()); |   768     EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->lastNeedsDisplayRect
      ()); | 
|   769  |   769  | 
|   770     // The impl side should get 2x2 tiles now. |   770     // The impl side should get 2x2 tiles now. | 
|   771     layer->setTexturePriorities(m_priorityCalculator); |   771     layer->setTexturePriorities(m_priorityCalculator); | 
|   772     m_resourceManager->prioritizeTextures(); |   772     m_resourceManager->prioritizeTextures(); | 
|   773     layer->update(*m_queue.get(), 0, m_stats); |   773     layer->update(*m_queue.get(), 0, m_stats); | 
|   774     updateTextures(); |   774     updateTextures(); | 
|   775     layerPushPropertiesTo(layer.get(), layerImpl.get()); |   775     layerPushPropertiesTo(layer.get(), layerImpl.get()); | 
|   776     EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); |   776     EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); | 
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1169 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling) |  1169 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling) | 
|  1170 { |  1170 { | 
|  1171     scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer(
      m_resourceManager.get())); |  1171     scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer(
      m_resourceManager.get())); | 
|  1172     TestOcclusionTracker occluded; |  1172     TestOcclusionTracker occluded; | 
|  1173  |  1173  | 
|  1174     // The tile size is 100x100. |  1174     // The tile size is 100x100. | 
|  1175  |  1175  | 
|  1176     // This makes sure the painting works when the content space is scaled to |  1176     // This makes sure the painting works when the content space is scaled to | 
|  1177     // a different layer space. In this case tiles are scaled to be 200x200 |  1177     // a different layer space. In this case tiles are scaled to be 200x200 | 
|  1178     // pixels, which means none should be occluded. |  1178     // pixels, which means none should be occluded. | 
|  1179     layer->setContentsScale(0.5); |  1179     layer->setIdealContentsScale(0.5); | 
|  1180     EXPECT_FLOAT_EQ(layer->contentsScaleX(), layer->contentsScaleY()); |  1180     EXPECT_FLOAT_EQ(layer->contentsScaleX(), layer->contentsScaleY()); | 
|  1181     layer->setBounds(gfx::Size(600, 600)); |  1181     layer->setBounds(gfx::Size(600, 600)); | 
|  1182     gfx::Transform drawTransform; |  1182     gfx::Transform drawTransform; | 
|  1183     double invScaleFactor = 1 / layer->contentsScaleX(); |  1183     double invScaleFactor = 1 / layer->contentsScaleX(); | 
|  1184     drawTransform.Scale(invScaleFactor, invScaleFactor); |  1184     drawTransform.Scale(invScaleFactor, invScaleFactor); | 
|  1185     layer->drawProperties().target_space_transform = drawTransform; |  1185     layer->drawProperties().target_space_transform = drawTransform; | 
|  1186     layer->drawProperties().screen_space_transform = drawTransform; |  1186     layer->drawProperties().screen_space_transform = drawTransform; | 
|  1187  |  1187  | 
|  1188     occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); |  1188     occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); | 
|  1189     layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye
      r->bounds()); |  1189     layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye
      r->bounds()); | 
| (...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1570     scoped_refptr<BitmapContentLayerUpdater> m_layerUpdater; |  1570     scoped_refptr<BitmapContentLayerUpdater> m_layerUpdater; | 
|  1571 }; |  1571 }; | 
|  1572  |  1572  | 
|  1573 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringPaint) |  1573 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringPaint) | 
|  1574 { |  1574 { | 
|  1575     scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat
      eTrackingTiledLayer(m_resourceManager.get())); |  1575     scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat
      eTrackingTiledLayer(m_resourceManager.get())); | 
|  1576  |  1576  | 
|  1577     gfx::Rect layerRect(0, 0, 30, 31); |  1577     gfx::Rect layerRect(0, 0, 30, 31); | 
|  1578     layer->setPosition(layerRect.origin()); |  1578     layer->setPosition(layerRect.origin()); | 
|  1579     layer->setBounds(layerRect.size()); |  1579     layer->setBounds(layerRect.size()); | 
|  1580     layer->setContentsScale(1.5); |  1580     layer->setIdealContentsScale(1.5); | 
|  1581  |  1581  | 
|  1582     gfx::Rect contentRect(0, 0, 45, 47); |  1582     gfx::Rect contentRect(0, 0, 45, 47); | 
|  1583     EXPECT_EQ(contentRect.size(), layer->contentBounds()); |  1583     EXPECT_EQ(contentRect.size(), layer->contentBounds()); | 
|  1584     layer->drawProperties().visible_content_rect = contentRect; |  1584     layer->drawProperties().visible_content_rect = contentRect; | 
|  1585     layer->drawProperties().drawable_content_rect = contentRect; |  1585     layer->drawProperties().drawable_content_rect = contentRect; | 
|  1586  |  1586  | 
|  1587     layer->setTexturePriorities(m_priorityCalculator); |  1587     layer->setTexturePriorities(m_priorityCalculator); | 
|  1588     m_resourceManager->prioritizeTextures(); |  1588     m_resourceManager->prioritizeTextures(); | 
|  1589  |  1589  | 
|  1590     // Update the whole tile. |  1590     // Update the whole tile. | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
|  1601     EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); |  1601     EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); | 
|  1602 } |  1602 } | 
|  1603  |  1603  | 
|  1604 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringInvalidation) |  1604 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringInvalidation) | 
|  1605 { |  1605 { | 
|  1606     scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat
      eTrackingTiledLayer(m_resourceManager.get())); |  1606     scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat
      eTrackingTiledLayer(m_resourceManager.get())); | 
|  1607  |  1607  | 
|  1608     gfx::Rect layerRect(0, 0, 30, 31); |  1608     gfx::Rect layerRect(0, 0, 30, 31); | 
|  1609     layer->setPosition(layerRect.origin()); |  1609     layer->setPosition(layerRect.origin()); | 
|  1610     layer->setBounds(layerRect.size()); |  1610     layer->setBounds(layerRect.size()); | 
|  1611     layer->setContentsScale(1.3f); |  1611     layer->setIdealContentsScale(1.3f); | 
|  1612  |  1612  | 
|  1613     gfx::Rect contentRect(gfx::Point(), layer->contentBounds()); |  1613     gfx::Rect contentRect(gfx::Point(), layer->contentBounds()); | 
|  1614     layer->drawProperties().visible_content_rect = contentRect; |  1614     layer->drawProperties().visible_content_rect = contentRect; | 
|  1615     layer->drawProperties().drawable_content_rect = contentRect; |  1615     layer->drawProperties().drawable_content_rect = contentRect; | 
|  1616  |  1616  | 
|  1617     layer->setTexturePriorities(m_priorityCalculator); |  1617     layer->setTexturePriorities(m_priorityCalculator); | 
|  1618     m_resourceManager->prioritizeTextures(); |  1618     m_resourceManager->prioritizeTextures(); | 
|  1619  |  1619  | 
|  1620     // Update the whole tile. |  1620     // Update the whole tile. | 
|  1621     layer->update(*m_queue.get(), 0, m_stats); |  1621     layer->update(*m_queue.get(), 0, m_stats); | 
|  1622     layer->trackingLayerPainter()->resetPaintedRect(); |  1622     layer->trackingLayerPainter()->resetPaintedRect(); | 
|  1623  |  1623  | 
|  1624     EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect()); |  1624     EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect()); | 
|  1625     updateTextures(); |  1625     updateTextures(); | 
|  1626  |  1626  | 
|  1627     // Invalidate the entire layer in layer space. When painting, the rect given
       to webkit should match the layer's bounds. |  1627     // Invalidate the entire layer in layer space. When painting, the rect given
       to webkit should match the layer's bounds. | 
|  1628     layer->setNeedsDisplayRect(layerRect); |  1628     layer->setNeedsDisplayRect(layerRect); | 
|  1629     layer->update(*m_queue.get(), 0, m_stats); |  1629     layer->update(*m_queue.get(), 0, m_stats); | 
|  1630  |  1630  | 
|  1631     EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); |  1631     EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); | 
|  1632 } |  1632 } | 
|  1633  |  1633  | 
|  1634 }  // namespace |  1634 }  // namespace | 
|  1635 }  // namespace cc |  1635 }  // namespace cc | 
| OLD | NEW |