12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef UI_COMPOSITOR_SCOPED_ANIMATION_DURATION_SCALE_MODE_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define UI_COMPOSITOR_SCOPED_ANIMATION_DURATION_SCALE_MODE_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/compositor/compositor_export.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ui { 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Speed up or slow down animations for testing or debugging. 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class COMPOSITOR_EXPORT ScopedAnimationDurationScaleMode { 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enum DurationScaleMode { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NORMAL_DURATION, 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FAST_DURATION, 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SLOW_DURATION, 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // A very short but guaranteed non-zero duration for individual tests that 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // need to assert things about animations after creating them. 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NON_ZERO_DURATION, 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Animations complete immediately after being created. Used by most tests. 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ZERO_DURATION 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit ScopedAnimationDurationScaleMode( 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DurationScaleMode scoped_duration_scale_mode) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : old_duration_scale_mode_(duration_scale_mode_) { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) duration_scale_mode_ = scoped_duration_scale_mode; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ~ScopedAnimationDurationScaleMode() { 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) duration_scale_mode_ = old_duration_scale_mode_; 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static DurationScaleMode duration_scale_mode() { 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return duration_scale_mode_; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DurationScaleMode old_duration_scale_mode_; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static DurationScaleMode duration_scale_mode_; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ScopedAnimationDurationScaleMode); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace ui 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // UI_COMPOSITOR_SCOPED_ANIMATION_DURATION_SCALE_MODE_H 52