OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ash/display/display_controller.h" | 5 #include "ash/display/display_controller.h" |
6 | 6 |
7 #include "ash/launcher/launcher.h" | 7 #include "ash/launcher/launcher.h" |
8 #include "ash/screen_ash.h" | 8 #include "ash/screen_ash.h" |
9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
10 #include "ash/test/ash_test_base.h" | 10 #include "ash/test/ash_test_base.h" |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 | 139 |
140 UpdateDisplay("400x400,300x300"); | 140 UpdateDisplay("400x400,300x300"); |
141 EXPECT_EQ(1, observer.CountAndReset()); | 141 EXPECT_EQ(1, observer.CountAndReset()); |
142 EXPECT_EQ("0,0 400x400", GetPrimaryDisplay().bounds().ToString()); | 142 EXPECT_EQ("0,0 400x400", GetPrimaryDisplay().bounds().ToString()); |
143 EXPECT_EQ("0,400 300x300", GetSecondaryDisplay().bounds().ToString()); | 143 EXPECT_EQ("0,400 300x300", GetSecondaryDisplay().bounds().ToString()); |
144 EXPECT_EQ("5,405 290x290", GetSecondaryDisplay().work_area().ToString()); | 144 EXPECT_EQ("5,405 290x290", GetSecondaryDisplay().work_area().ToString()); |
145 | 145 |
146 UpdateDisplay("400x400"); | 146 UpdateDisplay("400x400"); |
147 EXPECT_EQ(1, observer.CountAndReset()); | 147 EXPECT_EQ(1, observer.CountAndReset()); |
148 EXPECT_EQ("0,0 400x400", GetPrimaryDisplay().bounds().ToString()); | 148 EXPECT_EQ("0,0 400x400", GetPrimaryDisplay().bounds().ToString()); |
149 EXPECT_EQ(1, gfx::Screen::GetNumDisplays()); | 149 EXPECT_EQ(1, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView())); |
150 | 150 |
151 UpdateDisplay("500x500,700x700"); | 151 UpdateDisplay("500x500,700x700"); |
152 EXPECT_EQ(2, observer.CountAndReset()); | 152 EXPECT_EQ(2, observer.CountAndReset()); |
153 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); | 153 ASSERT_EQ(2, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView())); |
154 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 154 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
155 EXPECT_EQ("0,500 700x700", GetSecondaryDisplay().bounds().ToString()); | 155 EXPECT_EQ("0,500 700x700", GetSecondaryDisplay().bounds().ToString()); |
156 } | 156 } |
157 | 157 |
158 TEST_F(DisplayControllerTest, InvertLayout) { | 158 TEST_F(DisplayControllerTest, InvertLayout) { |
159 EXPECT_EQ("left, 0", | 159 EXPECT_EQ("left, 0", |
160 DisplayLayout(DisplayLayout::RIGHT, 0).Invert().ToString()); | 160 DisplayLayout(DisplayLayout::RIGHT, 0).Invert().ToString()); |
161 EXPECT_EQ("left, -100", | 161 EXPECT_EQ("left, -100", |
162 DisplayLayout(DisplayLayout::RIGHT, 100).Invert().ToString()); | 162 DisplayLayout(DisplayLayout::RIGHT, 100).Invert().ToString()); |
163 EXPECT_EQ("left, 50", | 163 EXPECT_EQ("left, 50", |
(...skipping 19 matching lines...) Expand all Loading... |
183 DisplayLayout(DisplayLayout::BOTTOM, 70).Invert().ToString()); | 183 DisplayLayout(DisplayLayout::BOTTOM, 70).Invert().ToString()); |
184 EXPECT_EQ("top, 80", | 184 EXPECT_EQ("top, 80", |
185 DisplayLayout(DisplayLayout::BOTTOM, -80).Invert().ToString()); | 185 DisplayLayout(DisplayLayout::BOTTOM, -80).Invert().ToString()); |
186 } | 186 } |
187 | 187 |
188 TEST_F(DisplayControllerTest, SwapPrimary) { | 188 TEST_F(DisplayControllerTest, SwapPrimary) { |
189 DisplayController* display_controller = | 189 DisplayController* display_controller = |
190 Shell::GetInstance()->display_controller(); | 190 Shell::GetInstance()->display_controller(); |
191 | 191 |
192 UpdateDisplay("200x200,300x300"); | 192 UpdateDisplay("200x200,300x300"); |
193 gfx::Display primary_display = gfx::Screen::GetPrimaryDisplay(); | 193 gfx::Display primary_display = gfx::Screen::GetPrimaryDisplay( |
| 194 ash::Shell::GetRootNativeView()); |
194 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); | 195 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); |
195 | 196 |
196 std::string secondary_name = aura::Env::GetInstance()-> | 197 std::string secondary_name = aura::Env::GetInstance()-> |
197 display_manager()->GetDisplayNameFor(secondary_display); | 198 display_manager()->GetDisplayNameFor(secondary_display); |
198 DisplayLayout secondary_layout(DisplayLayout::RIGHT, 50); | 199 DisplayLayout secondary_layout(DisplayLayout::RIGHT, 50); |
199 display_controller->SetLayoutForDisplayName(secondary_name, secondary_layout); | 200 display_controller->SetLayoutForDisplayName(secondary_name, secondary_layout); |
200 | 201 |
201 EXPECT_NE(primary_display.id(), secondary_display.id()); | 202 EXPECT_NE(primary_display.id(), secondary_display.id()); |
202 aura::RootWindow* primary_root = | 203 aura::RootWindow* primary_root = |
203 display_controller->GetRootWindowForDisplayId(primary_display.id()); | 204 display_controller->GetRootWindowForDisplayId(primary_display.id()); |
204 aura::RootWindow* secondary_root = | 205 aura::RootWindow* secondary_root = |
205 display_controller->GetRootWindowForDisplayId(secondary_display.id()); | 206 display_controller->GetRootWindowForDisplayId(secondary_display.id()); |
206 EXPECT_NE(primary_root, secondary_root); | 207 EXPECT_NE(primary_root, secondary_root); |
207 aura::Window* launcher_window = | 208 aura::Window* launcher_window = |
208 Shell::GetInstance()->launcher()->widget()->GetNativeView(); | 209 Shell::GetInstance()->launcher()->widget()->GetNativeView(); |
209 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 210 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
210 EXPECT_FALSE(secondary_root->Contains(launcher_window)); | 211 EXPECT_FALSE(secondary_root->Contains(launcher_window)); |
211 EXPECT_EQ(primary_display.id(), | 212 EXPECT_EQ(primary_display.id(), |
212 gfx::Screen::GetDisplayNearestPoint(gfx::Point(-100, -100)).id()); | 213 gfx::Screen::GetDisplayNearestPoint( |
| 214 ash::Shell::GetRootNativeView(), gfx::Point(-100, -100)).id()); |
213 EXPECT_EQ(primary_display.id(), | 215 EXPECT_EQ(primary_display.id(), |
214 gfx::Screen::GetDisplayNearestWindow(NULL).id()); | 216 gfx::Screen::GetDisplayNearestWindow(NULL).id()); |
215 | 217 |
216 // Switch primary and secondary | 218 // Switch primary and secondary |
217 display_controller->SetPrimaryDisplay(secondary_display); | 219 display_controller->SetPrimaryDisplay(secondary_display); |
218 EXPECT_EQ(secondary_display.id(), gfx::Screen::GetPrimaryDisplay().id()); | 220 EXPECT_EQ(secondary_display.id(), gfx::Screen::GetPrimaryDisplay().id()); |
219 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id()); | 221 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id()); |
220 EXPECT_EQ(secondary_display.id(), | 222 EXPECT_EQ(secondary_display.id(), |
221 gfx::Screen::GetDisplayNearestPoint(gfx::Point(-100, -100)).id()); | 223 gfx::Screen::GetDisplayNearestPoint( |
| 224 ash::Shell::GetRootNativeView(), gfx::Point(-100, -100)).id()); |
222 EXPECT_EQ(secondary_display.id(), | 225 EXPECT_EQ(secondary_display.id(), |
223 gfx::Screen::GetDisplayNearestWindow(NULL).id()); | 226 gfx::Screen::GetDisplayNearestWindow(NULL).id()); |
224 | 227 |
225 EXPECT_EQ( | 228 EXPECT_EQ( |
226 primary_root, | 229 primary_root, |
227 display_controller->GetRootWindowForDisplayId(secondary_display.id())); | 230 display_controller->GetRootWindowForDisplayId(secondary_display.id())); |
228 EXPECT_EQ( | 231 EXPECT_EQ( |
229 secondary_root, | 232 secondary_root, |
230 display_controller->GetRootWindowForDisplayId(primary_display.id())); | 233 display_controller->GetRootWindowForDisplayId(primary_display.id())); |
231 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 234 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
232 EXPECT_FALSE(secondary_root->Contains(launcher_window)); | 235 EXPECT_FALSE(secondary_root->Contains(launcher_window)); |
233 | 236 |
234 const DisplayLayout& inverted_layout = | 237 const DisplayLayout& inverted_layout = |
235 display_controller->GetLayoutForDisplay(primary_display); | 238 display_controller->GetLayoutForDisplay(primary_display); |
236 | 239 |
237 EXPECT_EQ("left, -50", inverted_layout.ToString()); | 240 EXPECT_EQ("left, -50", inverted_layout.ToString()); |
238 | 241 |
239 aura::WindowTracker tracker; | 242 aura::WindowTracker tracker; |
240 tracker.Add(primary_root); | 243 tracker.Add(primary_root); |
241 tracker.Add(secondary_root); | 244 tracker.Add(secondary_root); |
242 | 245 |
243 // Deleting 2nd display should move the primary to original primary display. | 246 // Deleting 2nd display should move the primary to original primary display. |
244 UpdateDisplay("200x200"); | 247 UpdateDisplay("200x200"); |
245 RunAllPendingInMessageLoop(); // RootWindow is deleted in a posted task. | 248 RunAllPendingInMessageLoop(); // RootWindow is deleted in a posted task. |
246 EXPECT_EQ(1, gfx::Screen::GetNumDisplays()); | 249 EXPECT_EQ(1, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView())); |
247 EXPECT_EQ(primary_display.id(), gfx::Screen::GetPrimaryDisplay().id()); | 250 EXPECT_EQ(primary_display.id(), gfx::Screen::GetPrimaryDisplay().id()); |
248 EXPECT_EQ(primary_display.id(), | 251 EXPECT_EQ(primary_display.id(), |
249 gfx::Screen::GetDisplayNearestPoint(gfx::Point(-100, -100)).id()); | 252 gfx::Screen::GetDisplayNearestPoint( |
| 253 ash::Shell::GetRootNativeView(), gfx::Point(-100, -100)).id()); |
250 EXPECT_EQ(primary_display.id(), | 254 EXPECT_EQ(primary_display.id(), |
251 gfx::Screen::GetDisplayNearestWindow(NULL).id()); | 255 gfx::Screen::GetDisplayNearestWindow(NULL).id()); |
252 EXPECT_TRUE(tracker.Contains(primary_root)); | 256 EXPECT_TRUE(tracker.Contains(primary_root)); |
253 EXPECT_FALSE(tracker.Contains(secondary_root)); | 257 EXPECT_FALSE(tracker.Contains(secondary_root)); |
254 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 258 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
255 } | 259 } |
256 | 260 |
257 TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) { | 261 TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) { |
258 UpdateDisplay("100x200,300x400"); | 262 UpdateDisplay("100x200,300x400"); |
259 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); | 263 ASSERT_EQ(2, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView())); |
260 Shell::RootWindowList root_windows = | 264 Shell::RootWindowList root_windows = |
261 Shell::GetInstance()->GetAllRootWindows(); | 265 Shell::GetInstance()->GetAllRootWindows(); |
262 ASSERT_EQ(2U, root_windows.size()); | 266 ASSERT_EQ(2U, root_windows.size()); |
263 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); | 267 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); |
264 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); | 268 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); |
265 // UpdateDisplay set the origin if it's not set. | 269 // UpdateDisplay set the origin if it's not set. |
266 EXPECT_NE("0,0", root_windows[1]->GetHostOrigin().ToString()); | 270 EXPECT_NE("0,0", root_windows[1]->GetHostOrigin().ToString()); |
267 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); | 271 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); |
268 | 272 |
269 UpdateDisplay("100x200,200+300-300x400"); | 273 UpdateDisplay("100x200,200+300-300x400"); |
270 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); | 274 ASSERT_EQ(2, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView())); |
271 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); | 275 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); |
272 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); | 276 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); |
273 EXPECT_EQ("200,300", root_windows[1]->GetHostOrigin().ToString()); | 277 EXPECT_EQ("200,300", root_windows[1]->GetHostOrigin().ToString()); |
274 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); | 278 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); |
275 | 279 |
276 UpdateDisplay("400+500-200x300,300x400"); | 280 UpdateDisplay("400+500-200x300,300x400"); |
277 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); | 281 ASSERT_EQ(2, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView())); |
278 EXPECT_EQ("400,500", root_windows[0]->GetHostOrigin().ToString()); | 282 EXPECT_EQ("400,500", root_windows[0]->GetHostOrigin().ToString()); |
279 EXPECT_EQ("200x300", root_windows[0]->GetHostSize().ToString()); | 283 EXPECT_EQ("200x300", root_windows[0]->GetHostSize().ToString()); |
280 EXPECT_EQ("0,0", root_windows[1]->GetHostOrigin().ToString()); | 284 EXPECT_EQ("0,0", root_windows[1]->GetHostOrigin().ToString()); |
281 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); | 285 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); |
282 | 286 |
283 UpdateDisplay("100+200-100x200,300+500-200x300"); | 287 UpdateDisplay("100+200-100x200,300+500-200x300"); |
284 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); | 288 ASSERT_EQ(2, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView())); |
285 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString()); | 289 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString()); |
286 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); | 290 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); |
287 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString()); | 291 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString()); |
288 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString()); | 292 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString()); |
289 } | 293 } |
290 | 294 |
291 } // namespace test | 295 } // namespace test |
292 } // namespace ash | 296 } // namespace ash |
OLD | NEW |