| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.h" | 5 #include "chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| 11 #include "ash/wm/window_state.h" | 11 #include "ash/wm/window_state.h" |
| 12 #include "base/bind.h" | 12 #include "base/bind.h" |
| 13 #include "base/callback.h" | 13 #include "base/callback.h" |
| 14 #include "base/command_line.h" | 14 #include "base/command_line.h" |
| 15 #include "base/macros.h" | 15 #include "base/macros.h" |
| 16 #include "base/memory/ptr_util.h" |
| 16 #include "base/run_loop.h" | 17 #include "base/run_loop.h" |
| 17 #include "base/strings/string_number_conversions.h" | 18 #include "base/strings/string_number_conversions.h" |
| 18 #include "build/build_config.h" | 19 #include "build/build_config.h" |
| 19 #include "chrome/browser/chrome_notification_types.h" | 20 #include "chrome/browser/chrome_notification_types.h" |
| 20 #include "chrome/browser/ui/browser.h" | 21 #include "chrome/browser/ui/browser.h" |
| 21 #include "chrome/browser/ui/browser_commands.h" | 22 #include "chrome/browser/ui/browser_commands.h" |
| 22 #include "chrome/browser/ui/browser_list.h" | 23 #include "chrome/browser/ui/browser_list.h" |
| 23 #include "chrome/browser/ui/browser_tabstrip.h" | 24 #include "chrome/browser/ui/browser_tabstrip.h" |
| 24 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 25 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 25 #include "chrome/browser/ui/views/frame/browser_view.h" | 26 #include "chrome/browser/ui/views/frame/browser_view.h" |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 gfx::Size(work_area.width() / 3 - 10, work_area.height() / 2 - 10); | 188 gfx::Size(work_area.width() / 3 - 10, work_area.height() / 2 - 10); |
| 188 browser()->window()->SetBounds(gfx::Rect(work_area.origin(), half_size)); | 189 browser()->window()->SetBounds(gfx::Rect(work_area.origin(), half_size)); |
| 189 browser2->window()->SetBounds(gfx::Rect( | 190 browser2->window()->SetBounds(gfx::Rect( |
| 190 work_area.x() + half_size.width(), work_area.y(), | 191 work_area.x() + half_size.width(), work_area.y(), |
| 191 half_size.width(), half_size.height())); | 192 half_size.width(), half_size.height())); |
| 192 return browser2; | 193 return browser2; |
| 193 } | 194 } |
| 194 | 195 |
| 195 void TabDragControllerTest::SetWindowFinderForTabStrip( | 196 void TabDragControllerTest::SetWindowFinderForTabStrip( |
| 196 TabStrip* tab_strip, | 197 TabStrip* tab_strip, |
| 197 scoped_ptr<WindowFinder> window_finder) { | 198 std::unique_ptr<WindowFinder> window_finder) { |
| 198 ASSERT_TRUE(tab_strip->drag_controller_.get()); | 199 ASSERT_TRUE(tab_strip->drag_controller_.get()); |
| 199 tab_strip->drag_controller_->window_finder_ = std::move(window_finder); | 200 tab_strip->drag_controller_->window_finder_ = std::move(window_finder); |
| 200 } | 201 } |
| 201 | 202 |
| 202 namespace { | 203 namespace { |
| 203 | 204 |
| 204 enum InputSource { | 205 enum InputSource { |
| 205 INPUT_SOURCE_MOUSE = 0, | 206 INPUT_SOURCE_MOUSE = 0, |
| 206 INPUT_SOURCE_TOUCH = 1 | 207 INPUT_SOURCE_TOUCH = 1 |
| 207 }; | 208 }; |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 } | 532 } |
| 532 | 533 |
| 533 void AddBlankTabAndShow(Browser* browser) { | 534 void AddBlankTabAndShow(Browser* browser) { |
| 534 InProcessBrowserTest::AddBlankTabAndShow(browser); | 535 InProcessBrowserTest::AddBlankTabAndShow(browser); |
| 535 } | 536 } |
| 536 | 537 |
| 537 Browser* browser() const { return InProcessBrowserTest::browser(); } | 538 Browser* browser() const { return InProcessBrowserTest::browser(); } |
| 538 | 539 |
| 539 private: | 540 private: |
| 540 #if defined(OS_CHROMEOS) | 541 #if defined(OS_CHROMEOS) |
| 541 scoped_ptr<ui::test::EventGenerator> event_generator_; | 542 std::unique_ptr<ui::test::EventGenerator> event_generator_; |
| 542 #endif | 543 #endif |
| 543 | 544 |
| 544 DISALLOW_COPY_AND_ASSIGN(DetachToBrowserTabDragControllerTest); | 545 DISALLOW_COPY_AND_ASSIGN(DetachToBrowserTabDragControllerTest); |
| 545 }; | 546 }; |
| 546 | 547 |
| 547 // Creates a browser with two tabs, drags the second to the first. | 548 // Creates a browser with two tabs, drags the second to the first. |
| 548 IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest, DragInSameWindow) { | 549 IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest, DragInSameWindow) { |
| 549 // TODO(sky): this won't work with touch as it requires a long press. | 550 // TODO(sky): this won't work with touch as it requires a long press. |
| 550 if (input_source() == INPUT_SOURCE_TOUCH) { | 551 if (input_source() == INPUT_SOURCE_TOUCH) { |
| 551 VLOG(1) << "Test is DISABLED for touch input."; | 552 VLOG(1) << "Test is DISABLED for touch input."; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 603 IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest, | 604 IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest, |
| 604 DragWithMaskedWindows) { | 605 DragWithMaskedWindows) { |
| 605 AddTabAndResetBrowser(browser()); | 606 AddTabAndResetBrowser(browser()); |
| 606 | 607 |
| 607 aura::Window* browser_window = browser()->window()->GetNativeWindow(); | 608 aura::Window* browser_window = browser()->window()->GetNativeWindow(); |
| 608 const gfx::Rect bounds = browser_window->GetBoundsInScreen(); | 609 const gfx::Rect bounds = browser_window->GetBoundsInScreen(); |
| 609 aura::test::MaskedWindowDelegate masked_window_delegate( | 610 aura::test::MaskedWindowDelegate masked_window_delegate( |
| 610 gfx::Rect(bounds.width() - 10, 0, 10, bounds.height())); | 611 gfx::Rect(bounds.width() - 10, 0, 10, bounds.height())); |
| 611 gfx::Rect test(bounds); | 612 gfx::Rect test(bounds); |
| 612 masked_window_delegate.set_can_focus(false); | 613 masked_window_delegate.set_can_focus(false); |
| 613 scoped_ptr<aura::Window> masked_window( | 614 std::unique_ptr<aura::Window> masked_window( |
| 614 aura::test::CreateTestWindowWithDelegate(&masked_window_delegate, 10, | 615 aura::test::CreateTestWindowWithDelegate(&masked_window_delegate, 10, |
| 615 test, browser_window->parent())); | 616 test, browser_window->parent())); |
| 616 masked_window->SetEventTargeter( | 617 masked_window->SetEventTargeter( |
| 617 scoped_ptr<ui::EventTargeter>(new MaskedWindowTargeter())); | 618 std::unique_ptr<ui::EventTargeter>(new MaskedWindowTargeter())); |
| 618 | 619 |
| 619 ASSERT_FALSE(masked_window->GetEventHandlerForPoint( | 620 ASSERT_FALSE(masked_window->GetEventHandlerForPoint( |
| 620 gfx::Point(bounds.width() - 11, 0))); | 621 gfx::Point(bounds.width() - 11, 0))); |
| 621 ASSERT_TRUE(masked_window->GetEventHandlerForPoint( | 622 ASSERT_TRUE(masked_window->GetEventHandlerForPoint( |
| 622 gfx::Point(bounds.width() - 9, 0))); | 623 gfx::Point(bounds.width() - 9, 0))); |
| 623 TabStrip* tab_strip = GetTabStripForBrowser(browser()); | 624 TabStrip* tab_strip = GetTabStripForBrowser(browser()); |
| 624 TabStripModel* model = browser()->tab_strip_model(); | 625 TabStripModel* model = browser()->tab_strip_model(); |
| 625 | 626 |
| 626 gfx::Point tab_1_center(GetCenterInScreenCoordinates(tab_strip->tab_at(1))); | 627 gfx::Point tab_1_center(GetCenterInScreenCoordinates(tab_strip->tab_at(1))); |
| 627 ASSERT_TRUE(PressInput(tab_1_center)); | 628 ASSERT_TRUE(PressInput(tab_1_center)); |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 749 | 750 |
| 750 // Add another tab to browser(). | 751 // Add another tab to browser(). |
| 751 AddTabAndResetBrowser(browser()); | 752 AddTabAndResetBrowser(browser()); |
| 752 | 753 |
| 753 // Press on first tab so drag is active. Reset WindowFinder to one that causes | 754 // Press on first tab so drag is active. Reset WindowFinder to one that causes |
| 754 // capture to be lost from within GetLocalProcessWindowAtPoint(), then | 755 // capture to be lost from within GetLocalProcessWindowAtPoint(), then |
| 755 // continue drag. The capture lost should trigger the drag to cancel. | 756 // continue drag. The capture lost should trigger the drag to cancel. |
| 756 ASSERT_TRUE(PressInput(GetCenterInScreenCoordinates(tab_strip->tab_at(0)))); | 757 ASSERT_TRUE(PressInput(GetCenterInScreenCoordinates(tab_strip->tab_at(0)))); |
| 757 ASSERT_TRUE(tab_strip->IsDragSessionActive()); | 758 ASSERT_TRUE(tab_strip->IsDragSessionActive()); |
| 758 SetWindowFinderForTabStrip( | 759 SetWindowFinderForTabStrip( |
| 759 tab_strip, make_scoped_ptr(new CaptureLoseWindowFinder(tab_strip))); | 760 tab_strip, base::WrapUnique(new CaptureLoseWindowFinder(tab_strip))); |
| 760 ASSERT_TRUE(DragInputTo(GetCenterInScreenCoordinates(tab_strip->tab_at(1)))); | 761 ASSERT_TRUE(DragInputTo(GetCenterInScreenCoordinates(tab_strip->tab_at(1)))); |
| 761 ASSERT_FALSE(tab_strip->IsDragSessionActive()); | 762 ASSERT_FALSE(tab_strip->IsDragSessionActive()); |
| 762 } | 763 } |
| 763 | 764 |
| 764 namespace { | 765 namespace { |
| 765 | 766 |
| 766 void DetachToOwnWindowStep2(DetachToBrowserTabDragControllerTest* test) { | 767 void DetachToOwnWindowStep2(DetachToBrowserTabDragControllerTest* test) { |
| 767 if (test->input_source() == INPUT_SOURCE_TOUCH) | 768 if (test->input_source() == INPUT_SOURCE_TOUCH) |
| 768 ASSERT_TRUE(test->ReleaseInput()); | 769 ASSERT_TRUE(test->ReleaseInput()); |
| 769 } | 770 } |
| (...skipping 1641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2411 DetachToBrowserTabDragControllerTest, | 2412 DetachToBrowserTabDragControllerTest, |
| 2412 ::testing::Values("mouse", "touch")); | 2413 ::testing::Values("mouse", "touch")); |
| 2413 INSTANTIATE_TEST_CASE_P(TabDragging, | 2414 INSTANTIATE_TEST_CASE_P(TabDragging, |
| 2414 DetachToBrowserTabDragControllerTestTouch, | 2415 DetachToBrowserTabDragControllerTestTouch, |
| 2415 ::testing::Values("touch")); | 2416 ::testing::Values("touch")); |
| 2416 #else | 2417 #else |
| 2417 INSTANTIATE_TEST_CASE_P(TabDragging, | 2418 INSTANTIATE_TEST_CASE_P(TabDragging, |
| 2418 DetachToBrowserTabDragControllerTest, | 2419 DetachToBrowserTabDragControllerTest, |
| 2419 ::testing::Values("mouse")); | 2420 ::testing::Values("mouse")); |
| 2420 #endif | 2421 #endif |
| OLD | NEW |