Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 1944623002: CC Animation: Use ElementId to attach CC animation players. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@erasedomids
Patch Set: Let CC clients generate their own ElementIds locally. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698