Commit 1df2f270 authored by Xiaoqian Dai's avatar Xiaoqian Dai Committed by Commit Bot

Cros splitscreen: Show minimized window before sending the state change notification.

Bug: 829092
Change-Id: Ibfe49a09148cfcd7b6fb489eadfbc5b43bb682ec
Reviewed-on: https://chromium-review.googlesource.com/996570Reviewed-by: default avatarMitsuru Oshima <oshima@chromium.org>
Commit-Queue: Xiaoqian Dai <xdai@chromium.org>
Cr-Commit-Position: refs/heads/master@{#548252}
parent 5bf4fc2b
...@@ -1683,6 +1683,7 @@ class TestObserver : public wm::WindowStateObserver { ...@@ -1683,6 +1683,7 @@ class TestObserver : public wm::WindowStateObserver {
void OnPostWindowStateTypeChange(wm::WindowState* window_state, void OnPostWindowStateTypeChange(wm::WindowState* window_state,
mojom::WindowStateType old_type) override { mojom::WindowStateType old_type) override {
post_count_++; post_count_++;
post_layer_visibility_ = window_state->window()->layer()->visible();
EXPECT_EQ(last_old_state_, old_type); EXPECT_EQ(last_old_state_, old_type);
} }
...@@ -1698,6 +1699,12 @@ class TestObserver : public wm::WindowStateObserver { ...@@ -1698,6 +1699,12 @@ class TestObserver : public wm::WindowStateObserver {
return r; return r;
} }
bool GetPostLayerVisibilityAndReset() {
bool r = post_layer_visibility_;
post_layer_visibility_ = false;
return r;
}
mojom::WindowStateType GetLastOldStateAndReset() { mojom::WindowStateType GetLastOldStateAndReset() {
mojom::WindowStateType r = last_old_state_; mojom::WindowStateType r = last_old_state_;
last_old_state_ = mojom::WindowStateType::DEFAULT; last_old_state_ = mojom::WindowStateType::DEFAULT;
...@@ -1707,6 +1714,7 @@ class TestObserver : public wm::WindowStateObserver { ...@@ -1707,6 +1714,7 @@ class TestObserver : public wm::WindowStateObserver {
private: private:
int pre_count_ = 0; int pre_count_ = 0;
int post_count_ = 0; int post_count_ = 0;
bool post_layer_visibility_ = false;
mojom::WindowStateType last_old_state_ = mojom::WindowStateType::DEFAULT; mojom::WindowStateType last_old_state_ = mojom::WindowStateType::DEFAULT;
DISALLOW_COPY_AND_ASSIGN(TestObserver); DISALLOW_COPY_AND_ASSIGN(TestObserver);
...@@ -1762,6 +1770,7 @@ TEST_F(TabletModeWindowManagerTest, StateTypeChange) { ...@@ -1762,6 +1770,7 @@ TEST_F(TabletModeWindowManagerTest, StateTypeChange) {
EXPECT_EQ(1, observer.GetPostCountAndReset()); EXPECT_EQ(1, observer.GetPostCountAndReset());
EXPECT_EQ(mojom::WindowStateType::MINIMIZED, EXPECT_EQ(mojom::WindowStateType::MINIMIZED,
observer.GetLastOldStateAndReset()); observer.GetLastOldStateAndReset());
EXPECT_EQ(true, observer.GetPostLayerVisibilityAndReset());
window_state->RemoveObserver(&observer); window_state->RemoveObserver(&observer);
......
...@@ -341,6 +341,14 @@ void TabletModeWindowState::UpdateWindow(wm::WindowState* window_state, ...@@ -341,6 +341,14 @@ void TabletModeWindowState::UpdateWindow(wm::WindowState* window_state,
UpdateBounds(window_state, animated); UpdateBounds(window_state, animated);
} }
if ((window_state->window()->layer()->GetTargetVisibility() ||
old_state_type == mojom::WindowStateType::MINIMIZED) &&
!window_state->window()->layer()->visible()) {
// The layer may be hidden if the window was previously minimized. Make
// sure it's visible.
window_state->window()->Show();
}
window_state->NotifyPostStateTypeChange(old_state_type); window_state->NotifyPostStateTypeChange(old_state_type);
if (old_state_type == mojom::WindowStateType::PINNED || if (old_state_type == mojom::WindowStateType::PINNED ||
...@@ -350,14 +358,6 @@ void TabletModeWindowState::UpdateWindow(wm::WindowState* window_state, ...@@ -350,14 +358,6 @@ void TabletModeWindowState::UpdateWindow(wm::WindowState* window_state,
Shell::Get()->screen_pinning_controller()->SetPinnedWindow( Shell::Get()->screen_pinning_controller()->SetPinnedWindow(
window_state->window()); window_state->window());
} }
if ((window_state->window()->layer()->GetTargetVisibility() ||
old_state_type == mojom::WindowStateType::MINIMIZED) &&
!window_state->window()->layer()->visible()) {
// The layer may be hidden if the window was previously minimized. Make
// sure it's visible.
window_state->window()->Show();
}
} }
mojom::WindowStateType TabletModeWindowState::GetMaximizedOrCenteredWindowType( mojom::WindowStateType TabletModeWindowState::GetMaximizedOrCenteredWindowType(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment