| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "athena/home/public/home_card.h" |
| |
| #include "athena/activity/public/activity_factory.h" |
| #include "athena/activity/public/activity_manager.h" |
| #include "athena/test/athena_test_base.h" |
| #include "athena/wm/public/window_manager.h" |
| #include "ui/events/test/event_generator.h" |
| |
| namespace athena { |
| |
| typedef test::AthenaTestBase HomeCardTest; |
| |
| TEST_F(HomeCardTest, BasicTransition) { |
| EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
| |
| WindowManager::GetInstance()->ToggleOverview(); |
| EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, HomeCard::Get()->GetState()); |
| |
| WindowManager::GetInstance()->ToggleOverview(); |
| EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
| } |
| |
| TEST_F(HomeCardTest, VirtualKeyboardTransition) { |
| // Minimized -> Hidden for virtual keyboard. |
| EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
| const gfx::Rect vk_bounds(0, 0, 100, 100); |
| HomeCard::Get()->UpdateVirtualKeyboardBounds(vk_bounds); |
| EXPECT_EQ(HomeCard::HIDDEN, HomeCard::Get()->GetState()); |
| HomeCard::Get()->UpdateVirtualKeyboardBounds(gfx::Rect()); |
| EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
| |
| // bottom -> centered for virtual keyboard. |
| WindowManager::GetInstance()->ToggleOverview(); |
| EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, HomeCard::Get()->GetState()); |
| HomeCard::Get()->UpdateVirtualKeyboardBounds(vk_bounds); |
| EXPECT_EQ(HomeCard::VISIBLE_CENTERED, HomeCard::Get()->GetState()); |
| HomeCard::Get()->UpdateVirtualKeyboardBounds(gfx::Rect()); |
| EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, HomeCard::Get()->GetState()); |
| |
| // Overview mode has to finish before ending test, otherwise it crashes. |
| // TODO(mukai): fix this. |
| WindowManager::GetInstance()->ToggleOverview(); |
| } |
| |
| // Verify if the home card is correctly minimized after app launch. |
| TEST_F(HomeCardTest, AppSelection) { |
| EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
| |
| WindowManager::GetInstance()->ToggleOverview(); |
| EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, HomeCard::Get()->GetState()); |
| |
| athena::ActivityManager::Get()->AddActivity( |
| athena::ActivityFactory::Get()->CreateWebActivity( |
| NULL, GURL("http://www.google.com/"))); |
| EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
| } |
| |
| TEST_F(HomeCardTest, Accelerators) { |
| EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
| |
| ui::test::EventGenerator generator(root_window()); |
| generator.PressKey(ui::VKEY_L, ui::EF_CONTROL_DOWN); |
| EXPECT_EQ(HomeCard::VISIBLE_CENTERED, HomeCard::Get()->GetState()); |
| |
| generator.PressKey(ui::VKEY_L, ui::EF_CONTROL_DOWN); |
| EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
| |
| // Do nothing for BOTTOM. |
| WindowManager::GetInstance()->ToggleOverview(); |
| EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, HomeCard::Get()->GetState()); |
| generator.PressKey(ui::VKEY_L, ui::EF_CONTROL_DOWN); |
| EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, HomeCard::Get()->GetState()); |
| |
| // Do nothing if the centered state is a temporary state. |
| HomeCard::Get()->UpdateVirtualKeyboardBounds(gfx::Rect(0, 0, 100, 100)); |
| EXPECT_EQ(HomeCard::VISIBLE_CENTERED, HomeCard::Get()->GetState()); |
| generator.PressKey(ui::VKEY_L, ui::EF_CONTROL_DOWN); |
| EXPECT_EQ(HomeCard::VISIBLE_CENTERED, HomeCard::Get()->GetState()); |
| } |
| |
| } // namespace athena |