blob: 63e667074a85cd0e3e2e77613432dbd7272603fb [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_COMPOSITOR_TEST_MULTI_LAYER_ANIMATOR_TEST_CONTROLLER_H_
#define UI_COMPOSITOR_TEST_MULTI_LAYER_ANIMATOR_TEST_CONTROLLER_H_
#include <vector>
#include "base/memory/raw_ptr.h"
#include "base/time/time.h"
namespace ui {
class LayerAnimator;
namespace test {
class MultiLayerAnimatorTestControllerDelegate;
// Test API class to control multiple LayerAnimators.
class MultiLayerAnimatorTestController {
public:
explicit MultiLayerAnimatorTestController(
MultiLayerAnimatorTestControllerDelegate* delegate);
MultiLayerAnimatorTestController(const MultiLayerAnimatorTestController&) =
delete;
MultiLayerAnimatorTestController& operator=(
const MultiLayerAnimatorTestController&) = delete;
virtual ~MultiLayerAnimatorTestController();
// Disables the animation timers when |disable_timers| is true.
void SetDisableAnimationTimers(bool disable_timers);
// Returns true if any animations are active.
bool HasActiveAnimations() const;
// Completes all running animations.
void CompleteAnimations();
private:
// Get a list of all the LayerAnimator's used. Delegates to |delegate_|.
std::vector<LayerAnimator*> GetLayerAnimators();
std::vector<LayerAnimator*> GetLayerAnimators() const;
// Progresses all running LayerAnimationSequences by the given |duration|.
//
// NOTE: This function will NOT progress LayerAnimationSequences that are
// queued, only the running ones will be progressed.
void StepAnimations(const base::TimeDelta& duration);
raw_ptr<MultiLayerAnimatorTestControllerDelegate> delegate_;
};
} // namespace test
} // namespace ui
#endif // UI_COMPOSITOR_TEST_MULTI_LAYER_ANIMATOR_TEST_CONTROLLER_H_