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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 2741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2752 scroll_tree.ScrollBy(scroll_node, delta, active_tree()); | 2752 scroll_tree.ScrollBy(scroll_node, delta, active_tree()); |
2753 return false; | 2753 return false; |
2754 } | 2754 } |
2755 | 2755 |
2756 scroll_tree.set_currently_scrolling_node(scroll_node->id); | 2756 scroll_tree.set_currently_scrolling_node(scroll_node->id); |
2757 | 2757 |
2758 gfx::ScrollOffset current_offset = | 2758 gfx::ScrollOffset current_offset = |
2759 scroll_tree.current_scroll_offset(scroll_node->owner_id); | 2759 scroll_tree.current_scroll_offset(scroll_node->owner_id); |
2760 gfx::ScrollOffset target_offset = scroll_tree.ClampScrollOffsetToLimits( | 2760 gfx::ScrollOffset target_offset = scroll_tree.ClampScrollOffsetToLimits( |
2761 current_offset + gfx::ScrollOffset(delta), scroll_node); | 2761 current_offset + gfx::ScrollOffset(delta), scroll_node); |
2762 animation_host_->ImplOnlyScrollAnimationCreate(scroll_node->owner_id, | 2762 LayerImpl* owner = active_tree_->LayerById(scroll_node->owner_id); |
| 2763 DCHECK(owner); |
| 2764 DCHECK(owner->element_id()); |
| 2765 animation_host_->ImplOnlyScrollAnimationCreate(owner->element_id(), |
2763 target_offset, current_offset); | 2766 target_offset, current_offset); |
2764 | 2767 |
2765 SetNeedsOneBeginImplFrame(); | 2768 SetNeedsOneBeginImplFrame(); |
2766 | 2769 |
2767 return true; | 2770 return true; |
2768 } | 2771 } |
2769 | 2772 |
2770 InputHandler::ScrollStatus LayerTreeHostImpl::ScrollAnimated( | 2773 InputHandler::ScrollStatus LayerTreeHostImpl::ScrollAnimated( |
2771 const gfx::Point& viewport_point, | 2774 const gfx::Point& viewport_point, |
2772 const gfx::Vector2dF& scroll_delta) { | 2775 const gfx::Vector2dF& scroll_delta) { |
(...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3775 active_tree_->max_page_scale_factor()); | 3778 active_tree_->max_page_scale_factor()); |
3776 } | 3779 } |
3777 | 3780 |
3778 void LayerTreeHostImpl::ScrollAnimationAbort(LayerImpl* layer_impl) { | 3781 void LayerTreeHostImpl::ScrollAnimationAbort(LayerImpl* layer_impl) { |
3779 return animation_host_->ScrollAnimationAbort(false /* needs_completion */); | 3782 return animation_host_->ScrollAnimationAbort(false /* needs_completion */); |
3780 } | 3783 } |
3781 | 3784 |
3782 bool LayerTreeHostImpl::ScrollAnimationUpdateTarget( | 3785 bool LayerTreeHostImpl::ScrollAnimationUpdateTarget( |
3783 ScrollNode* scroll_node, | 3786 ScrollNode* scroll_node, |
3784 const gfx::Vector2dF& scroll_delta) { | 3787 const gfx::Vector2dF& scroll_delta) { |
| 3788 LayerImpl* owner = active_tree_->LayerById(scroll_node->owner_id); |
| 3789 DCHECK(owner); |
| 3790 DCHECK(owner->element_id()); |
3785 return animation_host_->ImplOnlyScrollAnimationUpdateTarget( | 3791 return animation_host_->ImplOnlyScrollAnimationUpdateTarget( |
3786 scroll_node->owner_id, scroll_delta, | 3792 owner->element_id(), scroll_delta, |
3787 active_tree_->property_trees()->scroll_tree.MaxScrollOffset( | 3793 active_tree_->property_trees()->scroll_tree.MaxScrollOffset( |
3788 scroll_node->id), | 3794 scroll_node->id), |
3789 CurrentBeginFrameArgs().frame_time); | 3795 CurrentBeginFrameArgs().frame_time); |
3790 } | 3796 } |
3791 | 3797 |
3792 bool LayerTreeHostImpl::IsElementInList(ElementId element_id, | 3798 bool LayerTreeHostImpl::IsElementInList(ElementId element_id, |
3793 ElementListType list_type) const { | 3799 ElementListType list_type) const { |
3794 if (list_type == ElementListType::ACTIVE) { | 3800 if (list_type == ElementListType::ACTIVE) { |
3795 return active_tree() ? active_tree()->LayerById(element_id) != nullptr | 3801 return active_tree()->HasAnyLayerForElementId(element_id); |
3796 : false; | |
3797 } else { | 3802 } else { |
3798 if (pending_tree() && pending_tree()->LayerById(element_id)) | 3803 if (pending_tree() && pending_tree()->HasAnyLayerForElementId(element_id)) |
3799 return true; | 3804 return true; |
3800 if (recycle_tree() && recycle_tree()->LayerById(element_id)) | 3805 if (recycle_tree() && recycle_tree()->HasAnyLayerForElementId(element_id)) |
3801 return true; | 3806 return true; |
3802 | 3807 |
3803 return false; | 3808 return false; |
3804 } | 3809 } |
3805 } | 3810 } |
3806 | 3811 |
3807 void LayerTreeHostImpl::SetMutatorsNeedCommit() {} | 3812 void LayerTreeHostImpl::SetMutatorsNeedCommit() {} |
3808 | 3813 |
3809 void LayerTreeHostImpl::SetMutatorsNeedRebuildPropertyTrees() {} | 3814 void LayerTreeHostImpl::SetMutatorsNeedRebuildPropertyTrees() {} |
3810 | 3815 |
3811 void LayerTreeHostImpl::SetTreeLayerFilterMutated( | 3816 void LayerTreeHostImpl::SetTreeLayerFilterMutated( |
3812 int layer_id, | 3817 ElementId element_id, |
3813 LayerTreeImpl* tree, | 3818 LayerTreeImpl* tree, |
3814 const FilterOperations& filters) { | 3819 const FilterOperations& filters) { |
3815 if (!tree) | 3820 if (!tree) |
3816 return; | 3821 return; |
3817 | 3822 |
3818 LayerImpl* layer = tree->LayerById(layer_id); | 3823 LayerImpl* layer = tree->LayerForElementId(element_id); |
3819 if (layer) | 3824 if (layer) |
3820 layer->OnFilterAnimated(filters); | 3825 layer->OnFilterAnimated(filters); |
3821 } | 3826 } |
3822 | 3827 |
3823 void LayerTreeHostImpl::SetTreeLayerOpacityMutated(int layer_id, | 3828 void LayerTreeHostImpl::SetTreeLayerOpacityMutated(ElementId element_id, |
3824 LayerTreeImpl* tree, | 3829 LayerTreeImpl* tree, |
3825 float opacity) { | 3830 float opacity) { |
3826 if (!tree) | 3831 if (!tree) |
3827 return; | 3832 return; |
3828 | 3833 |
3829 LayerImpl* layer = tree->LayerById(layer_id); | 3834 LayerImpl* layer = tree->LayerForElementId(element_id); |
3830 if (layer) | 3835 if (layer) |
3831 layer->OnOpacityAnimated(opacity); | 3836 layer->OnOpacityAnimated(opacity); |
3832 } | 3837 } |
3833 | 3838 |
3834 void LayerTreeHostImpl::SetTreeLayerTransformMutated( | 3839 void LayerTreeHostImpl::SetTreeLayerTransformMutated( |
3835 int layer_id, | 3840 ElementId element_id, |
3836 LayerTreeImpl* tree, | 3841 LayerTreeImpl* tree, |
3837 const gfx::Transform& transform) { | 3842 const gfx::Transform& transform) { |
3838 if (!tree) | 3843 if (!tree) |
3839 return; | 3844 return; |
3840 | 3845 |
3841 LayerImpl* layer = tree->LayerById(layer_id); | 3846 LayerImpl* layer = tree->LayerForElementId(element_id); |
3842 if (layer) | 3847 if (layer) |
3843 layer->OnTransformAnimated(transform); | 3848 layer->OnTransformAnimated(transform); |
3844 } | 3849 } |
3845 | 3850 |
3846 void LayerTreeHostImpl::SetTreeLayerScrollOffsetMutated( | 3851 void LayerTreeHostImpl::SetTreeLayerScrollOffsetMutated( |
3847 int layer_id, | 3852 ElementId element_id, |
3848 LayerTreeImpl* tree, | 3853 LayerTreeImpl* tree, |
3849 const gfx::ScrollOffset& scroll_offset) { | 3854 const gfx::ScrollOffset& scroll_offset) { |
3850 if (!tree) | 3855 if (!tree) |
3851 return; | 3856 return; |
3852 | 3857 |
3853 LayerImpl* layer = tree->LayerById(layer_id); | 3858 LayerImpl* layer = tree->ScrollLayerForElementId(element_id); |
3854 if (layer) | 3859 if (layer) |
3855 layer->OnScrollOffsetAnimated(scroll_offset); | 3860 layer->OnScrollOffsetAnimated(scroll_offset); |
3856 } | 3861 } |
3857 | 3862 |
3858 void LayerTreeHostImpl::TreeLayerTransformIsPotentiallyAnimatingChanged( | 3863 void LayerTreeHostImpl::TreeLayerTransformIsPotentiallyAnimatingChanged( |
3859 int layer_id, | 3864 ElementId element_id, |
3860 LayerTreeImpl* tree, | 3865 LayerTreeImpl* tree, |
3861 bool is_animating) { | 3866 bool is_animating) { |
3862 if (!tree) | 3867 if (!tree) |
3863 return; | 3868 return; |
3864 | 3869 |
3865 LayerImpl* layer = tree->LayerById(layer_id); | 3870 LayerImpl* layer = tree->LayerForElementId(element_id); |
3866 if (layer) | 3871 if (layer) |
3867 layer->OnTransformIsPotentiallyAnimatingChanged(is_animating); | 3872 layer->OnTransformIsPotentiallyAnimatingChanged(is_animating); |
3868 } | 3873 } |
3869 | 3874 |
3870 bool LayerTreeHostImpl::AnimationsPreserveAxisAlignment( | 3875 bool LayerTreeHostImpl::AnimationsPreserveAxisAlignment( |
3871 const LayerImpl* layer) const { | 3876 const LayerImpl* layer) const { |
3872 return animation_host_->AnimationsPreserveAxisAlignment(layer->id()); | 3877 return animation_host_->AnimationsPreserveAxisAlignment(layer->element_id()); |
3873 } | 3878 } |
3874 | 3879 |
3875 void LayerTreeHostImpl::SetElementFilterMutated( | 3880 void LayerTreeHostImpl::SetElementFilterMutated( |
3876 ElementId element_id, | 3881 ElementId element_id, |
3877 ElementListType list_type, | 3882 ElementListType list_type, |
3878 const FilterOperations& filters) { | 3883 const FilterOperations& filters) { |
3879 if (list_type == ElementListType::ACTIVE) { | 3884 if (list_type == ElementListType::ACTIVE) { |
3880 SetTreeLayerFilterMutated(element_id, active_tree(), filters); | 3885 SetTreeLayerFilterMutated(element_id, active_tree(), filters); |
3881 } else { | 3886 } else { |
3882 SetTreeLayerFilterMutated(element_id, pending_tree(), filters); | 3887 SetTreeLayerFilterMutated(element_id, pending_tree(), filters); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3935 void LayerTreeHostImpl::ScrollOffsetAnimationFinished() { | 3940 void LayerTreeHostImpl::ScrollOffsetAnimationFinished() { |
3936 // TODO(majidvp): We should pass in the original starting scroll position here | 3941 // TODO(majidvp): We should pass in the original starting scroll position here |
3937 ScrollStateData scroll_state_data; | 3942 ScrollStateData scroll_state_data; |
3938 ScrollState scroll_state(scroll_state_data); | 3943 ScrollState scroll_state(scroll_state_data); |
3939 ScrollEnd(&scroll_state); | 3944 ScrollEnd(&scroll_state); |
3940 } | 3945 } |
3941 | 3946 |
3942 gfx::ScrollOffset LayerTreeHostImpl::GetScrollOffsetForAnimation( | 3947 gfx::ScrollOffset LayerTreeHostImpl::GetScrollOffsetForAnimation( |
3943 ElementId element_id) const { | 3948 ElementId element_id) const { |
3944 if (active_tree()) { | 3949 if (active_tree()) { |
3945 LayerImpl* layer = active_tree()->LayerById(element_id); | 3950 LayerImpl* layer = active_tree()->ScrollLayerForElementId(element_id); |
3946 if (layer) | 3951 if (layer) |
3947 return layer->ScrollOffsetForAnimation(); | 3952 return layer->ScrollOffsetForAnimation(); |
3948 } | 3953 } |
3949 | 3954 |
3950 return gfx::ScrollOffset(); | 3955 return gfx::ScrollOffset(); |
3951 } | 3956 } |
3952 | 3957 |
3953 bool LayerTreeHostImpl::SupportsImplScrolling() const { | 3958 bool LayerTreeHostImpl::SupportsImplScrolling() const { |
3954 // Supported in threaded mode. | 3959 // Supported in threaded mode. |
3955 return task_runner_provider_->HasImplThread(); | 3960 return task_runner_provider_->HasImplThread(); |
3956 } | 3961 } |
3957 | 3962 |
3958 bool LayerTreeHostImpl::CommitToActiveTree() const { | 3963 bool LayerTreeHostImpl::CommitToActiveTree() const { |
3959 // In single threaded mode we skip the pending tree and commit directly to the | 3964 // In single threaded mode we skip the pending tree and commit directly to the |
3960 // active tree. | 3965 // active tree. |
3961 return !task_runner_provider_->HasImplThread(); | 3966 return !task_runner_provider_->HasImplThread(); |
3962 } | 3967 } |
3963 | 3968 |
3964 } // namespace cc | 3969 } // namespace cc |
OLD | NEW |