| 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 |