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