diff options
author | pkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-26 18:04:34 +0000 |
---|---|---|
committer | pkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-26 18:04:34 +0000 |
commit | dd6f8fa7270bc6f836af354eb3c109a083a82b06 (patch) | |
tree | 2d7afa4685d8589926be5da74e5914bd068cdabb /athena | |
parent | 65cc2345395d7e726a9264465a789c48de63153c (diff) | |
download | chromium_src-dd6f8fa7270bc6f836af354eb3c109a083a82b06.zip chromium_src-dd6f8fa7270bc6f836af354eb3c109a083a82b06.tar.gz chromium_src-dd6f8fa7270bc6f836af354eb3c109a083a82b06.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
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=285393
Review URL: https://codereview.chromium.org/411813002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@285763 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 | 27 |
2 files changed, 19 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..d818416 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: @@ -101,6 +104,7 @@ WindowManagerImpl::WindowManagerImpl() { } WindowManagerImpl::~WindowManagerImpl() { + overview_.reset(); if (container_) { container_->RemoveObserver(this); container_->RemovePreTargetHandler(bezel_controller_.get()); @@ -112,6 +116,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 +129,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 +169,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) { |