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

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: 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 2734 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698