OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "ash/launcher/launcher.h" |
5 #include "ash/root_window_controller.h" | 6 #include "ash/root_window_controller.h" |
6 #include "ash/screen_ash.h" | 7 #include "ash/screen_ash.h" |
7 #include "ash/shell.h" | 8 #include "ash/shell.h" |
8 #include "ash/test/ash_test_base.h" | 9 #include "ash/test/ash_test_base.h" |
| 10 #include "ash/test/launcher_test_api.h" |
| 11 #include "ash/test/launcher_view_test_api.h" |
9 #include "ash/test/shell_test_api.h" | 12 #include "ash/test/shell_test_api.h" |
| 13 #include "ash/test/test_launcher_delegate.h" |
10 #include "ash/wm/mru_window_tracker.h" | 14 #include "ash/wm/mru_window_tracker.h" |
11 #include "ash/wm/overview/window_selector.h" | 15 #include "ash/wm/overview/window_selector.h" |
12 #include "ash/wm/overview/window_selector_controller.h" | 16 #include "ash/wm/overview/window_selector_controller.h" |
13 #include "ash/wm/window_util.h" | 17 #include "ash/wm/window_util.h" |
14 #include "base/basictypes.h" | 18 #include "base/basictypes.h" |
15 #include "base/compiler_specific.h" | 19 #include "base/compiler_specific.h" |
16 #include "base/memory/scoped_vector.h" | 20 #include "base/memory/scoped_vector.h" |
17 #include "base/run_loop.h" | 21 #include "base/run_loop.h" |
18 #include "ui/aura/client/aura_constants.h" | 22 #include "ui/aura/client/aura_constants.h" |
19 #include "ui/aura/client/focus_client.h" | 23 #include "ui/aura/client/focus_client.h" |
20 #include "ui/aura/root_window.h" | 24 #include "ui/aura/root_window.h" |
21 #include "ui/aura/test/event_generator.h" | 25 #include "ui/aura/test/event_generator.h" |
22 #include "ui/aura/test/test_window_delegate.h" | 26 #include "ui/aura/test/test_window_delegate.h" |
23 #include "ui/aura/test/test_windows.h" | 27 #include "ui/aura/test/test_windows.h" |
24 #include "ui/aura/window.h" | 28 #include "ui/aura/window.h" |
25 #include "ui/compositor/scoped_animation_duration_scale_mode.h" | 29 #include "ui/compositor/scoped_animation_duration_scale_mode.h" |
26 #include "ui/gfx/rect_conversions.h" | 30 #include "ui/gfx/rect_conversions.h" |
27 #include "ui/gfx/transform.h" | 31 #include "ui/gfx/transform.h" |
28 | 32 |
29 namespace ash { | 33 namespace ash { |
30 namespace internal { | 34 namespace internal { |
31 | 35 |
32 class WindowSelectorTest : public test::AshTestBase { | 36 class WindowSelectorTest : public test::AshTestBase { |
33 public: | 37 public: |
34 WindowSelectorTest() {} | 38 WindowSelectorTest() {} |
35 virtual ~WindowSelectorTest() {} | 39 virtual ~WindowSelectorTest() {} |
36 | 40 |
| 41 virtual void SetUp() OVERRIDE { |
| 42 test::AshTestBase::SetUp(); |
| 43 ASSERT_TRUE(test::TestLauncherDelegate::instance()); |
| 44 |
| 45 launcher_view_test_.reset(new test::LauncherViewTestAPI( |
| 46 test::LauncherTestAPI(Launcher::ForPrimaryDisplay()).launcher_view())); |
| 47 launcher_view_test_->SetAnimationDuration(1); |
| 48 } |
| 49 |
37 aura::Window* CreateWindow(const gfx::Rect& bounds) { | 50 aura::Window* CreateWindow(const gfx::Rect& bounds) { |
38 return CreateTestWindowInShellWithDelegate(&wd, -1, bounds); | 51 return CreateTestWindowInShellWithDelegate(&wd, -1, bounds); |
39 } | 52 } |
40 | 53 |
| 54 aura::Window* CreatePanelWindow(const gfx::Rect& bounds) { |
| 55 aura::Window* window = CreateTestWindowInShellWithDelegateAndType( |
| 56 NULL, aura::client::WINDOW_TYPE_PANEL, 0, bounds); |
| 57 test::TestLauncherDelegate::instance()->AddLauncherItem(window); |
| 58 launcher_view_test()->RunMessageLoopUntilAnimationsDone(); |
| 59 return window; |
| 60 } |
| 61 |
41 bool WindowsOverlapping(aura::Window* window1, aura::Window* window2) { | 62 bool WindowsOverlapping(aura::Window* window1, aura::Window* window2) { |
42 gfx::RectF window1_bounds = GetTransformedTargetBounds(window1); | 63 gfx::RectF window1_bounds = GetTransformedTargetBounds(window1); |
43 gfx::RectF window2_bounds = GetTransformedTargetBounds(window2); | 64 gfx::RectF window2_bounds = GetTransformedTargetBounds(window2); |
44 return window1_bounds.Intersects(window2_bounds); | 65 return window1_bounds.Intersects(window2_bounds); |
45 } | 66 } |
46 | 67 |
47 void ToggleOverview() { | 68 void ToggleOverview() { |
48 ash::Shell::GetInstance()->window_selector_controller()->ToggleOverview(); | 69 ash::Shell::GetInstance()->window_selector_controller()->ToggleOverview(); |
49 } | 70 } |
50 | 71 |
(...skipping 10 matching lines...) Expand all Loading... |
61 void FireOverviewStartTimer() { | 82 void FireOverviewStartTimer() { |
62 // Calls the method to start overview mode which is normally called by the | 83 // Calls the method to start overview mode which is normally called by the |
63 // timer. The timer will still fire and call this method triggering the | 84 // timer. The timer will still fire and call this method triggering the |
64 // DCHECK that overview mode was not already started, except that we call | 85 // DCHECK that overview mode was not already started, except that we call |
65 // StopCycling before the timer has a chance to fire. | 86 // StopCycling before the timer has a chance to fire. |
66 ash::Shell::GetInstance()->window_selector_controller()->window_selector_-> | 87 ash::Shell::GetInstance()->window_selector_controller()->window_selector_-> |
67 StartOverview(); | 88 StartOverview(); |
68 } | 89 } |
69 | 90 |
70 gfx::RectF GetTransformedBounds(aura::Window* window) { | 91 gfx::RectF GetTransformedBounds(aura::Window* window) { |
71 gfx::RectF bounds(window->layer()->bounds()); | 92 gfx::RectF bounds(ash::ScreenAsh::ConvertRectToScreen( |
| 93 window->parent(), window->layer()->bounds())); |
72 window->layer()->transform().TransformRect(&bounds); | 94 window->layer()->transform().TransformRect(&bounds); |
73 return bounds; | 95 return bounds; |
74 } | 96 } |
75 | 97 |
76 gfx::RectF GetTransformedTargetBounds(aura::Window* window) { | 98 gfx::RectF GetTransformedTargetBounds(aura::Window* window) { |
77 gfx::RectF bounds(window->layer()->GetTargetBounds()); | 99 gfx::RectF bounds(ash::ScreenAsh::ConvertRectToScreen( |
| 100 window->parent(), window->layer()->GetTargetBounds())); |
78 window->layer()->GetTargetTransform().TransformRect(&bounds); | 101 window->layer()->GetTargetTransform().TransformRect(&bounds); |
79 return bounds; | 102 return bounds; |
80 } | 103 } |
81 | 104 |
82 void ClickWindow(aura::Window* window) { | 105 void ClickWindow(aura::Window* window) { |
83 aura::test::EventGenerator event_generator(window->GetRootWindow(), window); | 106 aura::test::EventGenerator event_generator(window->GetRootWindow(), window); |
84 gfx::RectF target = GetTransformedBounds(window); | 107 gfx::RectF target = GetTransformedBounds(window); |
85 event_generator.ClickLeftButton(); | 108 event_generator.ClickLeftButton(); |
86 } | 109 } |
87 | 110 |
88 bool IsSelecting() { | 111 bool IsSelecting() { |
89 return ash::Shell::GetInstance()->window_selector_controller()-> | 112 return ash::Shell::GetInstance()->window_selector_controller()-> |
90 IsSelecting(); | 113 IsSelecting(); |
91 } | 114 } |
92 | 115 |
93 aura::Window* GetFocusedWindow() { | 116 aura::Window* GetFocusedWindow() { |
94 return aura::client::GetFocusClient( | 117 return aura::client::GetFocusClient( |
95 Shell::GetPrimaryRootWindow())->GetFocusedWindow(); | 118 Shell::GetPrimaryRootWindow())->GetFocusedWindow(); |
96 } | 119 } |
97 | 120 |
| 121 test::LauncherViewTestAPI* launcher_view_test() { |
| 122 return launcher_view_test_.get(); |
| 123 } |
| 124 |
98 private: | 125 private: |
99 aura::test::TestWindowDelegate wd; | 126 aura::test::TestWindowDelegate wd; |
| 127 scoped_ptr<test::LauncherViewTestAPI> launcher_view_test_; |
100 | 128 |
101 DISALLOW_COPY_AND_ASSIGN(WindowSelectorTest); | 129 DISALLOW_COPY_AND_ASSIGN(WindowSelectorTest); |
102 }; | 130 }; |
103 | 131 |
104 // Tests entering overview mode with two windows and selecting one. | 132 // Tests entering overview mode with two windows and selecting one. |
105 TEST_F(WindowSelectorTest, Basic) { | 133 TEST_F(WindowSelectorTest, Basic) { |
106 gfx::Rect bounds(0, 0, 400, 400); | 134 gfx::Rect bounds(0, 0, 400, 400); |
107 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); | 135 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); |
108 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); | 136 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); |
| 137 scoped_ptr<aura::Window> panel1(CreatePanelWindow(bounds)); |
| 138 scoped_ptr<aura::Window> panel2(CreatePanelWindow(bounds)); |
109 EXPECT_TRUE(WindowsOverlapping(window1.get(), window2.get())); | 139 EXPECT_TRUE(WindowsOverlapping(window1.get(), window2.get())); |
| 140 EXPECT_TRUE(WindowsOverlapping(window1.get(), panel1.get())); |
| 141 EXPECT_TRUE(WindowsOverlapping(panel1.get(), panel2.get())); |
110 wm::ActivateWindow(window2.get()); | 142 wm::ActivateWindow(window2.get()); |
111 EXPECT_FALSE(wm::IsActiveWindow(window1.get())); | 143 EXPECT_FALSE(wm::IsActiveWindow(window1.get())); |
112 EXPECT_TRUE(wm::IsActiveWindow(window2.get())); | 144 EXPECT_TRUE(wm::IsActiveWindow(window2.get())); |
113 EXPECT_EQ(window2.get(), GetFocusedWindow()); | 145 EXPECT_EQ(window2.get(), GetFocusedWindow()); |
114 | 146 |
115 // In overview mode the windows should no longer overlap and focus should | 147 // In overview mode the windows should no longer overlap and focus should |
116 // be removed from the window. | 148 // be removed from the window. |
117 ToggleOverview(); | 149 ToggleOverview(); |
118 EXPECT_EQ(NULL, GetFocusedWindow()); | 150 EXPECT_EQ(NULL, GetFocusedWindow()); |
119 EXPECT_FALSE(WindowsOverlapping(window1.get(), window2.get())); | 151 EXPECT_FALSE(WindowsOverlapping(window1.get(), window2.get())); |
| 152 EXPECT_FALSE(WindowsOverlapping(window1.get(), panel1.get())); |
| 153 // Panels 1 and 2 should still be overlapping being in a single selector |
| 154 // item. |
| 155 EXPECT_TRUE(WindowsOverlapping(panel1.get(), panel2.get())); |
120 | 156 |
121 // Clicking window 1 should activate it. | 157 // Clicking window 1 should activate it. |
122 ClickWindow(window1.get()); | 158 ClickWindow(window1.get()); |
123 EXPECT_TRUE(wm::IsActiveWindow(window1.get())); | 159 EXPECT_TRUE(wm::IsActiveWindow(window1.get())); |
124 EXPECT_FALSE(wm::IsActiveWindow(window2.get())); | 160 EXPECT_FALSE(wm::IsActiveWindow(window2.get())); |
125 EXPECT_EQ(window1.get(), GetFocusedWindow()); | 161 EXPECT_EQ(window1.get(), GetFocusedWindow()); |
126 } | 162 } |
127 | 163 |
128 // Tests entering overview mode with three windows and cycling through them. | 164 // Tests entering overview mode with three windows and cycling through them. |
129 TEST_F(WindowSelectorTest, BasicCycle) { | 165 TEST_F(WindowSelectorTest, BasicCycle) { |
(...skipping 11 matching lines...) Expand all Loading... |
141 Cycle(WindowSelector::FORWARD); | 177 Cycle(WindowSelector::FORWARD); |
142 EXPECT_TRUE(IsSelecting()); | 178 EXPECT_TRUE(IsSelecting()); |
143 Cycle(WindowSelector::FORWARD); | 179 Cycle(WindowSelector::FORWARD); |
144 StopCycling(); | 180 StopCycling(); |
145 EXPECT_FALSE(IsSelecting()); | 181 EXPECT_FALSE(IsSelecting()); |
146 EXPECT_FALSE(wm::IsActiveWindow(window1.get())); | 182 EXPECT_FALSE(wm::IsActiveWindow(window1.get())); |
147 EXPECT_FALSE(wm::IsActiveWindow(window2.get())); | 183 EXPECT_FALSE(wm::IsActiveWindow(window2.get())); |
148 EXPECT_TRUE(wm::IsActiveWindow(window3.get())); | 184 EXPECT_TRUE(wm::IsActiveWindow(window3.get())); |
149 } | 185 } |
150 | 186 |
| 187 // Tests cycles between panel and normal windows. |
| 188 TEST_F(WindowSelectorTest, CyclePanels) { |
| 189 gfx::Rect bounds(0, 0, 400, 400); |
| 190 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); |
| 191 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); |
| 192 scoped_ptr<aura::Window> panel1(CreatePanelWindow(bounds)); |
| 193 scoped_ptr<aura::Window> panel2(CreatePanelWindow(bounds)); |
| 194 wm::ActivateWindow(window2.get()); |
| 195 wm::ActivateWindow(window1.get()); |
| 196 wm::ActivateWindow(panel2.get()); |
| 197 wm::ActivateWindow(panel1.get()); |
| 198 EXPECT_TRUE(wm::IsActiveWindow(panel1.get())); |
| 199 |
| 200 // Cycling once should select window1 since the panels are grouped into a |
| 201 // single selectable item. |
| 202 Cycle(WindowSelector::FORWARD); |
| 203 StopCycling(); |
| 204 EXPECT_TRUE(wm::IsActiveWindow(window1.get())); |
| 205 |
| 206 // Cycling again should select the most recently used panel. |
| 207 Cycle(WindowSelector::FORWARD); |
| 208 StopCycling(); |
| 209 EXPECT_TRUE(wm::IsActiveWindow(panel1.get())); |
| 210 } |
| 211 |
| 212 // Tests cycles between panel and normal windows. |
| 213 TEST_F(WindowSelectorTest, CyclePanelsDestroyed) { |
| 214 gfx::Rect bounds(0, 0, 400, 400); |
| 215 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); |
| 216 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); |
| 217 scoped_ptr<aura::Window> window3(CreateWindow(bounds)); |
| 218 scoped_ptr<aura::Window> panel1(CreatePanelWindow(bounds)); |
| 219 scoped_ptr<aura::Window> panel2(CreatePanelWindow(bounds)); |
| 220 wm::ActivateWindow(window3.get()); |
| 221 wm::ActivateWindow(panel2.get()); |
| 222 wm::ActivateWindow(panel1.get()); |
| 223 wm::ActivateWindow(window2.get()); |
| 224 wm::ActivateWindow(window1.get()); |
| 225 EXPECT_TRUE(wm::IsActiveWindow(window1.get())); |
| 226 |
| 227 // Cycling once highlights window2. |
| 228 Cycle(WindowSelector::FORWARD); |
| 229 // All panels are destroyed. |
| 230 panel1.reset(); |
| 231 panel2.reset(); |
| 232 // Cycling again should now select window3. |
| 233 Cycle(WindowSelector::FORWARD); |
| 234 StopCycling(); |
| 235 EXPECT_TRUE(wm::IsActiveWindow(window3.get())); |
| 236 } |
| 237 |
| 238 // Tests cycles between panel and normal windows. |
| 239 TEST_F(WindowSelectorTest, CycleMruPanelDestroyed) { |
| 240 gfx::Rect bounds(0, 0, 400, 400); |
| 241 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); |
| 242 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); |
| 243 scoped_ptr<aura::Window> panel1(CreatePanelWindow(bounds)); |
| 244 scoped_ptr<aura::Window> panel2(CreatePanelWindow(bounds)); |
| 245 wm::ActivateWindow(panel2.get()); |
| 246 wm::ActivateWindow(panel1.get()); |
| 247 wm::ActivateWindow(window2.get()); |
| 248 wm::ActivateWindow(window1.get()); |
| 249 EXPECT_TRUE(wm::IsActiveWindow(window1.get())); |
| 250 |
| 251 // Cycling once highlights window2. |
| 252 Cycle(WindowSelector::FORWARD); |
| 253 // Panel 1 is the next item as the MRU panel, removing it should make panel 2 |
| 254 // the next window to be selected. |
| 255 panel1.reset(); |
| 256 // Cycling again should now select window3. |
| 257 Cycle(WindowSelector::FORWARD); |
| 258 StopCycling(); |
| 259 EXPECT_TRUE(wm::IsActiveWindow(panel2.get())); |
| 260 } |
| 261 |
151 // Tests that a newly created window aborts overview. | 262 // Tests that a newly created window aborts overview. |
152 TEST_F(WindowSelectorTest, NewWindowCancelsOveriew) { | 263 TEST_F(WindowSelectorTest, NewWindowCancelsOveriew) { |
153 gfx::Rect bounds(0, 0, 400, 400); | 264 gfx::Rect bounds(0, 0, 400, 400); |
154 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); | 265 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); |
155 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); | 266 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); |
156 ToggleOverview(); | 267 ToggleOverview(); |
157 EXPECT_TRUE(IsSelecting()); | 268 EXPECT_TRUE(IsSelecting()); |
158 | 269 |
159 // A window being created should exit overview mode. | 270 // A window being created should exit overview mode. |
160 scoped_ptr<aura::Window> window3(CreateWindow(bounds)); | 271 scoped_ptr<aura::Window> window3(CreateWindow(bounds)); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 EXPECT_EQ(initial_bounds, ToEnclosingRect( | 361 EXPECT_EQ(initial_bounds, ToEnclosingRect( |
251 GetTransformedTargetBounds(window.get()))); | 362 GetTransformedTargetBounds(window.get()))); |
252 } | 363 } |
253 | 364 |
254 // Tests that windows remain on the display they are currently on in overview | 365 // Tests that windows remain on the display they are currently on in overview |
255 // mode. | 366 // mode. |
256 TEST_F(WindowSelectorTest, MultipleDisplays) { | 367 TEST_F(WindowSelectorTest, MultipleDisplays) { |
257 if (!SupportsMultipleDisplays()) | 368 if (!SupportsMultipleDisplays()) |
258 return; | 369 return; |
259 | 370 |
260 UpdateDisplay("400x400,400x400"); | 371 UpdateDisplay("600x400,600x400"); |
261 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 372 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
| 373 gfx::Rect bounds1(0, 0, 200, 200); |
| 374 gfx::Rect bounds2(650, 0, 200, 200); |
262 | 375 |
263 scoped_ptr<aura::Window> window1(CreateWindow(gfx::Rect(0, 0, 100, 100))); | 376 scoped_ptr<aura::Window> window1(CreateWindow(bounds1)); |
264 scoped_ptr<aura::Window> window2(CreateWindow(gfx::Rect(0, 0, 100, 100))); | 377 scoped_ptr<aura::Window> window2(CreateWindow(bounds1)); |
265 scoped_ptr<aura::Window> window3(CreateWindow(gfx::Rect(450, 0, 100, 100))); | 378 scoped_ptr<aura::Window> window3(CreateWindow(bounds2)); |
266 scoped_ptr<aura::Window> window4(CreateWindow(gfx::Rect(450, 0, 100, 100))); | 379 scoped_ptr<aura::Window> window4(CreateWindow(bounds2)); |
| 380 scoped_ptr<aura::Window> panel1(CreatePanelWindow(bounds1)); |
| 381 scoped_ptr<aura::Window> panel2(CreatePanelWindow(bounds1)); |
| 382 scoped_ptr<aura::Window> panel3(CreatePanelWindow(bounds2)); |
| 383 scoped_ptr<aura::Window> panel4(CreatePanelWindow(bounds2)); |
267 EXPECT_EQ(root_windows[0], window1->GetRootWindow()); | 384 EXPECT_EQ(root_windows[0], window1->GetRootWindow()); |
268 EXPECT_EQ(root_windows[0], window2->GetRootWindow()); | 385 EXPECT_EQ(root_windows[0], window2->GetRootWindow()); |
269 EXPECT_EQ(root_windows[1], window3->GetRootWindow()); | 386 EXPECT_EQ(root_windows[1], window3->GetRootWindow()); |
270 EXPECT_EQ(root_windows[1], window4->GetRootWindow()); | 387 EXPECT_EQ(root_windows[1], window4->GetRootWindow()); |
271 | 388 |
| 389 EXPECT_EQ(root_windows[0], panel1->GetRootWindow()); |
| 390 EXPECT_EQ(root_windows[0], panel2->GetRootWindow()); |
| 391 EXPECT_EQ(root_windows[1], panel3->GetRootWindow()); |
| 392 EXPECT_EQ(root_windows[1], panel4->GetRootWindow()); |
| 393 |
272 // In overview mode, each window remains in the same root window. | 394 // In overview mode, each window remains in the same root window. |
273 ToggleOverview(); | 395 ToggleOverview(); |
274 EXPECT_EQ(root_windows[0], window1->GetRootWindow()); | 396 EXPECT_EQ(root_windows[0], window1->GetRootWindow()); |
275 EXPECT_EQ(root_windows[0], window2->GetRootWindow()); | 397 EXPECT_EQ(root_windows[0], window2->GetRootWindow()); |
276 EXPECT_EQ(root_windows[1], window3->GetRootWindow()); | 398 EXPECT_EQ(root_windows[1], window3->GetRootWindow()); |
277 EXPECT_EQ(root_windows[1], window4->GetRootWindow()); | 399 EXPECT_EQ(root_windows[1], window4->GetRootWindow()); |
| 400 EXPECT_EQ(root_windows[0], panel1->GetRootWindow()); |
| 401 EXPECT_EQ(root_windows[0], panel2->GetRootWindow()); |
| 402 EXPECT_EQ(root_windows[1], panel3->GetRootWindow()); |
| 403 EXPECT_EQ(root_windows[1], panel4->GetRootWindow()); |
| 404 |
278 root_windows[0]->bounds().Contains( | 405 root_windows[0]->bounds().Contains( |
279 ToEnclosingRect(GetTransformedBounds(window1.get()))); | 406 ToEnclosingRect(GetTransformedBounds(window1.get()))); |
280 root_windows[0]->bounds().Contains( | 407 root_windows[0]->bounds().Contains( |
281 ToEnclosingRect(GetTransformedBounds(window2.get()))); | 408 ToEnclosingRect(GetTransformedBounds(window2.get()))); |
282 root_windows[1]->bounds().Contains( | 409 root_windows[1]->bounds().Contains( |
283 ToEnclosingRect(GetTransformedBounds(window3.get()))); | 410 ToEnclosingRect(GetTransformedBounds(window3.get()))); |
284 root_windows[1]->bounds().Contains( | 411 root_windows[1]->bounds().Contains( |
285 ToEnclosingRect(GetTransformedBounds(window4.get()))); | 412 ToEnclosingRect(GetTransformedBounds(window4.get()))); |
| 413 |
| 414 root_windows[0]->bounds().Contains( |
| 415 ToEnclosingRect(GetTransformedBounds(panel1.get()))); |
| 416 root_windows[0]->bounds().Contains( |
| 417 ToEnclosingRect(GetTransformedBounds(panel2.get()))); |
| 418 root_windows[1]->bounds().Contains( |
| 419 ToEnclosingRect(GetTransformedBounds(panel3.get()))); |
| 420 root_windows[1]->bounds().Contains( |
| 421 ToEnclosingRect(GetTransformedBounds(panel4.get()))); |
| 422 EXPECT_TRUE(WindowsOverlapping(panel1.get(), panel2.get())); |
| 423 EXPECT_TRUE(WindowsOverlapping(panel3.get(), panel4.get())); |
| 424 EXPECT_FALSE(WindowsOverlapping(panel1.get(), panel3.get())); |
286 } | 425 } |
287 | 426 |
288 } // namespace internal | 427 } // namespace internal |
289 } // namespace ash | 428 } // namespace ash |
OLD | NEW |