CC Animations: Port UI Browser Compositor to use compositor animation timelines.

Use AnimationPlayer to add animations if new system enabled.

BUG=394777

Review URL: https://codereview.chromium.org/1533643003

Cr-Commit-Position: refs/heads/master@{#366360}
diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc
index 64e3d21..4502661 100644
--- a/ui/compositor/compositor.cc
+++ b/ui/compositor/compositor.cc
@@ -15,6 +15,9 @@
 #include "base/strings/string_util.h"
 #include "base/sys_info.h"
 #include "base/trace_event/trace_event.h"
+#include "cc/animation/animation_host.h"
+#include "cc/animation/animation_id_provider.h"
+#include "cc/animation/animation_timeline.h"
 #include "cc/base/switches.h"
 #include "cc/input/input_handler.h"
 #include "cc/layers/layer.h"
@@ -190,6 +193,12 @@
   host_ = cc::LayerTreeHost::CreateSingleThreaded(this, &params);
   UMA_HISTOGRAM_TIMES("GPU.CreateBrowserCompositor",
                       base::TimeTicks::Now() - before_create);
+
+  if (settings.use_compositor_animation_timelines) {
+    animation_timeline_ = cc::AnimationTimeline::Create(
+        cc::AnimationIdProvider::NextTimelineId());
+    host_->animation_host()->AddAnimationTimeline(animation_timeline_.get());
+  }
   host_->SetRootLayer(root_web_layer_);
   host_->set_surface_id_namespace(surface_id_allocator_->id_namespace());
   host_->SetVisible(true);
@@ -210,6 +219,9 @@
   if (root_layer_)
     root_layer_->ResetCompositor();
 
+  if (animation_timeline_)
+    host_->animation_host()->RemoveAnimationTimeline(animation_timeline_.get());
+
   // Stop all outstanding draws before telling the ContextFactory to tear
   // down any contexts that the |host_| may rely upon.
   host_.reset();
@@ -238,6 +250,10 @@
     root_layer_->SetCompositor(this, root_web_layer_);
 }
 
+cc::AnimationTimeline* Compositor::GetAnimationTimeline() const {
+  return animation_timeline_.get();
+}
+
 void Compositor::SetHostHasTransparentBackground(
     bool host_has_transparent_background) {
   host_->set_has_transparent_background(host_has_transparent_background);