| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <stdint.h> | 5 #include <stdint.h> |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 screen_manager().AddDisplay(MakeViewportMetrics(0, 0, 1024, 768, 1.0f)); | 126 screen_manager().AddDisplay(MakeViewportMetrics(0, 0, 1024, 768, 1.0f)); |
| 127 | 127 |
| 128 ASSERT_EQ(1u, display_manager()->displays().size()); | 128 ASSERT_EQ(1u, display_manager()->displays().size()); |
| 129 Display* display = display_manager()->GetDisplayById(display_id); | 129 Display* display = display_manager()->GetDisplayById(display_id); |
| 130 | 130 |
| 131 // Display should have root window with correct size. | 131 // Display should have root window with correct size. |
| 132 ASSERT_NE(nullptr, display->root_window()); | 132 ASSERT_NE(nullptr, display->root_window()); |
| 133 EXPECT_EQ("0,0 1024x768", display->root_window()->bounds().ToString()); | 133 EXPECT_EQ("0,0 1024x768", display->root_window()->bounds().ToString()); |
| 134 | 134 |
| 135 // Display should have a WM root window with the correct size too. | 135 // Display should have a WM root window with the correct size too. |
| 136 EXPECT_EQ(1u, display->num_window_manger_states()); | 136 EXPECT_EQ(1u, display->num_window_manager_states()); |
| 137 WindowManagerDisplayRoot* root1 = | 137 WindowManagerDisplayRoot* root1 = |
| 138 display->GetWindowManagerDisplayRootForUser(kTestId1); | 138 display->GetWindowManagerDisplayRootForUser(kTestId1); |
| 139 ASSERT_NE(nullptr, root1); | 139 ASSERT_NE(nullptr, root1); |
| 140 ASSERT_NE(nullptr, root1->root()); | 140 ASSERT_NE(nullptr, root1->root()); |
| 141 EXPECT_EQ("0,0 1024x768", root1->root()->bounds().ToString()); | 141 EXPECT_EQ("0,0 1024x768", root1->root()->bounds().ToString()); |
| 142 } | 142 } |
| 143 | 143 |
| 144 TEST_F(DisplayTest, CreateDisplayBeforeWM) { | 144 TEST_F(DisplayTest, CreateDisplayBeforeWM) { |
| 145 // Add one display, no WM exists yet. | 145 // Add one display, no WM exists yet. |
| 146 const int64_t display_id = | 146 const int64_t display_id = |
| 147 screen_manager().AddDisplay(MakeViewportMetrics(0, 0, 1024, 768, 1.0f)); | 147 screen_manager().AddDisplay(MakeViewportMetrics(0, 0, 1024, 768, 1.0f)); |
| 148 EXPECT_EQ(1u, display_manager()->displays().size()); | 148 EXPECT_EQ(1u, display_manager()->displays().size()); |
| 149 | 149 |
| 150 Display* display = display_manager()->GetDisplayById(display_id); | 150 Display* display = display_manager()->GetDisplayById(display_id); |
| 151 | 151 |
| 152 // Display should have root window with correct size. | 152 // Display should have root window with correct size. |
| 153 ASSERT_NE(nullptr, display->root_window()); | 153 ASSERT_NE(nullptr, display->root_window()); |
| 154 EXPECT_EQ("0,0 1024x768", display->root_window()->bounds().ToString()); | 154 EXPECT_EQ("0,0 1024x768", display->root_window()->bounds().ToString()); |
| 155 | 155 |
| 156 // There should be no WM state for display yet. | 156 // There should be no WM state for display yet. |
| 157 EXPECT_EQ(0u, display->num_window_manger_states()); | 157 EXPECT_EQ(0u, display->num_window_manager_states()); |
| 158 EXPECT_EQ(nullptr, display->GetWindowManagerDisplayRootForUser(kTestId1)); | 158 EXPECT_EQ(nullptr, display->GetWindowManagerDisplayRootForUser(kTestId1)); |
| 159 | 159 |
| 160 AddWindowManager(window_server(), kTestId1); | 160 AddWindowManager(window_server(), kTestId1); |
| 161 | 161 |
| 162 // After adding a WM display should have WM state and WM root for the display. | 162 // After adding a WM display should have WM state and WM root for the display. |
| 163 EXPECT_EQ(1u, display->num_window_manger_states()); | 163 EXPECT_EQ(1u, display->num_window_manager_states()); |
| 164 WindowManagerDisplayRoot* root1 = | 164 WindowManagerDisplayRoot* root1 = |
| 165 display->GetWindowManagerDisplayRootForUser(kTestId1); | 165 display->GetWindowManagerDisplayRootForUser(kTestId1); |
| 166 ASSERT_NE(nullptr, root1); | 166 ASSERT_NE(nullptr, root1); |
| 167 ASSERT_NE(nullptr, root1->root()); | 167 ASSERT_NE(nullptr, root1->root()); |
| 168 EXPECT_EQ("0,0 1024x768", root1->root()->bounds().ToString()); | 168 EXPECT_EQ("0,0 1024x768", root1->root()->bounds().ToString()); |
| 169 } | 169 } |
| 170 | 170 |
| 171 TEST_F(DisplayTest, CreateDisplayWithTwoWindowManagers) { | 171 TEST_F(DisplayTest, CreateDisplayWithTwoWindowManagers) { |
| 172 AddWindowManager(window_server(), kTestId1); | 172 AddWindowManager(window_server(), kTestId1); |
| 173 const int64_t display_id = screen_manager().AddDisplay(); | 173 const int64_t display_id = screen_manager().AddDisplay(); |
| 174 Display* display = display_manager()->GetDisplayById(display_id); | 174 Display* display = display_manager()->GetDisplayById(display_id); |
| 175 | 175 |
| 176 // There should be only be one WM at this point. | 176 // There should be only be one WM at this point. |
| 177 ASSERT_EQ(1u, display->num_window_manger_states()); | 177 ASSERT_EQ(1u, display->num_window_manager_states()); |
| 178 EXPECT_NE(nullptr, display->GetWindowManagerDisplayRootForUser(kTestId1)); | 178 EXPECT_NE(nullptr, display->GetWindowManagerDisplayRootForUser(kTestId1)); |
| 179 EXPECT_EQ(nullptr, display->GetWindowManagerDisplayRootForUser(kTestId2)); | 179 EXPECT_EQ(nullptr, display->GetWindowManagerDisplayRootForUser(kTestId2)); |
| 180 | 180 |
| 181 AddWindowManager(window_server(), kTestId2); | 181 AddWindowManager(window_server(), kTestId2); |
| 182 | 182 |
| 183 // There should now be two WMs. | 183 // There should now be two WMs. |
| 184 ASSERT_EQ(2u, display->num_window_manger_states()); | 184 ASSERT_EQ(2u, display->num_window_manager_states()); |
| 185 WindowManagerDisplayRoot* root1 = | 185 WindowManagerDisplayRoot* root1 = |
| 186 display->GetWindowManagerDisplayRootForUser(kTestId1); | 186 display->GetWindowManagerDisplayRootForUser(kTestId1); |
| 187 ASSERT_NE(nullptr, root1); | 187 ASSERT_NE(nullptr, root1); |
| 188 WindowManagerDisplayRoot* root2 = | 188 WindowManagerDisplayRoot* root2 = |
| 189 display->GetWindowManagerDisplayRootForUser(kTestId2); | 189 display->GetWindowManagerDisplayRootForUser(kTestId2); |
| 190 ASSERT_NE(nullptr, root2); | 190 ASSERT_NE(nullptr, root2); |
| 191 | 191 |
| 192 // Verify the two WMs have different roots but with the same bounds. | 192 // Verify the two WMs have different roots but with the same bounds. |
| 193 EXPECT_NE(root1, root2); | 193 EXPECT_NE(root1, root2); |
| 194 EXPECT_NE(root1->root(), root2->root()); | 194 EXPECT_NE(root1->root(), root2->root()); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 217 | 217 |
| 218 TEST_F(DisplayTest, Destruction) { | 218 TEST_F(DisplayTest, Destruction) { |
| 219 AddWindowManager(window_server(), kTestId1); | 219 AddWindowManager(window_server(), kTestId1); |
| 220 | 220 |
| 221 int64_t display_id = screen_manager().AddDisplay(); | 221 int64_t display_id = screen_manager().AddDisplay(); |
| 222 | 222 |
| 223 // Add a second WM. | 223 // Add a second WM. |
| 224 AddWindowManager(window_server(), kTestId2); | 224 AddWindowManager(window_server(), kTestId2); |
| 225 ASSERT_EQ(1u, display_manager()->displays().size()); | 225 ASSERT_EQ(1u, display_manager()->displays().size()); |
| 226 Display* display = display_manager()->GetDisplayById(display_id); | 226 Display* display = display_manager()->GetDisplayById(display_id); |
| 227 ASSERT_EQ(2u, display->num_window_manger_states()); | 227 ASSERT_EQ(2u, display->num_window_manager_states()); |
| 228 // There should be two trees, one for each windowmanager. | 228 // There should be two trees, one for each windowmanager. |
| 229 EXPECT_EQ(2u, window_server()->num_trees()); | 229 EXPECT_EQ(2u, window_server()->num_trees()); |
| 230 | 230 |
| 231 { | 231 { |
| 232 WindowManagerState* state = GetWindowManagerStateForUser(display, kTestId1); | 232 WindowManagerState* state = GetWindowManagerStateForUser(display, kTestId1); |
| 233 // Destroy the tree associated with |state|. Should result in deleting | 233 // Destroy the tree associated with |state|. Should result in deleting |
| 234 // |state|. | 234 // |state|. |
| 235 window_server()->DestroyTree(state->window_tree()); | 235 window_server()->DestroyTree(state->window_tree()); |
| 236 ASSERT_EQ(1u, display->num_window_manger_states()); | 236 ASSERT_EQ(1u, display->num_window_manager_states()); |
| 237 EXPECT_FALSE(GetWindowManagerStateForUser(display, kTestId1)); | 237 EXPECT_FALSE(GetWindowManagerStateForUser(display, kTestId1)); |
| 238 EXPECT_EQ(1u, display_manager()->displays().size()); | 238 EXPECT_EQ(1u, display_manager()->displays().size()); |
| 239 EXPECT_EQ(1u, window_server()->num_trees()); | 239 EXPECT_EQ(1u, window_server()->num_trees()); |
| 240 } | 240 } |
| 241 | 241 |
| 242 EXPECT_FALSE(window_server_delegate()->got_on_no_more_displays()); | 242 EXPECT_FALSE(window_server_delegate()->got_on_no_more_displays()); |
| 243 screen_manager().RemoveDisplay(display_id); | 243 screen_manager().RemoveDisplay(display_id); |
| 244 // There is still one tree left. | 244 // There is still one tree left. |
| 245 EXPECT_EQ(1u, window_server()->num_trees()); | 245 EXPECT_EQ(1u, window_server()->num_trees()); |
| 246 EXPECT_TRUE(window_server_delegate()->got_on_no_more_displays()); | 246 EXPECT_TRUE(window_server_delegate()->got_on_no_more_displays()); |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 ASSERT_EQ(0u, tree_client->tracker()->changes()->size()); | 417 ASSERT_EQ(0u, tree_client->tracker()->changes()->size()); |
| 418 | 418 |
| 419 // The window should be destroyed when the client says so. | 419 // The window should be destroyed when the client says so. |
| 420 ASSERT_TRUE(tree->DeleteWindow(secondary_root_id)); | 420 ASSERT_TRUE(tree->DeleteWindow(secondary_root_id)); |
| 421 EXPECT_TRUE(secondary_root_destroyed); | 421 EXPECT_TRUE(secondary_root_destroyed); |
| 422 } | 422 } |
| 423 | 423 |
| 424 } // namespace test | 424 } // namespace test |
| 425 } // namespace ws | 425 } // namespace ws |
| 426 } // namespace ui | 426 } // namespace ui |
| OLD | NEW |