| Index: cc/trees/layer_tree_host_impl.cc
|
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
|
| index c90087641c359b49dec6150e13fb4196a0eeed4c..159ee63100ad60c005efe5717278c147afd14023 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -17,6 +17,7 @@
|
| #include "base/stl_util.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "base/trace_event/trace_event_argument.h"
|
| +#include "cc/animation/animation_host.h"
|
| #include "cc/animation/animation_id_provider.h"
|
| #include "cc/animation/scroll_offset_animation_curve.h"
|
| #include "cc/animation/scrollbar_animation_controller.h"
|
| @@ -229,6 +230,11 @@ LayerTreeHostImpl::LayerTreeHostImpl(
|
| requires_high_res_to_draw_(false),
|
| is_likely_to_require_a_draw_(false),
|
| frame_timing_tracker_(FrameTimingTracker::Create()) {
|
| + if (settings.use_compositor_animation_timelines) {
|
| + animation_host_ = AnimationHost::Create(true);
|
| + animation_host_->SetLayerTreeMutatorsClient(this);
|
| + }
|
| +
|
| DCHECK(proxy_->IsImplThread());
|
| DidVisibilityChange(this, visible_);
|
| animation_registrar_->set_supports_scroll_animations(
|
| @@ -3380,4 +3386,115 @@ bool LayerTreeHostImpl::ScrollAnimationUpdateTarget(
|
|
|
| return true;
|
| }
|
| +
|
| +bool LayerTreeHostImpl::IsLayerInActiveTree(int layer_id) const {
|
| + return active_tree() ? active_tree()->LayerById(layer_id) != nullptr : false;
|
| +}
|
| +
|
| +bool LayerTreeHostImpl::IsLayerInPendingTree(int layer_id) const {
|
| + if (pending_tree() && pending_tree()->LayerById(layer_id))
|
| + return true;
|
| + if (recycle_tree() && recycle_tree()->LayerById(layer_id))
|
| + return true;
|
| +
|
| + return false;
|
| +}
|
| +
|
| +void LayerTreeHostImpl::SetMutatorsNeedCommit() {
|
| + SetNeedsCommit();
|
| +}
|
| +
|
| +void LayerTreeHostImpl::SetTreeLayerFilterMutated(
|
| + int layer_id,
|
| + LayerTreeImpl* tree,
|
| + const FilterOperations& filters) {
|
| + if (!tree)
|
| + return;
|
| +
|
| + LayerAnimationValueObserver* layer = tree->LayerById(layer_id);
|
| + if (layer)
|
| + layer->OnFilterAnimated(filters);
|
| +}
|
| +
|
| +void LayerTreeHostImpl::SetTreeLayerOpacityMutated(int layer_id,
|
| + LayerTreeImpl* tree,
|
| + float opacity) {
|
| + if (!tree)
|
| + return;
|
| +
|
| + LayerAnimationValueObserver* layer = tree->LayerById(layer_id);
|
| + if (layer)
|
| + layer->OnOpacityAnimated(opacity);
|
| +}
|
| +
|
| +void LayerTreeHostImpl::SetTreeLayerTransformMutated(
|
| + int layer_id,
|
| + LayerTreeImpl* tree,
|
| + const gfx::Transform& transform) {
|
| + if (!tree)
|
| + return;
|
| +
|
| + LayerAnimationValueObserver* layer = tree->LayerById(layer_id);
|
| + if (layer)
|
| + layer->OnTransformAnimated(transform);
|
| +}
|
| +
|
| +void LayerTreeHostImpl::SetTreeLayerScrollOffsetMutated(
|
| + int layer_id,
|
| + LayerTreeImpl* tree,
|
| + const gfx::ScrollOffset& scroll_offset) {
|
| + if (!tree)
|
| + return;
|
| +
|
| + LayerAnimationValueObserver* layer = tree->LayerById(layer_id);
|
| + if (layer)
|
| + layer->OnScrollOffsetAnimated(scroll_offset);
|
| +}
|
| +
|
| +void LayerTreeHostImpl::SetLayerFilterMutated(int layer_id,
|
| + bool affects_active_tree,
|
| + const FilterOperations& filters) {
|
| + if (affects_active_tree) {
|
| + SetTreeLayerFilterMutated(layer_id, active_tree(), filters);
|
| + } else {
|
| + SetTreeLayerFilterMutated(layer_id, pending_tree(), filters);
|
| + SetTreeLayerFilterMutated(layer_id, recycle_tree(), filters);
|
| + }
|
| +}
|
| +
|
| +void LayerTreeHostImpl::SetLayerOpacityMutated(int layer_id,
|
| + bool affects_active_tree,
|
| + float opacity) {
|
| + if (affects_active_tree) {
|
| + SetTreeLayerOpacityMutated(layer_id, active_tree(), opacity);
|
| + } else {
|
| + SetTreeLayerOpacityMutated(layer_id, pending_tree(), opacity);
|
| + SetTreeLayerOpacityMutated(layer_id, recycle_tree(), opacity);
|
| + }
|
| +}
|
| +
|
| +void LayerTreeHostImpl::SetLayerTransformMutated(
|
| + int layer_id,
|
| + bool affects_active_tree,
|
| + const gfx::Transform& transform) {
|
| + if (affects_active_tree) {
|
| + SetTreeLayerTransformMutated(layer_id, active_tree(), transform);
|
| + } else {
|
| + SetTreeLayerTransformMutated(layer_id, pending_tree(), transform);
|
| + SetTreeLayerTransformMutated(layer_id, recycle_tree(), transform);
|
| + }
|
| +}
|
| +
|
| +void LayerTreeHostImpl::SetLayerScrollOffsetMutated(
|
| + int layer_id,
|
| + bool affects_active_tree,
|
| + const gfx::ScrollOffset& scroll_offset) {
|
| + if (affects_active_tree) {
|
| + SetTreeLayerScrollOffsetMutated(layer_id, active_tree(), scroll_offset);
|
| + } else {
|
| + SetTreeLayerScrollOffsetMutated(layer_id, pending_tree(), scroll_offset);
|
| + SetTreeLayerScrollOffsetMutated(layer_id, recycle_tree(), scroll_offset);
|
| + }
|
| +}
|
| +
|
| } // namespace cc
|
|
|