| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/mus/public/cpp/window.h" | 5 #include "components/mus/public/cpp/window.h" |
| 6 | 6 |
| 7 #include <limits.h> | 7 #include <limits.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 960 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 971 EXPECT_EQ(PropertyChangeInfo(&prop, -2), o.PropertyChangeInfoAndClear()); | 971 EXPECT_EQ(PropertyChangeInfo(&prop, -2), o.PropertyChangeInfoAndClear()); |
| 972 w1.ClearLocalProperty(&prop); | 972 w1.ClearLocalProperty(&prop); |
| 973 EXPECT_EQ(PropertyChangeInfo(&prop, 3), o.PropertyChangeInfoAndClear()); | 973 EXPECT_EQ(PropertyChangeInfo(&prop, 3), o.PropertyChangeInfoAndClear()); |
| 974 | 974 |
| 975 // Sanity check to see if |PropertyChangeInfoAndClear| really clears. | 975 // Sanity check to see if |PropertyChangeInfoAndClear| really clears. |
| 976 EXPECT_EQ(PropertyChangeInfo(reinterpret_cast<const void*>(NULL), -3), | 976 EXPECT_EQ(PropertyChangeInfo(reinterpret_cast<const void*>(NULL), -3), |
| 977 o.PropertyChangeInfoAndClear()); | 977 o.PropertyChangeInfoAndClear()); |
| 978 } | 978 } |
| 979 | 979 |
| 980 TEST_F(WindowTest, RemoveTransientWindow) { | 980 TEST_F(WindowTest, RemoveTransientWindow) { |
| 981 scoped_ptr<TestWindow> w1(CreateTestWindow(nullptr)); | 981 std::unique_ptr<TestWindow> w1(CreateTestWindow(nullptr)); |
| 982 scoped_ptr<TestWindow> w11(CreateTestWindow(w1.get())); | 982 std::unique_ptr<TestWindow> w11(CreateTestWindow(w1.get())); |
| 983 TestWindow* w12 = CreateTestWindow(w1.get()); | 983 TestWindow* w12 = CreateTestWindow(w1.get()); |
| 984 EXPECT_EQ(2u, w1->children().size()); | 984 EXPECT_EQ(2u, w1->children().size()); |
| 985 // w12's lifetime is now tied to w11. | 985 // w12's lifetime is now tied to w11. |
| 986 w11->AddTransientWindow(w12); | 986 w11->AddTransientWindow(w12); |
| 987 w11.reset(); | 987 w11.reset(); |
| 988 EXPECT_EQ(0u, w1->children().size()); | 988 EXPECT_EQ(0u, w1->children().size()); |
| 989 } | 989 } |
| 990 | 990 |
| 991 TEST_F(WindowTest, TransientWindow) { | 991 TEST_F(WindowTest, TransientWindow) { |
| 992 scoped_ptr<TestWindow> parent(CreateTestWindow(nullptr)); | 992 std::unique_ptr<TestWindow> parent(CreateTestWindow(nullptr)); |
| 993 scoped_ptr<TestWindow> w1(CreateTestWindow(parent.get())); | 993 std::unique_ptr<TestWindow> w1(CreateTestWindow(parent.get())); |
| 994 scoped_ptr<TestWindow> w3(CreateTestWindow(parent.get())); | 994 std::unique_ptr<TestWindow> w3(CreateTestWindow(parent.get())); |
| 995 | 995 |
| 996 Window* w2 = CreateTestWindow(parent.get()); | 996 Window* w2 = CreateTestWindow(parent.get()); |
| 997 EXPECT_EQ(w2, parent->children().back()); | 997 EXPECT_EQ(w2, parent->children().back()); |
| 998 ASSERT_EQ(3u, parent->children().size()); | 998 ASSERT_EQ(3u, parent->children().size()); |
| 999 | 999 |
| 1000 w1->AddTransientWindow(w2); | 1000 w1->AddTransientWindow(w2); |
| 1001 // Stack w1 at the top (end). This should force w2 to be last (on top of w1). | 1001 // Stack w1 at the top (end). This should force w2 to be last (on top of w1). |
| 1002 w1->MoveToFront(); | 1002 w1->MoveToFront(); |
| 1003 ASSERT_EQ(3u, parent->children().size()); | 1003 ASSERT_EQ(3u, parent->children().size()); |
| 1004 EXPECT_EQ(w2, parent->children().back()); | 1004 EXPECT_EQ(w2, parent->children().back()); |
| 1005 | 1005 |
| 1006 // Destroy w1, which should also destroy w3 (since it's a transient child).A | 1006 // Destroy w1, which should also destroy w3 (since it's a transient child).A |
| 1007 w1.reset(); | 1007 w1.reset(); |
| 1008 w2 = nullptr; | 1008 w2 = nullptr; |
| 1009 ASSERT_EQ(1u, parent->children().size()); | 1009 ASSERT_EQ(1u, parent->children().size()); |
| 1010 EXPECT_EQ(w3.get(), parent->children()[0]); | 1010 EXPECT_EQ(w3.get(), parent->children()[0]); |
| 1011 } | 1011 } |
| 1012 | 1012 |
| 1013 // Tests that transient windows are stacked as a unit when using order above. | 1013 // Tests that transient windows are stacked as a unit when using order above. |
| 1014 TEST_F(WindowTest, TransientWindowsGroupAbove) { | 1014 TEST_F(WindowTest, TransientWindowsGroupAbove) { |
| 1015 scoped_ptr<TestWindow> parent(CreateTestWindow(0, nullptr)); | 1015 std::unique_ptr<TestWindow> parent(CreateTestWindow(0, nullptr)); |
| 1016 scoped_ptr<TestWindow> w1(CreateTestWindow(1, parent.get())); | 1016 std::unique_ptr<TestWindow> w1(CreateTestWindow(1, parent.get())); |
| 1017 | 1017 |
| 1018 TestWindow* w11 = CreateTestWindow(11, parent.get()); | 1018 TestWindow* w11 = CreateTestWindow(11, parent.get()); |
| 1019 scoped_ptr<TestWindow> w2(CreateTestWindow(2, parent.get())); | 1019 std::unique_ptr<TestWindow> w2(CreateTestWindow(2, parent.get())); |
| 1020 | 1020 |
| 1021 TestWindow* w21 = CreateTestWindow(21, parent.get()); | 1021 TestWindow* w21 = CreateTestWindow(21, parent.get()); |
| 1022 TestWindow* w211 = CreateTestWindow(211, parent.get()); | 1022 TestWindow* w211 = CreateTestWindow(211, parent.get()); |
| 1023 TestWindow* w212 = CreateTestWindow(212, parent.get()); | 1023 TestWindow* w212 = CreateTestWindow(212, parent.get()); |
| 1024 TestWindow* w213 = CreateTestWindow(213, parent.get()); | 1024 TestWindow* w213 = CreateTestWindow(213, parent.get()); |
| 1025 TestWindow* w22 = CreateTestWindow(22, parent.get()); | 1025 TestWindow* w22 = CreateTestWindow(22, parent.get()); |
| 1026 ASSERT_EQ(8u, parent->children().size()); | 1026 ASSERT_EQ(8u, parent->children().size()); |
| 1027 | 1027 |
| 1028 // w11 is now owned by w1. | 1028 // w11 is now owned by w1. |
| 1029 w1->AddTransientWindow(w11); | 1029 w1->AddTransientWindow(w11); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1083 EXPECT_EQ(w212, parent->children().back()); | 1083 EXPECT_EQ(w212, parent->children().back()); |
| 1084 EXPECT_EQ("1 11 2 22 21 213 211 212", ChildWindowIDsAsString(parent.get())); | 1084 EXPECT_EQ("1 11 2 22 21 213 211 212", ChildWindowIDsAsString(parent.get())); |
| 1085 | 1085 |
| 1086 w11->Reorder(w213, mojom::OrderDirection::ABOVE); | 1086 w11->Reorder(w213, mojom::OrderDirection::ABOVE); |
| 1087 EXPECT_EQ(w11, parent->children().back()); | 1087 EXPECT_EQ(w11, parent->children().back()); |
| 1088 EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get())); | 1088 EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get())); |
| 1089 } | 1089 } |
| 1090 | 1090 |
| 1091 // Tests that transient children are stacked as a unit when using order below. | 1091 // Tests that transient children are stacked as a unit when using order below. |
| 1092 TEST_F(WindowTest, TransientWindowsGroupBelow) { | 1092 TEST_F(WindowTest, TransientWindowsGroupBelow) { |
| 1093 scoped_ptr<TestWindow> parent(CreateTestWindow(0, nullptr)); | 1093 std::unique_ptr<TestWindow> parent(CreateTestWindow(0, nullptr)); |
| 1094 scoped_ptr<TestWindow> w1(CreateTestWindow(1, parent.get())); | 1094 std::unique_ptr<TestWindow> w1(CreateTestWindow(1, parent.get())); |
| 1095 | 1095 |
| 1096 TestWindow* w11 = CreateTestWindow(11, parent.get()); | 1096 TestWindow* w11 = CreateTestWindow(11, parent.get()); |
| 1097 scoped_ptr<TestWindow> w2(CreateTestWindow(2, parent.get())); | 1097 std::unique_ptr<TestWindow> w2(CreateTestWindow(2, parent.get())); |
| 1098 | 1098 |
| 1099 TestWindow* w21 = CreateTestWindow(21, parent.get()); | 1099 TestWindow* w21 = CreateTestWindow(21, parent.get()); |
| 1100 TestWindow* w211 = CreateTestWindow(211, parent.get()); | 1100 TestWindow* w211 = CreateTestWindow(211, parent.get()); |
| 1101 TestWindow* w212 = CreateTestWindow(212, parent.get()); | 1101 TestWindow* w212 = CreateTestWindow(212, parent.get()); |
| 1102 TestWindow* w213 = CreateTestWindow(213, parent.get()); | 1102 TestWindow* w213 = CreateTestWindow(213, parent.get()); |
| 1103 TestWindow* w22 = CreateTestWindow(22, parent.get()); | 1103 TestWindow* w22 = CreateTestWindow(22, parent.get()); |
| 1104 ASSERT_EQ(8u, parent->children().size()); | 1104 ASSERT_EQ(8u, parent->children().size()); |
| 1105 | 1105 |
| 1106 // w11 is now owned by w1. | 1106 // w11 is now owned by w1. |
| 1107 w1->AddTransientWindow(w11); | 1107 w1->AddTransientWindow(w11); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1159 EXPECT_EQ("1 11 2 22 21 213 211 212", ChildWindowIDsAsString(parent.get())); | 1159 EXPECT_EQ("1 11 2 22 21 213 211 212", ChildWindowIDsAsString(parent.get())); |
| 1160 | 1160 |
| 1161 w213->Reorder(w11, mojom::OrderDirection::BELOW); | 1161 w213->Reorder(w11, mojom::OrderDirection::BELOW); |
| 1162 EXPECT_EQ(w11, parent->children().back()); | 1162 EXPECT_EQ(w11, parent->children().back()); |
| 1163 EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get())); | 1163 EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get())); |
| 1164 } | 1164 } |
| 1165 | 1165 |
| 1166 // Tests that windows are restacked properly after a call to | 1166 // Tests that windows are restacked properly after a call to |
| 1167 // AddTransientWindow() or RemoveTransientWindow). | 1167 // AddTransientWindow() or RemoveTransientWindow). |
| 1168 TEST_F(WindowTest, RestackUponAddOrRemoveTransientWindow) { | 1168 TEST_F(WindowTest, RestackUponAddOrRemoveTransientWindow) { |
| 1169 scoped_ptr<TestWindow> parent(CreateTestWindow(0, nullptr)); | 1169 std::unique_ptr<TestWindow> parent(CreateTestWindow(0, nullptr)); |
| 1170 scoped_ptr<TestWindow> windows[4]; | 1170 std::unique_ptr<TestWindow> windows[4]; |
| 1171 for (int i = 0; i < 4; i++) | 1171 for (int i = 0; i < 4; i++) |
| 1172 windows[i].reset(CreateTestWindow(i, parent.get())); | 1172 windows[i].reset(CreateTestWindow(i, parent.get())); |
| 1173 | 1173 |
| 1174 EXPECT_EQ("0 1 2 3", ChildWindowIDsAsString(parent.get())); | 1174 EXPECT_EQ("0 1 2 3", ChildWindowIDsAsString(parent.get())); |
| 1175 | 1175 |
| 1176 windows[0]->AddTransientWindow(windows[2].get()); | 1176 windows[0]->AddTransientWindow(windows[2].get()); |
| 1177 EXPECT_EQ("0 2 1 3", ChildWindowIDsAsString(parent.get())); | 1177 EXPECT_EQ("0 2 1 3", ChildWindowIDsAsString(parent.get())); |
| 1178 | 1178 |
| 1179 windows[0]->AddTransientWindow(windows[3].get()); | 1179 windows[0]->AddTransientWindow(windows[3].get()); |
| 1180 EXPECT_EQ("0 2 3 1", ChildWindowIDsAsString(parent.get())); | 1180 EXPECT_EQ("0 2 3 1", ChildWindowIDsAsString(parent.get())); |
| 1181 | 1181 |
| 1182 windows[0]->RemoveTransientWindow(windows[2].get()); | 1182 windows[0]->RemoveTransientWindow(windows[2].get()); |
| 1183 EXPECT_EQ("0 3 2 1", ChildWindowIDsAsString(parent.get())); | 1183 EXPECT_EQ("0 3 2 1", ChildWindowIDsAsString(parent.get())); |
| 1184 | 1184 |
| 1185 windows[0]->RemoveTransientWindow(windows[3].get()); | 1185 windows[0]->RemoveTransientWindow(windows[3].get()); |
| 1186 EXPECT_EQ("0 3 2 1", ChildWindowIDsAsString(parent.get())); | 1186 EXPECT_EQ("0 3 2 1", ChildWindowIDsAsString(parent.get())); |
| 1187 } | 1187 } |
| 1188 | 1188 |
| 1189 // Tests that transient windows are stacked properly when created. | 1189 // Tests that transient windows are stacked properly when created. |
| 1190 TEST_F(WindowTest, StackUponCreation) { | 1190 TEST_F(WindowTest, StackUponCreation) { |
| 1191 scoped_ptr<TestWindow> parent(CreateTestWindow(0, nullptr)); | 1191 std::unique_ptr<TestWindow> parent(CreateTestWindow(0, nullptr)); |
| 1192 scoped_ptr<TestWindow> window0(CreateTestWindow(1, parent.get())); | 1192 std::unique_ptr<TestWindow> window0(CreateTestWindow(1, parent.get())); |
| 1193 scoped_ptr<TestWindow> window1(CreateTestWindow(2, parent.get())); | 1193 std::unique_ptr<TestWindow> window1(CreateTestWindow(2, parent.get())); |
| 1194 | 1194 |
| 1195 TestWindow* window2 = CreateTestWindow(3, parent.get()); | 1195 TestWindow* window2 = CreateTestWindow(3, parent.get()); |
| 1196 | 1196 |
| 1197 window0->AddTransientWindow(window2); | 1197 window0->AddTransientWindow(window2); |
| 1198 EXPECT_EQ("1 3 2", ChildWindowIDsAsString(parent.get())); | 1198 EXPECT_EQ("1 3 2", ChildWindowIDsAsString(parent.get())); |
| 1199 } | 1199 } |
| 1200 | 1200 |
| 1201 } // namespace mus | 1201 } // namespace mus |
| OLD | NEW |