1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef UI_COMPOSITOR_SCOPED_ANIMATION_DURATION_SCALE_MODE_H_
6#define UI_COMPOSITOR_SCOPED_ANIMATION_DURATION_SCALE_MODE_H_
7
8#include "base/basictypes.h"
9#include "ui/compositor/compositor_export.h"
10
11namespace ui {
12
13// Speed up or slow down animations for testing or debugging.
14class COMPOSITOR_EXPORT ScopedAnimationDurationScaleMode {
15 public:
16  enum DurationScaleMode {
17    NORMAL_DURATION,
18    FAST_DURATION,
19    SLOW_DURATION,
20    // A very short but guaranteed non-zero duration for individual tests that
21    // need to assert things about animations after creating them.
22    NON_ZERO_DURATION,
23    // Animations complete immediately after being created. Used by most tests.
24    ZERO_DURATION
25  };
26
27  explicit ScopedAnimationDurationScaleMode(
28      DurationScaleMode scoped_duration_scale_mode)
29      : old_duration_scale_mode_(duration_scale_mode_) {
30    duration_scale_mode_ = scoped_duration_scale_mode;
31  }
32
33  ~ScopedAnimationDurationScaleMode() {
34    duration_scale_mode_ = old_duration_scale_mode_;
35  }
36
37  static DurationScaleMode duration_scale_mode() {
38    return duration_scale_mode_;
39  }
40
41 private:
42  DurationScaleMode old_duration_scale_mode_;
43
44  static DurationScaleMode duration_scale_mode_;
45
46  DISALLOW_COPY_AND_ASSIGN(ScopedAnimationDurationScaleMode);
47};
48
49}  // namespace ui
50
51#endif  // UI_COMPOSITOR_SCOPED_ANIMATION_DURATION_SCALE_MODE_H
52