| // Copyright 2017 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_GFX_ANIMATION_ANIMATION_TEST_API_H_ |
| #define UI_GFX_ANIMATION_ANIMATION_TEST_API_H_ |
| |
| #include <memory> |
| |
| #include "base/auto_reset.h" |
| #include "base/macros.h" |
| #include "ui/gfx/animation/animation.h" |
| #include "ui/gfx/animation/animation_container.h" |
| #include "ui/gfx/animation/animation_export.h" |
| |
| namespace gfx { |
| |
| // Class to provide access to Animation internals for testing. |
| class AnimationTestApi { |
| public: |
| // Sets the rich animation rendering mode. Allows rich animations to be force |
| // enabled/disabled during tests. |
| static std::unique_ptr<base::AutoReset<Animation::RichAnimationRenderMode>> |
| SetRichAnimationRenderMode(Animation::RichAnimationRenderMode mode); |
| |
| explicit AnimationTestApi(Animation* animation); |
| |
| AnimationTestApi(const AnimationTestApi&) = delete; |
| AnimationTestApi& operator=(const AnimationTestApi&) = delete; |
| |
| ~AnimationTestApi(); |
| |
| // Sets the start of the animation. |
| void SetStartTime(base::TimeTicks ticks); |
| |
| // Manually steps the animation forward |
| void Step(base::TimeTicks ticks); |
| |
| private: |
| Animation* animation_; |
| }; |
| |
| // For manual animation time control in tests. Creating this object will |
| // pause the AnimationRunner of |container| immediately. |
| class AnimationContainerTestApi { |
| public: |
| explicit AnimationContainerTestApi(AnimationContainer* container); |
| AnimationContainerTestApi(const AnimationContainerTestApi&) = delete; |
| AnimationContainerTestApi& operator=(const AnimationContainerTestApi&) = |
| delete; |
| ~AnimationContainerTestApi(); |
| |
| void IncrementTime(base::TimeDelta delta); |
| |
| private: |
| AnimationContainer* container_; |
| }; |
| |
| } // namespace gfx |
| |
| #endif // UI_GFX_ANIMATION_ANIMATION_TEST_API_H_ |