| 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/root_window_controller.h" | 5 #include "ash/root_window_controller.h" |
| 6 | 6 |
| 7 #include "ash/session_state_delegate.h" | 7 #include "ash/session_state_delegate.h" |
| 8 #include "ash/shelf/shelf_layout_manager.h" | 8 #include "ash/shelf/shelf_layout_manager.h" |
| 9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
| 10 #include "ash/shell_window_ids.h" | 10 #include "ash/shell_window_ids.h" |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 aura::Window* GetModalContainer(aura::Window* root_window) { | 120 aura::Window* GetModalContainer(aura::Window* root_window) { |
| 121 return Shell::GetContainer( | 121 return Shell::GetContainer( |
| 122 root_window, | 122 root_window, |
| 123 ash::internal::kShellWindowId_SystemModalContainer); | 123 ash::internal::kShellWindowId_SystemModalContainer); |
| 124 } | 124 } |
| 125 }; | 125 }; |
| 126 | 126 |
| 127 TEST_F(RootWindowControllerTest, MoveWindows_Basic) { | 127 TEST_F(RootWindowControllerTest, MoveWindows_Basic) { |
| 128 if (!SupportsMultipleDisplays()) | 128 if (!SupportsMultipleDisplays()) |
| 129 return; | 129 return; |
| 130 | 130 // Windows origin should be doubled when moved to the 1st display. |
| 131 UpdateDisplay("600x600,500x500"); | 131 UpdateDisplay("600x600,300x300"); |
| 132 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 132 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 133 internal::RootWindowController* controller = | 133 internal::RootWindowController* controller = |
| 134 Shell::GetPrimaryRootWindowController(); | 134 Shell::GetPrimaryRootWindowController(); |
| 135 internal::ShelfLayoutManager* shelf_layout_manager = | 135 internal::ShelfLayoutManager* shelf_layout_manager = |
| 136 controller->GetShelfLayoutManager(); | 136 controller->GetShelfLayoutManager(); |
| 137 shelf_layout_manager->SetAutoHideBehavior( | 137 shelf_layout_manager->SetAutoHideBehavior( |
| 138 ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 138 ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
| 139 | 139 |
| 140 views::Widget* normal = CreateTestWidget(gfx::Rect(650, 10, 100, 100)); | 140 views::Widget* normal = CreateTestWidget(gfx::Rect(650, 10, 100, 100)); |
| 141 EXPECT_EQ(root_windows[1], normal->GetNativeView()->GetRootWindow()); | 141 EXPECT_EQ(root_windows[1], normal->GetNativeView()->GetRootWindow()); |
| 142 EXPECT_EQ("650,10 100x100", normal->GetWindowBoundsInScreen().ToString()); | 142 EXPECT_EQ("650,10 100x100", normal->GetWindowBoundsInScreen().ToString()); |
| 143 EXPECT_EQ("50,10 100x100", | 143 EXPECT_EQ("50,10 100x100", |
| 144 normal->GetNativeView()->GetBoundsInRootWindow().ToString()); | 144 normal->GetNativeView()->GetBoundsInRootWindow().ToString()); |
| 145 | 145 |
| 146 views::Widget* maximized = CreateTestWidget(gfx::Rect(700, 10, 100, 100)); | 146 views::Widget* maximized = CreateTestWidget(gfx::Rect(700, 10, 100, 100)); |
| 147 maximized->Maximize(); | 147 maximized->Maximize(); |
| 148 EXPECT_EQ(root_windows[1], maximized->GetNativeView()->GetRootWindow()); | 148 EXPECT_EQ(root_windows[1], maximized->GetNativeView()->GetRootWindow()); |
| 149 EXPECT_EQ("600,0 500x453", maximized->GetWindowBoundsInScreen().ToString()); | 149 EXPECT_EQ("600,0 300x253", maximized->GetWindowBoundsInScreen().ToString()); |
| 150 EXPECT_EQ("0,0 500x453", | 150 EXPECT_EQ("0,0 300x253", |
| 151 maximized->GetNativeView()->GetBoundsInRootWindow().ToString()); | 151 maximized->GetNativeView()->GetBoundsInRootWindow().ToString()); |
| 152 | 152 |
| 153 views::Widget* minimized = CreateTestWidget(gfx::Rect(800, 10, 100, 100)); | 153 views::Widget* minimized = CreateTestWidget(gfx::Rect(800, 10, 100, 100)); |
| 154 minimized->Minimize(); | 154 minimized->Minimize(); |
| 155 EXPECT_EQ(root_windows[1], minimized->GetNativeView()->GetRootWindow()); | 155 EXPECT_EQ(root_windows[1], minimized->GetNativeView()->GetRootWindow()); |
| 156 EXPECT_EQ("800,10 100x100", | 156 EXPECT_EQ("800,10 100x100", |
| 157 minimized->GetWindowBoundsInScreen().ToString()); | 157 minimized->GetWindowBoundsInScreen().ToString()); |
| 158 | 158 |
| 159 views::Widget* fullscreen = CreateTestWidget(gfx::Rect(900, 10, 100, 100)); | 159 views::Widget* fullscreen = CreateTestWidget(gfx::Rect(850, 10, 100, 100)); |
| 160 fullscreen->SetFullscreen(true); | 160 fullscreen->SetFullscreen(true); |
| 161 EXPECT_EQ(root_windows[1], fullscreen->GetNativeView()->GetRootWindow()); | 161 EXPECT_EQ(root_windows[1], fullscreen->GetNativeView()->GetRootWindow()); |
| 162 | 162 |
| 163 EXPECT_EQ("600,0 500x500", | 163 EXPECT_EQ("600,0 300x300", |
| 164 fullscreen->GetWindowBoundsInScreen().ToString()); | 164 fullscreen->GetWindowBoundsInScreen().ToString()); |
| 165 EXPECT_EQ("0,0 500x500", | 165 EXPECT_EQ("0,0 300x300", |
| 166 fullscreen->GetNativeView()->GetBoundsInRootWindow().ToString()); | 166 fullscreen->GetNativeView()->GetBoundsInRootWindow().ToString()); |
| 167 | 167 |
| 168 views::Widget* unparented_control = new Widget; | 168 views::Widget* unparented_control = new Widget; |
| 169 Widget::InitParams params; | 169 Widget::InitParams params; |
| 170 params.bounds = gfx::Rect(650, 10, 100, 100); | 170 params.bounds = gfx::Rect(650, 10, 100, 100); |
| 171 params.context = CurrentContext(); | 171 params.context = CurrentContext(); |
| 172 params.type = Widget::InitParams::TYPE_CONTROL; | 172 params.type = Widget::InitParams::TYPE_CONTROL; |
| 173 unparented_control->Init(params); | 173 unparented_control->Init(params); |
| 174 EXPECT_EQ(root_windows[1], | 174 EXPECT_EQ(root_windows[1], |
| 175 unparented_control->GetNativeView()->GetRootWindow()); | 175 unparented_control->GetNativeView()->GetRootWindow()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 190 delete_on_blur_delegate.SetWindow(d2); | 190 delete_on_blur_delegate.SetWindow(d2); |
| 191 aura::client::GetFocusClient(root_windows[0])->FocusWindow(d2); | 191 aura::client::GetFocusClient(root_windows[0])->FocusWindow(d2); |
| 192 tracker.Add(d2); | 192 tracker.Add(d2); |
| 193 | 193 |
| 194 UpdateDisplay("600x600"); | 194 UpdateDisplay("600x600"); |
| 195 | 195 |
| 196 // d2 must have been deleted. | 196 // d2 must have been deleted. |
| 197 EXPECT_FALSE(tracker.Contains(d2)); | 197 EXPECT_FALSE(tracker.Contains(d2)); |
| 198 | 198 |
| 199 EXPECT_EQ(root_windows[0], normal->GetNativeView()->GetRootWindow()); | 199 EXPECT_EQ(root_windows[0], normal->GetNativeView()->GetRootWindow()); |
| 200 EXPECT_EQ("50,10 100x100", normal->GetWindowBoundsInScreen().ToString()); | 200 EXPECT_EQ("100,20 100x100", normal->GetWindowBoundsInScreen().ToString()); |
| 201 EXPECT_EQ("50,10 100x100", | 201 EXPECT_EQ("100,20 100x100", |
| 202 normal->GetNativeView()->GetBoundsInRootWindow().ToString()); | 202 normal->GetNativeView()->GetBoundsInRootWindow().ToString()); |
| 203 | 203 |
| 204 // Maximized area on primary display has 3px (given as | 204 // Maximized area on primary display has 3px (given as |
| 205 // kAutoHideSize in shelf_layout_manager.cc) inset at the bottom. | 205 // kAutoHideSize in shelf_layout_manager.cc) inset at the bottom. |
| 206 | 206 |
| 207 // First clear fullscreen status, since both fullscreen and maximized windows | 207 // First clear fullscreen status, since both fullscreen and maximized windows |
| 208 // share the same desktop workspace, which cancels the shelf status. | 208 // share the same desktop workspace, which cancels the shelf status. |
| 209 fullscreen->SetFullscreen(false); | 209 fullscreen->SetFullscreen(false); |
| 210 EXPECT_EQ(root_windows[0], maximized->GetNativeView()->GetRootWindow()); | 210 EXPECT_EQ(root_windows[0], maximized->GetNativeView()->GetRootWindow()); |
| 211 EXPECT_EQ("0,0 600x597", | 211 EXPECT_EQ("0,0 600x597", |
| 212 maximized->GetWindowBoundsInScreen().ToString()); | 212 maximized->GetWindowBoundsInScreen().ToString()); |
| 213 EXPECT_EQ("0,0 600x597", | 213 EXPECT_EQ("0,0 600x597", |
| 214 maximized->GetNativeView()->GetBoundsInRootWindow().ToString()); | 214 maximized->GetNativeView()->GetBoundsInRootWindow().ToString()); |
| 215 | 215 |
| 216 // Set fullscreen to true. In that case the 3px inset becomes invisible so | 216 // Set fullscreen to true. In that case the 3px inset becomes invisible so |
| 217 // the maximized window can also use the area fully. | 217 // the maximized window can also use the area fully. |
| 218 fullscreen->SetFullscreen(true); | 218 fullscreen->SetFullscreen(true); |
| 219 EXPECT_EQ(root_windows[0], maximized->GetNativeView()->GetRootWindow()); | 219 EXPECT_EQ(root_windows[0], maximized->GetNativeView()->GetRootWindow()); |
| 220 EXPECT_EQ("0,0 600x600", | 220 EXPECT_EQ("0,0 600x600", |
| 221 maximized->GetWindowBoundsInScreen().ToString()); | 221 maximized->GetWindowBoundsInScreen().ToString()); |
| 222 EXPECT_EQ("0,0 600x600", | 222 EXPECT_EQ("0,0 600x600", |
| 223 maximized->GetNativeView()->GetBoundsInRootWindow().ToString()); | 223 maximized->GetNativeView()->GetBoundsInRootWindow().ToString()); |
| 224 | 224 |
| 225 EXPECT_EQ(root_windows[0], minimized->GetNativeView()->GetRootWindow()); | 225 EXPECT_EQ(root_windows[0], minimized->GetNativeView()->GetRootWindow()); |
| 226 EXPECT_EQ("200,10 100x100", | 226 EXPECT_EQ("400,20 100x100", |
| 227 minimized->GetWindowBoundsInScreen().ToString()); | 227 minimized->GetWindowBoundsInScreen().ToString()); |
| 228 | 228 |
| 229 EXPECT_EQ(root_windows[0], fullscreen->GetNativeView()->GetRootWindow()); | 229 EXPECT_EQ(root_windows[0], fullscreen->GetNativeView()->GetRootWindow()); |
| 230 EXPECT_TRUE(fullscreen->IsFullscreen()); | 230 EXPECT_TRUE(fullscreen->IsFullscreen()); |
| 231 EXPECT_EQ("0,0 600x600", | 231 EXPECT_EQ("0,0 600x600", |
| 232 fullscreen->GetWindowBoundsInScreen().ToString()); | 232 fullscreen->GetWindowBoundsInScreen().ToString()); |
| 233 EXPECT_EQ("0,0 600x600", | 233 EXPECT_EQ("0,0 600x600", |
| 234 fullscreen->GetNativeView()->GetBoundsInRootWindow().ToString()); | 234 fullscreen->GetNativeView()->GetBoundsInRootWindow().ToString()); |
| 235 | 235 |
| 236 // Test if the restore bounds are correctly updated. | 236 // Test if the restore bounds are correctly updated. |
| 237 wm::GetWindowState(maximized->GetNativeView())->Restore(); | 237 wm::GetWindowState(maximized->GetNativeView())->Restore(); |
| 238 EXPECT_EQ("100,10 100x100", maximized->GetWindowBoundsInScreen().ToString()); | 238 EXPECT_EQ("200,20 100x100", maximized->GetWindowBoundsInScreen().ToString()); |
| 239 EXPECT_EQ("100,10 100x100", | 239 EXPECT_EQ("200,20 100x100", |
| 240 maximized->GetNativeView()->GetBoundsInRootWindow().ToString()); | 240 maximized->GetNativeView()->GetBoundsInRootWindow().ToString()); |
| 241 | 241 |
| 242 fullscreen->SetFullscreen(false); | 242 fullscreen->SetFullscreen(false); |
| 243 EXPECT_EQ("300,10 100x100", | 243 EXPECT_EQ("500,20 100x100", |
| 244 fullscreen->GetWindowBoundsInScreen().ToString()); | 244 fullscreen->GetWindowBoundsInScreen().ToString()); |
| 245 EXPECT_EQ("300,10 100x100", | 245 EXPECT_EQ("500,20 100x100", |
| 246 fullscreen->GetNativeView()->GetBoundsInRootWindow().ToString()); | 246 fullscreen->GetNativeView()->GetBoundsInRootWindow().ToString()); |
| 247 | 247 |
| 248 // Test if the unparented widget has moved. | 248 // Test if the unparented widget has moved. |
| 249 EXPECT_EQ(root_windows[0], | 249 EXPECT_EQ(root_windows[0], |
| 250 unparented_control->GetNativeView()->GetRootWindow()); | 250 unparented_control->GetNativeView()->GetRootWindow()); |
| 251 EXPECT_EQ(internal::kShellWindowId_UnparentedControlContainer, | 251 EXPECT_EQ(internal::kShellWindowId_UnparentedControlContainer, |
| 252 unparented_control->GetNativeView()->parent()->id()); | 252 unparented_control->GetNativeView()->parent()->id()); |
| 253 | 253 |
| 254 // Test if the panel has moved. | 254 // Test if the panel has moved. |
| 255 EXPECT_EQ(root_windows[0], panel->GetRootWindow()); | 255 EXPECT_EQ(root_windows[0], panel->GetRootWindow()); |
| (...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 aura::WindowTracker tracker; | 656 aura::WindowTracker tracker; |
| 657 tracker.Add(keyboard_container); | 657 tracker.Add(keyboard_container); |
| 658 // Mock a login user profile change to reinitialize the keyboard. | 658 // Mock a login user profile change to reinitialize the keyboard. |
| 659 ash::Shell::GetInstance()->OnLoginUserProfilePrepared(); | 659 ash::Shell::GetInstance()->OnLoginUserProfilePrepared(); |
| 660 // keyboard_container should no longer be present. | 660 // keyboard_container should no longer be present. |
| 661 EXPECT_FALSE(tracker.Contains(keyboard_container)); | 661 EXPECT_FALSE(tracker.Contains(keyboard_container)); |
| 662 } | 662 } |
| 663 | 663 |
| 664 } // namespace test | 664 } // namespace test |
| 665 } // namespace ash | 665 } // namespace ash |
| OLD | NEW |