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

Side by Side Diff: ash/shelf/shelf_widget_unittest.cc

Issue 2391253004: Use mojo Shelf interfaces for both mash and classic ash. (Closed)
Patch Set: Address comments. Created 4 years, 2 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
« no previous file with comments | « ash/shelf/shelf_view_unittest.cc ('k') | ash/test/test_shelf_delegate.h » ('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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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/common/shelf/shelf_widget.h" 5 #include "ash/common/shelf/shelf_widget.h"
6 6
7 #include "ash/common/material_design/material_design_controller.h" 7 #include "ash/common/material_design/material_design_controller.h"
8 #include "ash/common/shelf/shelf_constants.h" 8 #include "ash/common/shelf/shelf_constants.h"
9 #include "ash/common/shelf/shelf_delegate.h"
10 #include "ash/common/shelf/shelf_layout_manager.h" 9 #include "ash/common/shelf/shelf_layout_manager.h"
11 #include "ash/common/shelf/shelf_view.h" 10 #include "ash/common/shelf/shelf_view.h"
12 #include "ash/common/shelf/wm_shelf.h" 11 #include "ash/common/shelf/wm_shelf.h"
13 #include "ash/common/system/status_area_widget.h" 12 #include "ash/common/system/status_area_widget.h"
14 #include "ash/common/wm_root_window_controller.h" 13 #include "ash/common/wm_root_window_controller.h"
15 #include "ash/common/wm_shell.h" 14 #include "ash/common/wm_shell.h"
16 #include "ash/common/wm_window.h" 15 #include "ash/common/wm_window.h"
17 #include "ash/root_window_controller.h" 16 #include "ash/root_window_controller.h"
18 #include "ash/shell.h" 17 #include "ash/shell.h"
19 #include "ash/test/ash_md_test_base.h" 18 #include "ash/test/ash_md_test_base.h"
20 #include "ash/test/ash_test_helper.h" 19 #include "ash/test/ash_test_helper.h"
21 #include "ash/test/shelf_view_test_api.h" 20 #include "ash/test/shelf_view_test_api.h"
22 #include "ash/test/test_shell_delegate.h"
23 #include "ash/wm/window_util.h" 21 #include "ash/wm/window_util.h"
24 #include "ui/aura/window_event_dispatcher.h" 22 #include "ui/aura/window_event_dispatcher.h"
25 #include "ui/display/display.h" 23 #include "ui/display/display.h"
26 #include "ui/events/event_utils.h" 24 #include "ui/events/event_utils.h"
27 #include "ui/views/view.h" 25 #include "ui/views/view.h"
28 #include "ui/views/widget/widget.h" 26 #include "ui/views/widget/widget.h"
29 27
30 namespace ash { 28 namespace ash {
31 29
32 namespace { 30 namespace {
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 gfx::Point event_location(20, shelf_bounds.y() - 1); 339 gfx::Point event_location(20, shelf_bounds.y() - 1);
342 ui::TouchEvent touch(ui::ET_TOUCH_PRESSED, event_location, 0, 340 ui::TouchEvent touch(ui::ET_TOUCH_PRESSED, event_location, 0,
343 ui::EventTimeForNow()); 341 ui::EventTimeForNow());
344 EXPECT_EQ(shelf_widget->GetNativeWindow(), 342 EXPECT_EQ(shelf_widget->GetNativeWindow(),
345 targeter->FindTargetForEvent(root, &touch)); 343 targeter->FindTargetForEvent(root, &touch));
346 } 344 }
347 } 345 }
348 346
349 namespace { 347 namespace {
350 348
351 // A TestShelfDelegate that sets the shelf alignment and auto hide behavior in 349 // A ShellObserver that sets the shelf alignment and auto hide behavior when the
352 // OnShelfCreated, to simulate ChromeLauncherController's behavior. 350 // shelf is created, to simulate ChromeLauncherController's behavior.
353 class TestShelfDelegate : public ShelfDelegate { 351 class ShelfInitializer : public ShellObserver {
354 public: 352 public:
355 TestShelfDelegate(ShelfAlignment initial_alignment, 353 ShelfInitializer(ShelfAlignment alignment, ShelfAutoHideBehavior auto_hide)
356 ShelfAutoHideBehavior initial_auto_hide_behavior) 354 : alignment_(alignment), auto_hide_(auto_hide) {
357 : initial_alignment_(initial_alignment), 355 WmShell::Get()->AddShellObserver(this);
358 initial_auto_hide_behavior_(initial_auto_hide_behavior) {} 356 }
359 ~TestShelfDelegate() override {} 357 ~ShelfInitializer() override { WmShell::Get()->RemoveShellObserver(this); }
360 358
361 // ShelfDelegate implementation. 359 // ShellObserver:
362 void OnShelfCreated(WmShelf* shelf) override { 360 void OnShelfCreatedForRootWindow(WmWindow* root_window) override {
363 shelf->SetAlignment(initial_alignment_); 361 WmShelf* shelf = root_window->GetRootWindowController()->GetShelf();
364 shelf->SetAutoHideBehavior(initial_auto_hide_behavior_); 362 shelf->SetAlignment(alignment_);
365 } 363 shelf->SetAutoHideBehavior(auto_hide_);
366 void OnShelfDestroyed(WmShelf* shelf) override {}
367 void OnShelfAlignmentChanged(WmShelf* shelf) override {}
368 void OnShelfAutoHideBehaviorChanged(WmShelf* shelf) override {}
369 void OnShelfAutoHideStateChanged(WmShelf* shelf) override {}
370 void OnShelfVisibilityStateChanged(WmShelf* shelf) override {}
371 ShelfID GetShelfIDForAppID(const std::string& app_id) override { return 0; }
372 ShelfID GetShelfIDForAppIDAndLaunchID(const std::string& app_id,
373 const std::string& launch_id) override {
374 return 0;
375 }
376 bool HasShelfIDToAppIDMapping(ShelfID id) const override { return false; }
377 const std::string& GetAppIDForShelfID(ShelfID id) override {
378 return base::EmptyString();
379 }
380 void PinAppWithID(const std::string& app_id) override {}
381 bool IsAppPinned(const std::string& app_id) override { return false; }
382 void UnpinAppWithID(const std::string& app_id) override {}
383
384 private:
385 ShelfAlignment initial_alignment_;
386 ShelfAutoHideBehavior initial_auto_hide_behavior_;
387
388 DISALLOW_COPY_AND_ASSIGN(TestShelfDelegate);
389 };
390
391 // A TestShellDelegate that creates a TestShelfDelegate with initial values.
392 class ShelfWidgetTestShellDelegate : public test::TestShellDelegate {
393 public:
394 ShelfWidgetTestShellDelegate() {}
395 ~ShelfWidgetTestShellDelegate() override {}
396
397 // test::TestShellDelegate
398 ShelfDelegate* CreateShelfDelegate(ShelfModel* model) override {
399 return new TestShelfDelegate(initial_alignment_,
400 initial_auto_hide_behavior_);
401 }
402
403 void set_initial_alignment(ShelfAlignment alignment) {
404 initial_alignment_ = alignment;
405 }
406
407 void set_initial_auto_hide_behavior(ShelfAutoHideBehavior behavior) {
408 initial_auto_hide_behavior_ = behavior;
409 } 364 }
410 365
411 private: 366 private:
412 ShelfAlignment initial_alignment_ = SHELF_ALIGNMENT_BOTTOM; 367 ShelfAlignment alignment_;
413 ShelfAutoHideBehavior initial_auto_hide_behavior_ = 368 ShelfAutoHideBehavior auto_hide_;
414 SHELF_AUTO_HIDE_BEHAVIOR_NEVER; 369
415 DISALLOW_COPY_AND_ASSIGN(ShelfWidgetTestShellDelegate); 370 DISALLOW_COPY_AND_ASSIGN(ShelfInitializer);
416 }; 371 };
417 372
418 class ShelfWidgetTestWithDelegate : public ShelfWidgetTest { 373 class ShelfWidgetTestWithInitializer : public ShelfWidgetTest {
419 public: 374 public:
420 ShelfWidgetTestWithDelegate() { set_start_session(false); } 375 ShelfWidgetTestWithInitializer() { set_start_session(false); }
421 ~ShelfWidgetTestWithDelegate() override {} 376 ~ShelfWidgetTestWithInitializer() override {}
422
423 // ShelfWidgetTest:
424 void SetUp() override {
425 shelf_widget_test_shell_delegate_ = new ShelfWidgetTestShellDelegate;
426 ash_test_helper()->set_test_shell_delegate(
427 shelf_widget_test_shell_delegate_);
428 ShelfWidgetTest::SetUp();
429 }
430 377
431 void TestCreateShelfWithInitialValues( 378 void TestCreateShelfWithInitialValues(
432 ShelfAlignment initial_alignment, 379 ShelfAlignment initial_alignment,
433 ShelfAutoHideBehavior initial_auto_hide_behavior, 380 ShelfAutoHideBehavior initial_auto_hide_behavior,
434 ShelfVisibilityState expected_shelf_visibility_state, 381 ShelfVisibilityState expected_shelf_visibility_state,
435 ShelfAutoHideState expected_shelf_auto_hide_state) { 382 ShelfAutoHideState expected_shelf_auto_hide_state) {
436 shelf_widget_test_shell_delegate_->set_initial_alignment(initial_alignment); 383 ShelfInitializer initializer(initial_alignment, initial_auto_hide_behavior);
437 shelf_widget_test_shell_delegate_->set_initial_auto_hide_behavior(
438 initial_auto_hide_behavior);
439 SetUserLoggedIn(true); 384 SetUserLoggedIn(true);
440 SetSessionStarted(true); 385 SetSessionStarted(true);
441 386
442 ShelfWidget* shelf_widget = GetShelfWidget(); 387 ShelfWidget* shelf_widget = GetShelfWidget();
443 ASSERT_NE(nullptr, shelf_widget); 388 ASSERT_NE(nullptr, shelf_widget);
444 WmShelf* shelf = GetPrimaryShelf(); 389 WmShelf* shelf = GetPrimaryShelf();
445 ASSERT_NE(nullptr, shelf); 390 ASSERT_NE(nullptr, shelf);
446 ShelfLayoutManager* shelf_layout_manager = 391 ShelfLayoutManager* shelf_layout_manager =
447 shelf_widget->shelf_layout_manager(); 392 shelf_widget->shelf_layout_manager();
448 ASSERT_NE(nullptr, shelf_layout_manager); 393 ASSERT_NE(nullptr, shelf_layout_manager);
449 394
450 EXPECT_EQ(initial_alignment, shelf->alignment()); 395 EXPECT_EQ(initial_alignment, shelf->alignment());
451 EXPECT_EQ(initial_auto_hide_behavior, shelf->auto_hide_behavior()); 396 EXPECT_EQ(initial_auto_hide_behavior, shelf->auto_hide_behavior());
452 EXPECT_EQ(expected_shelf_visibility_state, 397 EXPECT_EQ(expected_shelf_visibility_state,
453 shelf_layout_manager->visibility_state()); 398 shelf_layout_manager->visibility_state());
454 EXPECT_EQ(expected_shelf_auto_hide_state, 399 EXPECT_EQ(expected_shelf_auto_hide_state,
455 shelf_layout_manager->auto_hide_state()); 400 shelf_layout_manager->auto_hide_state());
456 } 401 }
457 402
458 private: 403 private:
459 ShelfWidgetTestShellDelegate* shelf_widget_test_shell_delegate_; 404 DISALLOW_COPY_AND_ASSIGN(ShelfWidgetTestWithInitializer);
460 DISALLOW_COPY_AND_ASSIGN(ShelfWidgetTestWithDelegate);
461 }; 405 };
462 406
463 } // namespace 407 } // namespace
464 408
465 INSTANTIATE_TEST_CASE_P( 409 INSTANTIATE_TEST_CASE_P(
466 /* prefix intentionally left blank due to only one parameterization */, 410 /* prefix intentionally left blank due to only one parameterization */,
467 ShelfWidgetTestWithDelegate, 411 ShelfWidgetTestWithInitializer,
468 testing::Values(MaterialDesignController::NON_MATERIAL, 412 testing::Values(MaterialDesignController::NON_MATERIAL,
469 MaterialDesignController::MATERIAL_NORMAL, 413 MaterialDesignController::MATERIAL_NORMAL,
470 MaterialDesignController::MATERIAL_EXPERIMENTAL)); 414 MaterialDesignController::MATERIAL_EXPERIMENTAL));
471 415
472 TEST_P(ShelfWidgetTestWithDelegate, CreateAutoHideAlwaysShelf) { 416 TEST_P(ShelfWidgetTestWithInitializer, CreateAutoHideAlwaysShelf) {
473 // The actual auto hide state is shown because there are no open windows. 417 // The actual auto hide state is shown because there are no open windows.
474 TestCreateShelfWithInitialValues(SHELF_ALIGNMENT_BOTTOM, 418 TestCreateShelfWithInitialValues(SHELF_ALIGNMENT_BOTTOM,
475 SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, 419 SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
476 SHELF_AUTO_HIDE, SHELF_AUTO_HIDE_SHOWN); 420 SHELF_AUTO_HIDE, SHELF_AUTO_HIDE_SHOWN);
477 } 421 }
478 422
479 TEST_P(ShelfWidgetTestWithDelegate, CreateAutoHideNeverShelf) { 423 TEST_P(ShelfWidgetTestWithInitializer, CreateAutoHideNeverShelf) {
480 // The auto hide state 'HIDDEN' is returned for any non-auto-hide behavior. 424 // The auto hide state 'HIDDEN' is returned for any non-auto-hide behavior.
481 TestCreateShelfWithInitialValues(SHELF_ALIGNMENT_LEFT, 425 TestCreateShelfWithInitialValues(SHELF_ALIGNMENT_LEFT,
482 SHELF_AUTO_HIDE_BEHAVIOR_NEVER, 426 SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
483 SHELF_VISIBLE, SHELF_AUTO_HIDE_HIDDEN); 427 SHELF_VISIBLE, SHELF_AUTO_HIDE_HIDDEN);
484 } 428 }
485 429
486 TEST_P(ShelfWidgetTestWithDelegate, CreateAutoHideAlwaysHideShelf) { 430 TEST_P(ShelfWidgetTestWithInitializer, CreateAutoHideAlwaysHideShelf) {
487 // The auto hide state 'HIDDEN' is returned for any non-auto-hide behavior. 431 // The auto hide state 'HIDDEN' is returned for any non-auto-hide behavior.
488 TestCreateShelfWithInitialValues(SHELF_ALIGNMENT_RIGHT, 432 TestCreateShelfWithInitialValues(SHELF_ALIGNMENT_RIGHT,
489 SHELF_AUTO_HIDE_ALWAYS_HIDDEN, SHELF_HIDDEN, 433 SHELF_AUTO_HIDE_ALWAYS_HIDDEN, SHELF_HIDDEN,
490 SHELF_AUTO_HIDE_HIDDEN); 434 SHELF_AUTO_HIDE_HIDDEN);
491 } 435 }
492 436
493 TEST_P(ShelfWidgetTestWithDelegate, CreateLockedShelf) { 437 TEST_P(ShelfWidgetTestWithInitializer, CreateLockedShelf) {
494 // The auto hide state 'HIDDEN' is returned for any non-auto-hide behavior. 438 // The auto hide state 'HIDDEN' is returned for any non-auto-hide behavior.
495 TestCreateShelfWithInitialValues(SHELF_ALIGNMENT_BOTTOM_LOCKED, 439 TestCreateShelfWithInitialValues(SHELF_ALIGNMENT_BOTTOM_LOCKED,
496 SHELF_AUTO_HIDE_BEHAVIOR_NEVER, 440 SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
497 SHELF_VISIBLE, SHELF_AUTO_HIDE_HIDDEN); 441 SHELF_VISIBLE, SHELF_AUTO_HIDE_HIDDEN);
498 } 442 }
499 443
500 } // namespace ash 444 } // namespace ash
OLDNEW
« no previous file with comments | « ash/shelf/shelf_view_unittest.cc ('k') | ash/test/test_shelf_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698