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

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

Issue 23471004: Only support left/right maximizing at 50% width when the --ash-enable-alternate-caption-button (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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/maximize_bubble_controller.h"
10 #include "ash/wm/property_util.h" 10 #include "ash/wm/property_util.h"
11 #include "ash/wm/window_util.h" 11 #include "ash/wm/window_util.h"
12 #include "ash/wm/workspace/frame_caption_button_container_view.h" 12 #include "ash/wm/workspace/frame_caption_button_container_view.h"
13 #include "ash/wm/workspace/frame_maximize_button.h" 13 #include "ash/wm/workspace/frame_maximize_button.h"
14 #include "ash/wm/workspace/snap_sizer.h"
15 #include "base/command_line.h" 14 #include "base/command_line.h"
16 #include "ui/aura/client/aura_constants.h" 15 #include "ui/aura/client/aura_constants.h"
17 #include "ui/aura/client/focus_client.h" 16 #include "ui/aura/client/focus_client.h"
18 #include "ui/aura/test/event_generator.h" 17 #include "ui/aura/test/event_generator.h"
19 #include "ui/aura/root_window.h" 18 #include "ui/aura/root_window.h"
20 #include "ui/aura/window.h" 19 #include "ui/aura/window.h"
21 #include "ui/base/events/event_utils.h" 20 #include "ui/base/events/event_utils.h"
22 #include "ui/base/gestures/gesture_configuration.h" 21 #include "ui/base/gestures/gesture_configuration.h"
23 #include "ui/views/controls/button/image_button.h" 22 #include "ui/views/controls/button/image_button.h"
24 #include "ui/views/widget/widget.h" 23 #include "ui/views/widget/widget.h"
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 191
193 // Snap right. 192 // Snap right.
194 { 193 {
195 generator.PressLeftButton(); 194 generator.PressLeftButton();
196 generator.MoveMouseBy(10, 0); 195 generator.MoveMouseBy(10, 0);
197 generator.ReleaseLeftButton(); 196 generator.ReleaseLeftButton();
198 RunAllPendingInMessageLoop(); 197 RunAllPendingInMessageLoop();
199 198
200 EXPECT_FALSE(ash::wm::IsWindowMaximized(window)); 199 EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
201 EXPECT_FALSE(ash::wm::IsWindowMinimized(window)); 200 EXPECT_FALSE(ash::wm::IsWindowMinimized(window));
202 internal::SnapSizer sizer(window, center, 201 gfx::Rect target_bounds = ash::wm::GetSnappedWindowBoundsInParent(
203 internal::SnapSizer::RIGHT_EDGE, 202 window, ash::wm::SNAP_RIGHT_EDGE);
204 internal::SnapSizer::OTHER_INPUT); 203 EXPECT_EQ(target_bounds.ToString(), window->bounds().ToString());
205 EXPECT_EQ(sizer.target_bounds().ToString(), window->bounds().ToString());
206 } 204 }
207 205
208 // Snap left. 206 // Snap left.
209 { 207 {
210 center = view->GetBoundsInScreen().CenterPoint(); 208 center = view->GetBoundsInScreen().CenterPoint();
211 generator.MoveMouseTo(center); 209 generator.MoveMouseTo(center);
212 generator.PressLeftButton(); 210 generator.PressLeftButton();
213 generator.MoveMouseBy(-10, 0); 211 generator.MoveMouseBy(-10, 0);
214 generator.ReleaseLeftButton(); 212 generator.ReleaseLeftButton();
215 RunAllPendingInMessageLoop(); 213 RunAllPendingInMessageLoop();
216 214
217 EXPECT_FALSE(ash::wm::IsWindowMaximized(window)); 215 EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
218 EXPECT_FALSE(ash::wm::IsWindowMinimized(window)); 216 EXPECT_FALSE(ash::wm::IsWindowMinimized(window));
219 internal::SnapSizer sizer(window, center, 217 gfx::Rect target_bounds = ash::wm::GetSnappedWindowBoundsInParent(
220 internal::SnapSizer::LEFT_EDGE, 218 window, ash::wm::SNAP_LEFT_EDGE);
221 internal::SnapSizer::OTHER_INPUT); 219 EXPECT_EQ(target_bounds.ToString(), window->bounds().ToString());
222 EXPECT_EQ(sizer.target_bounds().ToString(), window->bounds().ToString());
223 } 220 }
224 221
225 // Minimize. 222 // Minimize.
226 { 223 {
227 center = view->GetBoundsInScreen().CenterPoint(); 224 center = view->GetBoundsInScreen().CenterPoint();
228 generator.MoveMouseTo(center); 225 generator.MoveMouseTo(center);
229 generator.PressLeftButton(); 226 generator.PressLeftButton();
230 generator.MoveMouseBy(0, 10); 227 generator.MoveMouseBy(0, 10);
231 generator.ReleaseLeftButton(); 228 generator.ReleaseLeftButton();
232 RunAllPendingInMessageLoop(); 229 RunAllPendingInMessageLoop();
(...skipping 10 matching lines...) Expand all
243 center = view->GetBoundsInScreen().CenterPoint(); 240 center = view->GetBoundsInScreen().CenterPoint();
244 gfx::Point end = center; 241 gfx::Point end = center;
245 end.Offset(40, 0); 242 end.Offset(40, 0);
246 generator.GestureScrollSequence(center, end, 243 generator.GestureScrollSequence(center, end,
247 base::TimeDelta::FromMilliseconds(100), 244 base::TimeDelta::FromMilliseconds(100),
248 3); 245 3);
249 RunAllPendingInMessageLoop(); 246 RunAllPendingInMessageLoop();
250 247
251 EXPECT_FALSE(ash::wm::IsWindowMaximized(window)); 248 EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
252 EXPECT_FALSE(ash::wm::IsWindowMinimized(window)); 249 EXPECT_FALSE(ash::wm::IsWindowMinimized(window));
253 // This is a short resizing distance and different touch behavior 250 gfx::Rect target_bounds = ash::wm::GetSnappedWindowBoundsInParent(
254 // applies which leads in half of the screen being used. 251 window, ash::wm::SNAP_RIGHT_EDGE);
255 EXPECT_EQ("400,0 400x552", window->bounds().ToString()); 252 EXPECT_EQ(target_bounds.ToString(), window->bounds().ToString());
Mr4D (OOO till 08-26) 2013/08/29 01:03:15 again - better tests of results?
pkotwicz 2013/08/30 21:10:57 I think this is good enough for these tests which
256 } 253 }
257 254
258 // Snap left. 255 // Snap left.
259 { 256 {
260 center = view->GetBoundsInScreen().CenterPoint(); 257 center = view->GetBoundsInScreen().CenterPoint();
261 gfx::Point end = center; 258 gfx::Point end = center;
262 end.Offset(-40, 0); 259 end.Offset(-40, 0);
263 generator.GestureScrollSequence(center, end, 260 generator.GestureScrollSequence(center, end,
264 base::TimeDelta::FromMilliseconds(100), 261 base::TimeDelta::FromMilliseconds(100),
265 3); 262 3);
266 RunAllPendingInMessageLoop(); 263 RunAllPendingInMessageLoop();
267 264
268 EXPECT_FALSE(ash::wm::IsWindowMaximized(window)); 265 EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
269 EXPECT_FALSE(ash::wm::IsWindowMinimized(window)); 266 EXPECT_FALSE(ash::wm::IsWindowMinimized(window));
270 internal::SnapSizer sizer(window, center, 267 gfx::Rect target_bounds = ash::wm::GetSnappedWindowBoundsInParent(
271 internal::SnapSizer::LEFT_EDGE, 268 window, ash::wm::SNAP_LEFT_EDGE);
272 internal::SnapSizer::OTHER_INPUT); 269 EXPECT_EQ(target_bounds.ToString(), window->bounds().ToString());
273 EXPECT_EQ(sizer.target_bounds().ToString(), window->bounds().ToString());
274 } 270 }
275 271
276 // Minimize. 272 // Minimize.
277 { 273 {
278 center = view->GetBoundsInScreen().CenterPoint(); 274 center = view->GetBoundsInScreen().CenterPoint();
279 gfx::Point end = center; 275 gfx::Point end = center;
280 end.Offset(0, 40); 276 end.Offset(0, 40);
281 generator.GestureScrollSequence(center, end, 277 generator.GestureScrollSequence(center, end,
282 base::TimeDelta::FromMilliseconds(100), 278 base::TimeDelta::FromMilliseconds(100),
283 3); 279 3);
284 RunAllPendingInMessageLoop(); 280 RunAllPendingInMessageLoop();
285 281
286 EXPECT_TRUE(ash::wm::IsWindowMinimized(window)); 282 EXPECT_TRUE(ash::wm::IsWindowMinimized(window));
287 } 283 }
288 284
289 // Test with gesture events. 285 // Test with gesture events.
290 } 286 }
291 287
292 #if defined(OS_WIN)
293 // RootWindow and Display can't resize on Windows Ash. http://crbug.com/165962
294 #define MAYBE_TouchDragResizeCloseToCornerDiffersFromMouse \
295 DISABLED_TouchDragResizeCloseToCornerDiffersFromMouse
296 #else
297 #define MAYBE_TouchDragResizeCloseToCornerDiffersFromMouse \
298 TouchDragResizeCloseToCornerDiffersFromMouse
299 #endif
300
301 // Tests Left/Right snapping with resize button touch dragging - which should
302 // trigger dependent on the available drag distance.
303 TEST_F(CustomFrameViewAshTest,
304 MAYBE_TouchDragResizeCloseToCornerDiffersFromMouse) {
305 aura::Window* window = widget()->GetNativeWindow();
306 views::View* view = maximize_button();
307
308 gfx::Rect work_area = widget()->GetWorkAreaBoundsInScreen();
309 gfx::Rect bounds = window->bounds();
310 bounds.set_x(work_area.width() - bounds.width());
311 widget()->SetBounds(bounds);
312
313 gfx::Point start_point = view->GetBoundsInScreen().CenterPoint();
314 // We want to move all the way to the right (the few pixels we have).
315 gfx::Point end_point = gfx::Point(work_area.width(), start_point.y());
316
317 aura::test::EventGenerator generator(window->GetRootWindow(), start_point);
318
319 EXPECT_TRUE(ash::wm::IsWindowNormal(window));
320
321 // Snap right with a touch drag.
322 generator.GestureScrollSequence(start_point,
323 end_point,
324 base::TimeDelta::FromMilliseconds(100),
325 10);
326 RunAllPendingInMessageLoop();
327
328 EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
329 EXPECT_FALSE(ash::wm::IsWindowMinimized(window));
330 gfx::Rect touch_result = window->bounds();
331 EXPECT_NE(bounds.ToString(), touch_result.ToString());
332
333 // Set the position back to where it was before and re-try with a mouse.
334 widget()->SetBounds(bounds);
335
336 generator.MoveMouseTo(start_point);
337 generator.PressLeftButton();
338 generator.MoveMouseTo(end_point, 10);
339 generator.ReleaseLeftButton();
340 RunAllPendingInMessageLoop();
341
342 EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
343 EXPECT_FALSE(ash::wm::IsWindowMinimized(window));
344 gfx::Rect mouse_result = window->bounds();
345
346 // The difference between the two operations should be that the mouse
347 // operation should have just started to resize and the touch operation is
348 // already all the way down to the smallest possible size.
349 EXPECT_NE(mouse_result.ToString(), touch_result.ToString());
350 EXPECT_GT(mouse_result.width(), touch_result.width());
351 }
352
353 // Test that closing the (browser) window with an opened balloon does not 288 // Test that closing the (browser) window with an opened balloon does not
354 // crash the system. In other words: Make sure that shutting down the frame 289 // crash the system. In other words: Make sure that shutting down the frame
355 // destroys the opened balloon in an orderly fashion. 290 // destroys the opened balloon in an orderly fashion.
356 TEST_F(CustomFrameViewAshTest, MaximizeButtonExternalShutDown) { 291 TEST_F(CustomFrameViewAshTest, MaximizeButtonExternalShutDown) {
357 aura::Window* window = widget()->GetNativeWindow(); 292 aura::Window* window = widget()->GetNativeWindow();
358 ash::FrameMaximizeButton* maximize_button = 293 ash::FrameMaximizeButton* maximize_button =
359 CustomFrameViewAshTest::maximize_button(); 294 CustomFrameViewAshTest::maximize_button();
360 maximize_button->set_bubble_appearance_delay_ms(0); 295 maximize_button->set_bubble_appearance_delay_ms(0);
361 gfx::Point button_pos = maximize_button->GetBoundsInScreen().CenterPoint(); 296 gfx::Point button_pos = maximize_button->GetBoundsInScreen().CenterPoint();
362 gfx::Point off_pos(button_pos.x() + 100, button_pos.y() + 100); 297 gfx::Point off_pos(button_pos.x() + 100, button_pos.y() + 100);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 GetButtonForUnitTest(SNAP_LEFT)->GetBoundsInScreen().CenterPoint(); 401 GetButtonForUnitTest(SNAP_LEFT)->GetBoundsInScreen().CenterPoint();
467 generator.MoveMouseTo(left_max_pos); 402 generator.MoveMouseTo(left_max_pos);
468 EXPECT_TRUE(maximize_button->phantom_window_open()); 403 EXPECT_TRUE(maximize_button->phantom_window_open());
469 generator.ClickLeftButton(); 404 generator.ClickLeftButton();
470 405
471 EXPECT_FALSE(maximize_button->maximizer()); 406 EXPECT_FALSE(maximize_button->maximizer());
472 EXPECT_FALSE(maximize_button->phantom_window_open()); 407 EXPECT_FALSE(maximize_button->phantom_window_open());
473 408
474 EXPECT_FALSE(ash::wm::IsWindowMaximized(window)); 409 EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
475 EXPECT_FALSE(ash::wm::IsWindowMinimized(window)); 410 EXPECT_FALSE(ash::wm::IsWindowMinimized(window));
476 internal::SnapSizer sizer(window, button_pos, 411 gfx::Rect target_bounds = ash::wm::GetSnappedWindowBoundsInParent(
477 internal::SnapSizer::LEFT_EDGE, 412 window, ash::wm::SNAP_LEFT_EDGE);
478 internal::SnapSizer::OTHER_INPUT); 413 EXPECT_EQ(target_bounds.ToString(), window->bounds().ToString());
479 sizer.SelectDefaultSizeAndDisableResize();
480 EXPECT_EQ(sizer.target_bounds().ToString(), window->bounds().ToString());
481 } 414 }
482 415
483 // Test that the activation focus does not change when the bubble gets shown. 416 // Test that the activation focus does not change when the bubble gets shown.
484 TEST_F(CustomFrameViewAshTest, MaximizeKeepFocus) { 417 TEST_F(CustomFrameViewAshTest, MaximizeKeepFocus) {
485 aura::Window* window = widget()->GetNativeWindow(); 418 aura::Window* window = widget()->GetNativeWindow();
486 ash::FrameMaximizeButton* maximize_button = 419 ash::FrameMaximizeButton* maximize_button =
487 CustomFrameViewAshTest::maximize_button(); 420 CustomFrameViewAshTest::maximize_button();
488 maximize_button->set_bubble_appearance_delay_ms(0); 421 maximize_button->set_bubble_appearance_delay_ms(0);
489 gfx::Point button_pos = maximize_button->GetBoundsInScreen().CenterPoint(); 422 gfx::Point button_pos = maximize_button->GetBoundsInScreen().CenterPoint();
490 gfx::Point off_pos(button_pos.x() + 100, button_pos.y() + 100); 423 gfx::Point off_pos(button_pos.x() + 100, button_pos.y() + 100);
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 739
807 // Check that there was no size change. 740 // Check that there was no size change.
808 EXPECT_EQ(widget()->GetWindowBoundsInScreen().size().ToString(), 741 EXPECT_EQ(widget()->GetWindowBoundsInScreen().size().ToString(),
809 initial_bounds.size().ToString()); 742 initial_bounds.size().ToString());
810 // Check that there is no phantom window left open. 743 // Check that there is no phantom window left open.
811 EXPECT_FALSE(maximize_button->phantom_window_open()); 744 EXPECT_FALSE(maximize_button->phantom_window_open());
812 } 745 }
813 746
814 } // namespace test 747 } // namespace test
815 } // namespace ash 748 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698