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

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

Issue 1747803003: MacViews: Implement Tab Dragging (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix include. Created 4 years, 6 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 | « no previous file | chrome/browser/ui/views/tabs/window_finder_mac.mm » ('j') | 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 da14ef3aa9198beab2da063529acf77fc0a86e93..462a0cdd49b9ae84cc61d61b9d0dc47ba996b933 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
@@ -20,6 +20,7 @@
#include "base/threading/thread_task_runner_handle.h"
#include "build/build_config.h"
#include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_list.h"
@@ -188,7 +189,8 @@ Browser* TabDragControllerTest::CreateAnotherWindowBrowserAndRelayout() {
// Resize the two windows so they're right next to each other.
gfx::Rect work_area =
display::Screen::GetScreen()
- ->GetDisplayNearestWindow(browser()->window()->GetNativeWindow())
+ ->GetDisplayNearestWindow(platform_util::GetViewForWindow(
+ browser()->window()->GetNativeWindow()))
.work_area();
gfx::Size half_size =
gfx::Size(work_area.width() / 3 - 10, work_area.height() / 2 - 10);
@@ -256,7 +258,7 @@ class ScreenEventGeneratorDelegate
#endif
-#if !defined(OS_CHROMEOS)
+#if !defined(OS_CHROMEOS) && defined(USE_AURA)
// Following classes verify a crash scenario. Specifically on Windows when focus
// changes it can trigger capture being lost. This was causing a crash in tab
@@ -374,6 +376,12 @@ class DetachToBrowserTabDragControllerTest
event_generator_.reset(
new ui::test::EventGenerator(ash::Shell::GetPrimaryRootWindow()));
#endif
+#if defined(OS_MACOSX)
+ // Currently MacViews' browser windows are shown in the background and could
+ // be obscured by other windows if there are any. This should be fixed in
+ // order to be consistent with other platforms.
+ EXPECT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
+#endif // OS_MACOSX
}
InputSource input_source() const {
@@ -852,9 +860,11 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
EXPECT_FALSE(tab_strip2->GetWidget()->HasCapture());
}
-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
+#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
+// TODO(tapted,mblsha): Disabled as the Mac IsMaximized() behavior is not
+// consistent with other platforms. crbug.com/603562
#define MAYBE_DetachFromFullsizeWindow DISABLED_DetachFromFullsizeWindow
#else
#define MAYBE_DetachFromFullsizeWindow DetachFromFullsizeWindow
@@ -866,7 +876,8 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
// Resize the browser window so that it is as big as the work area.
gfx::Rect work_area =
display::Screen::GetScreen()
- ->GetDisplayNearestWindow(browser()->window()->GetNativeWindow())
+ ->GetDisplayNearestWindow(platform_util::GetViewForWindow(
+ browser()->window()->GetNativeWindow()))
.work_area();
browser()->window()->SetBounds(work_area);
const gfx::Rect initial_bounds(browser()->window()->GetBounds());
@@ -920,9 +931,11 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
EXPECT_FALSE(tab_strip2->GetWidget()->HasCapture());
}
-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
+#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
+// TODO(tapted,mblsha): Disabled as the Mac IsMaximized() behavior is not
+// consistent with other platforms. crbug.com/603562
#define MAYBE_DetachToOwnWindowFromMaximizedWindow \
DISABLED_DetachToOwnWindowFromMaximizedWindow
#else
@@ -1282,6 +1295,7 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest, MAYBE_DragAll) {
TabStrip* tab_strip = GetTabStripForBrowser(browser());
browser()->tab_strip_model()->AddTabAtToSelection(0);
browser()->tab_strip_model()->AddTabAtToSelection(1);
+ const gfx::Rect initial_bounds = browser()->window()->GetBounds();
// Move to the first tab and drag it enough so that it would normally
// detach.
@@ -1305,6 +1319,14 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest, MAYBE_DragAll) {
// Remaining browser window should not be maximized
EXPECT_FALSE(browser()->window()->IsMaximized());
+
+ const gfx::Rect final_bounds = browser()->window()->GetBounds();
+ // Size unchanged, but it should have moved down.
+ EXPECT_EQ(initial_bounds.size(), final_bounds.size());
+ EXPECT_EQ(initial_bounds.origin().x(), final_bounds.origin().x());
+ // TODO(mblsha): Fails on MacViews because of crbug.com/518740
+ // EXPECT_EQ(initial_bounds.origin().y() + GetDetachY(tab_strip),
+ // final_bounds.origin().y());
}
namespace {
@@ -1580,14 +1602,8 @@ void CancelOnNewTabWhenDraggingStep2(
ASSERT_TRUE(TabDragController::IsActive());
ASSERT_EQ(2u, browser_list->size());
- // Add another tab. This should trigger exiting the nested loop. Add at the
- // to exercise past crash when model/tabstrip got out of sync (474082).
- content::WindowedNotificationObserver observer(
- content::NOTIFICATION_LOAD_STOP,
- content::NotificationService::AllSources());
chrome::AddTabAt(browser_list->GetLastActive(), GURL(url::kAboutBlankURL),
0, false);
- observer.Wait();
}
} // namespace
@@ -1612,12 +1628,20 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
gfx::Point tab_0_center(
GetCenterInScreenCoordinates(tab_strip->tab_at(0)));
ASSERT_TRUE(PressInput(tab_0_center));
+
+ // Add another tab. This should trigger exiting the nested loop. Add at the
+ // beginning to exercise past crash when model/tabstrip got out of sync.
+ // crbug.com/474082
+ content::WindowedNotificationObserver observer(
+ content::NOTIFICATION_LOAD_STOP,
+ content::NotificationService::AllSources());
ASSERT_TRUE(DragInputToNotifyWhenDone(
tab_0_center.x(), tab_0_center.y() + GetDetachY(tab_strip),
base::Bind(&CancelOnNewTabWhenDraggingStep2, this, browser_list)));
- QuitWhenNotDragging();
+ observer.Wait();
// Should be two windows and not dragging.
+ ASSERT_FALSE(tab_strip->IsDragSessionActive());
ASSERT_FALSE(TabDragController::IsActive());
ASSERT_EQ(2u, browser_list->size());
for (auto* browser : *BrowserList::GetInstance()) {
@@ -2201,6 +2225,7 @@ class DetachToBrowserInSeparateDisplayAndCancelTabDragControllerTest
}
void QuitWhenNotDragging() {
+ DCHECK(TabDragController::IsActive());
test::QuitWhenNotDraggingImpl();
base::MessageLoop::current()->Run();
}
« no previous file with comments | « no previous file | chrome/browser/ui/views/tabs/window_finder_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698