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 ddb4dc951a8ea75b5a68c3fd9ad5dad38e24bd21..4533bab6ef97b18e202f01d4d3e963642c23196c 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -18,6 +18,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" |
@@ -239,6 +240,11 @@ LayerTreeHostImpl::LayerTreeHostImpl( |
requires_high_res_to_draw_(false), |
is_likely_to_require_a_draw_(false), |
frame_timing_tracker_(FrameTimingTracker::Create(this)) { |
+ if (settings.use_compositor_animation_timelines) { |
+ animation_host_ = AnimationHost::Create(ThreadInstance::IMPL); |
+ animation_host_->SetMutatorHostClient(this); |
+ } |
+ |
DCHECK(proxy_->IsImplThread()); |
DCHECK_IMPLIES(settings.use_one_copy, !settings.use_zero_copy); |
DCHECK_IMPLIES(settings.use_zero_copy, !settings.use_one_copy); |
@@ -3441,4 +3447,117 @@ bool LayerTreeHostImpl::ScrollAnimationUpdateTarget( |
return true; |
} |
+ |
+bool LayerTreeHostImpl::IsLayerInTree(int layer_id, |
+ LayerTreeType tree_type) const { |
+ if (tree_type == LayerTreeType::ACTIVE) { |
+ return active_tree() ? active_tree()->LayerById(layer_id) != nullptr |
+ : false; |
+ } else { |
+ 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, |
+ LayerTreeType tree_type, |
+ const FilterOperations& filters) { |
+ if (tree_type == LayerTreeType::ACTIVE) { |
+ 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, |
+ LayerTreeType tree_type, |
+ float opacity) { |
+ if (tree_type == LayerTreeType::ACTIVE) { |
+ 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, |
+ LayerTreeType tree_type, |
+ const gfx::Transform& transform) { |
+ if (tree_type == LayerTreeType::ACTIVE) { |
+ 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, |
+ LayerTreeType tree_type, |
+ const gfx::ScrollOffset& scroll_offset) { |
+ if (tree_type == LayerTreeType::ACTIVE) { |
+ SetTreeLayerScrollOffsetMutated(layer_id, active_tree(), scroll_offset); |
+ } else { |
+ SetTreeLayerScrollOffsetMutated(layer_id, pending_tree(), scroll_offset); |
+ SetTreeLayerScrollOffsetMutated(layer_id, recycle_tree(), scroll_offset); |
+ } |
+} |
+ |
} // namespace cc |