summaryrefslogtreecommitdiffstats
path: root/athena
diff options
context:
space:
mode:
authorpkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-26 18:04:34 +0000
committerpkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-26 18:04:34 +0000
commitdd6f8fa7270bc6f836af354eb3c109a083a82b06 (patch)
tree2d7afa4685d8589926be5da74e5914bd068cdabb /athena
parent65cc2345395d7e726a9264465a789c48de63153c (diff)
downloadchromium_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.cc8
-rw-r--r--athena/wm/window_manager_impl.cc27
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) {