Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(484)

Unified Diff: ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc

Issue 871813003: Fix popup window repositioning in Desktop Chrome. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix state clean up in the test Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/widget/desktop_aura/desktop_native_widget_aura.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc
index 975a2179a5496d0b1da0da700e5cea873659b741..60eef52bd76feacd570693d37bf5b79267a03506 100644
--- a/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc
+++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc
@@ -12,6 +12,7 @@
#include "ui/aura/window.h"
#include "ui/aura/window_tree_host.h"
#include "ui/events/test/event_generator.h"
+#include "ui/gfx/screen.h"
#include "ui/views/test/views_test_base.h"
#include "ui/views/test/widget_test.h"
#include "ui/views/widget/widget.h"
@@ -249,7 +250,8 @@ class DesktopAuraTopLevelWindowTest
: top_level_widget_(NULL),
owned_window_(NULL),
owner_destroyed_(false),
- owned_window_destroyed_(false) {}
+ owned_window_destroyed_(false),
+ use_async_mode_(true) {}
~DesktopAuraTopLevelWindowTest() override {
EXPECT_TRUE(owner_destroyed_);
@@ -302,6 +304,13 @@ class DesktopAuraTopLevelWindowTest
void DestroyOwnedWindow() {
ASSERT_TRUE(owned_window_ != NULL);
+ // If async mode is off then clean up state here.
+ if (!use_async_mode_) {
+ owned_window_->RemoveObserver(this);
+ owned_window_->parent()->RemoveObserver(this);
+ owner_destroyed_ = true;
+ owned_window_destroyed_ = true;
+ }
delete owned_window_;
}
@@ -329,6 +338,10 @@ class DesktopAuraTopLevelWindowTest
return top_level_widget_;
}
+ void set_use_async_mode(bool async_mode) {
+ use_async_mode_ = async_mode;
+ }
+
private:
views::Widget widget_;
views::Widget* top_level_widget_;
@@ -336,6 +349,9 @@ class DesktopAuraTopLevelWindowTest
bool owner_destroyed_;
bool owned_window_destroyed_;
aura::test::TestWindowDelegate child_window_delegate_;
+ // This flag controls whether we need to wait for the destruction to complete
+ // before finishing the test. Defaults to true.
+ bool use_async_mode_;
DISALLOW_COPY_AND_ASSIGN(DesktopAuraTopLevelWindowTest);
};
@@ -381,6 +397,9 @@ TEST_F(DesktopAuraWidgetTest, TopLevelOwnedPopupTest) {
TEST_F(DesktopAuraWidgetTest, TopLevelOwnedPopupResizeTest) {
ViewsDelegate::views_delegate = NULL;
DesktopAuraTopLevelWindowTest popup_window;
+
+ popup_window.set_use_async_mode(false);
+
ASSERT_NO_FATAL_FAILURE(popup_window.CreateTopLevelWindow(
gfx::Rect(0, 0, 200, 200), false));
@@ -389,9 +408,31 @@ TEST_F(DesktopAuraWidgetTest, TopLevelOwnedPopupResizeTest) {
EXPECT_EQ(popup_window.top_level_widget()->GetNativeView()->bounds().size(),
new_size.size());
- RunPendingMessages();
+
+ ASSERT_NO_FATAL_FAILURE(popup_window.DestroyOwnedWindow());
+}
+
+// This test validates that when a top level owned popup Aura window is
+// repositioned, the widget is repositioned as well.
+TEST_F(DesktopAuraWidgetTest, TopLevelOwnedPopupRepositionTest) {
+ ViewsDelegate::views_delegate = NULL;
+ DesktopAuraTopLevelWindowTest popup_window;
+
+ popup_window.set_use_async_mode(false);
+
+ ASSERT_NO_FATAL_FAILURE(popup_window.CreateTopLevelWindow(
+ gfx::Rect(0, 0, 200, 200), false));
+
+ gfx::Rect new_pos(10, 10, 400, 400);
+ popup_window.owned_window()->SetBoundsInScreen(
+ new_pos,
+ gfx::Screen::GetScreenFor(
+ popup_window.owned_window())->GetDisplayNearestPoint(gfx::Point()));
+
+ EXPECT_EQ(new_pos,
+ popup_window.top_level_widget()->GetWindowBoundsInScreen());
+
ASSERT_NO_FATAL_FAILURE(popup_window.DestroyOwnedWindow());
- RunPendingMessages();
}
} // namespace test
« no previous file with comments | « ui/views/widget/desktop_aura/desktop_native_widget_aura.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698