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

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

Issue 10825327: Adding unit tests for maximize menu (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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
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 "ash/wm/custom_frame_view_ash.h" 5 #include "ash/wm/custom_frame_view_ash.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/maximize_bubble_controller.h"
9 #include "ash/wm/window_util.h" 10 #include "ash/wm/window_util.h"
11 #include "ash/wm/workspace/frame_maximize_button.h"
10 #include "ash/wm/workspace/snap_sizer.h" 12 #include "ash/wm/workspace/snap_sizer.h"
11 #include "base/command_line.h" 13 #include "base/command_line.h"
12 #include "ui/aura/aura_switches.h" 14 #include "ui/aura/aura_switches.h"
13 #include "ui/aura/test/event_generator.h" 15 #include "ui/aura/test/event_generator.h"
14 #include "ui/aura/window.h" 16 #include "ui/aura/window.h"
15 #include "ui/views/controls/button/image_button.h" 17 #include "ui/views/controls/button/image_button.h"
16 #include "ui/views/test/test_views_delegate.h" 18 #include "ui/views/test/test_views_delegate.h"
17 #include "ui/views/widget/widget.h" 19 #include "ui/views/widget/widget.h"
18 #include "ui/views/widget/widget_delegate.h" 20 #include "ui/views/widget/widget_delegate.h"
19 21
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 RunAllPendingInMessageLoop(); 250 RunAllPendingInMessageLoop();
249 251
250 EXPECT_TRUE(ash::wm::IsWindowMinimized(window)); 252 EXPECT_TRUE(ash::wm::IsWindowMinimized(window));
251 } 253 }
252 254
253 // Test with gesture events. 255 // Test with gesture events.
254 256
255 widget->Close(); 257 widget->Close();
256 } 258 }
257 259
260 TEST_F(CustomFrameViewAshTest, MaximizeButtonCrashOnExternalShutDown) {
sky 2012/08/13 21:17:14 Add a small description as to what each test is te
Mr4D (OOO till 08-26) 2012/08/13 23:01:03 Done.
261 views::Widget* widget = CreateWidget();
262 aura::Window* window = widget->GetNativeWindow();
263 CustomFrameViewAsh* frame = custom_frame_view_ash(widget);
264 CustomFrameViewAsh::TestApi test(frame);
265 ash::FrameMaximizeButton* maximize_button = test.maximize_button();
266 test.maximize_button()->set_bubble_appearance_delay_ms(0);
267 gfx::Point center = maximize_button->GetBoundsInScreen().CenterPoint();
268 // Move the location off the button.
269 center.set_y(center.y() - 100);
270
271 aura::test::EventGenerator generator(window->GetRootWindow(), center);
272
273 EXPECT_TRUE(ash::wm::IsWindowNormal(window));
274
275 // Move the mouse cursor over the button to bring up the maximizer bubble.
276 center = maximize_button->GetBoundsInScreen().CenterPoint();
277 generator.MoveMouseTo(center);
278 EXPECT_TRUE(maximize_button->maximizer());
279
280 // Even though the widget is closing the bubble menu should not crash upon
281 // its delayed destruction.
282 widget->Close();
sky 2012/08/13 21:17:14 Can you make this is a CloseNow() and in all other
Mr4D (OOO till 08-26) 2012/08/13 23:01:03 Done.
283 }
284
285 TEST_F(CustomFrameViewAshTest, MaximizeButtonExternalShutDown) {
286 views::Widget* widget = CreateWidget();
287 aura::Window* window = widget->GetNativeWindow();
288 CustomFrameViewAsh* frame = custom_frame_view_ash(widget);
289 CustomFrameViewAsh::TestApi test(frame);
290 ash::FrameMaximizeButton* maximize_button = test.maximize_button();
291 maximize_button->set_bubble_appearance_delay_ms(0);
292 gfx::Point button_pos = maximize_button->GetBoundsInScreen().CenterPoint();
293 gfx::Point off_pos(button_pos.x() + 100, button_pos.y() + 100);
294
295 aura::test::EventGenerator generator(window->GetRootWindow(), off_pos);
296 EXPECT_FALSE(maximize_button->maximizer());
297 EXPECT_TRUE(ash::wm::IsWindowNormal(window));
298
299 // Move the mouse cursor over the button to bring up the maximizer bubble.
300 generator.MoveMouseTo(button_pos);
301 EXPECT_TRUE(maximize_button->maximizer());
302
303 // Even though the widget is closing the bubble menu should not crash upon
304 // its delayed destruction.
305 widget->Close();
306 }
307
308 TEST_F(CustomFrameViewAshTest, MaximizeLeftButtonDragOut) {
309 views::Widget* widget = CreateWidget();
310 aura::Window* window = widget->GetNativeWindow();
311 CustomFrameViewAsh* frame = custom_frame_view_ash(widget);
312 CustomFrameViewAsh::TestApi test(frame);
313 ash::FrameMaximizeButton* maximize_button = test.maximize_button();
314 maximize_button->set_bubble_appearance_delay_ms(0);
315 gfx::Point button_pos = maximize_button->GetBoundsInScreen().CenterPoint();
316 gfx::Point off_pos(button_pos.x() + 100, button_pos.y() + 100);
317
318 aura::test::EventGenerator generator(window->GetRootWindow(), off_pos);
319 EXPECT_FALSE(maximize_button->maximizer());
320 EXPECT_TRUE(ash::wm::IsWindowNormal(window));
321 EXPECT_FALSE(maximize_button->phantom_window_open());
322
323 // Move the mouse cursor over the button to bring up the maximizer bubble.
324 generator.MoveMouseTo(button_pos);
325 EXPECT_TRUE(maximize_button->maximizer());
326
327 // Move the mouse over the left maximize button.
328 gfx::Point left_max_pos = maximize_button->maximizer()->
329 GetButtonForUnitTest(SNAP_LEFT)->GetBoundsInScreen().CenterPoint();
330
331 generator.MoveMouseTo(left_max_pos);
332 // Expect the phantom window to be open.
333 EXPECT_TRUE(maximize_button->phantom_window_open());
334
335 // Move away to see the window being destroyed.
336 generator.MoveMouseTo(off_pos);
337 EXPECT_FALSE(maximize_button->phantom_window_open());
338
339 // Move back over the button.
340 generator.MoveMouseTo(button_pos);
341 generator.MoveMouseTo(left_max_pos);
342 EXPECT_TRUE(maximize_button->phantom_window_open());
343
344 // Press button and drag out of dialog.
345 generator.PressLeftButton();
346 generator.MoveMouseTo(off_pos);
347 generator.ReleaseLeftButton();
348
349 // Check that the phantom window is also gone.
350 EXPECT_FALSE(maximize_button->phantom_window_open());
351 }
352
353 TEST_F(CustomFrameViewAshTest, MaximizeLeftByButton) {
354 const int kGridSize = ash::Shell::GetInstance()->GetGridSize();
355 views::Widget* widget = CreateWidget();
356 aura::Window* window = widget->GetNativeWindow();
357 CustomFrameViewAsh* frame = custom_frame_view_ash(widget);
358 CustomFrameViewAsh::TestApi test(frame);
359 ash::FrameMaximizeButton* maximize_button = test.maximize_button();
360 maximize_button->set_bubble_appearance_delay_ms(0);
361 gfx::Point button_pos = maximize_button->GetBoundsInScreen().CenterPoint();
362 gfx::Point off_pos(button_pos.x() + 100, button_pos.y() + 100);
363
364 aura::test::EventGenerator generator(window->GetRootWindow(), off_pos);
365 EXPECT_FALSE(maximize_button->maximizer());
366 EXPECT_TRUE(ash::wm::IsWindowNormal(window));
367 EXPECT_FALSE(maximize_button->phantom_window_open());
368
369 // Move the mouse cursor over the button to bring up the maximizer bubble.
370 generator.MoveMouseTo(button_pos);
371 EXPECT_TRUE(maximize_button->maximizer());
372
373 // Move the mouse over the left maximize button.
374 gfx::Point left_max_pos = maximize_button->maximizer()->
375 GetButtonForUnitTest(SNAP_LEFT)->GetBoundsInScreen().CenterPoint();
376 generator.MoveMouseTo(left_max_pos);
377 EXPECT_TRUE(maximize_button->phantom_window_open());
378 generator.ClickLeftButton();
379
380 EXPECT_FALSE(maximize_button->maximizer());
381 EXPECT_FALSE(maximize_button->phantom_window_open());
382
383 EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
384 EXPECT_FALSE(ash::wm::IsWindowMinimized(window));
385 internal::SnapSizer sizer(window, button_pos,
386 internal::SnapSizer::LEFT_EDGE, kGridSize);
387 EXPECT_EQ(sizer.target_bounds().ToString(), window->bounds().ToString());
388 }
389
258 } // namespace internal 390 } // namespace internal
259 } // namespace ash 391 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698