| 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 |