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

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

Issue 1973083002: Use element id's for animations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 5 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
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 2768 matching lines...) Expand 10 before | Expand all | Expand 10 after
2779 scroll_tree.ScrollBy(scroll_node, delta, active_tree()); 2779 scroll_tree.ScrollBy(scroll_node, delta, active_tree());
2780 return false; 2780 return false;
2781 } 2781 }
2782 2782
2783 scroll_tree.set_currently_scrolling_node(scroll_node->id); 2783 scroll_tree.set_currently_scrolling_node(scroll_node->id);
2784 2784
2785 gfx::ScrollOffset current_offset = 2785 gfx::ScrollOffset current_offset =
2786 scroll_tree.current_scroll_offset(scroll_node->owner_id); 2786 scroll_tree.current_scroll_offset(scroll_node->owner_id);
2787 gfx::ScrollOffset target_offset = scroll_tree.ClampScrollOffsetToLimits( 2787 gfx::ScrollOffset target_offset = scroll_tree.ClampScrollOffsetToLimits(
2788 current_offset + gfx::ScrollOffset(delta), scroll_node); 2788 current_offset + gfx::ScrollOffset(delta), scroll_node);
2789 animation_host_->ImplOnlyScrollAnimationCreate(scroll_node->owner_id, 2789 DCHECK_EQ(
2790 ElementId(active_tree()->LayerById(scroll_node->owner_id)->element_id()),
2791 scroll_node->data.element_id);
2792
2793 animation_host_->ImplOnlyScrollAnimationCreate(scroll_node->data.element_id,
2790 target_offset, current_offset); 2794 target_offset, current_offset);
2791 2795
2792 SetNeedsOneBeginImplFrame(); 2796 SetNeedsOneBeginImplFrame();
2793 2797
2794 return true; 2798 return true;
2795 } 2799 }
2796 2800
2797 InputHandler::ScrollStatus LayerTreeHostImpl::ScrollAnimated( 2801 InputHandler::ScrollStatus LayerTreeHostImpl::ScrollAnimated(
2798 const gfx::Point& viewport_point, 2802 const gfx::Point& viewport_point,
2799 const gfx::Vector2dF& scroll_delta) { 2803 const gfx::Vector2dF& scroll_delta) {
(...skipping 998 matching lines...) Expand 10 before | Expand all | Expand 10 after
3798 active_tree_->max_page_scale_factor()); 3802 active_tree_->max_page_scale_factor());
3799 } 3803 }
3800 3804
3801 void LayerTreeHostImpl::ScrollAnimationAbort(LayerImpl* layer_impl) { 3805 void LayerTreeHostImpl::ScrollAnimationAbort(LayerImpl* layer_impl) {
3802 return animation_host_->ScrollAnimationAbort(false /* needs_completion */); 3806 return animation_host_->ScrollAnimationAbort(false /* needs_completion */);
3803 } 3807 }
3804 3808
3805 bool LayerTreeHostImpl::ScrollAnimationUpdateTarget( 3809 bool LayerTreeHostImpl::ScrollAnimationUpdateTarget(
3806 ScrollNode* scroll_node, 3810 ScrollNode* scroll_node,
3807 const gfx::Vector2dF& scroll_delta) { 3811 const gfx::Vector2dF& scroll_delta) {
3812 DCHECK_EQ(
3813 ElementId(active_tree()->LayerById(scroll_node->owner_id)->element_id()),
3814 scroll_node->data.element_id);
3815
3808 return animation_host_->ImplOnlyScrollAnimationUpdateTarget( 3816 return animation_host_->ImplOnlyScrollAnimationUpdateTarget(
3809 scroll_node->owner_id, scroll_delta, 3817 scroll_node->data.element_id, scroll_delta,
3810 active_tree_->property_trees()->scroll_tree.MaxScrollOffset( 3818 active_tree_->property_trees()->scroll_tree.MaxScrollOffset(
3811 scroll_node->id), 3819 scroll_node->id),
3812 CurrentBeginFrameArgs().frame_time); 3820 CurrentBeginFrameArgs().frame_time);
3813 } 3821 }
3814 3822
3815 bool LayerTreeHostImpl::IsElementInList(ElementId element_id, 3823 bool LayerTreeHostImpl::IsElementInList(ElementId element_id,
3816 ElementListType list_type) const { 3824 ElementListType list_type) const {
3817 if (list_type == ElementListType::ACTIVE) { 3825 if (list_type == ElementListType::ACTIVE) {
3818 return active_tree() ? active_tree()->LayerById(element_id) != nullptr 3826 return active_tree()
3819 : false; 3827 ? active_tree()->LayerByElementId(element_id) != nullptr
3828 : false;
3820 } else { 3829 } else {
3821 if (pending_tree() && pending_tree()->LayerById(element_id)) 3830 if (pending_tree() && pending_tree()->LayerByElementId(element_id))
3822 return true; 3831 return true;
3823 if (recycle_tree() && recycle_tree()->LayerById(element_id)) 3832 if (recycle_tree() && recycle_tree()->LayerByElementId(element_id))
3824 return true; 3833 return true;
3825 3834
3826 return false; 3835 return false;
3827 } 3836 }
3828 } 3837 }
3829 3838
3830 void LayerTreeHostImpl::SetMutatorsNeedCommit() {} 3839 void LayerTreeHostImpl::SetMutatorsNeedCommit() {}
3831 3840
3832 void LayerTreeHostImpl::SetMutatorsNeedRebuildPropertyTrees() {} 3841 void LayerTreeHostImpl::SetMutatorsNeedRebuildPropertyTrees() {}
3833 3842
3834 void LayerTreeHostImpl::SetTreeLayerFilterMutated( 3843 void LayerTreeHostImpl::SetTreeLayerFilterMutated(
3835 int layer_id, 3844 ElementId element_id,
3836 LayerTreeImpl* tree, 3845 LayerTreeImpl* tree,
3837 const FilterOperations& filters) { 3846 const FilterOperations& filters) {
3838 if (!tree) 3847 if (!tree)
3839 return; 3848 return;
3840 3849
3841 LayerImpl* layer = tree->LayerById(layer_id); 3850 LayerImpl* layer = tree->LayerByElementId(element_id);
3842 if (layer) 3851 if (layer)
3843 layer->OnFilterAnimated(filters); 3852 layer->OnFilterAnimated(filters);
3844 } 3853 }
3845 3854
3846 void LayerTreeHostImpl::SetTreeLayerOpacityMutated(int layer_id, 3855 void LayerTreeHostImpl::SetTreeLayerOpacityMutated(ElementId element_id,
3847 LayerTreeImpl* tree, 3856 LayerTreeImpl* tree,
3848 float opacity) { 3857 float opacity) {
3849 if (!tree) 3858 if (!tree)
3850 return; 3859 return;
3851 3860
3852 LayerImpl* layer = tree->LayerById(layer_id); 3861 LayerImpl* layer = tree->LayerByElementId(element_id);
3853 if (layer) 3862 if (layer)
3854 layer->OnOpacityAnimated(opacity); 3863 layer->OnOpacityAnimated(opacity);
3855 } 3864 }
3856 3865
3857 void LayerTreeHostImpl::SetTreeLayerTransformMutated( 3866 void LayerTreeHostImpl::SetTreeLayerTransformMutated(
3858 int layer_id, 3867 ElementId element_id,
3859 LayerTreeImpl* tree, 3868 LayerTreeImpl* tree,
3860 const gfx::Transform& transform) { 3869 const gfx::Transform& transform) {
3861 if (!tree) 3870 if (!tree)
3862 return; 3871 return;
3863 3872
3864 LayerImpl* layer = tree->LayerById(layer_id); 3873 LayerImpl* layer = tree->LayerByElementId(element_id);
3865 if (layer) 3874 if (layer)
3866 layer->OnTransformAnimated(transform); 3875 layer->OnTransformAnimated(transform);
3867 } 3876 }
3868 3877
3869 void LayerTreeHostImpl::SetTreeLayerScrollOffsetMutated( 3878 void LayerTreeHostImpl::SetTreeLayerScrollOffsetMutated(
3870 int layer_id, 3879 ElementId element_id,
3871 LayerTreeImpl* tree, 3880 LayerTreeImpl* tree,
3872 const gfx::ScrollOffset& scroll_offset) { 3881 const gfx::ScrollOffset& scroll_offset) {
3873 if (!tree) 3882 if (!tree)
3874 return; 3883 return;
3875 3884
3876 LayerImpl* layer = tree->LayerById(layer_id); 3885 LayerImpl* layer = tree->LayerByElementId(element_id);
3877 if (layer) { 3886 if (layer) {
3878 layer->OnScrollOffsetAnimated(scroll_offset); 3887 layer->OnScrollOffsetAnimated(scroll_offset);
3879 // Run mutation callbacks to respond to updated scroll offset. 3888 // Run mutation callbacks to respond to updated scroll offset.
3880 Mutate(CurrentBeginFrameArgs().frame_time); 3889 Mutate(CurrentBeginFrameArgs().frame_time);
3881 } 3890 }
3882 } 3891 }
3883 3892
3884 bool LayerTreeHostImpl::AnimationsPreserveAxisAlignment( 3893 bool LayerTreeHostImpl::AnimationsPreserveAxisAlignment(
3885 const LayerImpl* layer) const { 3894 const LayerImpl* layer) const {
3886 return animation_host_->AnimationsPreserveAxisAlignment(layer->id()); 3895 return animation_host_->AnimationsPreserveAxisAlignment(layer->element_id());
3887 } 3896 }
3888 3897
3889 void LayerTreeHostImpl::SetElementFilterMutated( 3898 void LayerTreeHostImpl::SetElementFilterMutated(
3890 ElementId element_id, 3899 ElementId element_id,
3891 ElementListType list_type, 3900 ElementListType list_type,
3892 const FilterOperations& filters) { 3901 const FilterOperations& filters) {
3893 if (list_type == ElementListType::ACTIVE) { 3902 if (list_type == ElementListType::ACTIVE) {
3894 SetTreeLayerFilterMutated(element_id, active_tree(), filters); 3903 SetTreeLayerFilterMutated(element_id, active_tree(), filters);
3895 } else { 3904 } else {
3896 SetTreeLayerFilterMutated(element_id, pending_tree(), filters); 3905 SetTreeLayerFilterMutated(element_id, pending_tree(), filters);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
3935 3944
3936 void LayerTreeHostImpl::ElementTransformIsAnimatingChanged( 3945 void LayerTreeHostImpl::ElementTransformIsAnimatingChanged(
3937 ElementId element_id, 3946 ElementId element_id,
3938 ElementListType list_type, 3947 ElementListType list_type,
3939 AnimationChangeType change_type, 3948 AnimationChangeType change_type,
3940 bool is_animating) { 3949 bool is_animating) {
3941 LayerTreeImpl* tree = 3950 LayerTreeImpl* tree =
3942 list_type == ElementListType::ACTIVE ? active_tree() : pending_tree(); 3951 list_type == ElementListType::ACTIVE ? active_tree() : pending_tree();
3943 if (!tree) 3952 if (!tree)
3944 return; 3953 return;
3945 LayerImpl* layer = tree->LayerById(element_id); 3954 LayerImpl* layer = tree->LayerByElementId(element_id);
3946 if (layer) { 3955 if (layer) {
3947 switch (change_type) { 3956 switch (change_type) {
3948 case AnimationChangeType::POTENTIAL: 3957 case AnimationChangeType::POTENTIAL:
3949 layer->OnTransformIsPotentiallyAnimatingChanged(is_animating); 3958 layer->OnTransformIsPotentiallyAnimatingChanged(is_animating);
3950 break; 3959 break;
3951 case AnimationChangeType::RUNNING: 3960 case AnimationChangeType::RUNNING:
3952 layer->OnTransformIsCurrentlyAnimatingChanged(is_animating); 3961 layer->OnTransformIsCurrentlyAnimatingChanged(is_animating);
3953 break; 3962 break;
3954 case AnimationChangeType::BOTH: 3963 case AnimationChangeType::BOTH:
3955 layer->OnTransformIsPotentiallyAnimatingChanged(is_animating); 3964 layer->OnTransformIsPotentiallyAnimatingChanged(is_animating);
3956 layer->OnTransformIsCurrentlyAnimatingChanged(is_animating); 3965 layer->OnTransformIsCurrentlyAnimatingChanged(is_animating);
3957 break; 3966 break;
3958 } 3967 }
3959 } 3968 }
3960 } 3969 }
3961 3970
3962 void LayerTreeHostImpl::ElementOpacityIsAnimatingChanged( 3971 void LayerTreeHostImpl::ElementOpacityIsAnimatingChanged(
3963 ElementId element_id, 3972 ElementId element_id,
3964 ElementListType list_type, 3973 ElementListType list_type,
3965 AnimationChangeType change_type, 3974 AnimationChangeType change_type,
3966 bool is_animating) { 3975 bool is_animating) {
3967 LayerTreeImpl* tree = 3976 LayerTreeImpl* tree =
3968 list_type == ElementListType::ACTIVE ? active_tree() : pending_tree(); 3977 list_type == ElementListType::ACTIVE ? active_tree() : pending_tree();
3969 if (!tree) 3978 if (!tree)
3970 return; 3979 return;
3971 LayerImpl* layer = tree->LayerById(element_id); 3980 LayerImpl* layer = tree->LayerByElementId(element_id);
3972 if (layer) { 3981 if (layer) {
3973 switch (change_type) { 3982 switch (change_type) {
3974 case AnimationChangeType::POTENTIAL: 3983 case AnimationChangeType::POTENTIAL:
3975 layer->OnOpacityIsPotentiallyAnimatingChanged(is_animating); 3984 layer->OnOpacityIsPotentiallyAnimatingChanged(is_animating);
3976 break; 3985 break;
3977 case AnimationChangeType::RUNNING: 3986 case AnimationChangeType::RUNNING:
3978 layer->OnOpacityIsCurrentlyAnimatingChanged(is_animating); 3987 layer->OnOpacityIsCurrentlyAnimatingChanged(is_animating);
3979 break; 3988 break;
3980 case AnimationChangeType::BOTH: 3989 case AnimationChangeType::BOTH:
3981 layer->OnOpacityIsPotentiallyAnimatingChanged(is_animating); 3990 layer->OnOpacityIsPotentiallyAnimatingChanged(is_animating);
3982 layer->OnOpacityIsCurrentlyAnimatingChanged(is_animating); 3991 layer->OnOpacityIsCurrentlyAnimatingChanged(is_animating);
3983 break; 3992 break;
3984 } 3993 }
3985 } 3994 }
3986 } 3995 }
3987 3996
3988 void LayerTreeHostImpl::ScrollOffsetAnimationFinished() { 3997 void LayerTreeHostImpl::ScrollOffsetAnimationFinished() {
3989 // TODO(majidvp): We should pass in the original starting scroll position here 3998 // TODO(majidvp): We should pass in the original starting scroll position here
3990 ScrollStateData scroll_state_data; 3999 ScrollStateData scroll_state_data;
3991 ScrollState scroll_state(scroll_state_data); 4000 ScrollState scroll_state(scroll_state_data);
3992 ScrollEnd(&scroll_state); 4001 ScrollEnd(&scroll_state);
3993 } 4002 }
3994 4003
3995 gfx::ScrollOffset LayerTreeHostImpl::GetScrollOffsetForAnimation( 4004 gfx::ScrollOffset LayerTreeHostImpl::GetScrollOffsetForAnimation(
3996 ElementId element_id) const { 4005 ElementId element_id) const {
3997 if (active_tree()) { 4006 if (active_tree()) {
3998 LayerImpl* layer = active_tree()->LayerById(element_id); 4007 LayerImpl* layer = active_tree()->LayerByElementId(element_id);
3999 if (layer) 4008 if (layer)
4000 return layer->ScrollOffsetForAnimation(); 4009 return layer->ScrollOffsetForAnimation();
4001 } 4010 }
4002 4011
4003 return gfx::ScrollOffset(); 4012 return gfx::ScrollOffset();
4004 } 4013 }
4005 4014
4006 bool LayerTreeHostImpl::SupportsImplScrolling() const { 4015 bool LayerTreeHostImpl::SupportsImplScrolling() const {
4007 // Supported in threaded mode. 4016 // Supported in threaded mode.
4008 return task_runner_provider_->HasImplThread(); 4017 return task_runner_provider_->HasImplThread();
4009 } 4018 }
4010 4019
4011 bool LayerTreeHostImpl::CommitToActiveTree() const { 4020 bool LayerTreeHostImpl::CommitToActiveTree() const {
4012 // In single threaded mode we skip the pending tree and commit directly to the 4021 // In single threaded mode we skip the pending tree and commit directly to the
4013 // active tree. 4022 // active tree.
4014 return !task_runner_provider_->HasImplThread(); 4023 return !task_runner_provider_->HasImplThread();
4015 } 4024 }
4016 4025
4017 } // namespace cc 4026 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698