diff options
author | pkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-24 22:23:43 +0000 |
---|---|---|
committer | pkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-24 22:23:43 +0000 |
commit | c5598a6fe7feaad952955cb97b58e0d5f855df52 (patch) | |
tree | 8cb02c2dd13b439d288c88d06a29edbef4283e33 /athena | |
parent | 01f69527afa1b4cd76b3849a37c4e4b4be990825 (diff) | |
download | chromium_src-c5598a6fe7feaad952955cb97b58e0d5f855df52.zip chromium_src-c5598a6fe7feaad952955cb97b58e0d5f855df52.tar.gz chromium_src-c5598a6fe7feaad952955cb97b58e0d5f855df52.tar.bz2 |
Exit overview mode when a new activity is opened in athena.
This has the side effect of fixing the crash in 396368
BUG=396368
TEST=Manual, see bug
Review URL: https://codereview.chromium.org/411813002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@285393 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'athena')
-rw-r--r-- | athena/home/home_card_unittest.cc | 8 | ||||
-rw-r--r-- | athena/wm/window_manager_impl.cc | 26 |
2 files changed, 18 insertions, 16 deletions
diff --git a/athena/home/home_card_unittest.cc b/athena/home/home_card_unittest.cc index dbfd0ad..302acc3 100644 --- a/athena/home/home_card_unittest.cc +++ b/athena/home/home_card_unittest.cc @@ -57,10 +57,6 @@ TEST_F(HomeCardTest, AppSelection) { athena::ActivityFactory::Get()->CreateWebActivity( NULL, GURL("http://www.google.com/"))); EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); - - // Overview mode has to finish before ending test, otherwise it crashes. - // TODO(mukai): fix this. - WindowManager::GetInstance()->ToggleOverview(); } TEST_F(HomeCardTest, Accelerators) { @@ -84,10 +80,6 @@ TEST_F(HomeCardTest, Accelerators) { 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 diff --git a/athena/wm/window_manager_impl.cc b/athena/wm/window_manager_impl.cc index 4bb04501..12e907f 100644 --- a/athena/wm/window_manager_impl.cc +++ b/athena/wm/window_manager_impl.cc @@ -39,6 +39,9 @@ class WindowManagerImpl : public WindowManager, COMMAND_TOGGLE_OVERVIEW, }; + // Sets whether overview mode is active. + void SetInOverview(bool active); + void InstallAccelerators(); // WindowManager: @@ -112,6 +115,7 @@ WindowManagerImpl::~WindowManagerImpl() { void WindowManagerImpl::Layout() { if (!container_) return; + SetInOverview(false); gfx::Rect bounds = gfx::Rect(container_->bounds().size()); const aura::Window::Windows& children = container_->children(); for (aura::Window::Windows::const_iterator iter = children.begin(); @@ -124,14 +128,22 @@ void WindowManagerImpl::Layout() { } void WindowManagerImpl::ToggleOverview() { - if (overview_) { - overview_.reset(); - FOR_EACH_OBSERVER(WindowManagerObserver, observers_, - OnOverviewModeExit()); - } else { + SetInOverview(overview_.get() == NULL); +} + +void WindowManagerImpl::SetInOverview(bool active) { + bool in_overview = !!overview_; + if (active == in_overview) + return; + + if (active) { overview_ = WindowOverviewMode::Create(container_.get(), this); FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnOverviewModeEnter()); + } else { + overview_.reset(); + FOR_EACH_OBSERVER(WindowManagerObserver, observers_, + OnOverviewModeExit()); } } @@ -156,9 +168,7 @@ void WindowManagerImpl::OnSelectWindow(aura::Window* window) { CHECK_EQ(container_.get(), window->parent()); container_->StackChildAtTop(window); wm::ActivateWindow(window); - overview_.reset(); - FOR_EACH_OBSERVER(WindowManagerObserver, observers_, - OnOverviewModeExit()); + SetInOverview(false); } void WindowManagerImpl::OnWindowDestroying(aura::Window* window) { |