Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Side by Side Diff: ui/views/corewm/window_animations_unittest.cc

Issue 194843004: Move files from ui/views/corewm to ui/wm/core (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/views/corewm/window_animations.cc ('k') | ui/views/corewm/window_modality_controller.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 #include "ui/views/corewm/window_animations.h"
6
7 #include "base/time/time.h"
8 #include "ui/aura/client/animation_host.h"
9 #include "ui/aura/test/aura_test_base.h"
10 #include "ui/aura/test/test_windows.h"
11 #include "ui/aura/window.h"
12 #include "ui/compositor/layer.h"
13 #include "ui/compositor/layer_animator.h"
14 #include "ui/compositor/scoped_animation_duration_scale_mode.h"
15 #include "ui/gfx/animation/animation_container_element.h"
16 #include "ui/gfx/vector2d.h"
17
18 using aura::Window;
19 using ui::Layer;
20
21 namespace views {
22 namespace corewm {
23
24 class WindowAnimationsTest : public aura::test::AuraTestBase {
25 public:
26 WindowAnimationsTest() {}
27
28 virtual void TearDown() OVERRIDE {
29 AuraTestBase::TearDown();
30 }
31
32 private:
33 DISALLOW_COPY_AND_ASSIGN(WindowAnimationsTest);
34 };
35
36 TEST_F(WindowAnimationsTest, LayerTargetVisibility) {
37 scoped_ptr<aura::Window> window(
38 aura::test::CreateTestWindowWithId(0, NULL));
39
40 // Layer target visibility changes according to Show/Hide.
41 window->Show();
42 EXPECT_TRUE(window->layer()->GetTargetVisibility());
43 window->Hide();
44 EXPECT_FALSE(window->layer()->GetTargetVisibility());
45 window->Show();
46 EXPECT_TRUE(window->layer()->GetTargetVisibility());
47 }
48
49 TEST_F(WindowAnimationsTest, LayerTargetVisibility_AnimateShow) {
50 // Tests if opacity and transform are reset when only show animation is
51 // enabled. See also LayerTargetVisibility_AnimateHide.
52 // Since the window is not visible after Hide() is called, opacity and
53 // transform shouldn't matter in case of ANIMATE_SHOW, but we reset them
54 // to keep consistency.
55
56 scoped_ptr<aura::Window> window(aura::test::CreateTestWindowWithId(0, NULL));
57 SetWindowVisibilityAnimationTransition(window.get(), ANIMATE_SHOW);
58
59 // Layer target visibility and opacity change according to Show/Hide.
60 window->Show();
61 AnimateOnChildWindowVisibilityChanged(window.get(), true);
62 EXPECT_TRUE(window->layer()->GetTargetVisibility());
63 EXPECT_EQ(1, window->layer()->opacity());
64
65 window->Hide();
66 AnimateOnChildWindowVisibilityChanged(window.get(), false);
67 EXPECT_FALSE(window->layer()->GetTargetVisibility());
68 EXPECT_EQ(0, window->layer()->opacity());
69 EXPECT_EQ(gfx::Transform(), window->layer()->transform());
70
71 window->Show();
72 AnimateOnChildWindowVisibilityChanged(window.get(), true);
73 EXPECT_TRUE(window->layer()->GetTargetVisibility());
74 EXPECT_EQ(1, window->layer()->opacity());
75 }
76
77 TEST_F(WindowAnimationsTest, LayerTargetVisibility_AnimateHide) {
78 // Tests if opacity and transform are reset when only hide animation is
79 // enabled. Hide animation changes opacity and transform in addition to
80 // visibility, so we need to reset not only visibility but also opacity
81 // and transform to show the window.
82
83 scoped_ptr<aura::Window> window(aura::test::CreateTestWindowWithId(0, NULL));
84 SetWindowVisibilityAnimationTransition(window.get(), ANIMATE_HIDE);
85
86 // Layer target visibility and opacity change according to Show/Hide.
87 window->Show();
88 AnimateOnChildWindowVisibilityChanged(window.get(), true);
89 EXPECT_TRUE(window->layer()->GetTargetVisibility());
90 EXPECT_EQ(1, window->layer()->opacity());
91 EXPECT_EQ(gfx::Transform(), window->layer()->transform());
92
93 window->Hide();
94 AnimateOnChildWindowVisibilityChanged(window.get(), false);
95 EXPECT_FALSE(window->layer()->GetTargetVisibility());
96 EXPECT_EQ(0, window->layer()->opacity());
97
98 window->Show();
99 AnimateOnChildWindowVisibilityChanged(window.get(), true);
100 EXPECT_TRUE(window->layer()->GetTargetVisibility());
101 EXPECT_EQ(1, window->layer()->opacity());
102 EXPECT_EQ(gfx::Transform(), window->layer()->transform());
103 }
104
105 // A simple AnimationHost implementation for the NotifyHideCompleted test.
106 class NotifyHideCompletedAnimationHost : public aura::client::AnimationHost {
107 public:
108 NotifyHideCompletedAnimationHost() : hide_completed_(false) {}
109 virtual ~NotifyHideCompletedAnimationHost() {}
110
111 // Overridden from TestWindowDelegate:
112 virtual void OnWindowHidingAnimationCompleted() OVERRIDE {
113 hide_completed_ = true;
114 }
115
116 virtual void SetHostTransitionOffsets(
117 const gfx::Vector2d& top_left,
118 const gfx::Vector2d& bottom_right) OVERRIDE {}
119
120 bool hide_completed() const { return hide_completed_; }
121
122 private:
123 bool hide_completed_;
124
125 DISALLOW_COPY_AND_ASSIGN(NotifyHideCompletedAnimationHost);
126 };
127
128 TEST_F(WindowAnimationsTest, NotifyHideCompleted) {
129 NotifyHideCompletedAnimationHost animation_host;
130 scoped_ptr<aura::Window> window(aura::test::CreateTestWindowWithId(0, NULL));
131 aura::client::SetAnimationHost(window.get(), &animation_host);
132 views::corewm::SetWindowVisibilityAnimationType(
133 window.get(), WINDOW_VISIBILITY_ANIMATION_TYPE_FADE);
134 AnimateOnChildWindowVisibilityChanged(window.get(), true);
135 EXPECT_TRUE(window->layer()->visible());
136
137 EXPECT_FALSE(animation_host.hide_completed());
138 AnimateOnChildWindowVisibilityChanged(window.get(), false);
139 EXPECT_TRUE(animation_host.hide_completed());
140 }
141
142 } // namespace corewm
143 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/corewm/window_animations.cc ('k') | ui/views/corewm/window_modality_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698