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

Unified Diff: chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc

Issue 2494713003: Reenable Tabdragging tests failing because of IsWindowPositionManaged() (Closed)
Patch Set: Adding a better ash test. Created 4 years, 1 month 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 | « chrome/browser/ui/views/tabs/tab_drag_controller.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
diff --git a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
index 10d80815a0cfdcafb4aebf88a3522c4285ead267..0ad10041b43391843787936645eed8dc795f2cf0 100644
--- a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
+++ b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
@@ -9,7 +9,9 @@
#include <algorithm>
#include "base/bind.h"
+#include "base/bind_helpers.h"
#include "base/callback.h"
+#include "base/callback_helpers.h"
#include "base/command_line.h"
#include "base/location.h"
#include "base/macros.h"
@@ -796,18 +798,55 @@ bool HasUserChangedWindowPositionOrSize(gfx::NativeWindow window) {
}
#endif
+// Encapsulates waiting for the browser window to become maximized. This is
+// needed for example on Chrome desktop linux, where window maximization is done
+// asynchronously as an event received from a different process.
+class MaximizedBrowserWindowWaiter {
+ public:
+ explicit MaximizedBrowserWindowWaiter(BrowserWindow* window)
+ : window_(window) {}
+ ~MaximizedBrowserWindowWaiter() = default;
+
+ // Blocks until the browser window becomes maximized.
+ void Wait() {
+ if (CheckMaximized())
+ return;
+
+ base::RunLoop run_loop;
+ quit_ = run_loop.QuitClosure();
+ run_loop.Run();
+ }
+
+ private:
+ bool CheckMaximized() {
+ if (!window_->IsMaximized()) {
+ base::MessageLoop::current()->task_runner()->PostTask(
+ FROM_HERE, base::Bind(
+ base::IgnoreResult(&MaximizedBrowserWindowWaiter::CheckMaximized),
+ base::Unretained(this)));
+ return false;
+ }
+
+ // Quit the run_loop to end the wait.
+ if (!quit_.is_null())
+ base::ResetAndReturn(&quit_).Run();
+ return true;
+ }
+
+ // The browser window observed by this waiter.
+ BrowserWindow* window_;
+
+ // The waiter's RunLoop quit closure.
+ base::Closure quit_;
+
+ DISALLOW_COPY_AND_ASSIGN(MaximizedBrowserWindowWaiter);
+};
+
} // namespace
-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
-// TODO(sky,sad): Disabled as it fails due to resize locks with a real
-// compositor. crbug.com/331924
-#define MAYBE_DetachToOwnWindow DISABLED_DetachToOwnWindow
-#else
-#define MAYBE_DetachToOwnWindow DetachToOwnWindow
-#endif
// Drags from browser to separate window and releases mouse.
IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
- MAYBE_DetachToOwnWindow) {
+ DetachToOwnWindow) {
const gfx::Rect initial_bounds(browser()->window()->GetBounds());
// Add another tab.
AddTabAndResetBrowser(browser());
@@ -860,9 +899,13 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
EXPECT_FALSE(tab_strip2->GetWidget()->HasCapture());
}
-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_MACOSX)
-// TODO(sky,sad): Disabled as it fails due to resize locks with a real
-// compositor. crbug.com/331924
+#if defined(OS_LINUX) || defined(OS_MACOSX)
+// TODO(afakhry,varkha): Disabled on Linux as it fails on the bot because
+// setting the window bounds to the work area bounds in
+// DesktopWindowTreeHostX11::SetBounds() always insets it by one pixel in both
+// width and height. This results in considering the source browser window not
+// being full size, and the test is not as expected.
+// crbug.com/626761, crbug.com/331924.
// TODO(tapted,mblsha): Disabled as the Mac IsMaximized() behavior is not
// consistent with other platforms. crbug.com/603562
#define MAYBE_DetachFromFullsizeWindow DISABLED_DetachFromFullsizeWindow
@@ -923,6 +966,7 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
// Only second window should be maximized.
EXPECT_FALSE(browser()->window()->IsMaximized());
+ MaximizedBrowserWindowWaiter(new_browser->window()).Wait();
EXPECT_TRUE(new_browser->window()->IsMaximized());
// The tab strip should no longer have capture because the drag was ended and
@@ -931,9 +975,7 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
EXPECT_FALSE(tab_strip2->GetWidget()->HasCapture());
}
-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_MACOSX)
-// TODO(sky,sad): Disabled as it fails due to resize locks with a real
-// compositor. crbug.com/331924
+#if defined(OS_MACOSX)
// TODO(tapted,mblsha): Disabled as the Mac IsMaximized() behavior is not
// consistent with other platforms. crbug.com/603562
#define MAYBE_DetachToOwnWindowFromMaximizedWindow \
@@ -947,6 +989,7 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
MAYBE_DetachToOwnWindowFromMaximizedWindow) {
// Maximize the initial browser window.
browser()->window()->Maximize();
+ MaximizedBrowserWindowWaiter(browser()->window()).Wait();
ASSERT_TRUE(browser()->window()->IsMaximized());
// Add another tab.
@@ -990,6 +1033,7 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
new_browser->window()->GetNativeWindow()));
// The new window should be maximized.
+ MaximizedBrowserWindowWaiter(new_browser->window()).Wait();
EXPECT_TRUE(new_browser->window()->IsMaximized());
}
@@ -2429,7 +2473,7 @@ void DetachToDockedWindowNextStep(
// Drags from browser to separate window, docks that window and releases mouse.
IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
- DISABLED_DetachToDockedWindowFromMaximizedWindow) {
+ DetachToDockedWindowFromMaximizedWindow) {
// Maximize the initial browser window.
browser()->window()->Maximize();
ASSERT_TRUE(browser()->window()->IsMaximized());
« no previous file with comments | « chrome/browser/ui/views/tabs/tab_drag_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698