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

Side by Side Diff: ash/wm/compact_layout_manager_unittest.cc

Issue 9630002: Ash: Remove compact window mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: OpaqueBrowserFrameView, MultipleWindowIndicatorButton Created 8 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 | « ash/wm/compact_layout_manager.cc ('k') | ash/wm/compact_status_area_layout_manager.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 "ash/wm/compact_layout_manager.h"
6
7 #include "ash/shell.h"
8 #include "ash/shell_window_ids.h"
9 #include "ash/test/ash_test_base.h"
10 #include "ash/wm/shelf_layout_manager.h"
11 #include "ash/wm/window_util.h"
12 #include "base/basictypes.h"
13 #include "base/compiler_specific.h"
14 #include "ui/aura/client/aura_constants.h"
15 #include "ui/aura/root_window.h"
16 #include "ui/aura/screen_aura.h"
17 #include "ui/aura/test/test_windows.h"
18 #include "ui/aura/window.h"
19 #include "ui/base/ui_base_types.h"
20 #include "ui/views/widget/widget.h"
21
22 namespace ash {
23
24 namespace {
25
26 const int kMaxWidth = 800;
27 const int kMaxHeight = 600;
28
29 } // namespace
30
31 namespace internal {
32
33 class CompactLayoutManagerTest : public ash::test::AshTestBase {
34 public:
35 CompactLayoutManagerTest() : layout_manager_(NULL) {
36 }
37 virtual ~CompactLayoutManagerTest() {}
38
39 virtual void SetUp() OVERRIDE {
40 ash::test::AshTestBase::SetUp();
41 Shell::GetRootWindow()->Show();
42 Shell::GetRootWindow()->SetHostSize(gfx::Size(kMaxWidth, kMaxHeight));
43 default_container()->SetBounds(gfx::Rect(0, 0, kMaxWidth, kMaxHeight));
44 layout_manager_ = new internal::CompactLayoutManager();
45 default_container()->SetLayoutManager(layout_manager_);
46 default_container()->Show();
47 // Control layer animation stepping.
48 default_container()->layer()->GetAnimator()->
49 set_disable_timer_for_test(true);
50 RunAllPendingInMessageLoop();
51 }
52
53 aura::Window* CreateNormalWindow(int id) {
54 aura::Window* window = new aura::Window(NULL);
55 window->set_id(id);
56 window->SetType(aura::client::WINDOW_TYPE_NORMAL);
57 window->Init(ui::Layer::LAYER_TEXTURED);
58 window->SetBounds(gfx::Rect(0, 0, kMaxWidth, kMaxHeight));
59 window->SetParent(default_container());
60 wm::MaximizeWindow(window);
61 window->Show();
62 RunAllPendingInMessageLoop();
63 return window;
64 }
65
66 aura::Window* CreateTestWindow(const gfx::Rect& bounds) {
67 return aura::test::CreateTestWindowWithBounds(bounds, default_container());
68 }
69
70 // Returns widget owned by its parent, so doesn't need scoped_ptr<>.
71 views::Widget* CreateTestWidget() {
72 views::Widget* widget = new views::Widget;
73 views::Widget::InitParams params(
74 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
75 params.bounds = gfx::Rect(11, 22, 33, 44);
76 widget->Init(params);
77 widget->Show();
78 return widget;
79 }
80
81 internal::CompactLayoutManager* layout_manager() {
82 return layout_manager_;
83 }
84
85 aura::Window* default_container() const {
86 return ash::Shell::GetInstance()->GetContainer(
87 ash::internal::kShellWindowId_DefaultContainer);
88 }
89
90 int default_container_layer_width() const {
91 return default_container()->layer()->bounds().width();
92 }
93
94 ui::Transform default_container_layer_transform() const {
95 return default_container()->layer()->GetTargetTransform();
96 }
97
98 ui::AnimationContainerElement* animation_element() {
99 return default_container()->layer()->GetAnimator();
100 }
101
102 protected:
103 internal::CompactLayoutManager* layout_manager_;
104
105 private:
106 DISALLOW_COPY_AND_ASSIGN(CompactLayoutManagerTest);
107 };
108
109 // Tests status area visibility during window maximize and fullscreen.
110 TEST_F(CompactLayoutManagerTest, StatusAreaVisibility) {
111 gfx::Rect bounds(100, 100, 200, 200);
112 scoped_ptr<aura::Window> window(CreateTestWindow(bounds));
113 views::Widget* widget = CreateTestWidget();
114 layout_manager()->set_status_area_widget(widget);
115 EXPECT_TRUE(widget->IsVisible());
116 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
117 EXPECT_TRUE(widget->IsVisible());
118 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
119 EXPECT_TRUE(widget->IsVisible());
120 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
121 EXPECT_FALSE(widget->IsVisible());
122 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
123 EXPECT_TRUE(widget->IsVisible());
124 }
125
126 #if defined(OS_MACOSX)
127 #define MAYBE_TransitionTest FAILS_TransitionTest
128 #else
129 #define MAYBE_TransitionTest TransitionTest
130 #endif
131 TEST_F(CompactLayoutManagerTest, MAYBE_TransitionTest) {
132 // Assert on viewport size to be the host size.
133 ASSERT_EQ(kMaxWidth, default_container_layer_width());
134 // Create 3 windows, check that the layer grow as each one is added
135 // to the layout.
136 aura::Window* window1 = CreateNormalWindow(0);
137 EXPECT_EQ(kMaxWidth, default_container_layer_width());
138 aura::Window* window2 = CreateNormalWindow(1);
139 EXPECT_EQ(kMaxWidth * 2, default_container_layer_width());
140 aura::Window* window3 = CreateNormalWindow(2);
141 EXPECT_EQ(kMaxWidth * 3, default_container_layer_width());
142 animation_element()->Step(base::TimeTicks::Now() +
143 base::TimeDelta::FromSeconds(1));
144 RunAllPendingInMessageLoop();
145
146 // Check laid out position of the windows.
147 EXPECT_EQ(0, window1->bounds().x());
148 EXPECT_EQ(kMaxWidth, window2->bounds().x());
149 EXPECT_EQ(kMaxWidth * 2, window3->bounds().x());
150
151 // Check layer transformation.
152 ui::Transform target_transform;
153 target_transform.ConcatTranslate(-window3->bounds().x(), 0);
154 EXPECT_EQ(target_transform, default_container_layer_transform());
155 RunAllPendingInMessageLoop();
156
157 // Check that only one window is visible.
158 EXPECT_EQ(window3, layout_manager_->current_window_);
159 EXPECT_FALSE(window1->IsVisible());
160 EXPECT_FALSE(window2->IsVisible());
161 EXPECT_TRUE(window3->IsVisible());
162
163 // That window disappear, check that we transform the layer, and
164 // again only have one window visible.
165 window3->Hide();
166 animation_element()->Step(base::TimeTicks::Now() +
167 base::TimeDelta::FromSeconds(1));
168 ui::Transform target_transform1;
169 target_transform1.ConcatTranslate(-window1->bounds().x(), 0);
170 EXPECT_EQ(target_transform1, default_container_layer_transform());
171 EXPECT_TRUE(window1->IsVisible());
172 EXPECT_FALSE(window2->IsVisible());
173 EXPECT_FALSE(window3->IsVisible());
174 EXPECT_EQ(window1, layout_manager_->current_window_);
175 }
176
177 TEST_F(CompactLayoutManagerTest, SwitchToNextVisibleWindow) {
178 // Create 3 windows
179 aura::Window* window1 = CreateNormalWindow(0);
180 window1->Hide(); // Hide window1 before its layer marked invisible.
181 aura::Window* window2 = CreateNormalWindow(1);
182 aura::Window* window3 = CreateNormalWindow(2);
183
184 // Check that only window3 is visible.
185 EXPECT_FALSE(window1->IsVisible());
186 EXPECT_FALSE(window2->IsVisible());
187 EXPECT_TRUE(window3->IsVisible());
188
189 // Hide the current active window.
190 window3->Hide();
191
192 // And window2 becomes the current window because window1 is hidden.
193 EXPECT_FALSE(window1->IsVisible());
194 EXPECT_TRUE(window2->IsVisible());
195 EXPECT_FALSE(window3->IsVisible());
196
197 // Show window3 and it becomes the current window.
198 window3->Show();
199 EXPECT_FALSE(window1->IsVisible());
200 EXPECT_FALSE(window2->IsVisible());
201 EXPECT_TRUE(window3->IsVisible());
202
203 // Close the current active window.
204 delete window3;
205
206 // And window2 becomes active again.
207 EXPECT_FALSE(window1->IsVisible());
208 EXPECT_TRUE(window2->IsVisible());
209 }
210
211 TEST_F(CompactLayoutManagerTest, CloseAllWindows) {
212 // Create 3 windows
213 aura::Window* window1 = CreateNormalWindow(0);
214 aura::Window* window2 = CreateNormalWindow(1);
215 aura::Window* window3 = CreateNormalWindow(2);
216
217 // Check that only window3 is visible.
218 EXPECT_FALSE(window1->IsVisible());
219 EXPECT_FALSE(window2->IsVisible());
220 EXPECT_TRUE(window3->IsVisible());
221
222 // Close all windows. Note they should not be accessed after here.
223 delete window1;
224 delete window2;
225 delete window3;
226
227 // No current window now.
228 EXPECT_EQ(NULL, layout_manager_->current_window_);
229 }
230
231 } // namespace internal
232 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/compact_layout_manager.cc ('k') | ash/wm/compact_status_area_layout_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698