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

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: updated CompositorMutableStateTest. Created 4 years, 6 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 2796 matching lines...) Expand 10 before | Expand all | Expand 10 after
2807 scroll_tree.ScrollBy(scroll_node, delta, active_tree()); 2807 scroll_tree.ScrollBy(scroll_node, delta, active_tree());
2808 return false; 2808 return false;
2809 } 2809 }
2810 2810
2811 scroll_tree.set_currently_scrolling_node(scroll_node->id); 2811 scroll_tree.set_currently_scrolling_node(scroll_node->id);
2812 2812
2813 gfx::ScrollOffset current_offset = 2813 gfx::ScrollOffset current_offset =
2814 scroll_tree.current_scroll_offset(scroll_node->owner_id); 2814 scroll_tree.current_scroll_offset(scroll_node->owner_id);
2815 gfx::ScrollOffset target_offset = scroll_tree.ClampScrollOffsetToLimits( 2815 gfx::ScrollOffset target_offset = scroll_tree.ClampScrollOffsetToLimits(
2816 current_offset + gfx::ScrollOffset(delta), scroll_node); 2816 current_offset + gfx::ScrollOffset(delta), scroll_node);
2817 animation_host_->ImplOnlyScrollAnimationCreate(scroll_node->owner_id, 2817 DCHECK_EQ(
2818 ElementId(active_tree()->LayerById(scroll_node->owner_id)->element_id()),
2819 scroll_node->data.element_id);
2820
2821 animation_host_->ImplOnlyScrollAnimationCreate(scroll_node->data.element_id,
2818 target_offset, current_offset); 2822 target_offset, current_offset);
2819 2823
2820 SetNeedsOneBeginImplFrame(); 2824 SetNeedsOneBeginImplFrame();
2821 2825
2822 return true; 2826 return true;
2823 } 2827 }
2824 2828
2825 InputHandler::ScrollStatus LayerTreeHostImpl::ScrollAnimated( 2829 InputHandler::ScrollStatus LayerTreeHostImpl::ScrollAnimated(
2826 const gfx::Point& viewport_point, 2830 const gfx::Point& viewport_point,
2827 const gfx::Vector2dF& scroll_delta) { 2831 const gfx::Vector2dF& scroll_delta) {
(...skipping 1005 matching lines...) Expand 10 before | Expand all | Expand 10 after
3833 active_tree_->max_page_scale_factor()); 3837 active_tree_->max_page_scale_factor());
3834 } 3838 }
3835 3839
3836 void LayerTreeHostImpl::ScrollAnimationAbort(LayerImpl* layer_impl) { 3840 void LayerTreeHostImpl::ScrollAnimationAbort(LayerImpl* layer_impl) {
3837 return animation_host_->ScrollAnimationAbort(false /* needs_completion */); 3841 return animation_host_->ScrollAnimationAbort(false /* needs_completion */);
3838 } 3842 }
3839 3843
3840 bool LayerTreeHostImpl::ScrollAnimationUpdateTarget( 3844 bool LayerTreeHostImpl::ScrollAnimationUpdateTarget(
3841 ScrollNode* scroll_node, 3845 ScrollNode* scroll_node,
3842 const gfx::Vector2dF& scroll_delta) { 3846 const gfx::Vector2dF& scroll_delta) {
3847 DCHECK_EQ(
3848 ElementId(active_tree()->LayerById(scroll_node->owner_id)->element_id()),
3849 scroll_node->data.element_id);
3850
3843 return animation_host_->ImplOnlyScrollAnimationUpdateTarget( 3851 return animation_host_->ImplOnlyScrollAnimationUpdateTarget(
3844 scroll_node->owner_id, scroll_delta, 3852 scroll_node->data.element_id, scroll_delta,
3845 active_tree_->property_trees()->scroll_tree.MaxScrollOffset( 3853 active_tree_->property_trees()->scroll_tree.MaxScrollOffset(
3846 scroll_node->id), 3854 scroll_node->id),
3847 CurrentBeginFrameArgs().frame_time); 3855 CurrentBeginFrameArgs().frame_time);
3848 } 3856 }
3849 3857
3850 bool LayerTreeHostImpl::IsElementInList(ElementId element_id, 3858 bool LayerTreeHostImpl::IsElementInList(ElementId element_id,
3851 ElementListType list_type) const { 3859 ElementListType list_type) const {
3852 if (list_type == ElementListType::ACTIVE) { 3860 if (list_type == ElementListType::ACTIVE) {
3853 return active_tree() ? active_tree()->LayerById(element_id) != nullptr 3861 return active_tree()
3854 : false; 3862 ? active_tree()->LayerByElementId(element_id) != nullptr
3863 : false;
3855 } else { 3864 } else {
3856 if (pending_tree() && pending_tree()->LayerById(element_id)) 3865 if (pending_tree() && pending_tree()->LayerByElementId(element_id))
3857 return true; 3866 return true;
3858 if (recycle_tree() && recycle_tree()->LayerById(element_id)) 3867 if (recycle_tree() && recycle_tree()->LayerByElementId(element_id))
3859 return true; 3868 return true;
3860 3869
3861 return false; 3870 return false;
3862 } 3871 }
3863 } 3872 }
3864 3873
3865 void LayerTreeHostImpl::SetMutatorsNeedCommit() {} 3874 void LayerTreeHostImpl::SetMutatorsNeedCommit() {}
3866 3875
3867 void LayerTreeHostImpl::SetMutatorsNeedRebuildPropertyTrees() {} 3876 void LayerTreeHostImpl::SetMutatorsNeedRebuildPropertyTrees() {}
3868 3877
3869 void LayerTreeHostImpl::SetTreeLayerFilterMutated( 3878 void LayerTreeHostImpl::SetTreeLayerFilterMutated(
3870 int layer_id, 3879 ElementId element_id,
3871 LayerTreeImpl* tree, 3880 LayerTreeImpl* tree,
3872 const FilterOperations& filters) { 3881 const FilterOperations& filters) {
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->OnFilterAnimated(filters); 3887 layer->OnFilterAnimated(filters);
3879 } 3888 }
3880 3889
3881 void LayerTreeHostImpl::SetTreeLayerOpacityMutated(int layer_id, 3890 void LayerTreeHostImpl::SetTreeLayerOpacityMutated(ElementId element_id,
3882 LayerTreeImpl* tree, 3891 LayerTreeImpl* tree,
3883 float opacity) { 3892 float opacity) {
3884 if (!tree) 3893 if (!tree)
3885 return; 3894 return;
3886 3895
3887 LayerImpl* layer = tree->LayerById(layer_id); 3896 LayerImpl* layer = tree->LayerByElementId(element_id);
3888 if (layer) 3897 if (layer)
3889 layer->OnOpacityAnimated(opacity); 3898 layer->OnOpacityAnimated(opacity);
3890 } 3899 }
3891 3900
3892 void LayerTreeHostImpl::SetTreeLayerTransformMutated( 3901 void LayerTreeHostImpl::SetTreeLayerTransformMutated(
3893 int layer_id, 3902 ElementId element_id,
3894 LayerTreeImpl* tree, 3903 LayerTreeImpl* tree,
3895 const gfx::Transform& transform) { 3904 const gfx::Transform& transform) {
3896 if (!tree) 3905 if (!tree)
3897 return; 3906 return;
3898 3907
3899 LayerImpl* layer = tree->LayerById(layer_id); 3908 LayerImpl* layer = tree->LayerByElementId(element_id);
3900 if (layer) 3909 if (layer)
3901 layer->OnTransformAnimated(transform); 3910 layer->OnTransformAnimated(transform);
3902 } 3911 }
3903 3912
3904 void LayerTreeHostImpl::SetTreeLayerScrollOffsetMutated( 3913 void LayerTreeHostImpl::SetTreeLayerScrollOffsetMutated(
3905 int layer_id, 3914 ElementId element_id,
3906 LayerTreeImpl* tree, 3915 LayerTreeImpl* tree,
3907 const gfx::ScrollOffset& scroll_offset) { 3916 const gfx::ScrollOffset& scroll_offset) {
3908 if (!tree) 3917 if (!tree)
3909 return; 3918 return;
3910 3919
3911 LayerImpl* layer = tree->LayerById(layer_id); 3920 LayerImpl* layer = tree->LayerByElementId(element_id);
3912 if (layer) { 3921 if (layer) {
3913 layer->OnScrollOffsetAnimated(scroll_offset); 3922 layer->OnScrollOffsetAnimated(scroll_offset);
3914 // Run mutation callbacks to respond to updated scroll offset. 3923 // Run mutation callbacks to respond to updated scroll offset.
3915 Mutate(CurrentBeginFrameArgs().frame_time); 3924 Mutate(CurrentBeginFrameArgs().frame_time);
3916 } 3925 }
3917 } 3926 }
3918 3927
3919 bool LayerTreeHostImpl::AnimationsPreserveAxisAlignment( 3928 bool LayerTreeHostImpl::AnimationsPreserveAxisAlignment(
3920 const LayerImpl* layer) const { 3929 const LayerImpl* layer) const {
3921 return animation_host_->AnimationsPreserveAxisAlignment(layer->id()); 3930 return animation_host_->AnimationsPreserveAxisAlignment(layer->element_id());
3922 } 3931 }
3923 3932
3924 void LayerTreeHostImpl::SetElementFilterMutated( 3933 void LayerTreeHostImpl::SetElementFilterMutated(
3925 ElementId element_id, 3934 ElementId element_id,
3926 ElementListType list_type, 3935 ElementListType list_type,
3927 const FilterOperations& filters) { 3936 const FilterOperations& filters) {
3928 if (list_type == ElementListType::ACTIVE) { 3937 if (list_type == ElementListType::ACTIVE) {
3929 SetTreeLayerFilterMutated(element_id, active_tree(), filters); 3938 SetTreeLayerFilterMutated(element_id, active_tree(), filters);
3930 } else { 3939 } else {
3931 SetTreeLayerFilterMutated(element_id, pending_tree(), filters); 3940 SetTreeLayerFilterMutated(element_id, pending_tree(), filters);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
3970 3979
3971 void LayerTreeHostImpl::ElementTransformIsAnimatingChanged( 3980 void LayerTreeHostImpl::ElementTransformIsAnimatingChanged(
3972 ElementId element_id, 3981 ElementId element_id,
3973 ElementListType list_type, 3982 ElementListType list_type,
3974 AnimationChangeType change_type, 3983 AnimationChangeType change_type,
3975 bool is_animating) { 3984 bool is_animating) {
3976 LayerTreeImpl* tree = 3985 LayerTreeImpl* tree =
3977 list_type == ElementListType::ACTIVE ? active_tree() : pending_tree(); 3986 list_type == ElementListType::ACTIVE ? active_tree() : pending_tree();
3978 if (!tree) 3987 if (!tree)
3979 return; 3988 return;
3980 LayerImpl* layer = tree->LayerById(element_id); 3989 LayerImpl* layer = tree->LayerByElementId(element_id);
3981 if (layer) { 3990 if (layer) {
3982 switch (change_type) { 3991 switch (change_type) {
3983 case AnimationChangeType::POTENTIAL: 3992 case AnimationChangeType::POTENTIAL:
3984 layer->OnTransformIsPotentiallyAnimatingChanged(is_animating); 3993 layer->OnTransformIsPotentiallyAnimatingChanged(is_animating);
3985 break; 3994 break;
3986 case AnimationChangeType::RUNNING: 3995 case AnimationChangeType::RUNNING:
3987 layer->OnTransformIsCurrentlyAnimatingChanged(is_animating); 3996 layer->OnTransformIsCurrentlyAnimatingChanged(is_animating);
3988 break; 3997 break;
3989 case AnimationChangeType::BOTH: 3998 case AnimationChangeType::BOTH:
3990 layer->OnTransformIsPotentiallyAnimatingChanged(is_animating); 3999 layer->OnTransformIsPotentiallyAnimatingChanged(is_animating);
3991 layer->OnTransformIsCurrentlyAnimatingChanged(is_animating); 4000 layer->OnTransformIsCurrentlyAnimatingChanged(is_animating);
3992 break; 4001 break;
3993 } 4002 }
3994 } 4003 }
3995 } 4004 }
3996 4005
3997 void LayerTreeHostImpl::ElementOpacityIsAnimatingChanged( 4006 void LayerTreeHostImpl::ElementOpacityIsAnimatingChanged(
3998 ElementId element_id, 4007 ElementId element_id,
3999 ElementListType list_type, 4008 ElementListType list_type,
4000 AnimationChangeType change_type, 4009 AnimationChangeType change_type,
4001 bool is_animating) { 4010 bool is_animating) {
4002 LayerTreeImpl* tree = 4011 LayerTreeImpl* tree =
4003 list_type == ElementListType::ACTIVE ? active_tree() : pending_tree(); 4012 list_type == ElementListType::ACTIVE ? active_tree() : pending_tree();
4004 if (!tree) 4013 if (!tree)
4005 return; 4014 return;
4006 LayerImpl* layer = tree->LayerById(element_id); 4015 LayerImpl* layer = tree->LayerByElementId(element_id);
4007 if (layer) { 4016 if (layer) {
4008 switch (change_type) { 4017 switch (change_type) {
4009 case AnimationChangeType::POTENTIAL: 4018 case AnimationChangeType::POTENTIAL:
4010 layer->OnOpacityIsPotentiallyAnimatingChanged(is_animating); 4019 layer->OnOpacityIsPotentiallyAnimatingChanged(is_animating);
4011 break; 4020 break;
4012 case AnimationChangeType::RUNNING: 4021 case AnimationChangeType::RUNNING:
4013 layer->OnOpacityIsCurrentlyAnimatingChanged(is_animating); 4022 layer->OnOpacityIsCurrentlyAnimatingChanged(is_animating);
4014 break; 4023 break;
4015 case AnimationChangeType::BOTH: 4024 case AnimationChangeType::BOTH:
4016 layer->OnOpacityIsPotentiallyAnimatingChanged(is_animating); 4025 layer->OnOpacityIsPotentiallyAnimatingChanged(is_animating);
4017 layer->OnOpacityIsCurrentlyAnimatingChanged(is_animating); 4026 layer->OnOpacityIsCurrentlyAnimatingChanged(is_animating);
4018 break; 4027 break;
4019 } 4028 }
4020 } 4029 }
4021 } 4030 }
4022 4031
4023 void LayerTreeHostImpl::ScrollOffsetAnimationFinished() { 4032 void LayerTreeHostImpl::ScrollOffsetAnimationFinished() {
4024 // TODO(majidvp): We should pass in the original starting scroll position here 4033 // TODO(majidvp): We should pass in the original starting scroll position here
4025 ScrollStateData scroll_state_data; 4034 ScrollStateData scroll_state_data;
4026 ScrollState scroll_state(scroll_state_data); 4035 ScrollState scroll_state(scroll_state_data);
4027 ScrollEnd(&scroll_state); 4036 ScrollEnd(&scroll_state);
4028 } 4037 }
4029 4038
4030 gfx::ScrollOffset LayerTreeHostImpl::GetScrollOffsetForAnimation( 4039 gfx::ScrollOffset LayerTreeHostImpl::GetScrollOffsetForAnimation(
4031 ElementId element_id) const { 4040 ElementId element_id) const {
4032 if (active_tree()) { 4041 if (active_tree()) {
4033 LayerImpl* layer = active_tree()->LayerById(element_id); 4042 LayerImpl* layer = active_tree()->LayerByElementId(element_id);
4034 if (layer) 4043 if (layer)
4035 return layer->ScrollOffsetForAnimation(); 4044 return layer->ScrollOffsetForAnimation();
4036 } 4045 }
4037 4046
4038 return gfx::ScrollOffset(); 4047 return gfx::ScrollOffset();
4039 } 4048 }
4040 4049
4041 bool LayerTreeHostImpl::SupportsImplScrolling() const { 4050 bool LayerTreeHostImpl::SupportsImplScrolling() const {
4042 // Supported in threaded mode. 4051 // Supported in threaded mode.
4043 return task_runner_provider_->HasImplThread(); 4052 return task_runner_provider_->HasImplThread();
4044 } 4053 }
4045 4054
4046 bool LayerTreeHostImpl::CommitToActiveTree() const { 4055 bool LayerTreeHostImpl::CommitToActiveTree() const {
4047 // In single threaded mode we skip the pending tree and commit directly to the 4056 // In single threaded mode we skip the pending tree and commit directly to the
4048 // active tree. 4057 // active tree.
4049 return !task_runner_provider_->HasImplThread(); 4058 return !task_runner_provider_->HasImplThread();
4050 } 4059 }
4051 4060
4052 bool LayerTreeHostImpl::HasFixedRasterScalePotentialPerformanceRegression() 4061 bool LayerTreeHostImpl::HasFixedRasterScalePotentialPerformanceRegression()
4053 const { 4062 const {
4054 return fixed_raster_scale_attempted_scale_change_history_.count() >= 4063 return fixed_raster_scale_attempted_scale_change_history_.count() >=
4055 kFixedRasterScaleAttemptedScaleChangeThreshold; 4064 kFixedRasterScaleAttemptedScaleChangeThreshold;
4056 } 4065 }
4057 4066
4058 void LayerTreeHostImpl::SetFixedRasterScaleAttemptedToChangeScale() { 4067 void LayerTreeHostImpl::SetFixedRasterScaleAttemptedToChangeScale() {
4059 fixed_raster_scale_attempted_scale_change_history_.set(0); 4068 fixed_raster_scale_attempted_scale_change_history_.set(0);
4060 } 4069 }
4061 4070
4062 } // namespace cc 4071 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698