OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "ui/aura/window.h" | 5 #include "ui/aura/window.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 CreateTestWindowWithDelegate(&parent_delegate, 0, gfx::Rect(), NULL)); | 237 CreateTestWindowWithDelegate(&parent_delegate, 0, gfx::Rect(), NULL)); |
238 CreateTestWindowWithDelegate(&child_delegate, 0, gfx::Rect(), parent.get()); | 238 CreateTestWindowWithDelegate(&child_delegate, 0, gfx::Rect(), parent.get()); |
239 } | 239 } |
240 // Both the parent and child should have been destroyed. | 240 // Both the parent and child should have been destroyed. |
241 EXPECT_EQ(1, parent_delegate.destroying_count()); | 241 EXPECT_EQ(1, parent_delegate.destroying_count()); |
242 EXPECT_EQ(1, parent_delegate.destroyed_count()); | 242 EXPECT_EQ(1, parent_delegate.destroyed_count()); |
243 EXPECT_EQ(1, child_delegate.destroying_count()); | 243 EXPECT_EQ(1, child_delegate.destroying_count()); |
244 EXPECT_EQ(1, child_delegate.destroyed_count()); | 244 EXPECT_EQ(1, child_delegate.destroyed_count()); |
245 } | 245 } |
246 | 246 |
247 // Make sure MoveChildToFront moves both the window and layer to the front. | 247 // Make sure StackChildAtTop moves both the window and layer to the front. |
248 TEST_F(WindowTest, MoveChildToFront) { | 248 TEST_F(WindowTest, StackChildAtTop) { |
249 Window parent(NULL); | 249 Window parent(NULL); |
250 parent.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); | 250 parent.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); |
251 Window child1(NULL); | 251 Window child1(NULL); |
252 child1.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); | 252 child1.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); |
253 Window child2(NULL); | 253 Window child2(NULL); |
254 child2.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); | 254 child2.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); |
255 | 255 |
256 child1.SetParent(&parent); | 256 child1.SetParent(&parent); |
257 child2.SetParent(&parent); | 257 child2.SetParent(&parent); |
258 ASSERT_EQ(2u, parent.children().size()); | 258 ASSERT_EQ(2u, parent.children().size()); |
259 EXPECT_EQ(&child1, parent.children()[0]); | 259 EXPECT_EQ(&child1, parent.children()[0]); |
260 EXPECT_EQ(&child2, parent.children()[1]); | 260 EXPECT_EQ(&child2, parent.children()[1]); |
261 ASSERT_EQ(2u, parent.layer()->children().size()); | 261 ASSERT_EQ(2u, parent.layer()->children().size()); |
262 EXPECT_EQ(child1.layer(), parent.layer()->children()[0]); | 262 EXPECT_EQ(child1.layer(), parent.layer()->children()[0]); |
263 EXPECT_EQ(child2.layer(), parent.layer()->children()[1]); | 263 EXPECT_EQ(child2.layer(), parent.layer()->children()[1]); |
264 | 264 |
265 parent.MoveChildToFront(&child1); | 265 parent.StackChildAtTop(&child1); |
266 ASSERT_EQ(2u, parent.children().size()); | 266 ASSERT_EQ(2u, parent.children().size()); |
267 EXPECT_EQ(&child1, parent.children()[1]); | 267 EXPECT_EQ(&child1, parent.children()[1]); |
268 EXPECT_EQ(&child2, parent.children()[0]); | 268 EXPECT_EQ(&child2, parent.children()[0]); |
269 ASSERT_EQ(2u, parent.layer()->children().size()); | 269 ASSERT_EQ(2u, parent.layer()->children().size()); |
270 EXPECT_EQ(child1.layer(), parent.layer()->children()[1]); | 270 EXPECT_EQ(child1.layer(), parent.layer()->children()[1]); |
271 EXPECT_EQ(child2.layer(), parent.layer()->children()[0]); | 271 EXPECT_EQ(child2.layer(), parent.layer()->children()[0]); |
272 } | 272 } |
273 | 273 |
274 // Various assertions for MoveToFront. | 274 // Various assertions for StackAtTop. |
275 TEST_F(WindowTest, MoveToFront) { | 275 TEST_F(WindowTest, StackAtTop) { |
276 Window parent(NULL); | 276 Window parent(NULL); |
277 parent.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); | 277 parent.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); |
278 Window child1(NULL); | 278 Window child1(NULL); |
279 child1.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); | 279 child1.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); |
280 Window child2(NULL); | 280 Window child2(NULL); |
281 child2.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); | 281 child2.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); |
282 Window child3(NULL); | 282 Window child3(NULL); |
283 child3.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); | 283 child3.Init(ui::Layer::LAYER_HAS_NO_TEXTURE); |
284 | 284 |
285 child1.SetParent(&parent); | 285 child1.SetParent(&parent); |
286 child2.SetParent(&parent); | 286 child2.SetParent(&parent); |
287 | 287 |
288 // Move 1 in front of 2. | 288 // Move 1 in front of 2. |
289 parent.MoveChildAbove(&child1, &child2); | 289 parent.StackChildAbove(&child1, &child2); |
290 ASSERT_EQ(2u, parent.children().size()); | 290 ASSERT_EQ(2u, parent.children().size()); |
291 EXPECT_EQ(&child2, parent.children()[0]); | 291 EXPECT_EQ(&child2, parent.children()[0]); |
292 EXPECT_EQ(&child1, parent.children()[1]); | 292 EXPECT_EQ(&child1, parent.children()[1]); |
293 ASSERT_EQ(2u, parent.layer()->children().size()); | 293 ASSERT_EQ(2u, parent.layer()->children().size()); |
294 EXPECT_EQ(child2.layer(), parent.layer()->children()[0]); | 294 EXPECT_EQ(child2.layer(), parent.layer()->children()[0]); |
295 EXPECT_EQ(child1.layer(), parent.layer()->children()[1]); | 295 EXPECT_EQ(child1.layer(), parent.layer()->children()[1]); |
296 | 296 |
297 // Add 3, resulting in order [2, 1, 3], then move 2 in front of 1, resulting | 297 // Add 3, resulting in order [2, 1, 3], then move 2 in front of 1, resulting |
298 // in [1, 2, 3]. | 298 // in [1, 2, 3]. |
299 child3.SetParent(&parent); | 299 child3.SetParent(&parent); |
300 parent.MoveChildAbove(&child2, &child1); | 300 parent.StackChildAbove(&child2, &child1); |
301 ASSERT_EQ(3u, parent.children().size()); | 301 ASSERT_EQ(3u, parent.children().size()); |
302 EXPECT_EQ(&child1, parent.children()[0]); | 302 EXPECT_EQ(&child1, parent.children()[0]); |
303 EXPECT_EQ(&child2, parent.children()[1]); | 303 EXPECT_EQ(&child2, parent.children()[1]); |
304 EXPECT_EQ(&child3, parent.children()[2]); | 304 EXPECT_EQ(&child3, parent.children()[2]); |
305 ASSERT_EQ(3u, parent.layer()->children().size()); | 305 ASSERT_EQ(3u, parent.layer()->children().size()); |
306 EXPECT_EQ(child1.layer(), parent.layer()->children()[0]); | 306 EXPECT_EQ(child1.layer(), parent.layer()->children()[0]); |
307 EXPECT_EQ(child2.layer(), parent.layer()->children()[1]); | 307 EXPECT_EQ(child2.layer(), parent.layer()->children()[1]); |
308 EXPECT_EQ(child3.layer(), parent.layer()->children()[2]); | 308 EXPECT_EQ(child3.layer(), parent.layer()->children()[2]); |
309 | 309 |
310 // Move 1 in front of 3, resulting in [2 3 1]. | 310 // Move 1 in front of 3, resulting in [2 3 1]. |
311 parent.MoveChildAbove(&child1, &child3); | 311 parent.StackChildAbove(&child1, &child3); |
312 ASSERT_EQ(3u, parent.children().size()); | 312 ASSERT_EQ(3u, parent.children().size()); |
313 EXPECT_EQ(&child2, parent.children()[0]); | 313 EXPECT_EQ(&child2, parent.children()[0]); |
314 EXPECT_EQ(&child3, parent.children()[1]); | 314 EXPECT_EQ(&child3, parent.children()[1]); |
315 EXPECT_EQ(&child1, parent.children()[2]); | 315 EXPECT_EQ(&child1, parent.children()[2]); |
316 ASSERT_EQ(3u, parent.layer()->children().size()); | 316 ASSERT_EQ(3u, parent.layer()->children().size()); |
317 EXPECT_EQ(child2.layer(), parent.layer()->children()[0]); | 317 EXPECT_EQ(child2.layer(), parent.layer()->children()[0]); |
318 EXPECT_EQ(child3.layer(), parent.layer()->children()[1]); | 318 EXPECT_EQ(child3.layer(), parent.layer()->children()[1]); |
319 EXPECT_EQ(child1.layer(), parent.layer()->children()[2]); | 319 EXPECT_EQ(child1.layer(), parent.layer()->children()[2]); |
320 } | 320 } |
321 | 321 |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
747 gfx::Screen::GetMonitorAreaNearestPoint(gfx::Point()).ToString()); | 747 gfx::Screen::GetMonitorAreaNearestPoint(gfx::Point()).ToString()); |
748 } | 748 } |
749 | 749 |
750 // Various assertions for transient children. | 750 // Various assertions for transient children. |
751 TEST_F(WindowTest, TransientChildren) { | 751 TEST_F(WindowTest, TransientChildren) { |
752 scoped_ptr<Window> parent(CreateTestWindowWithId(0, NULL)); | 752 scoped_ptr<Window> parent(CreateTestWindowWithId(0, NULL)); |
753 scoped_ptr<Window> w1(CreateTestWindowWithId(1, parent.get())); | 753 scoped_ptr<Window> w1(CreateTestWindowWithId(1, parent.get())); |
754 scoped_ptr<Window> w3(CreateTestWindowWithId(3, parent.get())); | 754 scoped_ptr<Window> w3(CreateTestWindowWithId(3, parent.get())); |
755 Window* w2 = CreateTestWindowWithId(2, parent.get()); | 755 Window* w2 = CreateTestWindowWithId(2, parent.get()); |
756 w1->AddTransientChild(w2); // w2 is now owned by w1. | 756 w1->AddTransientChild(w2); // w2 is now owned by w1. |
757 // Move w1 to the front (end), this should force w2 to be last (on top of w1). | 757 // Stack w1 at the top (end), this should force w2 to be last (on top of w1). |
758 parent->MoveChildToFront(w1.get()); | 758 parent->StackChildAtTop(w1.get()); |
759 ASSERT_EQ(3u, parent->children().size()); | 759 ASSERT_EQ(3u, parent->children().size()); |
760 EXPECT_EQ(w2, parent->children().back()); | 760 EXPECT_EQ(w2, parent->children().back()); |
761 | 761 |
762 // Destroy w1, which should also destroy w3 (since it's a transient child). | 762 // Destroy w1, which should also destroy w3 (since it's a transient child). |
763 w1.reset(); | 763 w1.reset(); |
764 w2 = NULL; | 764 w2 = NULL; |
765 ASSERT_EQ(1u, parent->children().size()); | 765 ASSERT_EQ(1u, parent->children().size()); |
766 EXPECT_EQ(w3.get(), parent->children()[0]); | 766 EXPECT_EQ(w3.get(), parent->children()[0]); |
767 | 767 |
768 w1.reset(CreateTestWindowWithId(4, parent.get())); | 768 w1.reset(CreateTestWindowWithId(4, parent.get())); |
769 w2 = CreateTestWindowWithId(5, w3.get()); | 769 w2 = CreateTestWindowWithId(5, w3.get()); |
770 w1->AddTransientChild(w2); | 770 w1->AddTransientChild(w2); |
771 parent->MoveChildToFront(w3.get()); | 771 parent->StackChildAtTop(w3.get()); |
772 // Move w1 to the front (end), this shouldn't effect w2 since it has a | 772 // Stack w1 at the top (end), this shouldn't affect w2 since it has a |
773 // different parent. | 773 // different parent. |
774 parent->MoveChildToFront(w1.get()); | 774 parent->StackChildAtTop(w1.get()); |
775 ASSERT_EQ(2u, parent->children().size()); | 775 ASSERT_EQ(2u, parent->children().size()); |
776 EXPECT_EQ(w3.get(), parent->children()[0]); | 776 EXPECT_EQ(w3.get(), parent->children()[0]); |
777 EXPECT_EQ(w1.get(), parent->children()[1]); | 777 EXPECT_EQ(w1.get(), parent->children()[1]); |
778 } | 778 } |
779 | 779 |
780 TEST_F(WindowTest, Property) { | 780 TEST_F(WindowTest, Property) { |
781 scoped_ptr<Window> w(CreateTestWindowWithId(0, NULL)); | 781 scoped_ptr<Window> w(CreateTestWindowWithId(0, NULL)); |
782 const char* key = "test"; | 782 const char* key = "test"; |
783 EXPECT_EQ(NULL, w->GetProperty(key)); | 783 EXPECT_EQ(NULL, w->GetProperty(key)); |
784 EXPECT_EQ(0, w->GetIntProperty(key)); | 784 EXPECT_EQ(0, w->GetIntProperty(key)); |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1086 | 1086 |
1087 w3->Activate(); | 1087 w3->Activate(); |
1088 EXPECT_EQ(w2.get(), active()); | 1088 EXPECT_EQ(w2.get(), active()); |
1089 | 1089 |
1090 w1->Activate(); | 1090 w1->Activate(); |
1091 EXPECT_EQ(w1.get(), active()); | 1091 EXPECT_EQ(w1.get(), active()); |
1092 } | 1092 } |
1093 | 1093 |
1094 } // namespace test | 1094 } // namespace test |
1095 } // namespace aura | 1095 } // namespace aura |
OLD | NEW |