| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "base/macros.h" | 5 #include "base/macros.h" |
| 6 #include "base/strings/string_number_conversions.h" | 6 #include "base/strings/string_number_conversions.h" |
| 7 #include "components/mus/ws/server_window.h" | 7 #include "components/mus/ws/server_window.h" |
| 8 #include "components/mus/ws/server_window_observer.h" | 8 #include "components/mus/ws/server_window_observer.h" |
| 9 #include "components/mus/ws/test_server_window_delegate.h" | 9 #include "components/mus/ws/test_server_window_delegate.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 TransientWindowsTest() {} | 70 TransientWindowsTest() {} |
| 71 ~TransientWindowsTest() override {} | 71 ~TransientWindowsTest() override {} |
| 72 | 72 |
| 73 private: | 73 private: |
| 74 DISALLOW_COPY_AND_ASSIGN(TransientWindowsTest); | 74 DISALLOW_COPY_AND_ASSIGN(TransientWindowsTest); |
| 75 }; | 75 }; |
| 76 | 76 |
| 77 TEST_F(TransientWindowsTest, TransientChildren) { | 77 TEST_F(TransientWindowsTest, TransientChildren) { |
| 78 TestServerWindowDelegate server_window_delegate; | 78 TestServerWindowDelegate server_window_delegate; |
| 79 | 79 |
| 80 scoped_ptr<ServerWindow> parent( | 80 std::unique_ptr<ServerWindow> parent( |
| 81 CreateTestWindow(&server_window_delegate, WindowId(), nullptr)); | 81 CreateTestWindow(&server_window_delegate, WindowId(), nullptr)); |
| 82 scoped_ptr<ServerWindow> w1( | 82 std::unique_ptr<ServerWindow> w1( |
| 83 CreateTestWindow(&server_window_delegate, WindowId(1, 1), parent.get())); | 83 CreateTestWindow(&server_window_delegate, WindowId(1, 1), parent.get())); |
| 84 scoped_ptr<ServerWindow> w3( | 84 std::unique_ptr<ServerWindow> w3( |
| 85 CreateTestWindow(&server_window_delegate, WindowId(1, 2), parent.get())); | 85 CreateTestWindow(&server_window_delegate, WindowId(1, 2), parent.get())); |
| 86 | 86 |
| 87 ServerWindow* w2 = | 87 ServerWindow* w2 = |
| 88 CreateTestWindow(&server_window_delegate, WindowId(1, 3), parent.get()); | 88 CreateTestWindow(&server_window_delegate, WindowId(1, 3), parent.get()); |
| 89 | 89 |
| 90 // w2 is now owned by w1. | 90 // w2 is now owned by w1. |
| 91 w1->AddTransientWindow(w2); | 91 w1->AddTransientWindow(w2); |
| 92 // Stack w1 at the top (end), this should force w2 to be last (on top of w1). | 92 // Stack w1 at the top (end), this should force w2 to be last (on top of w1). |
| 93 parent->StackChildAtTop(w1.get()); | 93 parent->StackChildAtTop(w1.get()); |
| 94 ASSERT_EQ(3u, parent->children().size()); | 94 ASSERT_EQ(3u, parent->children().size()); |
| 95 EXPECT_EQ(w2, parent->children().back()); | 95 EXPECT_EQ(w2, parent->children().back()); |
| 96 | 96 |
| 97 // Destroy w1, which should also destroy w3 (since it's a transient child). | 97 // Destroy w1, which should also destroy w3 (since it's a transient child). |
| 98 w1.reset(); | 98 w1.reset(); |
| 99 w2 = nullptr; | 99 w2 = nullptr; |
| 100 ASSERT_EQ(1u, parent->children().size()); | 100 ASSERT_EQ(1u, parent->children().size()); |
| 101 EXPECT_EQ(w3.get(), parent->children()[0]); | 101 EXPECT_EQ(w3.get(), parent->children()[0]); |
| 102 } | 102 } |
| 103 | 103 |
| 104 // Tests that transient children are stacked as a unit when using stack above. | 104 // Tests that transient children are stacked as a unit when using stack above. |
| 105 TEST_F(TransientWindowsTest, TransientChildrenGroupAbove) { | 105 TEST_F(TransientWindowsTest, TransientChildrenGroupAbove) { |
| 106 TestServerWindowDelegate server_window_delegate; | 106 TestServerWindowDelegate server_window_delegate; |
| 107 | 107 |
| 108 scoped_ptr<ServerWindow> parent( | 108 std::unique_ptr<ServerWindow> parent( |
| 109 CreateTestWindow(&server_window_delegate, WindowId(), nullptr)); | 109 CreateTestWindow(&server_window_delegate, WindowId(), nullptr)); |
| 110 scoped_ptr<ServerWindow> w1( | 110 std::unique_ptr<ServerWindow> w1( |
| 111 CreateTestWindow(&server_window_delegate, WindowId(0, 1), parent.get())); | 111 CreateTestWindow(&server_window_delegate, WindowId(0, 1), parent.get())); |
| 112 | 112 |
| 113 ServerWindow* w11 = | 113 ServerWindow* w11 = |
| 114 CreateTestWindow(&server_window_delegate, WindowId(0, 11), parent.get()); | 114 CreateTestWindow(&server_window_delegate, WindowId(0, 11), parent.get()); |
| 115 scoped_ptr<ServerWindow> w2( | 115 std::unique_ptr<ServerWindow> w2( |
| 116 CreateTestWindow(&server_window_delegate, WindowId(0, 2), parent.get())); | 116 CreateTestWindow(&server_window_delegate, WindowId(0, 2), parent.get())); |
| 117 | 117 |
| 118 ServerWindow* w21 = | 118 ServerWindow* w21 = |
| 119 CreateTestWindow(&server_window_delegate, WindowId(0, 21), parent.get()); | 119 CreateTestWindow(&server_window_delegate, WindowId(0, 21), parent.get()); |
| 120 ServerWindow* w211 = | 120 ServerWindow* w211 = |
| 121 CreateTestWindow(&server_window_delegate, WindowId(0, 211), parent.get()); | 121 CreateTestWindow(&server_window_delegate, WindowId(0, 211), parent.get()); |
| 122 ServerWindow* w212 = | 122 ServerWindow* w212 = |
| 123 CreateTestWindow(&server_window_delegate, WindowId(0, 212), parent.get()); | 123 CreateTestWindow(&server_window_delegate, WindowId(0, 212), parent.get()); |
| 124 ServerWindow* w213 = | 124 ServerWindow* w213 = |
| 125 CreateTestWindow(&server_window_delegate, WindowId(0, 213), parent.get()); | 125 CreateTestWindow(&server_window_delegate, WindowId(0, 213), parent.get()); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 EXPECT_EQ("1 11 2 22 21 213 211 212", ChildWindowIDsAsString(parent.get())); | 186 EXPECT_EQ("1 11 2 22 21 213 211 212", ChildWindowIDsAsString(parent.get())); |
| 187 | 187 |
| 188 w11->Reorder(w213, mojom::OrderDirection::ABOVE); | 188 w11->Reorder(w213, mojom::OrderDirection::ABOVE); |
| 189 EXPECT_EQ(w11, parent->children().back()); | 189 EXPECT_EQ(w11, parent->children().back()); |
| 190 EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get())); | 190 EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get())); |
| 191 } | 191 } |
| 192 | 192 |
| 193 TEST_F(TransientWindowsTest, TransienChildGroupBelow) { | 193 TEST_F(TransientWindowsTest, TransienChildGroupBelow) { |
| 194 TestServerWindowDelegate server_window_delegate; | 194 TestServerWindowDelegate server_window_delegate; |
| 195 | 195 |
| 196 scoped_ptr<ServerWindow> parent( | 196 std::unique_ptr<ServerWindow> parent( |
| 197 CreateTestWindow(&server_window_delegate, WindowId(), nullptr)); | 197 CreateTestWindow(&server_window_delegate, WindowId(), nullptr)); |
| 198 scoped_ptr<ServerWindow> w1( | 198 std::unique_ptr<ServerWindow> w1( |
| 199 CreateTestWindow(&server_window_delegate, WindowId(0, 1), parent.get())); | 199 CreateTestWindow(&server_window_delegate, WindowId(0, 1), parent.get())); |
| 200 | 200 |
| 201 ServerWindow* w11 = | 201 ServerWindow* w11 = |
| 202 CreateTestWindow(&server_window_delegate, WindowId(0, 11), parent.get()); | 202 CreateTestWindow(&server_window_delegate, WindowId(0, 11), parent.get()); |
| 203 scoped_ptr<ServerWindow> w2( | 203 std::unique_ptr<ServerWindow> w2( |
| 204 CreateTestWindow(&server_window_delegate, WindowId(0, 2), parent.get())); | 204 CreateTestWindow(&server_window_delegate, WindowId(0, 2), parent.get())); |
| 205 | 205 |
| 206 ServerWindow* w21 = | 206 ServerWindow* w21 = |
| 207 CreateTestWindow(&server_window_delegate, WindowId(0, 21), parent.get()); | 207 CreateTestWindow(&server_window_delegate, WindowId(0, 21), parent.get()); |
| 208 ServerWindow* w211 = | 208 ServerWindow* w211 = |
| 209 CreateTestWindow(&server_window_delegate, WindowId(0, 211), parent.get()); | 209 CreateTestWindow(&server_window_delegate, WindowId(0, 211), parent.get()); |
| 210 ServerWindow* w212 = | 210 ServerWindow* w212 = |
| 211 CreateTestWindow(&server_window_delegate, WindowId(0, 212), parent.get()); | 211 CreateTestWindow(&server_window_delegate, WindowId(0, 212), parent.get()); |
| 212 ServerWindow* w213 = | 212 ServerWindow* w213 = |
| 213 CreateTestWindow(&server_window_delegate, WindowId(0, 213), parent.get()); | 213 CreateTestWindow(&server_window_delegate, WindowId(0, 213), parent.get()); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 EXPECT_EQ("1 11 2 22 21 213 211 212", ChildWindowIDsAsString(parent.get())); | 271 EXPECT_EQ("1 11 2 22 21 213 211 212", ChildWindowIDsAsString(parent.get())); |
| 272 | 272 |
| 273 w213->Reorder(w11, mojom::OrderDirection::BELOW); | 273 w213->Reorder(w11, mojom::OrderDirection::BELOW); |
| 274 EXPECT_EQ(w11, parent->children().back()); | 274 EXPECT_EQ(w11, parent->children().back()); |
| 275 EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get())); | 275 EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get())); |
| 276 } | 276 } |
| 277 | 277 |
| 278 // Tests that transient windows are stacked properly when created. | 278 // Tests that transient windows are stacked properly when created. |
| 279 TEST_F(TransientWindowsTest, StackUponCreation) { | 279 TEST_F(TransientWindowsTest, StackUponCreation) { |
| 280 TestServerWindowDelegate delegate; | 280 TestServerWindowDelegate delegate; |
| 281 scoped_ptr<ServerWindow> parent( | 281 std::unique_ptr<ServerWindow> parent( |
| 282 CreateTestWindow(&delegate, WindowId(), nullptr)); | 282 CreateTestWindow(&delegate, WindowId(), nullptr)); |
| 283 scoped_ptr<ServerWindow> window0( | 283 std::unique_ptr<ServerWindow> window0( |
| 284 CreateTestWindow(&delegate, WindowId(0, 1), parent.get())); | 284 CreateTestWindow(&delegate, WindowId(0, 1), parent.get())); |
| 285 scoped_ptr<ServerWindow> window1( | 285 std::unique_ptr<ServerWindow> window1( |
| 286 CreateTestWindow(&delegate, WindowId(0, 2), parent.get())); | 286 CreateTestWindow(&delegate, WindowId(0, 2), parent.get())); |
| 287 | 287 |
| 288 ServerWindow* window2 = | 288 ServerWindow* window2 = |
| 289 CreateTestWindow(&delegate, WindowId(0, 3), parent.get()); | 289 CreateTestWindow(&delegate, WindowId(0, 3), parent.get()); |
| 290 window0->AddTransientWindow(window2); | 290 window0->AddTransientWindow(window2); |
| 291 EXPECT_EQ("1 3 2", ChildWindowIDsAsString(parent.get())); | 291 EXPECT_EQ("1 3 2", ChildWindowIDsAsString(parent.get())); |
| 292 } | 292 } |
| 293 | 293 |
| 294 // Tests that windows are restacked properly after a call to | 294 // Tests that windows are restacked properly after a call to |
| 295 // AddTransientWindow() or RemoveTransientWindow(). | 295 // AddTransientWindow() or RemoveTransientWindow(). |
| 296 TEST_F(TransientWindowsTest, RestackUponAddOrRemoveTransientWindow) { | 296 TEST_F(TransientWindowsTest, RestackUponAddOrRemoveTransientWindow) { |
| 297 TestServerWindowDelegate delegate; | 297 TestServerWindowDelegate delegate; |
| 298 scoped_ptr<ServerWindow> parent( | 298 std::unique_ptr<ServerWindow> parent( |
| 299 CreateTestWindow(&delegate, WindowId(), nullptr)); | 299 CreateTestWindow(&delegate, WindowId(), nullptr)); |
| 300 scoped_ptr<ServerWindow> windows[4]; | 300 std::unique_ptr<ServerWindow> windows[4]; |
| 301 for (int i = 0; i < 4; i++) | 301 for (int i = 0; i < 4; i++) |
| 302 windows[i].reset(CreateTestWindow(&delegate, WindowId(0, i), parent.get())); | 302 windows[i].reset(CreateTestWindow(&delegate, WindowId(0, i), parent.get())); |
| 303 | 303 |
| 304 EXPECT_EQ("0 1 2 3", ChildWindowIDsAsString(parent.get())); | 304 EXPECT_EQ("0 1 2 3", ChildWindowIDsAsString(parent.get())); |
| 305 | 305 |
| 306 windows[0]->AddTransientWindow(windows[2].get()); | 306 windows[0]->AddTransientWindow(windows[2].get()); |
| 307 EXPECT_EQ("0 2 1 3", ChildWindowIDsAsString(parent.get())); | 307 EXPECT_EQ("0 2 1 3", ChildWindowIDsAsString(parent.get())); |
| 308 | 308 |
| 309 windows[0]->AddTransientWindow(windows[3].get()); | 309 windows[0]->AddTransientWindow(windows[3].get()); |
| 310 EXPECT_EQ("0 2 3 1", ChildWindowIDsAsString(parent.get())); | 310 EXPECT_EQ("0 2 3 1", ChildWindowIDsAsString(parent.get())); |
| 311 | 311 |
| 312 windows[0]->RemoveTransientWindow(windows[2].get()); | 312 windows[0]->RemoveTransientWindow(windows[2].get()); |
| 313 EXPECT_EQ("0 3 2 1", ChildWindowIDsAsString(parent.get())); | 313 EXPECT_EQ("0 3 2 1", ChildWindowIDsAsString(parent.get())); |
| 314 | 314 |
| 315 windows[0]->RemoveTransientWindow(windows[3].get()); | 315 windows[0]->RemoveTransientWindow(windows[3].get()); |
| 316 EXPECT_EQ("0 3 2 1", ChildWindowIDsAsString(parent.get())); | 316 EXPECT_EQ("0 3 2 1", ChildWindowIDsAsString(parent.get())); |
| 317 } | 317 } |
| 318 | 318 |
| 319 // Verifies TransientWindowObserver is notified appropriately. | 319 // Verifies TransientWindowObserver is notified appropriately. |
| 320 TEST_F(TransientWindowsTest, TransientWindowObserverNotified) { | 320 TEST_F(TransientWindowsTest, TransientWindowObserverNotified) { |
| 321 TestServerWindowDelegate delegate; | 321 TestServerWindowDelegate delegate; |
| 322 scoped_ptr<ServerWindow> parent( | 322 std::unique_ptr<ServerWindow> parent( |
| 323 CreateTestWindow(&delegate, WindowId(), nullptr)); | 323 CreateTestWindow(&delegate, WindowId(), nullptr)); |
| 324 scoped_ptr<ServerWindow> w1( | 324 std::unique_ptr<ServerWindow> w1( |
| 325 CreateTestWindow(&delegate, WindowId(0, 1), parent.get())); | 325 CreateTestWindow(&delegate, WindowId(0, 1), parent.get())); |
| 326 | 326 |
| 327 TestTransientWindowObserver test_observer; | 327 TestTransientWindowObserver test_observer; |
| 328 parent->AddObserver(&test_observer); | 328 parent->AddObserver(&test_observer); |
| 329 | 329 |
| 330 parent->AddTransientWindow(w1.get()); | 330 parent->AddTransientWindow(w1.get()); |
| 331 EXPECT_EQ(1, test_observer.add_count()); | 331 EXPECT_EQ(1, test_observer.add_count()); |
| 332 EXPECT_EQ(0, test_observer.remove_count()); | 332 EXPECT_EQ(0, test_observer.remove_count()); |
| 333 | 333 |
| 334 parent->RemoveTransientWindow(w1.get()); | 334 parent->RemoveTransientWindow(w1.get()); |
| 335 EXPECT_EQ(1, test_observer.add_count()); | 335 EXPECT_EQ(1, test_observer.add_count()); |
| 336 EXPECT_EQ(1, test_observer.remove_count()); | 336 EXPECT_EQ(1, test_observer.remove_count()); |
| 337 | 337 |
| 338 parent->RemoveObserver(&test_observer); | 338 parent->RemoveObserver(&test_observer); |
| 339 } | 339 } |
| 340 | 340 |
| 341 } // namespace ws | 341 } // namespace ws |
| 342 } // namespace mus | 342 } // namespace mus |
| OLD | NEW |