chromium/ash/assistant/ui/main_stage/element_animator.cc

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ash/assistant/ui/main_stage/element_animator.h"

#include "ash/assistant/util/animation_util.h"
#include "base/time/time.h"
#include "ui/compositor/callback_layer_animation_observer.h"
#include "ui/compositor/layer.h"
#include "ui/compositor/layer_animator.h"
#include "ui/views/view.h"

namespace ash {

constexpr float ElementAnimator::kFadeOutOpacity;
constexpr base::TimeDelta ElementAnimator::kFadeOutDuration;
constexpr float ElementAnimator::kMinimumAnimateOutOpacity;

ElementAnimator::ElementAnimator(views::View* view) : view_(view) {}

void ElementAnimator::FadeOut(ui::CallbackLayerAnimationObserver* observer) {
  assistant::util::StartLayerAnimationSequence(
      layer()->GetAnimator(),
      assistant::util::CreateLayerAnimationSequence(
          assistant::util::CreateOpacityElement(kFadeOutOpacity,
                                                kFadeOutDuration)),
      observer);
}

void ElementAnimator::AbortAnimation() {
  layer()->GetAnimator()->AbortAllAnimations();
}

views::View* ElementAnimator::view() const {
  return view_;
}

ui::Layer* ElementAnimator::layer() const {
  return view()->layer();
}

}  // namespace ash