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 11 namespace ui { 12 13 // Speed up or slow down animations for testing or debugging. 14 class 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 ScopedAnimationDurationScaleMode(DurationScaleMode scoped_duration_scale_mode)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 ~ScopedAnimationDurationScaleMode()33 ~ScopedAnimationDurationScaleMode() { 34 duration_scale_mode_ = old_duration_scale_mode_; 35 } 36 duration_scale_mode()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