| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "platform/graphics/compositing/PaintArtifactCompositor.h" | 5 #include "platform/graphics/compositing/PaintArtifactCompositor.h" |
| 6 | 6 |
| 7 #include "base/test/test_simple_task_runner.h" | 7 #include "base/test/test_simple_task_runner.h" |
| 8 #include "base/threading/thread_task_runner_handle.h" | 8 #include "base/threading/thread_task_runner_handle.h" |
| 9 #include "cc/layers/layer.h" | 9 #include "cc/layers/layer.h" |
| 10 #include "cc/test/fake_compositor_frame_sink.h" | 10 #include "cc/test/fake_compositor_frame_sink.h" |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 WTF::makeUnique<WebLayerTreeViewWithCompositorFrameSink>(settings); | 89 WTF::makeUnique<WebLayerTreeViewWithCompositorFrameSink>(settings); |
| 90 m_webLayerTreeView->setRootLayer(*m_paintArtifactCompositor->getWebLayer()); | 90 m_webLayerTreeView->setRootLayer(*m_paintArtifactCompositor->getWebLayer()); |
| 91 } | 91 } |
| 92 | 92 |
| 93 const cc::PropertyTrees& propertyTrees() { | 93 const cc::PropertyTrees& propertyTrees() { |
| 94 return *m_webLayerTreeView->layerTreeHost() | 94 return *m_webLayerTreeView->layerTreeHost() |
| 95 ->GetLayerTree() | 95 ->GetLayerTree() |
| 96 ->property_trees(); | 96 ->property_trees(); |
| 97 } | 97 } |
| 98 | 98 |
| 99 int elementIdToEffectNodeIndex(CompositorElementId elementId) { |
| 100 return m_webLayerTreeView->layerTreeHost() |
| 101 ->GetLayerTree() |
| 102 ->property_trees() |
| 103 ->element_id_to_effect_node_index[elementId]; |
| 104 } |
| 105 |
| 106 int elementIdToTransformNodeIndex(CompositorElementId elementId) { |
| 107 return m_webLayerTreeView->layerTreeHost() |
| 108 ->GetLayerTree() |
| 109 ->property_trees() |
| 110 ->element_id_to_transform_node_index[elementId]; |
| 111 } |
| 112 |
| 99 int elementIdToScrollNodeIndex(CompositorElementId elementId) { | 113 int elementIdToScrollNodeIndex(CompositorElementId elementId) { |
| 100 return m_webLayerTreeView->layerTreeHost() | 114 return m_webLayerTreeView->layerTreeHost() |
| 101 ->GetLayerTree() | 115 ->GetLayerTree() |
| 102 ->property_trees() | 116 ->property_trees() |
| 103 ->element_id_to_scroll_node_index[elementId]; | 117 ->element_id_to_scroll_node_index[elementId]; |
| 104 } | 118 } |
| 105 | 119 |
| 106 const cc::TransformNode& transformNode(const cc::Layer* layer) { | 120 const cc::TransformNode& transformNode(const cc::Layer* layer) { |
| 107 return *propertyTrees().transform_tree.Node(layer->transform_tree_index()); | 121 return *propertyTrees().transform_tree.Node(layer->transform_tree_index()); |
| 108 } | 122 } |
| (...skipping 1501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1610 PaintChunk chunk3; | 1624 PaintChunk chunk3; |
| 1611 chunk3.properties.propertyTreeState = chunk1.properties.propertyTreeState; | 1625 chunk3.properties.propertyTreeState = chunk1.properties.propertyTreeState; |
| 1612 chunk3.bounds = FloatRect(0, 0, 50, 60); | 1626 chunk3.bounds = FloatRect(0, 0, 50, 60); |
| 1613 chunk3.knownToBeOpaque = true; | 1627 chunk3.knownToBeOpaque = true; |
| 1614 pendingLayer.add(chunk3, nullptr); | 1628 pendingLayer.add(chunk3, nullptr); |
| 1615 | 1629 |
| 1616 // Chunk 3 covers the entire layer, so now it's opaque. | 1630 // Chunk 3 covers the entire layer, so now it's opaque. |
| 1617 EXPECT_TRUE(pendingLayer.knownToBeOpaque); | 1631 EXPECT_TRUE(pendingLayer.knownToBeOpaque); |
| 1618 } | 1632 } |
| 1619 | 1633 |
| 1634 TEST_F(PaintArtifactCompositorTestWithPropertyTrees, TransformWithElementId) { |
| 1635 CompositorElementId expectedCompositorElementId(2, 0); |
| 1636 RefPtr<TransformPaintPropertyNode> transform = |
| 1637 TransformPaintPropertyNode::create( |
| 1638 TransformPaintPropertyNode::root(), TransformationMatrix().rotate(90), |
| 1639 FloatPoint3D(100, 100, 0), false, 0, CompositingReason3DTransform, |
| 1640 expectedCompositorElementId); |
| 1641 |
| 1642 TestPaintArtifact artifact; |
| 1643 artifact |
| 1644 .chunk(transform, ClipPaintPropertyNode::root(), |
| 1645 EffectPaintPropertyNode::root()) |
| 1646 .rectDrawing(FloatRect(100, 100, 200, 100), Color::black); |
| 1647 update(artifact.build()); |
| 1648 |
| 1649 EXPECT_EQ(2, elementIdToTransformNodeIndex(expectedCompositorElementId)); |
| 1650 } |
| 1651 |
| 1652 TEST_F(PaintArtifactCompositorTestWithPropertyTrees, EffectWithElementId) { |
| 1653 CompositorElementId expectedCompositorElementId(2, 0); |
| 1654 float opacity = 2.0 / 255.0; |
| 1655 RefPtr<EffectPaintPropertyNode> effect = EffectPaintPropertyNode::create( |
| 1656 EffectPaintPropertyNode::root(), TransformPaintPropertyNode::root(), |
| 1657 ClipPaintPropertyNode::root(), CompositorFilterOperations(), opacity, |
| 1658 SkBlendMode::kSrcOver, CompositingReasonNone, |
| 1659 expectedCompositorElementId); |
| 1660 |
| 1661 TestPaintArtifact artifact; |
| 1662 artifact |
| 1663 .chunk(TransformPaintPropertyNode::root(), ClipPaintPropertyNode::root(), |
| 1664 effect.get()) |
| 1665 .rectDrawing(FloatRect(100, 100, 200, 100), Color::black); |
| 1666 update(artifact.build()); |
| 1667 |
| 1668 EXPECT_EQ(2, elementIdToEffectNodeIndex(expectedCompositorElementId)); |
| 1669 } |
| 1670 |
| 1620 } // namespace blink | 1671 } // namespace blink |
| OLD | NEW |