Commit 994e08a4 authored by ananta@chromium.org's avatar ananta@chromium.org

Resize the widget when top level popup windows created by the content layer are resized.

The content layer creates top level popup windows, for select items on a page for e.g. When these
windows are resized we need to resize the parent widget hosting them.

BUG=330596
TEST=Covered by views test DesktopAuraTopLevelOwnedPopupResizeTest
R=sky@chromium.org

Review URL: https://codereview.chromium.org/125203005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243413 0039d316-1c4b-4281-b951-d872f2087c98
parent 1fa5c31d
......@@ -105,6 +105,7 @@ class DesktopNativeWidgetTopLevelHandler : public aura::WindowObserver {
top_level_handler->top_level_widget_->GetNativeView();
child_window->AddObserver(top_level_handler);
native_window->AddObserver(top_level_handler);
top_level_handler->child_window_ = child_window;
return native_window;
}
......@@ -132,13 +133,22 @@ class DesktopNativeWidgetTopLevelHandler : public aura::WindowObserver {
delete this;
}
virtual void OnWindowBoundsChanged(aura::Window* window,
const gfx::Rect& old_bounds,
const gfx::Rect& new_bounds) OVERRIDE {
if (top_level_widget_ && window == child_window_)
top_level_widget_->SetSize(new_bounds.size());
}
private:
DesktopNativeWidgetTopLevelHandler()
: top_level_widget_(NULL) {}
: top_level_widget_(NULL),
child_window_(NULL) {}
virtual ~DesktopNativeWidgetTopLevelHandler() {}
Widget* top_level_widget_;
aura::Window* child_window_;
DISALLOW_COPY_AND_ASSIGN(DesktopNativeWidgetTopLevelHandler);
};
......
......@@ -1164,6 +1164,14 @@ class DesktopAuraTopLevelWindowTest
}
}
aura::Window* owned_window() {
return owned_window_;
}
views::Widget* top_level_widget() {
return top_level_widget_;
}
private:
views::Widget widget_;
views::Widget* top_level_widget_;
......@@ -1209,6 +1217,24 @@ TEST_F(WidgetTest, DesktopAuraTopLevelOwnedPopupTest) {
RunPendingMessages();
}
// This test validates that when a top level owned popup Aura window is
// resized, the widget is resized as well.
TEST_F(WidgetTest, DesktopAuraTopLevelOwnedPopupResizeTest) {
ViewsDelegate::views_delegate = NULL;
DesktopAuraTopLevelWindowTest popup_window;
ASSERT_NO_FATAL_FAILURE(popup_window.CreateTopLevelWindow(
gfx::Rect(0, 0, 200, 200), false));
gfx::Rect new_size(0, 0, 400, 400);
popup_window.owned_window()->SetBounds(new_size);
EXPECT_EQ(popup_window.top_level_widget()->GetNativeView()->bounds().size(),
new_size.size());
RunPendingMessages();
ASSERT_NO_FATAL_FAILURE(popup_window.DestroyOwnedWindow());
RunPendingMessages();
}
// Test to ensure that the aura Window's visiblity state is set to visible if
// the underlying widget is hidden and then shown.
TEST_F(WidgetTest, TestWindowVisibilityAfterHide) {
......
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