| 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/wm/workspace/workspace_layout_manager.h" | 5 #include "ash/wm/workspace/workspace_layout_manager.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "ash/display/display_manager.h" | 10 #include "ash/display/display_manager.h" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 }; | 93 }; |
| 94 | 94 |
| 95 } // namespace | 95 } // namespace |
| 96 | 96 |
| 97 typedef test::AshTestBase WorkspaceLayoutManagerTest; | 97 typedef test::AshTestBase WorkspaceLayoutManagerTest; |
| 98 | 98 |
| 99 // Verifies that a window containing a restore coordinate will be restored to | 99 // Verifies that a window containing a restore coordinate will be restored to |
| 100 // to the size prior to minimize, keeping the restore rectangle in tact (if | 100 // to the size prior to minimize, keeping the restore rectangle in tact (if |
| 101 // there is one). | 101 // there is one). |
| 102 TEST_F(WorkspaceLayoutManagerTest, RestoreFromMinimizeKeepsRestore) { | 102 TEST_F(WorkspaceLayoutManagerTest, RestoreFromMinimizeKeepsRestore) { |
| 103 scoped_ptr<aura::Window> window( | 103 std::unique_ptr<aura::Window> window( |
| 104 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 3, 4))); | 104 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 3, 4))); |
| 105 gfx::Rect bounds(10, 15, 25, 35); | 105 gfx::Rect bounds(10, 15, 25, 35); |
| 106 window->SetBounds(bounds); | 106 window->SetBounds(bounds); |
| 107 | 107 |
| 108 wm::WindowState* window_state = wm::GetWindowState(window.get()); | 108 wm::WindowState* window_state = wm::GetWindowState(window.get()); |
| 109 | 109 |
| 110 // This will not be used for un-minimizing window. | 110 // This will not be used for un-minimizing window. |
| 111 window_state->SetRestoreBoundsInScreen(gfx::Rect(0, 0, 100, 100)); | 111 window_state->SetRestoreBoundsInScreen(gfx::Rect(0, 0, 100, 100)); |
| 112 window_state->Minimize(); | 112 window_state->Minimize(); |
| 113 window_state->Restore(); | 113 window_state->Restore(); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 141 if (!SupportsMultipleDisplays()) | 141 if (!SupportsMultipleDisplays()) |
| 142 return; | 142 return; |
| 143 | 143 |
| 144 UpdateDisplay("300x400,400x500"); | 144 UpdateDisplay("300x400,400x500"); |
| 145 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 145 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 146 | 146 |
| 147 Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays( | 147 Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays( |
| 148 test::CreateDisplayLayout(display::DisplayPlacement::TOP, 0)); | 148 test::CreateDisplayLayout(display::DisplayPlacement::TOP, 0)); |
| 149 EXPECT_EQ("0,-500 400x500", root_windows[1]->GetBoundsInScreen().ToString()); | 149 EXPECT_EQ("0,-500 400x500", root_windows[1]->GetBoundsInScreen().ToString()); |
| 150 | 150 |
| 151 scoped_ptr<aura::Window> window1( | 151 std::unique_ptr<aura::Window> window1( |
| 152 CreateTestWindowInShellWithBounds(gfx::Rect(10, -400, 200, 200))); | 152 CreateTestWindowInShellWithBounds(gfx::Rect(10, -400, 200, 200))); |
| 153 EXPECT_EQ("10,-400 200x200", window1->GetBoundsInScreen().ToString()); | 153 EXPECT_EQ("10,-400 200x200", window1->GetBoundsInScreen().ToString()); |
| 154 | 154 |
| 155 // Make sure the caption is visible. | 155 // Make sure the caption is visible. |
| 156 scoped_ptr<aura::Window> window2( | 156 std::unique_ptr<aura::Window> window2( |
| 157 CreateTestWindowInShellWithBounds(gfx::Rect(10, -600, 200, 200))); | 157 CreateTestWindowInShellWithBounds(gfx::Rect(10, -600, 200, 200))); |
| 158 EXPECT_EQ("10,-500 200x200", window2->GetBoundsInScreen().ToString()); | 158 EXPECT_EQ("10,-500 200x200", window2->GetBoundsInScreen().ToString()); |
| 159 } | 159 } |
| 160 | 160 |
| 161 TEST_F(WorkspaceLayoutManagerTest, NoMinimumVisibilityForPopupWindows) { | 161 TEST_F(WorkspaceLayoutManagerTest, NoMinimumVisibilityForPopupWindows) { |
| 162 UpdateDisplay("300x400"); | 162 UpdateDisplay("300x400"); |
| 163 | 163 |
| 164 // Create a popup window out of display boundaries and make sure it is not | 164 // Create a popup window out of display boundaries and make sure it is not |
| 165 // moved to have minimum visibility. | 165 // moved to have minimum visibility. |
| 166 scoped_ptr<aura::Window> window(CreateTestWindowInShellWithDelegateAndType( | 166 std::unique_ptr<aura::Window> window( |
| 167 nullptr, ui::wm::WINDOW_TYPE_POPUP, 0, gfx::Rect(400, 100, 50, 50))); | 167 CreateTestWindowInShellWithDelegateAndType( |
| 168 nullptr, ui::wm::WINDOW_TYPE_POPUP, 0, gfx::Rect(400, 100, 50, 50))); |
| 168 EXPECT_EQ("400,100 50x50", window->GetBoundsInScreen().ToString()); | 169 EXPECT_EQ("400,100 50x50", window->GetBoundsInScreen().ToString()); |
| 169 } | 170 } |
| 170 | 171 |
| 171 TEST_F(WorkspaceLayoutManagerTest, KeepRestoredWindowInDisplay) { | 172 TEST_F(WorkspaceLayoutManagerTest, KeepRestoredWindowInDisplay) { |
| 172 if (!SupportsHostWindowResize()) | 173 if (!SupportsHostWindowResize()) |
| 173 return; | 174 return; |
| 174 scoped_ptr<aura::Window> window( | 175 std::unique_ptr<aura::Window> window( |
| 175 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 30, 40))); | 176 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 30, 40))); |
| 176 wm::WindowState* window_state = wm::GetWindowState(window.get()); | 177 wm::WindowState* window_state = wm::GetWindowState(window.get()); |
| 177 | 178 |
| 178 // Maximized -> Normal transition. | 179 // Maximized -> Normal transition. |
| 179 window_state->Maximize(); | 180 window_state->Maximize(); |
| 180 window_state->SetRestoreBoundsInScreen(gfx::Rect(-100, -100, 30, 40)); | 181 window_state->SetRestoreBoundsInScreen(gfx::Rect(-100, -100, 30, 40)); |
| 181 window_state->Restore(); | 182 window_state->Restore(); |
| 182 EXPECT_TRUE( | 183 EXPECT_TRUE( |
| 183 Shell::GetPrimaryRootWindow()->bounds().Intersects(window->bounds())); | 184 Shell::GetPrimaryRootWindow()->bounds().Intersects(window->bounds())); |
| 184 // Y bounds should not be negative. | 185 // Y bounds should not be negative. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 209 EXPECT_EQ("-5,0 30x40", window->bounds().ToString()); | 210 EXPECT_EQ("-5,0 30x40", window->bounds().ToString()); |
| 210 } | 211 } |
| 211 | 212 |
| 212 TEST_F(WorkspaceLayoutManagerTest, MaximizeInDisplayToBeRestored) { | 213 TEST_F(WorkspaceLayoutManagerTest, MaximizeInDisplayToBeRestored) { |
| 213 if (!SupportsMultipleDisplays()) | 214 if (!SupportsMultipleDisplays()) |
| 214 return; | 215 return; |
| 215 UpdateDisplay("300x400,400x500"); | 216 UpdateDisplay("300x400,400x500"); |
| 216 | 217 |
| 217 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 218 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 218 | 219 |
| 219 scoped_ptr<aura::Window> window( | 220 std::unique_ptr<aura::Window> window( |
| 220 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 30, 40))); | 221 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 30, 40))); |
| 221 EXPECT_EQ(root_windows[0], window->GetRootWindow()); | 222 EXPECT_EQ(root_windows[0], window->GetRootWindow()); |
| 222 | 223 |
| 223 wm::WindowState* window_state = wm::GetWindowState(window.get()); | 224 wm::WindowState* window_state = wm::GetWindowState(window.get()); |
| 224 window_state->SetRestoreBoundsInScreen(gfx::Rect(400, 0, 30, 40)); | 225 window_state->SetRestoreBoundsInScreen(gfx::Rect(400, 0, 30, 40)); |
| 225 // Maximize the window in 2nd display as the restore bounds | 226 // Maximize the window in 2nd display as the restore bounds |
| 226 // is inside 2nd display. | 227 // is inside 2nd display. |
| 227 window_state->Maximize(); | 228 window_state->Maximize(); |
| 228 EXPECT_EQ(root_windows[1], window->GetRootWindow()); | 229 EXPECT_EQ(root_windows[1], window->GetRootWindow()); |
| 229 EXPECT_EQ("300,0 400x453", window->GetBoundsInScreen().ToString()); | 230 EXPECT_EQ("300,0 400x453", window->GetBoundsInScreen().ToString()); |
| 230 | 231 |
| 231 window_state->Restore(); | 232 window_state->Restore(); |
| 232 EXPECT_EQ(root_windows[1], window->GetRootWindow()); | 233 EXPECT_EQ(root_windows[1], window->GetRootWindow()); |
| 233 EXPECT_EQ("400,0 30x40", window->GetBoundsInScreen().ToString()); | 234 EXPECT_EQ("400,0 30x40", window->GetBoundsInScreen().ToString()); |
| 234 | 235 |
| 235 // If the restore bounds intersects with the current display, | 236 // If the restore bounds intersects with the current display, |
| 236 // don't move. | 237 // don't move. |
| 237 window_state->SetRestoreBoundsInScreen(gfx::Rect(295, 0, 30, 40)); | 238 window_state->SetRestoreBoundsInScreen(gfx::Rect(295, 0, 30, 40)); |
| 238 window_state->Maximize(); | 239 window_state->Maximize(); |
| 239 EXPECT_EQ(root_windows[1], window->GetRootWindow()); | 240 EXPECT_EQ(root_windows[1], window->GetRootWindow()); |
| 240 EXPECT_EQ("300,0 400x453", window->GetBoundsInScreen().ToString()); | 241 EXPECT_EQ("300,0 400x453", window->GetBoundsInScreen().ToString()); |
| 241 | 242 |
| 242 window_state->Restore(); | 243 window_state->Restore(); |
| 243 EXPECT_EQ(root_windows[1], window->GetRootWindow()); | 244 EXPECT_EQ(root_windows[1], window->GetRootWindow()); |
| 244 EXPECT_EQ("295,0 30x40", window->GetBoundsInScreen().ToString()); | 245 EXPECT_EQ("295,0 30x40", window->GetBoundsInScreen().ToString()); |
| 245 | 246 |
| 246 // Restoring widget state. | 247 // Restoring widget state. |
| 247 scoped_ptr<views::Widget> w1(new views::Widget); | 248 std::unique_ptr<views::Widget> w1(new views::Widget); |
| 248 views::Widget::InitParams params; | 249 views::Widget::InitParams params; |
| 249 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 250 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| 250 params.delegate = new MaximizeDelegateView(gfx::Rect(400, 0, 30, 40)); | 251 params.delegate = new MaximizeDelegateView(gfx::Rect(400, 0, 30, 40)); |
| 251 params.context = root_windows[0]; | 252 params.context = root_windows[0]; |
| 252 w1->Init(params); | 253 w1->Init(params); |
| 253 w1->Show(); | 254 w1->Show(); |
| 254 EXPECT_TRUE(w1->IsMaximized()); | 255 EXPECT_TRUE(w1->IsMaximized()); |
| 255 EXPECT_EQ(root_windows[1], w1->GetNativeView()->GetRootWindow()); | 256 EXPECT_EQ(root_windows[1], w1->GetNativeView()->GetRootWindow()); |
| 256 EXPECT_EQ("300,0 400x453", w1->GetWindowBoundsInScreen().ToString()); | 257 EXPECT_EQ("300,0 400x453", w1->GetWindowBoundsInScreen().ToString()); |
| 257 w1->Restore(); | 258 w1->Restore(); |
| 258 EXPECT_EQ(root_windows[1], w1->GetNativeView()->GetRootWindow()); | 259 EXPECT_EQ(root_windows[1], w1->GetNativeView()->GetRootWindow()); |
| 259 EXPECT_EQ("400,0 30x40", w1->GetWindowBoundsInScreen().ToString()); | 260 EXPECT_EQ("400,0 30x40", w1->GetWindowBoundsInScreen().ToString()); |
| 260 } | 261 } |
| 261 | 262 |
| 262 TEST_F(WorkspaceLayoutManagerTest, FullscreenInDisplayToBeRestored) { | 263 TEST_F(WorkspaceLayoutManagerTest, FullscreenInDisplayToBeRestored) { |
| 263 if (!SupportsMultipleDisplays()) | 264 if (!SupportsMultipleDisplays()) |
| 264 return; | 265 return; |
| 265 UpdateDisplay("300x400,400x500"); | 266 UpdateDisplay("300x400,400x500"); |
| 266 | 267 |
| 267 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 268 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 268 | 269 |
| 269 scoped_ptr<aura::Window> window( | 270 std::unique_ptr<aura::Window> window( |
| 270 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 30, 40))); | 271 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 30, 40))); |
| 271 EXPECT_EQ(root_windows[0], window->GetRootWindow()); | 272 EXPECT_EQ(root_windows[0], window->GetRootWindow()); |
| 272 | 273 |
| 273 wm::WindowState* window_state = wm::GetWindowState(window.get()); | 274 wm::WindowState* window_state = wm::GetWindowState(window.get()); |
| 274 window_state->SetRestoreBoundsInScreen(gfx::Rect(400, 0, 30, 40)); | 275 window_state->SetRestoreBoundsInScreen(gfx::Rect(400, 0, 30, 40)); |
| 275 // Maximize the window in 2nd display as the restore bounds | 276 // Maximize the window in 2nd display as the restore bounds |
| 276 // is inside 2nd display. | 277 // is inside 2nd display. |
| 277 window->SetProperty(aura::client::kShowStateKey, | 278 window->SetProperty(aura::client::kShowStateKey, |
| 278 ui::SHOW_STATE_FULLSCREEN); | 279 ui::SHOW_STATE_FULLSCREEN); |
| 279 EXPECT_EQ(root_windows[1], window->GetRootWindow()); | 280 EXPECT_EQ(root_windows[1], window->GetRootWindow()); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 328 aura::Window* window_; | 329 aura::Window* window_; |
| 329 | 330 |
| 330 DISALLOW_COPY_AND_ASSIGN(DontClobberRestoreBoundsWindowObserver); | 331 DISALLOW_COPY_AND_ASSIGN(DontClobberRestoreBoundsWindowObserver); |
| 331 }; | 332 }; |
| 332 | 333 |
| 333 // Creates a window, maximized the window and from within the maximized | 334 // Creates a window, maximized the window and from within the maximized |
| 334 // notification sets the bounds of a window to overlap the shelf. Verifies this | 335 // notification sets the bounds of a window to overlap the shelf. Verifies this |
| 335 // doesn't effect the restore bounds. | 336 // doesn't effect the restore bounds. |
| 336 TEST_F(WorkspaceLayoutManagerTest, DontClobberRestoreBounds) { | 337 TEST_F(WorkspaceLayoutManagerTest, DontClobberRestoreBounds) { |
| 337 DontClobberRestoreBoundsWindowObserver window_observer; | 338 DontClobberRestoreBoundsWindowObserver window_observer; |
| 338 scoped_ptr<aura::Window> window(new aura::Window(nullptr)); | 339 std::unique_ptr<aura::Window> window(new aura::Window(nullptr)); |
| 339 window->SetType(ui::wm::WINDOW_TYPE_NORMAL); | 340 window->SetType(ui::wm::WINDOW_TYPE_NORMAL); |
| 340 window->Init(ui::LAYER_TEXTURED); | 341 window->Init(ui::LAYER_TEXTURED); |
| 341 window->SetBounds(gfx::Rect(10, 20, 30, 40)); | 342 window->SetBounds(gfx::Rect(10, 20, 30, 40)); |
| 342 // NOTE: for this test to exercise the failure the observer needs to be added | 343 // NOTE: for this test to exercise the failure the observer needs to be added |
| 343 // before the parent set. This mimics what BrowserFrameAsh does. | 344 // before the parent set. This mimics what BrowserFrameAsh does. |
| 344 window->AddObserver(&window_observer); | 345 window->AddObserver(&window_observer); |
| 345 ParentWindowInPrimaryRootWindow(window.get()); | 346 ParentWindowInPrimaryRootWindow(window.get()); |
| 346 window->Show(); | 347 window->Show(); |
| 347 | 348 |
| 348 wm::WindowState* window_state = wm::GetWindowState(window.get()); | 349 wm::WindowState* window_state = wm::GetWindowState(window.get()); |
| 349 window_state->Activate(); | 350 window_state->Activate(); |
| 350 | 351 |
| 351 scoped_ptr<aura::Window> window2( | 352 std::unique_ptr<aura::Window> window2( |
| 352 CreateTestWindowInShellWithBounds(gfx::Rect(12, 20, 30, 40))); | 353 CreateTestWindowInShellWithBounds(gfx::Rect(12, 20, 30, 40))); |
| 353 ::wm::AddTransientChild(window.get(), window2.get()); | 354 ::wm::AddTransientChild(window.get(), window2.get()); |
| 354 window2->Show(); | 355 window2->Show(); |
| 355 | 356 |
| 356 window_observer.set_window(window2.get()); | 357 window_observer.set_window(window2.get()); |
| 357 window_state->Maximize(); | 358 window_state->Maximize(); |
| 358 EXPECT_EQ("10,20 30x40", | 359 EXPECT_EQ("10,20 30x40", |
| 359 window_state->GetRestoreBoundsInScreen().ToString()); | 360 window_state->GetRestoreBoundsInScreen().ToString()); |
| 360 window->RemoveObserver(&window_observer); | 361 window->RemoveObserver(&window_observer); |
| 361 } | 362 } |
| 362 | 363 |
| 363 // Verifies when a window is maximized all descendant windows have a size. | 364 // Verifies when a window is maximized all descendant windows have a size. |
| 364 TEST_F(WorkspaceLayoutManagerTest, ChildBoundsResetOnMaximize) { | 365 TEST_F(WorkspaceLayoutManagerTest, ChildBoundsResetOnMaximize) { |
| 365 scoped_ptr<aura::Window> window( | 366 std::unique_ptr<aura::Window> window( |
| 366 CreateTestWindowInShellWithBounds(gfx::Rect(10, 20, 30, 40))); | 367 CreateTestWindowInShellWithBounds(gfx::Rect(10, 20, 30, 40))); |
| 367 window->Show(); | 368 window->Show(); |
| 368 wm::WindowState* window_state = wm::GetWindowState(window.get()); | 369 wm::WindowState* window_state = wm::GetWindowState(window.get()); |
| 369 window_state->Activate(); | 370 window_state->Activate(); |
| 370 scoped_ptr<aura::Window> child_window( | 371 std::unique_ptr<aura::Window> child_window( |
| 371 aura::test::CreateTestWindowWithBounds(gfx::Rect(5, 6, 7, 8), | 372 aura::test::CreateTestWindowWithBounds(gfx::Rect(5, 6, 7, 8), |
| 372 window.get())); | 373 window.get())); |
| 373 child_window->Show(); | 374 child_window->Show(); |
| 374 window_state->Maximize(); | 375 window_state->Maximize(); |
| 375 EXPECT_EQ("5,6 7x8", child_window->bounds().ToString()); | 376 EXPECT_EQ("5,6 7x8", child_window->bounds().ToString()); |
| 376 } | 377 } |
| 377 | 378 |
| 378 // Verifies a window created with maximized state has the maximized | 379 // Verifies a window created with maximized state has the maximized |
| 379 // bounds. | 380 // bounds. |
| 380 TEST_F(WorkspaceLayoutManagerTest, MaximizeWithEmptySize) { | 381 TEST_F(WorkspaceLayoutManagerTest, MaximizeWithEmptySize) { |
| 381 scoped_ptr<aura::Window> window( | 382 std::unique_ptr<aura::Window> window( |
| 382 aura::test::CreateTestWindowWithBounds(gfx::Rect(0, 0, 0, 0), nullptr)); | 383 aura::test::CreateTestWindowWithBounds(gfx::Rect(0, 0, 0, 0), nullptr)); |
| 383 wm::GetWindowState(window.get())->Maximize(); | 384 wm::GetWindowState(window.get())->Maximize(); |
| 384 aura::Window* default_container = Shell::GetContainer( | 385 aura::Window* default_container = Shell::GetContainer( |
| 385 Shell::GetPrimaryRootWindow(), kShellWindowId_DefaultContainer); | 386 Shell::GetPrimaryRootWindow(), kShellWindowId_DefaultContainer); |
| 386 default_container->AddChild(window.get()); | 387 default_container->AddChild(window.get()); |
| 387 window->Show(); | 388 window->Show(); |
| 388 gfx::Rect work_area( | 389 gfx::Rect work_area( |
| 389 gfx::Screen::GetScreen()->GetPrimaryDisplay().work_area()); | 390 gfx::Screen::GetScreen()->GetPrimaryDisplay().work_area()); |
| 390 EXPECT_EQ(work_area.ToString(), window->GetBoundsInScreen().ToString()); | 391 EXPECT_EQ(work_area.ToString(), window->GetBoundsInScreen().ToString()); |
| 391 } | 392 } |
| 392 | 393 |
| 393 TEST_F(WorkspaceLayoutManagerTest, WindowShouldBeOnScreenWhenAdded) { | 394 TEST_F(WorkspaceLayoutManagerTest, WindowShouldBeOnScreenWhenAdded) { |
| 394 // Normal window bounds shouldn't be changed. | 395 // Normal window bounds shouldn't be changed. |
| 395 gfx::Rect window_bounds(100, 100, 200, 200); | 396 gfx::Rect window_bounds(100, 100, 200, 200); |
| 396 scoped_ptr<aura::Window> window( | 397 std::unique_ptr<aura::Window> window( |
| 397 CreateTestWindowInShellWithBounds(window_bounds)); | 398 CreateTestWindowInShellWithBounds(window_bounds)); |
| 398 EXPECT_EQ(window_bounds, window->bounds()); | 399 EXPECT_EQ(window_bounds, window->bounds()); |
| 399 | 400 |
| 400 // If the window is out of the workspace, it would be moved on screen. | 401 // If the window is out of the workspace, it would be moved on screen. |
| 401 gfx::Rect root_window_bounds = | 402 gfx::Rect root_window_bounds = |
| 402 Shell::GetInstance()->GetPrimaryRootWindow()->bounds(); | 403 Shell::GetInstance()->GetPrimaryRootWindow()->bounds(); |
| 403 window_bounds.Offset(root_window_bounds.width(), root_window_bounds.height()); | 404 window_bounds.Offset(root_window_bounds.width(), root_window_bounds.height()); |
| 404 ASSERT_FALSE(window_bounds.Intersects(root_window_bounds)); | 405 ASSERT_FALSE(window_bounds.Intersects(root_window_bounds)); |
| 405 scoped_ptr<aura::Window> out_window( | 406 std::unique_ptr<aura::Window> out_window( |
| 406 CreateTestWindowInShellWithBounds(window_bounds)); | 407 CreateTestWindowInShellWithBounds(window_bounds)); |
| 407 EXPECT_EQ(window_bounds.size(), out_window->bounds().size()); | 408 EXPECT_EQ(window_bounds.size(), out_window->bounds().size()); |
| 408 gfx::Rect bounds = out_window->bounds(); | 409 gfx::Rect bounds = out_window->bounds(); |
| 409 bounds.Intersect(root_window_bounds); | 410 bounds.Intersect(root_window_bounds); |
| 410 | 411 |
| 411 // 30% of the window edge must be visible. | 412 // 30% of the window edge must be visible. |
| 412 EXPECT_GT(bounds.width(), out_window->bounds().width() * 0.29); | 413 EXPECT_GT(bounds.width(), out_window->bounds().width() * 0.29); |
| 413 EXPECT_GT(bounds.height(), out_window->bounds().height() * 0.29); | 414 EXPECT_GT(bounds.height(), out_window->bounds().height() * 0.29); |
| 414 | 415 |
| 415 aura::Window* parent = out_window->parent(); | 416 aura::Window* parent = out_window->parent(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 426 window_bounds.SetRect(-150, -150, 200, 200); | 427 window_bounds.SetRect(-150, -150, 200, 200); |
| 427 bounds = window_bounds; | 428 bounds = window_bounds; |
| 428 bounds.Intersect(root_window_bounds); | 429 bounds.Intersect(root_window_bounds); |
| 429 | 430 |
| 430 // Make sure that the initial bounds' visible area is less than 26% | 431 // Make sure that the initial bounds' visible area is less than 26% |
| 431 // so that the auto adjustment logic kicks in. | 432 // so that the auto adjustment logic kicks in. |
| 432 ASSERT_LT(bounds.width(), out_window->bounds().width() * 0.26); | 433 ASSERT_LT(bounds.width(), out_window->bounds().width() * 0.26); |
| 433 ASSERT_LT(bounds.height(), out_window->bounds().height() * 0.26); | 434 ASSERT_LT(bounds.height(), out_window->bounds().height() * 0.26); |
| 434 ASSERT_TRUE(window_bounds.Intersects(root_window_bounds)); | 435 ASSERT_TRUE(window_bounds.Intersects(root_window_bounds)); |
| 435 | 436 |
| 436 scoped_ptr<aura::Window> partially_out_window( | 437 std::unique_ptr<aura::Window> partially_out_window( |
| 437 CreateTestWindowInShellWithBounds(window_bounds)); | 438 CreateTestWindowInShellWithBounds(window_bounds)); |
| 438 EXPECT_EQ(window_bounds.size(), partially_out_window->bounds().size()); | 439 EXPECT_EQ(window_bounds.size(), partially_out_window->bounds().size()); |
| 439 bounds = partially_out_window->bounds(); | 440 bounds = partially_out_window->bounds(); |
| 440 bounds.Intersect(root_window_bounds); | 441 bounds.Intersect(root_window_bounds); |
| 441 EXPECT_GT(bounds.width(), out_window->bounds().width() * 0.29); | 442 EXPECT_GT(bounds.width(), out_window->bounds().width() * 0.29); |
| 442 EXPECT_GT(bounds.height(), out_window->bounds().height() * 0.29); | 443 EXPECT_GT(bounds.height(), out_window->bounds().height() * 0.29); |
| 443 | 444 |
| 444 // Make sure the window whose 30% width/height is bigger than display | 445 // Make sure the window whose 30% width/height is bigger than display |
| 445 // will be placed correctly. | 446 // will be placed correctly. |
| 446 window_bounds.SetRect(-1900, -1900, 3000, 3000); | 447 window_bounds.SetRect(-1900, -1900, 3000, 3000); |
| 447 scoped_ptr<aura::Window> window_bigger_than_display( | 448 std::unique_ptr<aura::Window> window_bigger_than_display( |
| 448 CreateTestWindowInShellWithBounds(window_bounds)); | 449 CreateTestWindowInShellWithBounds(window_bounds)); |
| 449 EXPECT_GE(root_window_bounds.width(), | 450 EXPECT_GE(root_window_bounds.width(), |
| 450 window_bigger_than_display->bounds().width()); | 451 window_bigger_than_display->bounds().width()); |
| 451 EXPECT_GE(root_window_bounds.height(), | 452 EXPECT_GE(root_window_bounds.height(), |
| 452 window_bigger_than_display->bounds().height()); | 453 window_bigger_than_display->bounds().height()); |
| 453 | 454 |
| 454 bounds = window_bigger_than_display->bounds(); | 455 bounds = window_bigger_than_display->bounds(); |
| 455 bounds.Intersect(root_window_bounds); | 456 bounds.Intersect(root_window_bounds); |
| 456 EXPECT_GT(bounds.width(), out_window->bounds().width() * 0.29); | 457 EXPECT_GT(bounds.width(), out_window->bounds().width() * 0.29); |
| 457 EXPECT_GT(bounds.height(), out_window->bounds().height() * 0.29); | 458 EXPECT_GT(bounds.height(), out_window->bounds().height() * 0.29); |
| 458 } | 459 } |
| 459 | 460 |
| 460 // Verifies the size of a window is enforced to be smaller than the work area. | 461 // Verifies the size of a window is enforced to be smaller than the work area. |
| 461 TEST_F(WorkspaceLayoutManagerTest, SizeToWorkArea) { | 462 TEST_F(WorkspaceLayoutManagerTest, SizeToWorkArea) { |
| 462 // Normal window bounds shouldn't be changed. | 463 // Normal window bounds shouldn't be changed. |
| 463 gfx::Size work_area( | 464 gfx::Size work_area( |
| 464 gfx::Screen::GetScreen()->GetPrimaryDisplay().work_area().size()); | 465 gfx::Screen::GetScreen()->GetPrimaryDisplay().work_area().size()); |
| 465 const gfx::Rect window_bounds( | 466 const gfx::Rect window_bounds( |
| 466 100, 101, work_area.width() + 1, work_area.height() + 2); | 467 100, 101, work_area.width() + 1, work_area.height() + 2); |
| 467 scoped_ptr<aura::Window> window( | 468 std::unique_ptr<aura::Window> window( |
| 468 CreateTestWindowInShellWithBounds(window_bounds)); | 469 CreateTestWindowInShellWithBounds(window_bounds)); |
| 469 EXPECT_EQ(gfx::Rect(gfx::Point(100, 101), work_area).ToString(), | 470 EXPECT_EQ(gfx::Rect(gfx::Point(100, 101), work_area).ToString(), |
| 470 window->bounds().ToString()); | 471 window->bounds().ToString()); |
| 471 | 472 |
| 472 // Directly setting the bounds triggers a slightly different code path. Verify | 473 // Directly setting the bounds triggers a slightly different code path. Verify |
| 473 // that too. | 474 // that too. |
| 474 window->SetBounds(window_bounds); | 475 window->SetBounds(window_bounds); |
| 475 EXPECT_EQ(gfx::Rect(gfx::Point(100, 101), work_area).ToString(), | 476 EXPECT_EQ(gfx::Rect(gfx::Point(100, 101), work_area).ToString(), |
| 476 window->bounds().ToString()); | 477 window->bounds().ToString()); |
| 477 } | 478 } |
| 478 | 479 |
| 479 TEST_F(WorkspaceLayoutManagerTest, NotifyFullscreenChanges) { | 480 TEST_F(WorkspaceLayoutManagerTest, NotifyFullscreenChanges) { |
| 480 TestShellObserver observer; | 481 TestShellObserver observer; |
| 481 scoped_ptr<aura::Window> window1( | 482 std::unique_ptr<aura::Window> window1( |
| 482 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 30, 40))); | 483 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 30, 40))); |
| 483 scoped_ptr<aura::Window> window2( | 484 std::unique_ptr<aura::Window> window2( |
| 484 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 30, 40))); | 485 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 30, 40))); |
| 485 wm::WindowState* window_state1 = wm::GetWindowState(window1.get()); | 486 wm::WindowState* window_state1 = wm::GetWindowState(window1.get()); |
| 486 wm::WindowState* window_state2 = wm::GetWindowState(window2.get()); | 487 wm::WindowState* window_state2 = wm::GetWindowState(window2.get()); |
| 487 window_state2->Activate(); | 488 window_state2->Activate(); |
| 488 | 489 |
| 489 const wm::WMEvent toggle_fullscreen_event(wm::WM_EVENT_TOGGLE_FULLSCREEN); | 490 const wm::WMEvent toggle_fullscreen_event(wm::WM_EVENT_TOGGLE_FULLSCREEN); |
| 490 window_state2->OnWMEvent(&toggle_fullscreen_event); | 491 window_state2->OnWMEvent(&toggle_fullscreen_event); |
| 491 EXPECT_EQ(1, observer.call_count()); | 492 EXPECT_EQ(1, observer.call_count()); |
| 492 EXPECT_TRUE(observer.is_fullscreen()); | 493 EXPECT_TRUE(observer.is_fullscreen()); |
| 493 | 494 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 529 | 530 |
| 530 private: | 531 private: |
| 531 DISALLOW_COPY_AND_ASSIGN(WorkspaceLayoutManagerSoloTest); | 532 DISALLOW_COPY_AND_ASSIGN(WorkspaceLayoutManagerSoloTest); |
| 532 }; | 533 }; |
| 533 | 534 |
| 534 } // namespace | 535 } // namespace |
| 535 | 536 |
| 536 // Tests normal->maximize->normal. | 537 // Tests normal->maximize->normal. |
| 537 TEST_F(WorkspaceLayoutManagerSoloTest, Maximize) { | 538 TEST_F(WorkspaceLayoutManagerSoloTest, Maximize) { |
| 538 gfx::Rect bounds(100, 100, 200, 200); | 539 gfx::Rect bounds(100, 100, 200, 200); |
| 539 scoped_ptr<aura::Window> window(CreateTestWindow(bounds)); | 540 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); |
| 540 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 541 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
| 541 // Maximized window fills the work area, not the whole display. | 542 // Maximized window fills the work area, not the whole display. |
| 542 EXPECT_EQ( | 543 EXPECT_EQ( |
| 543 ScreenUtil::GetMaximizedWindowBoundsInParent(window.get()).ToString(), | 544 ScreenUtil::GetMaximizedWindowBoundsInParent(window.get()).ToString(), |
| 544 window->bounds().ToString()); | 545 window->bounds().ToString()); |
| 545 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); | 546 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); |
| 546 EXPECT_EQ(bounds.ToString(), window->bounds().ToString()); | 547 EXPECT_EQ(bounds.ToString(), window->bounds().ToString()); |
| 547 } | 548 } |
| 548 | 549 |
| 549 // Tests normal->minimize->normal. | 550 // Tests normal->minimize->normal. |
| 550 TEST_F(WorkspaceLayoutManagerSoloTest, Minimize) { | 551 TEST_F(WorkspaceLayoutManagerSoloTest, Minimize) { |
| 551 gfx::Rect bounds(100, 100, 200, 200); | 552 gfx::Rect bounds(100, 100, 200, 200); |
| 552 scoped_ptr<aura::Window> window(CreateTestWindow(bounds)); | 553 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); |
| 553 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED); | 554 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED); |
| 554 // Note: Currently minimize doesn't do anything except set the state. | 555 // Note: Currently minimize doesn't do anything except set the state. |
| 555 // See crbug.com/104571. | 556 // See crbug.com/104571. |
| 556 EXPECT_EQ(bounds.ToString(), window->bounds().ToString()); | 557 EXPECT_EQ(bounds.ToString(), window->bounds().ToString()); |
| 557 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); | 558 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); |
| 558 EXPECT_EQ(bounds.ToString(), window->bounds().ToString()); | 559 EXPECT_EQ(bounds.ToString(), window->bounds().ToString()); |
| 559 } | 560 } |
| 560 | 561 |
| 561 // A WindowDelegate which sets the focus when the window | 562 // A WindowDelegate which sets the focus when the window |
| 562 // becomes visible. | 563 // becomes visible. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 588 | 589 |
| 589 DISALLOW_COPY_AND_ASSIGN(FocusDelegate); | 590 DISALLOW_COPY_AND_ASSIGN(FocusDelegate); |
| 590 }; | 591 }; |
| 591 | 592 |
| 592 // Make sure that the window's show state is correct in | 593 // Make sure that the window's show state is correct in |
| 593 // |WindowDelegate::OnWindowTargetVisibilityChanged|, and setting | 594 // |WindowDelegate::OnWindowTargetVisibilityChanged|, and setting |
| 594 // focus in this callback doesn't cause DCHECK error. See | 595 // focus in this callback doesn't cause DCHECK error. See |
| 595 // crbug.com/168383. | 596 // crbug.com/168383. |
| 596 TEST_F(WorkspaceLayoutManagerSoloTest, FocusDuringUnminimize) { | 597 TEST_F(WorkspaceLayoutManagerSoloTest, FocusDuringUnminimize) { |
| 597 FocusDelegate delegate; | 598 FocusDelegate delegate; |
| 598 scoped_ptr<aura::Window> window(CreateTestWindowInShellWithDelegate( | 599 std::unique_ptr<aura::Window> window(CreateTestWindowInShellWithDelegate( |
| 599 &delegate, 0, gfx::Rect(100, 100, 100, 100))); | 600 &delegate, 0, gfx::Rect(100, 100, 100, 100))); |
| 600 delegate.set_window(window.get()); | 601 delegate.set_window(window.get()); |
| 601 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED); | 602 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED); |
| 602 EXPECT_FALSE(window->IsVisible()); | 603 EXPECT_FALSE(window->IsVisible()); |
| 603 EXPECT_EQ(ui::SHOW_STATE_MINIMIZED, delegate.GetShowStateAndReset()); | 604 EXPECT_EQ(ui::SHOW_STATE_MINIMIZED, delegate.GetShowStateAndReset()); |
| 604 window->Show(); | 605 window->Show(); |
| 605 EXPECT_TRUE(window->IsVisible()); | 606 EXPECT_TRUE(window->IsVisible()); |
| 606 EXPECT_EQ(ui::SHOW_STATE_NORMAL, delegate.GetShowStateAndReset()); | 607 EXPECT_EQ(ui::SHOW_STATE_NORMAL, delegate.GetShowStateAndReset()); |
| 607 } | 608 } |
| 608 | 609 |
| 609 // Tests maximized window size during root window resize. | 610 // Tests maximized window size during root window resize. |
| 610 #if defined(OS_WIN) && !defined(USE_ASH) | 611 #if defined(OS_WIN) && !defined(USE_ASH) |
| 611 // TODO(msw): Broken on Windows. http://crbug.com/584038 | 612 // TODO(msw): Broken on Windows. http://crbug.com/584038 |
| 612 #define MAYBE_MaximizeRootWindowResize DISABLED_MaximizeRootWindowResize | 613 #define MAYBE_MaximizeRootWindowResize DISABLED_MaximizeRootWindowResize |
| 613 #else | 614 #else |
| 614 #define MAYBE_MaximizeRootWindowResize MaximizeRootWindowResize | 615 #define MAYBE_MaximizeRootWindowResize MaximizeRootWindowResize |
| 615 #endif | 616 #endif |
| 616 TEST_F(WorkspaceLayoutManagerSoloTest, MAYBE_MaximizeRootWindowResize) { | 617 TEST_F(WorkspaceLayoutManagerSoloTest, MAYBE_MaximizeRootWindowResize) { |
| 617 gfx::Rect bounds(100, 100, 200, 200); | 618 gfx::Rect bounds(100, 100, 200, 200); |
| 618 scoped_ptr<aura::Window> window(CreateTestWindow(bounds)); | 619 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); |
| 619 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 620 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
| 620 gfx::Rect initial_work_area_bounds = | 621 gfx::Rect initial_work_area_bounds = |
| 621 ScreenUtil::GetMaximizedWindowBoundsInParent(window.get()); | 622 ScreenUtil::GetMaximizedWindowBoundsInParent(window.get()); |
| 622 EXPECT_EQ(initial_work_area_bounds.ToString(), window->bounds().ToString()); | 623 EXPECT_EQ(initial_work_area_bounds.ToString(), window->bounds().ToString()); |
| 623 // Enlarge the root window. We should still match the work area size. | 624 // Enlarge the root window. We should still match the work area size. |
| 624 UpdateDisplay("900x700"); | 625 UpdateDisplay("900x700"); |
| 625 EXPECT_EQ( | 626 EXPECT_EQ( |
| 626 ScreenUtil::GetMaximizedWindowBoundsInParent(window.get()).ToString(), | 627 ScreenUtil::GetMaximizedWindowBoundsInParent(window.get()).ToString(), |
| 627 window->bounds().ToString()); | 628 window->bounds().ToString()); |
| 628 EXPECT_NE( | 629 EXPECT_NE( |
| 629 initial_work_area_bounds.ToString(), | 630 initial_work_area_bounds.ToString(), |
| 630 ScreenUtil::GetMaximizedWindowBoundsInParent(window.get()).ToString()); | 631 ScreenUtil::GetMaximizedWindowBoundsInParent(window.get()).ToString()); |
| 631 } | 632 } |
| 632 | 633 |
| 633 // Tests normal->fullscreen->normal. | 634 // Tests normal->fullscreen->normal. |
| 634 TEST_F(WorkspaceLayoutManagerSoloTest, Fullscreen) { | 635 TEST_F(WorkspaceLayoutManagerSoloTest, Fullscreen) { |
| 635 gfx::Rect bounds(100, 100, 200, 200); | 636 gfx::Rect bounds(100, 100, 200, 200); |
| 636 scoped_ptr<aura::Window> window(CreateTestWindow(bounds)); | 637 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); |
| 637 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); | 638 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); |
| 638 // Fullscreen window fills the whole display. | 639 // Fullscreen window fills the whole display. |
| 639 EXPECT_EQ(gfx::Screen::GetScreen() | 640 EXPECT_EQ(gfx::Screen::GetScreen() |
| 640 ->GetDisplayNearestWindow(window.get()) | 641 ->GetDisplayNearestWindow(window.get()) |
| 641 .bounds() | 642 .bounds() |
| 642 .ToString(), | 643 .ToString(), |
| 643 window->bounds().ToString()); | 644 window->bounds().ToString()); |
| 644 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); | 645 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); |
| 645 EXPECT_EQ(bounds.ToString(), window->bounds().ToString()); | 646 EXPECT_EQ(bounds.ToString(), window->bounds().ToString()); |
| 646 } | 647 } |
| 647 | 648 |
| 648 // Tests that fullscreen window causes always_on_top windows to stack below. | 649 // Tests that fullscreen window causes always_on_top windows to stack below. |
| 649 TEST_F(WorkspaceLayoutManagerSoloTest, FullscreenSuspendsAlwaysOnTop) { | 650 TEST_F(WorkspaceLayoutManagerSoloTest, FullscreenSuspendsAlwaysOnTop) { |
| 650 gfx::Rect bounds(100, 100, 200, 200); | 651 gfx::Rect bounds(100, 100, 200, 200); |
| 651 scoped_ptr<aura::Window> fullscreen_window(CreateTestWindow(bounds)); | 652 std::unique_ptr<aura::Window> fullscreen_window(CreateTestWindow(bounds)); |
| 652 scoped_ptr<aura::Window> always_on_top_window1(CreateTestWindow(bounds)); | 653 std::unique_ptr<aura::Window> always_on_top_window1(CreateTestWindow(bounds)); |
| 653 scoped_ptr<aura::Window> always_on_top_window2(CreateTestWindow(bounds)); | 654 std::unique_ptr<aura::Window> always_on_top_window2(CreateTestWindow(bounds)); |
| 654 always_on_top_window1->SetProperty(aura::client::kAlwaysOnTopKey, true); | 655 always_on_top_window1->SetProperty(aura::client::kAlwaysOnTopKey, true); |
| 655 always_on_top_window2->SetProperty(aura::client::kAlwaysOnTopKey, true); | 656 always_on_top_window2->SetProperty(aura::client::kAlwaysOnTopKey, true); |
| 656 // Making a window fullscreen temporarily suspends always on top state. | 657 // Making a window fullscreen temporarily suspends always on top state. |
| 657 fullscreen_window->SetProperty(aura::client::kShowStateKey, | 658 fullscreen_window->SetProperty(aura::client::kShowStateKey, |
| 658 ui::SHOW_STATE_FULLSCREEN); | 659 ui::SHOW_STATE_FULLSCREEN); |
| 659 EXPECT_FALSE( | 660 EXPECT_FALSE( |
| 660 always_on_top_window1->GetProperty(aura::client::kAlwaysOnTopKey)); | 661 always_on_top_window1->GetProperty(aura::client::kAlwaysOnTopKey)); |
| 661 EXPECT_FALSE( | 662 EXPECT_FALSE( |
| 662 always_on_top_window2->GetProperty(aura::client::kAlwaysOnTopKey)); | 663 always_on_top_window2->GetProperty(aura::client::kAlwaysOnTopKey)); |
| 663 EXPECT_NE(nullptr, GetRootWindowController(fullscreen_window->GetRootWindow()) | 664 EXPECT_NE(nullptr, GetRootWindowController(fullscreen_window->GetRootWindow()) |
| 664 ->GetWindowForFullscreenMode()); | 665 ->GetWindowForFullscreenMode()); |
| 665 // Making fullscreen window normal restores always on top windows. | 666 // Making fullscreen window normal restores always on top windows. |
| 666 fullscreen_window->SetProperty(aura::client::kShowStateKey, | 667 fullscreen_window->SetProperty(aura::client::kShowStateKey, |
| 667 ui::SHOW_STATE_NORMAL); | 668 ui::SHOW_STATE_NORMAL); |
| 668 EXPECT_TRUE( | 669 EXPECT_TRUE( |
| 669 always_on_top_window1->GetProperty(aura::client::kAlwaysOnTopKey)); | 670 always_on_top_window1->GetProperty(aura::client::kAlwaysOnTopKey)); |
| 670 EXPECT_TRUE( | 671 EXPECT_TRUE( |
| 671 always_on_top_window2->GetProperty(aura::client::kAlwaysOnTopKey)); | 672 always_on_top_window2->GetProperty(aura::client::kAlwaysOnTopKey)); |
| 672 EXPECT_EQ(nullptr, GetRootWindowController(fullscreen_window->GetRootWindow()) | 673 EXPECT_EQ(nullptr, GetRootWindowController(fullscreen_window->GetRootWindow()) |
| 673 ->GetWindowForFullscreenMode()); | 674 ->GetWindowForFullscreenMode()); |
| 674 } | 675 } |
| 675 | 676 |
| 676 // Tests fullscreen window size during root window resize. | 677 // Tests fullscreen window size during root window resize. |
| 677 TEST_F(WorkspaceLayoutManagerSoloTest, FullscreenRootWindowResize) { | 678 TEST_F(WorkspaceLayoutManagerSoloTest, FullscreenRootWindowResize) { |
| 678 gfx::Rect bounds(100, 100, 200, 200); | 679 gfx::Rect bounds(100, 100, 200, 200); |
| 679 scoped_ptr<aura::Window> window(CreateTestWindow(bounds)); | 680 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); |
| 680 // Fullscreen window fills the whole display. | 681 // Fullscreen window fills the whole display. |
| 681 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); | 682 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); |
| 682 EXPECT_EQ(gfx::Screen::GetScreen() | 683 EXPECT_EQ(gfx::Screen::GetScreen() |
| 683 ->GetDisplayNearestWindow(window.get()) | 684 ->GetDisplayNearestWindow(window.get()) |
| 684 .bounds() | 685 .bounds() |
| 685 .ToString(), | 686 .ToString(), |
| 686 window->bounds().ToString()); | 687 window->bounds().ToString()); |
| 687 // Enlarge the root window. We should still match the display size. | 688 // Enlarge the root window. We should still match the display size. |
| 688 UpdateDisplay("800x600"); | 689 UpdateDisplay("800x600"); |
| 689 EXPECT_EQ(gfx::Screen::GetScreen() | 690 EXPECT_EQ(gfx::Screen::GetScreen() |
| 690 ->GetDisplayNearestWindow(window.get()) | 691 ->GetDisplayNearestWindow(window.get()) |
| 691 .bounds() | 692 .bounds() |
| 692 .ToString(), | 693 .ToString(), |
| 693 window->bounds().ToString()); | 694 window->bounds().ToString()); |
| 694 } | 695 } |
| 695 | 696 |
| 696 // Tests that when the screen gets smaller the windows aren't bigger than | 697 // Tests that when the screen gets smaller the windows aren't bigger than |
| 697 // the screen. | 698 // the screen. |
| 698 TEST_F(WorkspaceLayoutManagerSoloTest, RootWindowResizeShrinksWindows) { | 699 TEST_F(WorkspaceLayoutManagerSoloTest, RootWindowResizeShrinksWindows) { |
| 699 scoped_ptr<aura::Window> window( | 700 std::unique_ptr<aura::Window> window( |
| 700 CreateTestWindow(gfx::Rect(10, 20, 500, 400))); | 701 CreateTestWindow(gfx::Rect(10, 20, 500, 400))); |
| 701 gfx::Rect work_area = gfx::Screen::GetScreen() | 702 gfx::Rect work_area = gfx::Screen::GetScreen() |
| 702 ->GetDisplayNearestWindow(window.get()) | 703 ->GetDisplayNearestWindow(window.get()) |
| 703 .work_area(); | 704 .work_area(); |
| 704 // Invariant: Window is smaller than work area. | 705 // Invariant: Window is smaller than work area. |
| 705 EXPECT_LE(window->bounds().width(), work_area.width()); | 706 EXPECT_LE(window->bounds().width(), work_area.width()); |
| 706 EXPECT_LE(window->bounds().height(), work_area.height()); | 707 EXPECT_LE(window->bounds().height(), work_area.height()); |
| 707 | 708 |
| 708 // Make the root window narrower than our window. | 709 // Make the root window narrower than our window. |
| 709 UpdateDisplay("300x400"); | 710 UpdateDisplay("300x400"); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 724 // Enlarging the root window does not change the window bounds. | 725 // Enlarging the root window does not change the window bounds. |
| 725 gfx::Rect old_bounds = window->bounds(); | 726 gfx::Rect old_bounds = window->bounds(); |
| 726 UpdateDisplay("800x600"); | 727 UpdateDisplay("800x600"); |
| 727 EXPECT_EQ(old_bounds.width(), window->bounds().width()); | 728 EXPECT_EQ(old_bounds.width(), window->bounds().width()); |
| 728 EXPECT_EQ(old_bounds.height(), window->bounds().height()); | 729 EXPECT_EQ(old_bounds.height(), window->bounds().height()); |
| 729 } | 730 } |
| 730 | 731 |
| 731 // Verifies maximizing sets the restore bounds, and restoring | 732 // Verifies maximizing sets the restore bounds, and restoring |
| 732 // restores the bounds. | 733 // restores the bounds. |
| 733 TEST_F(WorkspaceLayoutManagerSoloTest, MaximizeSetsRestoreBounds) { | 734 TEST_F(WorkspaceLayoutManagerSoloTest, MaximizeSetsRestoreBounds) { |
| 734 scoped_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(10, 20, 30, 40))); | 735 std::unique_ptr<aura::Window> window( |
| 736 CreateTestWindow(gfx::Rect(10, 20, 30, 40))); |
| 735 wm::WindowState* window_state = wm::GetWindowState(window.get()); | 737 wm::WindowState* window_state = wm::GetWindowState(window.get()); |
| 736 | 738 |
| 737 // Maximize it, which will keep the previous restore bounds. | 739 // Maximize it, which will keep the previous restore bounds. |
| 738 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 740 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
| 739 EXPECT_EQ("10,20 30x40", window_state->GetRestoreBoundsInParent().ToString()); | 741 EXPECT_EQ("10,20 30x40", window_state->GetRestoreBoundsInParent().ToString()); |
| 740 | 742 |
| 741 // Restore it, which should restore bounds and reset restore bounds. | 743 // Restore it, which should restore bounds and reset restore bounds. |
| 742 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); | 744 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); |
| 743 EXPECT_EQ("10,20 30x40", window->bounds().ToString()); | 745 EXPECT_EQ("10,20 30x40", window->bounds().ToString()); |
| 744 EXPECT_FALSE(window_state->HasRestoreBounds()); | 746 EXPECT_FALSE(window_state->HasRestoreBounds()); |
| 745 } | 747 } |
| 746 | 748 |
| 747 // Verifies maximizing keeps the restore bounds if set. | 749 // Verifies maximizing keeps the restore bounds if set. |
| 748 TEST_F(WorkspaceLayoutManagerSoloTest, MaximizeResetsRestoreBounds) { | 750 TEST_F(WorkspaceLayoutManagerSoloTest, MaximizeResetsRestoreBounds) { |
| 749 scoped_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(1, 2, 3, 4))); | 751 std::unique_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(1, 2, 3, 4))); |
| 750 | 752 |
| 751 wm::WindowState* window_state = wm::GetWindowState(window.get()); | 753 wm::WindowState* window_state = wm::GetWindowState(window.get()); |
| 752 window_state->SetRestoreBoundsInParent(gfx::Rect(10, 11, 12, 13)); | 754 window_state->SetRestoreBoundsInParent(gfx::Rect(10, 11, 12, 13)); |
| 753 | 755 |
| 754 // Maximize it, which will keep the previous restore bounds. | 756 // Maximize it, which will keep the previous restore bounds. |
| 755 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 757 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
| 756 EXPECT_EQ("10,11 12x13", window_state->GetRestoreBoundsInParent().ToString()); | 758 EXPECT_EQ("10,11 12x13", window_state->GetRestoreBoundsInParent().ToString()); |
| 757 } | 759 } |
| 758 | 760 |
| 759 // Verifies that the restore bounds do not get reset when restoring to a | 761 // Verifies that the restore bounds do not get reset when restoring to a |
| 760 // maximzied state from a minimized state. | 762 // maximzied state from a minimized state. |
| 761 TEST_F(WorkspaceLayoutManagerSoloTest, | 763 TEST_F(WorkspaceLayoutManagerSoloTest, |
| 762 BoundsAfterRestoringToMaximizeFromMinimize) { | 764 BoundsAfterRestoringToMaximizeFromMinimize) { |
| 763 scoped_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(1, 2, 3, 4))); | 765 std::unique_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(1, 2, 3, 4))); |
| 764 gfx::Rect bounds(10, 15, 25, 35); | 766 gfx::Rect bounds(10, 15, 25, 35); |
| 765 window->SetBounds(bounds); | 767 window->SetBounds(bounds); |
| 766 | 768 |
| 767 wm::WindowState* window_state = wm::GetWindowState(window.get()); | 769 wm::WindowState* window_state = wm::GetWindowState(window.get()); |
| 768 // Maximize it, which should reset restore bounds. | 770 // Maximize it, which should reset restore bounds. |
| 769 window_state->Maximize(); | 771 window_state->Maximize(); |
| 770 EXPECT_EQ(bounds.ToString(), | 772 EXPECT_EQ(bounds.ToString(), |
| 771 window_state->GetRestoreBoundsInParent().ToString()); | 773 window_state->GetRestoreBoundsInParent().ToString()); |
| 772 // Minimize the window. The restore bounds should not change. | 774 // Minimize the window. The restore bounds should not change. |
| 773 window_state->Minimize(); | 775 window_state->Minimize(); |
| 774 EXPECT_EQ(bounds.ToString(), | 776 EXPECT_EQ(bounds.ToString(), |
| 775 window_state->GetRestoreBoundsInParent().ToString()); | 777 window_state->GetRestoreBoundsInParent().ToString()); |
| 776 | 778 |
| 777 // Show the window again. The window should be maximized, and the restore | 779 // Show the window again. The window should be maximized, and the restore |
| 778 // bounds should not change. | 780 // bounds should not change. |
| 779 window->Show(); | 781 window->Show(); |
| 780 EXPECT_EQ(bounds.ToString(), | 782 EXPECT_EQ(bounds.ToString(), |
| 781 window_state->GetRestoreBoundsInParent().ToString()); | 783 window_state->GetRestoreBoundsInParent().ToString()); |
| 782 EXPECT_TRUE(window_state->IsMaximized()); | 784 EXPECT_TRUE(window_state->IsMaximized()); |
| 783 | 785 |
| 784 window_state->Restore(); | 786 window_state->Restore(); |
| 785 EXPECT_EQ(bounds.ToString(), window->bounds().ToString()); | 787 EXPECT_EQ(bounds.ToString(), window->bounds().ToString()); |
| 786 } | 788 } |
| 787 | 789 |
| 788 // Verify if the window is not resized during screen lock. See: crbug.com/173127 | 790 // Verify if the window is not resized during screen lock. See: crbug.com/173127 |
| 789 TEST_F(WorkspaceLayoutManagerSoloTest, NotResizeWhenScreenIsLocked) { | 791 TEST_F(WorkspaceLayoutManagerSoloTest, NotResizeWhenScreenIsLocked) { |
| 790 SetCanLockScreen(true); | 792 SetCanLockScreen(true); |
| 791 scoped_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(1, 2, 3, 4))); | 793 std::unique_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(1, 2, 3, 4))); |
| 792 // window with AlwaysOnTop will be managed by BaseLayoutManager. | 794 // window with AlwaysOnTop will be managed by BaseLayoutManager. |
| 793 window->SetProperty(aura::client::kAlwaysOnTopKey, true); | 795 window->SetProperty(aura::client::kAlwaysOnTopKey, true); |
| 794 window->Show(); | 796 window->Show(); |
| 795 | 797 |
| 796 ShelfLayoutManager* shelf_layout_manager = | 798 ShelfLayoutManager* shelf_layout_manager = |
| 797 Shelf::ForWindow(window.get())->shelf_layout_manager(); | 799 Shelf::ForWindow(window.get())->shelf_layout_manager(); |
| 798 shelf_layout_manager->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 800 shelf_layout_manager->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
| 799 | 801 |
| 800 window->SetBounds(ScreenUtil::GetMaximizedWindowBoundsInParent(window.get())); | 802 window->SetBounds(ScreenUtil::GetMaximizedWindowBoundsInParent(window.get())); |
| 801 gfx::Rect window_bounds = window->bounds(); | 803 gfx::Rect window_bounds = window->bounds(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 833 kShellWindowId_DefaultContainer); | 835 kShellWindowId_DefaultContainer); |
| 834 } | 836 } |
| 835 | 837 |
| 836 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { | 838 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { |
| 837 aura::Window* window = CreateTestWindowInShellWithBounds(bounds); | 839 aura::Window* window = CreateTestWindowInShellWithBounds(bounds); |
| 838 return window; | 840 return window; |
| 839 } | 841 } |
| 840 | 842 |
| 841 // Turn the top window back drop on / off. | 843 // Turn the top window back drop on / off. |
| 842 void ShowTopWindowBackdrop(bool show) { | 844 void ShowTopWindowBackdrop(bool show) { |
| 843 scoped_ptr<ash::WorkspaceLayoutManagerDelegate> backdrop; | 845 std::unique_ptr<ash::WorkspaceLayoutManagerDelegate> backdrop; |
| 844 if (show) { | 846 if (show) { |
| 845 backdrop.reset(new ash::WorkspaceBackdropDelegate(default_container_)); | 847 backdrop.reset(new ash::WorkspaceBackdropDelegate(default_container_)); |
| 846 } | 848 } |
| 847 (static_cast<WorkspaceLayoutManager*>(default_container_->layout_manager())) | 849 (static_cast<WorkspaceLayoutManager*>(default_container_->layout_manager())) |
| 848 ->SetMaximizeBackdropDelegate(std::move(backdrop)); | 850 ->SetMaximizeBackdropDelegate(std::move(backdrop)); |
| 849 // Closing and / or opening can be a delayed operation. | 851 // Closing and / or opening can be a delayed operation. |
| 850 base::MessageLoop::current()->RunUntilIdle(); | 852 base::MessageLoop::current()->RunUntilIdle(); |
| 851 } | 853 } |
| 852 | 854 |
| 853 // Return the default container. | 855 // Return the default container. |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 900 TEST_F(WorkspaceLayoutManagerBackdropTest, BasicBackdropTests) { | 902 TEST_F(WorkspaceLayoutManagerBackdropTest, BasicBackdropTests) { |
| 901 // Create a backdrop and see that there is one window (the backdrop) and | 903 // Create a backdrop and see that there is one window (the backdrop) and |
| 902 // that the size is the same as the default container as well as that it is | 904 // that the size is the same as the default container as well as that it is |
| 903 // not visible. | 905 // not visible. |
| 904 ShowTopWindowBackdrop(true); | 906 ShowTopWindowBackdrop(true); |
| 905 ASSERT_EQ(1U, default_container()->children().size()); | 907 ASSERT_EQ(1U, default_container()->children().size()); |
| 906 EXPECT_FALSE(default_container()->children()[0]->IsVisible()); | 908 EXPECT_FALSE(default_container()->children()[0]->IsVisible()); |
| 907 | 909 |
| 908 { | 910 { |
| 909 // Add a window and make sure that the backdrop is the second child. | 911 // Add a window and make sure that the backdrop is the second child. |
| 910 scoped_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(1, 2, 3, 4))); | 912 std::unique_ptr<aura::Window> window( |
| 913 CreateTestWindow(gfx::Rect(1, 2, 3, 4))); |
| 911 window->Show(); | 914 window->Show(); |
| 912 ASSERT_EQ(2U, default_container()->children().size()); | 915 ASSERT_EQ(2U, default_container()->children().size()); |
| 913 EXPECT_TRUE(default_container()->children()[0]->IsVisible()); | 916 EXPECT_TRUE(default_container()->children()[0]->IsVisible()); |
| 914 EXPECT_TRUE(default_container()->children()[1]->IsVisible()); | 917 EXPECT_TRUE(default_container()->children()[1]->IsVisible()); |
| 915 EXPECT_EQ(window.get(), default_container()->children()[1]); | 918 EXPECT_EQ(window.get(), default_container()->children()[1]); |
| 916 EXPECT_EQ(default_container()->bounds().ToString(), | 919 EXPECT_EQ(default_container()->bounds().ToString(), |
| 917 default_container()->children()[0]->bounds().ToString()); | 920 default_container()->children()[0]->bounds().ToString()); |
| 918 } | 921 } |
| 919 | 922 |
| 920 // With the window gone the backdrop should be invisible again. | 923 // With the window gone the backdrop should be invisible again. |
| 921 ASSERT_EQ(1U, default_container()->children().size()); | 924 ASSERT_EQ(1U, default_container()->children().size()); |
| 922 EXPECT_FALSE(default_container()->children()[0]->IsVisible()); | 925 EXPECT_FALSE(default_container()->children()[0]->IsVisible()); |
| 923 | 926 |
| 924 // Destroying the Backdrop should empty the container. | 927 // Destroying the Backdrop should empty the container. |
| 925 ShowTopWindowBackdrop(false); | 928 ShowTopWindowBackdrop(false); |
| 926 ASSERT_EQ(0U, default_container()->children().size()); | 929 ASSERT_EQ(0U, default_container()->children().size()); |
| 927 } | 930 } |
| 928 | 931 |
| 929 // Verify that the backdrop gets properly created and placed. | 932 // Verify that the backdrop gets properly created and placed. |
| 930 TEST_F(WorkspaceLayoutManagerBackdropTest, VerifyBackdropAndItsStacking) { | 933 TEST_F(WorkspaceLayoutManagerBackdropTest, VerifyBackdropAndItsStacking) { |
| 931 scoped_ptr<aura::Window> window1(CreateTestWindow(gfx::Rect(1, 2, 3, 4))); | 934 std::unique_ptr<aura::Window> window1( |
| 935 CreateTestWindow(gfx::Rect(1, 2, 3, 4))); |
| 932 window1->Show(); | 936 window1->Show(); |
| 933 | 937 |
| 934 // Get the default container and check that only a single window is in there. | 938 // Get the default container and check that only a single window is in there. |
| 935 ASSERT_EQ(1U, default_container()->children().size()); | 939 ASSERT_EQ(1U, default_container()->children().size()); |
| 936 EXPECT_EQ(window1.get(), default_container()->children()[0]); | 940 EXPECT_EQ(window1.get(), default_container()->children()[0]); |
| 937 EXPECT_EQ("A", | 941 EXPECT_EQ("A", |
| 938 GetWindowOrderAsString(nullptr, window1.get(), nullptr, nullptr)); | 942 GetWindowOrderAsString(nullptr, window1.get(), nullptr, nullptr)); |
| 939 | 943 |
| 940 // Create 2 more windows and check that they are also in the container. | 944 // Create 2 more windows and check that they are also in the container. |
| 941 scoped_ptr<aura::Window> window2(CreateTestWindow(gfx::Rect(10, 2, 3, 4))); | 945 std::unique_ptr<aura::Window> window2( |
| 942 scoped_ptr<aura::Window> window3(CreateTestWindow(gfx::Rect(20, 2, 3, 4))); | 946 CreateTestWindow(gfx::Rect(10, 2, 3, 4))); |
| 947 std::unique_ptr<aura::Window> window3( |
| 948 CreateTestWindow(gfx::Rect(20, 2, 3, 4))); |
| 943 window2->Show(); | 949 window2->Show(); |
| 944 window3->Show(); | 950 window3->Show(); |
| 945 | 951 |
| 946 aura::Window* backdrop = nullptr; | 952 aura::Window* backdrop = nullptr; |
| 947 EXPECT_EQ("C,B,A", | 953 EXPECT_EQ("C,B,A", |
| 948 GetWindowOrderAsString(backdrop, window1.get(), window2.get(), | 954 GetWindowOrderAsString(backdrop, window1.get(), window2.get(), |
| 949 window3.get())); | 955 window3.get())); |
| 950 | 956 |
| 951 // Turn on the backdrop mode and check that the window shows up where it | 957 // Turn on the backdrop mode and check that the window shows up where it |
| 952 // should be (second highest number). | 958 // should be (second highest number). |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1061 gfx::Rect work_area( | 1067 gfx::Rect work_area( |
| 1062 gfx::Screen::GetScreen()->GetPrimaryDisplay().work_area()); | 1068 gfx::Screen::GetScreen()->GetPrimaryDisplay().work_area()); |
| 1063 gfx::Rect keyboard_bounds(work_area.x(), | 1069 gfx::Rect keyboard_bounds(work_area.x(), |
| 1064 work_area.y() + work_area.height() / 2, | 1070 work_area.y() + work_area.height() / 2, |
| 1065 work_area.width(), | 1071 work_area.width(), |
| 1066 work_area.height() / 2); | 1072 work_area.height() / 2); |
| 1067 | 1073 |
| 1068 SetKeyboardBounds(keyboard_bounds); | 1074 SetKeyboardBounds(keyboard_bounds); |
| 1069 | 1075 |
| 1070 aura::test::TestWindowDelegate delegate1; | 1076 aura::test::TestWindowDelegate delegate1; |
| 1071 scoped_ptr<aura::Window> parent_window(CreateTestWindowInShellWithDelegate( | 1077 std::unique_ptr<aura::Window> parent_window( |
| 1072 &delegate1, -1, work_area)); | 1078 CreateTestWindowInShellWithDelegate(&delegate1, -1, work_area)); |
| 1073 aura::test::TestWindowDelegate delegate2; | 1079 aura::test::TestWindowDelegate delegate2; |
| 1074 scoped_ptr<aura::Window> window(CreateTestWindowInShellWithDelegate( | 1080 std::unique_ptr<aura::Window> window( |
| 1075 &delegate2, -1, work_area)); | 1081 CreateTestWindowInShellWithDelegate(&delegate2, -1, work_area)); |
| 1076 parent_window->AddChild(window.get()); | 1082 parent_window->AddChild(window.get()); |
| 1077 | 1083 |
| 1078 wm::ActivateWindow(window.get()); | 1084 wm::ActivateWindow(window.get()); |
| 1079 | 1085 |
| 1080 int available_height = | 1086 int available_height = |
| 1081 gfx::Screen::GetScreen()->GetPrimaryDisplay().bounds().height() - | 1087 gfx::Screen::GetScreen()->GetPrimaryDisplay().bounds().height() - |
| 1082 keyboard_bounds.height(); | 1088 keyboard_bounds.height(); |
| 1083 | 1089 |
| 1084 gfx::Rect initial_window_bounds(50, 50, 100, 500); | 1090 gfx::Rect initial_window_bounds(50, 50, 100, 500); |
| 1085 parent_window->SetBounds(initial_window_bounds); | 1091 parent_window->SetBounds(initial_window_bounds); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1097 gfx::Rect work_area( | 1103 gfx::Rect work_area( |
| 1098 gfx::Screen::GetScreen()->GetPrimaryDisplay().work_area()); | 1104 gfx::Screen::GetScreen()->GetPrimaryDisplay().work_area()); |
| 1099 gfx::Rect keyboard_bounds(work_area.x(), | 1105 gfx::Rect keyboard_bounds(work_area.x(), |
| 1100 work_area.y() + work_area.height() / 2, | 1106 work_area.y() + work_area.height() / 2, |
| 1101 work_area.width(), | 1107 work_area.width(), |
| 1102 work_area.height() / 2); | 1108 work_area.height() / 2); |
| 1103 | 1109 |
| 1104 SetKeyboardBounds(keyboard_bounds); | 1110 SetKeyboardBounds(keyboard_bounds); |
| 1105 | 1111 |
| 1106 aura::test::TestWindowDelegate delegate; | 1112 aura::test::TestWindowDelegate delegate; |
| 1107 scoped_ptr<aura::Window> window(CreateTestWindowInShellWithDelegate( | 1113 std::unique_ptr<aura::Window> window( |
| 1108 &delegate, -1, work_area)); | 1114 CreateTestWindowInShellWithDelegate(&delegate, -1, work_area)); |
| 1109 | 1115 |
| 1110 int available_height = | 1116 int available_height = |
| 1111 gfx::Screen::GetScreen()->GetPrimaryDisplay().bounds().height() - | 1117 gfx::Screen::GetScreen()->GetPrimaryDisplay().bounds().height() - |
| 1112 keyboard_bounds.height(); | 1118 keyboard_bounds.height(); |
| 1113 | 1119 |
| 1114 wm::ActivateWindow(window.get()); | 1120 wm::ActivateWindow(window.get()); |
| 1115 | 1121 |
| 1116 EXPECT_EQ(gfx::Rect(work_area).ToString(), window->bounds().ToString()); | 1122 EXPECT_EQ(gfx::Rect(work_area).ToString(), window->bounds().ToString()); |
| 1117 ShowKeyboard(); | 1123 ShowKeyboard(); |
| 1118 EXPECT_EQ(gfx::Rect(work_area.origin(), | 1124 EXPECT_EQ(gfx::Rect(work_area.origin(), |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1140 EXPECT_EQ(gfx::Rect(50, | 1146 EXPECT_EQ(gfx::Rect(50, |
| 1141 keyboard_bounds.y() - keyboard_bounds.height()/2, | 1147 keyboard_bounds.y() - keyboard_bounds.height()/2, |
| 1142 occluded_window_bounds.width(), | 1148 occluded_window_bounds.width(), |
| 1143 occluded_window_bounds.height()).ToString(), | 1149 occluded_window_bounds.height()).ToString(), |
| 1144 window->bounds().ToString()); | 1150 window->bounds().ToString()); |
| 1145 HideKeyboard(); | 1151 HideKeyboard(); |
| 1146 EXPECT_EQ(occluded_window_bounds.ToString(), window->bounds().ToString()); | 1152 EXPECT_EQ(occluded_window_bounds.ToString(), window->bounds().ToString()); |
| 1147 } | 1153 } |
| 1148 | 1154 |
| 1149 } // namespace ash | 1155 } // namespace ash |
| OLD | NEW |