diff options
author | mukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-24 11:18:10 +0000 |
---|---|---|
committer | mukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-24 11:18:10 +0000 |
commit | fa86e4f7bebd6466e191ec557f6e5a5c33b28244 (patch) | |
tree | 58d1e678f9da657b89cbfa309bb0d5a19fbba06b /athena | |
parent | bf0505800e3603415090d92243339f0dc540cc5d (diff) | |
download | chromium_src-fa86e4f7bebd6466e191ec557f6e5a5c33b28244.zip chromium_src-fa86e4f7bebd6466e191ec557f6e5a5c33b28244.tar.gz chromium_src-fa86e4f7bebd6466e191ec557f6e5a5c33b28244.tar.bz2 |
Fixes the home card state transition for Ctrl-L.
- do not hide, toggle between minimized and centered.
- do nothing for other status.
Haven't looked deeply but this also fixes crbug.com/396401
BUG=396401
R=oshima@chromium.org
TEST=manually
Review URL: https://codereview.chromium.org/415723002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@285188 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'athena')
-rw-r--r-- | athena/home/home_card_impl.cc | 7 | ||||
-rw-r--r-- | athena/home/home_card_unittest.cc | 28 |
2 files changed, 32 insertions, 3 deletions
diff --git a/athena/home/home_card_impl.cc b/athena/home/home_card_impl.cc index 7718b38..df3b0f6 100644 --- a/athena/home/home_card_impl.cc +++ b/athena/home/home_card_impl.cc @@ -183,10 +183,11 @@ class HomeCardImpl : public HomeCard, virtual bool OnAcceleratorFired(int command_id, const ui::Accelerator& accelerator) OVERRIDE { DCHECK_EQ(COMMAND_SHOW_HOME_CARD, command_id); - if (state_ == HIDDEN) + + if (state_ == VISIBLE_CENTERED && original_state_ != VISIBLE_BOTTOM) + SetState(VISIBLE_MINIMIZED); + else if (state_ == VISIBLE_MINIMIZED) SetState(VISIBLE_CENTERED); - else - SetState(HIDDEN); return true; } diff --git a/athena/home/home_card_unittest.cc b/athena/home/home_card_unittest.cc index 465cba3..dbfd0ad 100644 --- a/athena/home/home_card_unittest.cc +++ b/athena/home/home_card_unittest.cc @@ -8,6 +8,7 @@ #include "athena/activity/public/activity_manager.h" #include "athena/test/athena_test_base.h" #include "athena/wm/public/window_manager.h" +#include "ui/aura/test/event_generator.h" namespace athena { @@ -62,4 +63,31 @@ TEST_F(HomeCardTest, AppSelection) { WindowManager::GetInstance()->ToggleOverview(); } +TEST_F(HomeCardTest, Accelerators) { + EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); + + aura::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()); + + // Overview mode has to finish before ending test, otherwise it crashes. + // TODO(mukai): fix this. + WindowManager::GetInstance()->ToggleOverview(); +} + } // namespace athena |