Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(482)

Side by Side Diff: ash/wm/window_modality_controller_unittest.cc

Issue 115453004: Moves management of transients out of Window (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove unneeded parens Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ash/wm/system_modal_container_layout_manager_unittest.cc ('k') | ash/wm/window_state.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "ui/views/corewm/window_modality_controller.h" 5 #include "ui/views/corewm/window_modality_controller.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/test/ash_test_base.h" 8 #include "ash/test/ash_test_base.h"
9 #include "ash/wm/window_util.h" 9 #include "ash/wm/window_util.h"
10 #include "ui/aura/client/aura_constants.h" 10 #include "ui/aura/client/aura_constants.h"
11 #include "ui/aura/root_window.h" 11 #include "ui/aura/root_window.h"
12 #include "ui/aura/test/event_generator.h" 12 #include "ui/aura/test/event_generator.h"
13 #include "ui/aura/test/test_window_delegate.h" 13 #include "ui/aura/test/test_window_delegate.h"
14 #include "ui/aura/test/test_windows.h" 14 #include "ui/aura/test/test_windows.h"
15 #include "ui/aura/window.h" 15 #include "ui/aura/window.h"
16 #include "ui/base/ui_base_types.h" 16 #include "ui/base/ui_base_types.h"
17 #include "ui/views/corewm/window_util.h"
17 #include "ui/views/test/capture_tracking_view.h" 18 #include "ui/views/test/capture_tracking_view.h"
18 #include "ui/views/test/child_modal_window.h" 19 #include "ui/views/test/child_modal_window.h"
19 #include "ui/views/widget/widget.h" 20 #include "ui/views/widget/widget.h"
20 21
21 namespace ash { 22 namespace ash {
22 namespace internal { 23 namespace internal {
23 24
24 typedef test::AshTestBase WindowModalityControllerTest; 25 typedef test::AshTestBase WindowModalityControllerTest;
25 26
26 namespace { 27 namespace {
(...skipping 16 matching lines...) Expand all
43 // - closing a window passes focus up the stack. 44 // - closing a window passes focus up the stack.
44 TEST_F(WindowModalityControllerTest, BasicActivation) { 45 TEST_F(WindowModalityControllerTest, BasicActivation) {
45 aura::test::TestWindowDelegate d; 46 aura::test::TestWindowDelegate d;
46 scoped_ptr<aura::Window> w1( 47 scoped_ptr<aura::Window> w1(
47 CreateTestWindowInShellWithDelegate(&d, -1, gfx::Rect())); 48 CreateTestWindowInShellWithDelegate(&d, -1, gfx::Rect()));
48 scoped_ptr<aura::Window> w11( 49 scoped_ptr<aura::Window> w11(
49 CreateTestWindowInShellWithDelegate(&d, -11, gfx::Rect())); 50 CreateTestWindowInShellWithDelegate(&d, -11, gfx::Rect()));
50 scoped_ptr<aura::Window> w12( 51 scoped_ptr<aura::Window> w12(
51 CreateTestWindowInShellWithDelegate(&d, -12, gfx::Rect())); 52 CreateTestWindowInShellWithDelegate(&d, -12, gfx::Rect()));
52 53
53 w1->AddTransientChild(w11.get()); 54 views::corewm::AddTransientChild(w1.get(), w11.get());
54 wm::ActivateWindow(w1.get()); 55 wm::ActivateWindow(w1.get());
55 EXPECT_TRUE(wm::IsActiveWindow(w1.get())); 56 EXPECT_TRUE(wm::IsActiveWindow(w1.get()));
56 wm::ActivateWindow(w11.get()); 57 wm::ActivateWindow(w11.get());
57 EXPECT_TRUE(wm::IsActiveWindow(w11.get())); 58 EXPECT_TRUE(wm::IsActiveWindow(w11.get()));
58 59
59 w12->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW); 60 w12->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW);
60 w1->AddTransientChild(w12.get()); 61 views::corewm::AddTransientChild(w1.get(), w12.get());
61 wm::ActivateWindow(w12.get()); 62 wm::ActivateWindow(w12.get());
62 EXPECT_TRUE(wm::IsActiveWindow(w12.get())); 63 EXPECT_TRUE(wm::IsActiveWindow(w12.get()));
63 64
64 wm::ActivateWindow(w11.get()); 65 wm::ActivateWindow(w11.get());
65 EXPECT_TRUE(wm::IsActiveWindow(w11.get())); 66 EXPECT_TRUE(wm::IsActiveWindow(w11.get()));
66 67
67 int check1[] = { -1, -12, -11 }; 68 int check1[] = { -1, -12, -11 };
68 EXPECT_TRUE(ValidateStacking(w1->parent(), check1, arraysize(check1))); 69 EXPECT_TRUE(ValidateStacking(w1->parent(), check1, arraysize(check1)));
69 70
70 wm::ActivateWindow(w1.get()); 71 wm::ActivateWindow(w1.get());
(...skipping 19 matching lines...) Expand all
90 aura::test::TestWindowDelegate d; 91 aura::test::TestWindowDelegate d;
91 scoped_ptr<aura::Window> w1( 92 scoped_ptr<aura::Window> w1(
92 CreateTestWindowInShellWithDelegate(&d, -1, gfx::Rect())); 93 CreateTestWindowInShellWithDelegate(&d, -1, gfx::Rect()));
93 scoped_ptr<aura::Window> w11( 94 scoped_ptr<aura::Window> w11(
94 CreateTestWindowInShellWithDelegate(&d, -11, gfx::Rect())); 95 CreateTestWindowInShellWithDelegate(&d, -11, gfx::Rect()));
95 scoped_ptr<aura::Window> w111( 96 scoped_ptr<aura::Window> w111(
96 CreateTestWindowInShellWithDelegate(&d, -111, gfx::Rect())); 97 CreateTestWindowInShellWithDelegate(&d, -111, gfx::Rect()));
97 scoped_ptr<aura::Window> w2( 98 scoped_ptr<aura::Window> w2(
98 CreateTestWindowInShellWithDelegate(&d, -2, gfx::Rect())); 99 CreateTestWindowInShellWithDelegate(&d, -2, gfx::Rect()));
99 100
100 w1->AddTransientChild(w11.get()); 101 views::corewm::AddTransientChild(w1.get(), w11.get());
101 w11->AddTransientChild(w111.get()); 102 views::corewm::AddTransientChild(w11.get(), w111.get());
102 103
103 wm::ActivateWindow(w1.get()); 104 wm::ActivateWindow(w1.get());
104 EXPECT_TRUE(wm::IsActiveWindow(w1.get())); 105 EXPECT_TRUE(wm::IsActiveWindow(w1.get()));
105 wm::ActivateWindow(w2.get()); 106 wm::ActivateWindow(w2.get());
106 EXPECT_TRUE(wm::IsActiveWindow(w2.get())); 107 EXPECT_TRUE(wm::IsActiveWindow(w2.get()));
107 108
108 // Set up modality. 109 // Set up modality.
109 w11->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW); 110 w11->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW);
110 w111->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW); 111 w111->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW);
111 112
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 scoped_ptr<aura::Window> w1( 145 scoped_ptr<aura::Window> w1(
145 CreateTestWindowInShellWithDelegate(&d, -1, gfx::Rect())); 146 CreateTestWindowInShellWithDelegate(&d, -1, gfx::Rect()));
146 scoped_ptr<aura::Window> w11( 147 scoped_ptr<aura::Window> w11(
147 CreateTestWindowInShellWithDelegate(&d, -11, gfx::Rect())); 148 CreateTestWindowInShellWithDelegate(&d, -11, gfx::Rect()));
148 // |w111| will be owned and deleted by |w11|. 149 // |w111| will be owned and deleted by |w11|.
149 aura::Window* w111 = 150 aura::Window* w111 =
150 CreateTestWindowInShellWithDelegate(&d, -111, gfx::Rect()); 151 CreateTestWindowInShellWithDelegate(&d, -111, gfx::Rect());
151 scoped_ptr<aura::Window> w2( 152 scoped_ptr<aura::Window> w2(
152 CreateTestWindowInShellWithDelegate(&d, -2, gfx::Rect())); 153 CreateTestWindowInShellWithDelegate(&d, -2, gfx::Rect()));
153 154
154 w1->AddTransientChild(w11.get()); 155 views::corewm::AddTransientChild(w1.get(), w11.get());
155 w11->AddTransientChild(w111); 156 views::corewm::AddTransientChild(w11.get(), w111);
156 157
157 wm::ActivateWindow(w1.get()); 158 wm::ActivateWindow(w1.get());
158 EXPECT_TRUE(wm::IsActiveWindow(w1.get())); 159 EXPECT_TRUE(wm::IsActiveWindow(w1.get()));
159 wm::ActivateWindow(w2.get()); 160 wm::ActivateWindow(w2.get());
160 EXPECT_TRUE(wm::IsActiveWindow(w2.get())); 161 EXPECT_TRUE(wm::IsActiveWindow(w2.get()));
161 162
162 // Set up modality. 163 // Set up modality.
163 w11->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW); 164 w11->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW);
164 w111->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW); 165 w111->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW);
165 166
(...skipping 12 matching lines...) Expand all
178 } 179 }
179 180
180 // Modality also prevents events from being passed to the transient parent. 181 // Modality also prevents events from being passed to the transient parent.
181 TEST_F(WindowModalityControllerTest, Events) { 182 TEST_F(WindowModalityControllerTest, Events) {
182 aura::test::TestWindowDelegate d; 183 aura::test::TestWindowDelegate d;
183 scoped_ptr<aura::Window> w1(CreateTestWindowInShellWithDelegate(&d, -1, 184 scoped_ptr<aura::Window> w1(CreateTestWindowInShellWithDelegate(&d, -1,
184 gfx::Rect(0, 0, 100, 100))); 185 gfx::Rect(0, 0, 100, 100)));
185 scoped_ptr<aura::Window> w11(CreateTestWindowInShellWithDelegate(&d, -11, 186 scoped_ptr<aura::Window> w11(CreateTestWindowInShellWithDelegate(&d, -11,
186 gfx::Rect(20, 20, 50, 50))); 187 gfx::Rect(20, 20, 50, 50)));
187 188
188 w1->AddTransientChild(w11.get()); 189 views::corewm::AddTransientChild(w1.get(), w11.get());
189 190
190 { 191 {
191 // Clicking a point within w1 should activate that window. 192 // Clicking a point within w1 should activate that window.
192 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), 193 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
193 gfx::Point(10, 10)); 194 gfx::Point(10, 10));
194 generator.ClickLeftButton(); 195 generator.ClickLeftButton();
195 EXPECT_TRUE(wm::IsActiveWindow(w1.get())); 196 EXPECT_TRUE(wm::IsActiveWindow(w1.get()));
196 } 197 }
197 198
198 w11->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW); 199 w11->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW);
(...skipping 18 matching lines...) Expand all
217 aura::test::CreateTestWindowWithDelegate(&d, -11, gfx::Rect(), w1.get())); 218 aura::test::CreateTestWindowWithDelegate(&d, -11, gfx::Rect(), w1.get()));
218 scoped_ptr<aura::Window> w2( 219 scoped_ptr<aura::Window> w2(
219 CreateTestWindowInShellWithDelegate(&d, -2, gfx::Rect())); 220 CreateTestWindowInShellWithDelegate(&d, -2, gfx::Rect()));
220 w2->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW); 221 w2->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW);
221 222
222 aura::Window* wt; 223 aura::Window* wt;
223 wt = views::corewm::GetModalTransient(w1.get()); 224 wt = views::corewm::GetModalTransient(w1.get());
224 ASSERT_EQ(static_cast<aura::Window*>(NULL), wt); 225 ASSERT_EQ(static_cast<aura::Window*>(NULL), wt);
225 226
226 // Parent w2 to w1. It should get parented to the parent of w1. 227 // Parent w2 to w1. It should get parented to the parent of w1.
227 w1->AddTransientChild(w2.get()); 228 views::corewm::AddTransientChild(w1.get(), w2.get());
228 ASSERT_EQ(2U, w1->parent()->children().size()); 229 ASSERT_EQ(2U, w1->parent()->children().size());
229 EXPECT_EQ(-2, w1->parent()->children().at(1)->id()); 230 EXPECT_EQ(-2, w1->parent()->children().at(1)->id());
230 231
231 // Request the modal transient window for w1, it should be w2. 232 // Request the modal transient window for w1, it should be w2.
232 wt = views::corewm::GetModalTransient(w1.get()); 233 wt = views::corewm::GetModalTransient(w1.get());
233 ASSERT_NE(static_cast<aura::Window*>(NULL), wt); 234 ASSERT_NE(static_cast<aura::Window*>(NULL), wt);
234 EXPECT_EQ(-2, wt->id()); 235 EXPECT_EQ(-2, wt->id());
235 236
236 // Request the modal transient window for w11, it should also be w2. 237 // Request the modal transient window for w11, it should also be w2.
237 wt = views::corewm::GetModalTransient(w11.get()); 238 wt = views::corewm::GetModalTransient(w11.get());
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 TEST_F(WindowModalityControllerTest, TouchEvent) { 320 TEST_F(WindowModalityControllerTest, TouchEvent) {
320 TouchTrackerWindowDelegate d1; 321 TouchTrackerWindowDelegate d1;
321 scoped_ptr<aura::Window> w1(CreateTestWindowInShellWithDelegate(&d1, 322 scoped_ptr<aura::Window> w1(CreateTestWindowInShellWithDelegate(&d1,
322 -1, gfx::Rect(0, 0, 100, 100))); 323 -1, gfx::Rect(0, 0, 100, 100)));
323 TouchTrackerWindowDelegate d11; 324 TouchTrackerWindowDelegate d11;
324 scoped_ptr<aura::Window> w11(CreateTestWindowInShellWithDelegate(&d11, 325 scoped_ptr<aura::Window> w11(CreateTestWindowInShellWithDelegate(&d11,
325 -11, gfx::Rect(20, 20, 50, 50))); 326 -11, gfx::Rect(20, 20, 50, 50)));
326 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), 327 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
327 gfx::Point(10, 10)); 328 gfx::Point(10, 10));
328 329
329 w1->AddTransientChild(w11.get()); 330 views::corewm::AddTransientChild(w1.get(), w11.get());
330 d1.reset(); 331 d1.reset();
331 d11.reset(); 332 d11.reset();
332 333
333 { 334 {
334 // Clicking a point within w1 should activate that window. 335 // Clicking a point within w1 should activate that window.
335 generator.PressMoveAndReleaseTouchTo(gfx::Point(10, 10)); 336 generator.PressMoveAndReleaseTouchTo(gfx::Point(10, 10));
336 EXPECT_TRUE(wm::IsActiveWindow(w1.get())); 337 EXPECT_TRUE(wm::IsActiveWindow(w1.get()));
337 EXPECT_TRUE(d1.received_touch()); 338 EXPECT_TRUE(d1.received_touch());
338 EXPECT_FALSE(d11.received_touch()); 339 EXPECT_FALSE(d11.received_touch());
339 } 340 }
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 aura::test::TestWindowDelegate d; 509 aura::test::TestWindowDelegate d;
509 scoped_ptr<aura::Window> w1( 510 scoped_ptr<aura::Window> w1(
510 CreateTestWindowInShellWithDelegate(&d, -1, gfx::Rect())); 511 CreateTestWindowInShellWithDelegate(&d, -1, gfx::Rect()));
511 scoped_ptr<aura::Window> w2( 512 scoped_ptr<aura::Window> w2(
512 aura::test::CreateTestWindowWithDelegate(&d, -11, gfx::Rect(), w1.get())); 513 aura::test::CreateTestWindowWithDelegate(&d, -11, gfx::Rect(), w1.get()));
513 scoped_ptr<aura::Window> w3( 514 scoped_ptr<aura::Window> w3(
514 aura::test::CreateTestWindowWithDelegate(&d, -11, gfx::Rect(), w2.get())); 515 aura::test::CreateTestWindowWithDelegate(&d, -11, gfx::Rect(), w2.get()));
515 scoped_ptr<aura::Window> w4( 516 scoped_ptr<aura::Window> w4(
516 CreateTestWindowInShellWithDelegate(&d, -2, gfx::Rect())); 517 CreateTestWindowInShellWithDelegate(&d, -2, gfx::Rect()));
517 w4->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW); 518 w4->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW);
518 w1->AddTransientChild(w4.get()); 519 views::corewm::AddTransientChild(w1.get(), w4.get());
519 520
520 wm::ActivateWindow(w1.get()); 521 wm::ActivateWindow(w1.get());
521 EXPECT_TRUE(wm::IsActiveWindow(w4.get())); 522 EXPECT_TRUE(wm::IsActiveWindow(w4.get()));
522 523
523 wm::ActivateWindow(w2.get()); 524 wm::ActivateWindow(w2.get());
524 EXPECT_TRUE(wm::IsActiveWindow(w4.get())); 525 EXPECT_TRUE(wm::IsActiveWindow(w4.get()));
525 526
526 wm::ActivateWindow(w3.get()); 527 wm::ActivateWindow(w3.get());
527 EXPECT_TRUE(wm::IsActiveWindow(w4.get())); 528 EXPECT_TRUE(wm::IsActiveWindow(w4.get()));
528 529
529 wm::ActivateWindow(w4.get()); 530 wm::ActivateWindow(w4.get());
530 EXPECT_TRUE(wm::IsActiveWindow(w4.get())); 531 EXPECT_TRUE(wm::IsActiveWindow(w4.get()));
531 } 532 }
532 533
533 // Child-modal test for the case when the originally clicked window is an 534 // Child-modal test for the case when the originally clicked window is an
534 // ancestor of the modal parent. 535 // ancestor of the modal parent.
535 TEST_F(WindowModalityControllerTest, ChildModalAncestor) { 536 TEST_F(WindowModalityControllerTest, ChildModalAncestor) {
536 aura::test::TestWindowDelegate d; 537 aura::test::TestWindowDelegate d;
537 scoped_ptr<aura::Window> w1( 538 scoped_ptr<aura::Window> w1(
538 CreateTestWindowInShellWithDelegate(&d, -1, gfx::Rect())); 539 CreateTestWindowInShellWithDelegate(&d, -1, gfx::Rect()));
539 scoped_ptr<aura::Window> w2( 540 scoped_ptr<aura::Window> w2(
540 aura::test::CreateTestWindowWithDelegate(&d, -11, gfx::Rect(), w1.get())); 541 aura::test::CreateTestWindowWithDelegate(&d, -11, gfx::Rect(), w1.get()));
541 scoped_ptr<aura::Window> w3( 542 scoped_ptr<aura::Window> w3(
542 aura::test::CreateTestWindowWithDelegate(&d, -11, gfx::Rect(), w2.get())); 543 aura::test::CreateTestWindowWithDelegate(&d, -11, gfx::Rect(), w2.get()));
543 scoped_ptr<aura::Window> w4( 544 scoped_ptr<aura::Window> w4(
544 CreateTestWindowInShellWithDelegate(&d, -2, gfx::Rect())); 545 CreateTestWindowInShellWithDelegate(&d, -2, gfx::Rect()));
545 w4->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_CHILD); 546 w4->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_CHILD);
546 views::corewm::SetModalParent(w4.get(), w2.get()); 547 views::corewm::SetModalParent(w4.get(), w2.get());
547 w1->AddTransientChild(w4.get()); 548 views::corewm::AddTransientChild(w1.get(), w4.get());
548 549
549 wm::ActivateWindow(w1.get()); 550 wm::ActivateWindow(w1.get());
550 EXPECT_TRUE(wm::IsActiveWindow(w1.get())); 551 EXPECT_TRUE(wm::IsActiveWindow(w1.get()));
551 552
552 wm::ActivateWindow(w2.get()); 553 wm::ActivateWindow(w2.get());
553 EXPECT_TRUE(wm::IsActiveWindow(w4.get())); 554 EXPECT_TRUE(wm::IsActiveWindow(w4.get()));
554 555
555 wm::ActivateWindow(w3.get()); 556 wm::ActivateWindow(w3.get());
556 EXPECT_TRUE(wm::IsActiveWindow(w4.get())); 557 EXPECT_TRUE(wm::IsActiveWindow(w4.get()));
557 558
558 wm::ActivateWindow(w4.get()); 559 wm::ActivateWindow(w4.get());
559 EXPECT_TRUE(wm::IsActiveWindow(w4.get())); 560 EXPECT_TRUE(wm::IsActiveWindow(w4.get()));
560 } 561 }
561 562
562 } // namespace internal 563 } // namespace internal
563 } // namespace ash 564 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/system_modal_container_layout_manager_unittest.cc ('k') | ash/wm/window_state.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698