Chromium Code Reviews| 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_impl.h" | 5 #include "cc/trees/layer_tree_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 23 #include "cc/base/synced_property.h" | 23 #include "cc/base/synced_property.h" |
| 24 #include "cc/debug/devtools_instrumentation.h" | 24 #include "cc/debug/devtools_instrumentation.h" |
| 25 #include "cc/debug/traced_value.h" | 25 #include "cc/debug/traced_value.h" |
| 26 #include "cc/input/page_scale_animation.h" | 26 #include "cc/input/page_scale_animation.h" |
| 27 #include "cc/input/scrollbar_animation_controller.h" | 27 #include "cc/input/scrollbar_animation_controller.h" |
| 28 #include "cc/input/scrollbar_animation_controller_linear_fade.h" | 28 #include "cc/input/scrollbar_animation_controller_linear_fade.h" |
| 29 #include "cc/input/scrollbar_animation_controller_thinning.h" | 29 #include "cc/input/scrollbar_animation_controller_thinning.h" |
| 30 #include "cc/layers/heads_up_display_layer_impl.h" | 30 #include "cc/layers/heads_up_display_layer_impl.h" |
| 31 #include "cc/layers/layer.h" | 31 #include "cc/layers/layer.h" |
| 32 #include "cc/layers/layer_iterator.h" | 32 #include "cc/layers/layer_iterator.h" |
| 33 #include "cc/layers/layer_list_iterator.h" | |
| 33 #include "cc/layers/render_surface_impl.h" | 34 #include "cc/layers/render_surface_impl.h" |
| 34 #include "cc/layers/scrollbar_layer_impl_base.h" | 35 #include "cc/layers/scrollbar_layer_impl_base.h" |
| 35 #include "cc/resources/ui_resource_request.h" | 36 #include "cc/resources/ui_resource_request.h" |
| 36 #include "cc/trees/draw_property_utils.h" | 37 #include "cc/trees/draw_property_utils.h" |
| 37 #include "cc/trees/layer_tree_host_common.h" | 38 #include "cc/trees/layer_tree_host_common.h" |
| 38 #include "cc/trees/layer_tree_host_impl.h" | 39 #include "cc/trees/layer_tree_host_impl.h" |
| 39 #include "cc/trees/occlusion_tracker.h" | 40 #include "cc/trees/occlusion_tracker.h" |
| 40 #include "cc/trees/property_tree.h" | 41 #include "cc/trees/property_tree.h" |
| 41 #include "cc/trees/property_tree_builder.h" | 42 #include "cc/trees/property_tree_builder.h" |
| 42 #include "ui/gfx/geometry/box_f.h" | 43 #include "ui/gfx/geometry/box_f.h" |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 361 EventListenerClass::kMouseWheel, | 362 EventListenerClass::kMouseWheel, |
| 362 event_listener_properties(EventListenerClass::kMouseWheel)); | 363 event_listener_properties(EventListenerClass::kMouseWheel)); |
| 363 | 364 |
| 364 if (ViewportSizeInvalid()) | 365 if (ViewportSizeInvalid()) |
| 365 target_tree->SetViewportSizeInvalid(); | 366 target_tree->SetViewportSizeInvalid(); |
| 366 else | 367 else |
| 367 target_tree->ResetViewportSizeInvalid(); | 368 target_tree->ResetViewportSizeInvalid(); |
| 368 | 369 |
| 369 if (hud_layer()) | 370 if (hud_layer()) |
| 370 target_tree->set_hud_layer(static_cast<HeadsUpDisplayLayerImpl*>( | 371 target_tree->set_hud_layer(static_cast<HeadsUpDisplayLayerImpl*>( |
| 371 LayerTreeHostCommon::FindLayerInSubtree( | 372 LayerTreeHostCommon::FindLayerInSubtree(target_tree->root_layer(), |
| 372 target_tree->root_layer(), hud_layer()->id()))); | 373 hud_layer()->id()))); |
| 373 else | 374 else |
| 374 target_tree->set_hud_layer(NULL); | 375 target_tree->set_hud_layer(NULL); |
| 375 | 376 |
| 376 target_tree->has_ever_been_drawn_ = false; | 377 target_tree->has_ever_been_drawn_ = false; |
| 377 } | 378 } |
| 378 void LayerTreeImpl::AddToElementMap(LayerImpl* layer) { | 379 void LayerTreeImpl::AddToElementMap(LayerImpl* layer) { |
| 379 if (!layer->element_id() || !layer->mutable_properties()) | 380 if (!layer->element_id() || !layer->mutable_properties()) |
| 380 return; | 381 return; |
| 381 | 382 |
| 382 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), | 383 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), |
| (...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 878 tile_priorities_updated |= layer->UpdateTiles(); | 879 tile_priorities_updated |= layer->UpdateTiles(); |
| 879 } | 880 } |
| 880 | 881 |
| 881 if (tile_priorities_updated) | 882 if (tile_priorities_updated) |
| 882 DidModifyTilePriorities(); | 883 DidModifyTilePriorities(); |
| 883 | 884 |
| 884 TRACE_EVENT_END1("cc", "LayerTreeImpl::UpdateDrawProperties::UpdateTiles", | 885 TRACE_EVENT_END1("cc", "LayerTreeImpl::UpdateDrawProperties::UpdateTiles", |
| 885 "layers_updated_count", layers_updated_count); | 886 "layers_updated_count", layers_updated_count); |
| 886 } | 887 } |
| 887 | 888 |
| 888 DCHECK(!needs_update_draw_properties_) << | 889 DCHECK(!needs_update_draw_properties_) |
| 889 "CalcDrawProperties should not set_needs_update_draw_properties()"; | 890 << "CalcDrawProperties should not set_needs_update_draw_properties()"; |
| 890 return true; | 891 return true; |
| 891 } | 892 } |
| 892 | 893 |
| 893 void LayerTreeImpl::BuildPropertyTreesForTesting() { | 894 void LayerTreeImpl::BuildPropertyTreesForTesting() { |
| 894 LayerTreeHostCommon::PreCalculateMetaInformationForTesting(root_layer_.get()); | 895 LayerTreeHostCommon::PreCalculateMetaInformationForTesting(root_layer_.get()); |
| 895 PropertyTreeBuilder::BuildPropertyTrees( | 896 PropertyTreeBuilder::BuildPropertyTrees( |
| 896 root_layer_.get(), PageScaleLayer(), InnerViewportScrollLayer(), | 897 root_layer_.get(), PageScaleLayer(), InnerViewportScrollLayer(), |
| 897 OuterViewportScrollLayer(), OverscrollElasticityLayer(), | 898 OuterViewportScrollLayer(), OverscrollElasticityLayer(), |
| 898 elastic_overscroll()->Current(IsActiveTree()), | 899 elastic_overscroll()->Current(IsActiveTree()), |
| 899 current_page_scale_factor(), device_scale_factor(), | 900 current_page_scale_factor(), device_scale_factor(), |
| (...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1387 << i << " of " << layers_with_copy_output_request_.size(); | 1388 << i << " of " << layers_with_copy_output_request_.size(); |
| 1388 } | 1389 } |
| 1389 layers_with_copy_output_request_.push_back(layer); | 1390 layers_with_copy_output_request_.push_back(layer); |
| 1390 } | 1391 } |
| 1391 | 1392 |
| 1392 void LayerTreeImpl::RemoveLayerWithCopyOutputRequest(LayerImpl* layer) { | 1393 void LayerTreeImpl::RemoveLayerWithCopyOutputRequest(LayerImpl* layer) { |
| 1393 // Only the active tree needs to know about layers with copy requests, as | 1394 // Only the active tree needs to know about layers with copy requests, as |
| 1394 // they are aborted if not serviced during draw. | 1395 // they are aborted if not serviced during draw. |
| 1395 DCHECK(IsActiveTree()); | 1396 DCHECK(IsActiveTree()); |
| 1396 | 1397 |
| 1397 std::vector<LayerImpl*>::iterator it = std::find( | 1398 std::vector<LayerImpl*>::iterator it = |
| 1398 layers_with_copy_output_request_.begin(), | 1399 std::find(layers_with_copy_output_request_.begin(), |
| 1399 layers_with_copy_output_request_.end(), | 1400 layers_with_copy_output_request_.end(), layer); |
| 1400 layer); | |
| 1401 DCHECK(it != layers_with_copy_output_request_.end()); | 1401 DCHECK(it != layers_with_copy_output_request_.end()); |
| 1402 layers_with_copy_output_request_.erase(it); | 1402 layers_with_copy_output_request_.erase(it); |
| 1403 | 1403 |
| 1404 // TODO(danakj): Remove this once crash is found crbug.com/309777 | 1404 // TODO(danakj): Remove this once crash is found crbug.com/309777 |
| 1405 for (size_t i = 0; i < layers_with_copy_output_request_.size(); ++i) { | 1405 for (size_t i = 0; i < layers_with_copy_output_request_.size(); ++i) { |
| 1406 CHECK(layers_with_copy_output_request_[i] != layer) | 1406 CHECK(layers_with_copy_output_request_[i] != layer) |
| 1407 << i << " of " << layers_with_copy_output_request_.size(); | 1407 << i << " of " << layers_with_copy_output_request_.size(); |
| 1408 } | 1408 } |
| 1409 } | 1409 } |
| 1410 | 1410 |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1585 transform_tree, clip_tree)) | 1585 transform_tree, clip_tree)) |
| 1586 return false; | 1586 return false; |
| 1587 | 1587 |
| 1588 // Skip the HUD layer. | 1588 // Skip the HUD layer. |
| 1589 if (layer == layer->layer_tree_impl()->hud_layer()) | 1589 if (layer == layer->layer_tree_impl()->hud_layer()) |
| 1590 return false; | 1590 return false; |
| 1591 | 1591 |
| 1592 return true; | 1592 return true; |
| 1593 } | 1593 } |
| 1594 | 1594 |
| 1595 struct FindClosestMatchingLayerDataForRecursion { | 1595 struct FindClosestMatchingLayerState { |
| 1596 FindClosestMatchingLayerDataForRecursion() | 1596 FindClosestMatchingLayerState() |
| 1597 : closest_match(NULL), | 1597 : closest_match(NULL), |
| 1598 closest_distance(-std::numeric_limits<float>::infinity()) {} | 1598 closest_distance(-std::numeric_limits<float>::infinity()) {} |
| 1599 LayerImpl* closest_match; | 1599 LayerImpl* closest_match; |
| 1600 // Note that the positive z-axis points towards the camera, so bigger means | 1600 // Note that the positive z-axis points towards the camera, so bigger means |
| 1601 // closer in this case, counterintuitively. | 1601 // closer in this case, counterintuitively. |
| 1602 float closest_distance; | 1602 float closest_distance; |
| 1603 }; | 1603 }; |
| 1604 | 1604 |
| 1605 template <typename Functor> | 1605 template <typename Functor> |
| 1606 static void FindClosestMatchingLayer( | 1606 static void FindClosestMatchingLayer(const gfx::PointF& screen_space_point, |
| 1607 const gfx::PointF& screen_space_point, | 1607 LayerImpl* root_layer, |
| 1608 LayerImpl* layer, | 1608 const Functor& func, |
| 1609 const Functor& func, | 1609 const TransformTree& transform_tree, |
| 1610 const TransformTree& transform_tree, | 1610 const ClipTree& clip_tree, |
| 1611 const ClipTree& clip_tree, | 1611 FindClosestMatchingLayerState* state) { |
| 1612 FindClosestMatchingLayerDataForRecursion* data_for_recursion) { | 1612 // We want to iterate from front to back when hit testing. |
| 1613 size_t children_size = layer->children().size(); | 1613 LayerListReverseIterator it(root_layer); |
| 1614 for (size_t i = 0; i < children_size; ++i) { | 1614 LayerListReverseIterator end(nullptr); |
| 1615 size_t index = children_size - 1 - i; | 1615 for (; it != end; ++it) { |
|
ajuma
2016/03/02 22:36:47
Do we need the explicit 'end' here, or could we ju
danakj
2016/03/02 22:41:49
jw, is it possible that rbegin()/rend() on LayerIm
danakj
2016/03/02 22:46:32
I would prefer that personally, it would make it l
| |
| 1616 FindClosestMatchingLayer(screen_space_point, layer->children()[index].get(), | 1616 LayerImpl* layer = *it; |
| 1617 func, transform_tree, clip_tree, | 1617 if (!func(layer)) |
| 1618 data_for_recursion); | 1618 continue; |
| 1619 } | |
| 1620 | 1619 |
| 1621 if (!func(layer)) | 1620 float distance_to_intersection = 0.f; |
| 1622 return; | 1621 bool hit = false; |
| 1622 if (layer->Is3dSorted()) | |
| 1623 hit = PointHitsLayer(layer, screen_space_point, &distance_to_intersection, | |
| 1624 transform_tree, clip_tree); | |
| 1625 else | |
| 1626 hit = PointHitsLayer(layer, screen_space_point, nullptr, transform_tree, | |
| 1627 clip_tree); | |
| 1623 | 1628 |
| 1624 float distance_to_intersection = 0.f; | 1629 if (!hit) |
| 1625 bool hit = false; | 1630 continue; |
| 1626 if (layer->Is3dSorted()) | |
| 1627 hit = PointHitsLayer(layer, screen_space_point, &distance_to_intersection, | |
| 1628 transform_tree, clip_tree); | |
| 1629 else | |
| 1630 hit = PointHitsLayer(layer, screen_space_point, nullptr, transform_tree, | |
| 1631 clip_tree); | |
| 1632 | 1631 |
| 1633 if (!hit) | 1632 bool in_front_of_previous_candidate = |
| 1634 return; | 1633 state->closest_match && |
| 1634 layer->sorting_context_id() == | |
| 1635 state->closest_match->sorting_context_id() && | |
| 1636 distance_to_intersection > | |
| 1637 state->closest_distance + std::numeric_limits<float>::epsilon(); | |
| 1635 | 1638 |
| 1636 bool in_front_of_previous_candidate = | 1639 if (!state->closest_match || in_front_of_previous_candidate) { |
| 1637 data_for_recursion->closest_match && | 1640 state->closest_distance = distance_to_intersection; |
| 1638 layer->sorting_context_id() == | 1641 state->closest_match = layer; |
| 1639 data_for_recursion->closest_match->sorting_context_id() && | 1642 } |
| 1640 distance_to_intersection > data_for_recursion->closest_distance + | |
| 1641 std::numeric_limits<float>::epsilon(); | |
| 1642 | |
| 1643 if (!data_for_recursion->closest_match || in_front_of_previous_candidate) { | |
| 1644 data_for_recursion->closest_distance = distance_to_intersection; | |
| 1645 data_for_recursion->closest_match = layer; | |
| 1646 } | 1643 } |
| 1647 } | 1644 } |
| 1648 | 1645 |
| 1649 static bool ScrollsAnyDrawnRenderSurfaceLayerListMember(LayerImpl* layer) { | 1646 static bool ScrollsAnyDrawnRenderSurfaceLayerListMember(LayerImpl* layer) { |
| 1650 if (!layer->scrollable()) | 1647 if (!layer->scrollable()) |
| 1651 return false; | 1648 return false; |
| 1652 if (layer->layer_or_descendant_is_drawn()) | 1649 if (layer->layer_or_descendant_is_drawn()) |
| 1653 return true; | 1650 return true; |
| 1654 | 1651 |
| 1655 if (!layer->scroll_children()) | 1652 if (!layer->scroll_children()) |
| 1656 return false; | 1653 return false; |
| 1657 for (std::set<LayerImpl*>::const_iterator it = | 1654 for (std::set<LayerImpl*>::const_iterator it = |
| 1658 layer->scroll_children()->begin(); | 1655 layer->scroll_children()->begin(); |
| 1659 it != layer->scroll_children()->end(); | 1656 it != layer->scroll_children()->end(); ++it) { |
| 1660 ++it) { | |
| 1661 if ((*it)->layer_or_descendant_is_drawn()) | 1657 if ((*it)->layer_or_descendant_is_drawn()) |
| 1662 return true; | 1658 return true; |
| 1663 } | 1659 } |
| 1664 return false; | 1660 return false; |
| 1665 } | 1661 } |
| 1666 | 1662 |
| 1667 struct FindScrollingLayerFunctor { | 1663 struct FindScrollingLayerFunctor { |
| 1668 bool operator()(LayerImpl* layer) const { | 1664 bool operator()(LayerImpl* layer) const { |
| 1669 return ScrollsAnyDrawnRenderSurfaceLayerListMember(layer); | 1665 return ScrollsAnyDrawnRenderSurfaceLayerListMember(layer); |
| 1670 } | 1666 } |
| 1671 }; | 1667 }; |
| 1672 | 1668 |
| 1673 LayerImpl* LayerTreeImpl::FindFirstScrollingLayerThatIsHitByPoint( | 1669 LayerImpl* LayerTreeImpl::FindFirstScrollingLayerThatIsHitByPoint( |
| 1674 const gfx::PointF& screen_space_point) { | 1670 const gfx::PointF& screen_space_point) { |
| 1675 FindClosestMatchingLayerDataForRecursion data_for_recursion; | 1671 FindClosestMatchingLayerState state; |
| 1676 FindClosestMatchingLayer(screen_space_point, root_layer(), | 1672 FindClosestMatchingLayer( |
| 1677 FindScrollingLayerFunctor(), | 1673 screen_space_point, root_layer(), FindScrollingLayerFunctor(), |
| 1678 property_trees_.transform_tree, | 1674 property_trees_.transform_tree, property_trees_.clip_tree, &state); |
| 1679 property_trees_.clip_tree, &data_for_recursion); | 1675 return state.closest_match; |
| 1680 return data_for_recursion.closest_match; | |
| 1681 } | 1676 } |
| 1682 | 1677 |
| 1683 struct HitTestVisibleScrollableOrTouchableFunctor { | 1678 struct HitTestVisibleScrollableOrTouchableFunctor { |
| 1684 bool operator()(LayerImpl* layer) const { | 1679 bool operator()(LayerImpl* layer) const { |
| 1685 return layer->IsDrawnRenderSurfaceLayerListMember() || | 1680 return layer->IsDrawnRenderSurfaceLayerListMember() || |
| 1686 ScrollsAnyDrawnRenderSurfaceLayerListMember(layer) || | 1681 ScrollsAnyDrawnRenderSurfaceLayerListMember(layer) || |
| 1687 !layer->touch_event_handler_region().IsEmpty() || | 1682 !layer->touch_event_handler_region().IsEmpty() || |
| 1688 layer->layer_tree_impl()->event_listener_properties( | 1683 layer->layer_tree_impl()->event_listener_properties( |
| 1689 EventListenerClass::kMouseWheel) != | 1684 EventListenerClass::kMouseWheel) != |
| 1690 EventListenerProperties::kNone; | 1685 EventListenerProperties::kNone; |
| 1691 } | 1686 } |
| 1692 }; | 1687 }; |
| 1693 | 1688 |
| 1694 LayerImpl* LayerTreeImpl::FindLayerThatIsHitByPoint( | 1689 LayerImpl* LayerTreeImpl::FindLayerThatIsHitByPoint( |
| 1695 const gfx::PointF& screen_space_point) { | 1690 const gfx::PointF& screen_space_point) { |
| 1696 if (!root_layer()) | 1691 if (!root_layer()) |
| 1697 return NULL; | 1692 return NULL; |
| 1698 bool update_lcd_text = false; | 1693 bool update_lcd_text = false; |
| 1699 if (!UpdateDrawProperties(update_lcd_text)) | 1694 if (!UpdateDrawProperties(update_lcd_text)) |
| 1700 return NULL; | 1695 return NULL; |
| 1701 FindClosestMatchingLayerDataForRecursion data_for_recursion; | 1696 FindClosestMatchingLayerState state; |
| 1702 FindClosestMatchingLayer(screen_space_point, root_layer(), | 1697 FindClosestMatchingLayer(screen_space_point, root_layer(), |
| 1703 HitTestVisibleScrollableOrTouchableFunctor(), | 1698 HitTestVisibleScrollableOrTouchableFunctor(), |
| 1704 property_trees_.transform_tree, | 1699 property_trees_.transform_tree, |
| 1705 property_trees_.clip_tree, &data_for_recursion); | 1700 property_trees_.clip_tree, &state); |
| 1706 return data_for_recursion.closest_match; | 1701 return state.closest_match; |
| 1707 } | 1702 } |
| 1708 | 1703 |
| 1709 static bool LayerHasTouchEventHandlersAt(const gfx::PointF& screen_space_point, | 1704 static bool LayerHasTouchEventHandlersAt(const gfx::PointF& screen_space_point, |
| 1710 LayerImpl* layer_impl, | 1705 LayerImpl* layer_impl, |
| 1711 const TransformTree& transform_tree, | 1706 const TransformTree& transform_tree, |
| 1712 const ClipTree& clip_tree) { | 1707 const ClipTree& clip_tree) { |
| 1713 if (layer_impl->touch_event_handler_region().IsEmpty()) | 1708 if (layer_impl->touch_event_handler_region().IsEmpty()) |
| 1714 return false; | 1709 return false; |
| 1715 | 1710 |
| 1716 if (!PointHitsRegion(screen_space_point, layer_impl->ScreenSpaceTransform(), | 1711 if (!PointHitsRegion(screen_space_point, layer_impl->ScreenSpaceTransform(), |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 1741 LayerImpl* LayerTreeImpl::FindLayerThatIsHitByPointInTouchHandlerRegion( | 1736 LayerImpl* LayerTreeImpl::FindLayerThatIsHitByPointInTouchHandlerRegion( |
| 1742 const gfx::PointF& screen_space_point) { | 1737 const gfx::PointF& screen_space_point) { |
| 1743 if (!root_layer()) | 1738 if (!root_layer()) |
| 1744 return NULL; | 1739 return NULL; |
| 1745 bool update_lcd_text = false; | 1740 bool update_lcd_text = false; |
| 1746 if (!UpdateDrawProperties(update_lcd_text)) | 1741 if (!UpdateDrawProperties(update_lcd_text)) |
| 1747 return NULL; | 1742 return NULL; |
| 1748 FindTouchEventLayerFunctor func = {screen_space_point, | 1743 FindTouchEventLayerFunctor func = {screen_space_point, |
| 1749 property_trees_.transform_tree, | 1744 property_trees_.transform_tree, |
| 1750 property_trees_.clip_tree}; | 1745 property_trees_.clip_tree}; |
| 1751 FindClosestMatchingLayerDataForRecursion data_for_recursion; | 1746 FindClosestMatchingLayerState state; |
| 1752 FindClosestMatchingLayer(screen_space_point, root_layer(), func, | 1747 FindClosestMatchingLayer(screen_space_point, root_layer(), func, |
| 1753 property_trees_.transform_tree, | 1748 property_trees_.transform_tree, |
| 1754 property_trees_.clip_tree, &data_for_recursion); | 1749 property_trees_.clip_tree, &state); |
| 1755 return data_for_recursion.closest_match; | 1750 return state.closest_match; |
| 1756 } | 1751 } |
| 1757 | 1752 |
| 1758 void LayerTreeImpl::RegisterSelection(const LayerSelection& selection) { | 1753 void LayerTreeImpl::RegisterSelection(const LayerSelection& selection) { |
| 1759 selection_ = selection; | 1754 selection_ = selection; |
| 1760 } | 1755 } |
| 1761 | 1756 |
| 1762 static ViewportSelectionBound ComputeViewportSelectionBound( | 1757 static ViewportSelectionBound ComputeViewportSelectionBound( |
| 1763 const LayerSelectionBound& layer_bound, | 1758 const LayerSelectionBound& layer_bound, |
| 1764 LayerImpl* layer, | 1759 LayerImpl* layer, |
| 1765 float device_scale_factor, | 1760 float device_scale_factor, |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1850 const { | 1845 const { |
| 1851 return layer_tree_host_impl_; | 1846 return layer_tree_host_impl_; |
| 1852 } | 1847 } |
| 1853 | 1848 |
| 1854 void LayerTreeImpl::SetPendingPageScaleAnimation( | 1849 void LayerTreeImpl::SetPendingPageScaleAnimation( |
| 1855 scoped_ptr<PendingPageScaleAnimation> pending_animation) { | 1850 scoped_ptr<PendingPageScaleAnimation> pending_animation) { |
| 1856 pending_page_scale_animation_ = std::move(pending_animation); | 1851 pending_page_scale_animation_ = std::move(pending_animation); |
| 1857 } | 1852 } |
| 1858 | 1853 |
| 1859 scoped_ptr<PendingPageScaleAnimation> | 1854 scoped_ptr<PendingPageScaleAnimation> |
| 1860 LayerTreeImpl::TakePendingPageScaleAnimation() { | 1855 LayerTreeImpl::TakePendingPageScaleAnimation() { |
| 1861 return std::move(pending_page_scale_animation_); | 1856 return std::move(pending_page_scale_animation_); |
| 1862 } | 1857 } |
| 1863 | 1858 |
| 1864 bool LayerTreeImpl::IsAnimatingFilterProperty(const LayerImpl* layer) const { | 1859 bool LayerTreeImpl::IsAnimatingFilterProperty(const LayerImpl* layer) const { |
| 1865 LayerTreeType tree_type = | 1860 LayerTreeType tree_type = |
| 1866 IsActiveTree() ? LayerTreeType::ACTIVE : LayerTreeType::PENDING; | 1861 IsActiveTree() ? LayerTreeType::ACTIVE : LayerTreeType::PENDING; |
| 1867 return layer_tree_host_impl_->animation_host() | 1862 return layer_tree_host_impl_->animation_host() |
| 1868 ? layer_tree_host_impl_->animation_host() | 1863 ? layer_tree_host_impl_->animation_host() |
| 1869 ->IsAnimatingFilterProperty(layer->id(), tree_type) | 1864 ->IsAnimatingFilterProperty(layer->id(), tree_type) |
| 1870 : false; | 1865 : false; |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2036 const gfx::BoxF& box, | 2031 const gfx::BoxF& box, |
| 2037 gfx::BoxF* bounds) const { | 2032 gfx::BoxF* bounds) const { |
| 2038 *bounds = gfx::BoxF(); | 2033 *bounds = gfx::BoxF(); |
| 2039 return layer_tree_host_impl_->animation_host() | 2034 return layer_tree_host_impl_->animation_host() |
| 2040 ? layer_tree_host_impl_->animation_host() | 2035 ? layer_tree_host_impl_->animation_host() |
| 2041 ->TransformAnimationBoundsForBox(layer->id(), box, bounds) | 2036 ->TransformAnimationBoundsForBox(layer->id(), box, bounds) |
| 2042 : true; | 2037 : true; |
| 2043 } | 2038 } |
| 2044 | 2039 |
| 2045 } // namespace cc | 2040 } // namespace cc |
| OLD | NEW |