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

Side by Side Diff: ash/drag_drop/drag_drop_controller_unittest.cc

Issue 13041002: Cancel drag upon screen lock (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ash/drag_drop/drag_drop_controller.cc ('k') | ash/drag_drop/drag_drop_tracker.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "ash/drag_drop/drag_drop_controller.h" 5 #include "ash/drag_drop/drag_drop_controller.h"
6 6
7 #include "ash/drag_drop/drag_drop_tracker.h"
7 #include "ash/drag_drop/drag_image_view.h" 8 #include "ash/drag_drop/drag_image_view.h"
8 #include "ash/shell.h" 9 #include "ash/shell.h"
9 #include "ash/test/ash_test_base.h" 10 #include "ash/test/ash_test_base.h"
10 #include "base/command_line.h" 11 #include "base/command_line.h"
11 #include "base/location.h" 12 #include "base/location.h"
12 #include "base/utf_string_conversions.h" 13 #include "base/utf_string_conversions.h"
14 #include "ui/aura/client/capture_client.h"
13 #include "ui/aura/root_window.h" 15 #include "ui/aura/root_window.h"
14 #include "ui/aura/test/event_generator.h" 16 #include "ui/aura/test/event_generator.h"
15 #include "ui/base/animation/linear_animation.h" 17 #include "ui/base/animation/linear_animation.h"
16 #include "ui/base/clipboard/clipboard.h" 18 #include "ui/base/clipboard/clipboard.h"
17 #include "ui/base/clipboard/scoped_clipboard_writer.h" 19 #include "ui/base/clipboard/scoped_clipboard_writer.h"
18 #include "ui/base/dragdrop/drag_drop_types.h" 20 #include "ui/base/dragdrop/drag_drop_types.h"
19 #include "ui/base/dragdrop/drag_utils.h" 21 #include "ui/base/dragdrop/drag_utils.h"
20 #include "ui/base/dragdrop/os_exchange_data.h" 22 #include "ui/base/dragdrop/os_exchange_data.h"
21 #include "ui/base/events/event.h" 23 #include "ui/base/events/event.h"
22 #include "ui/base/events/event_utils.h" 24 #include "ui/base/events/event_utils.h"
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 drag_drop_controller_->drag_source_window_ = drag_source_window; 324 drag_drop_controller_->drag_source_window_ = drag_source_window;
323 drag_source_window->AddObserver(drag_drop_controller_.get()); 325 drag_source_window->AddObserver(drag_drop_controller_.get());
324 } 326 }
325 327
326 aura::Window* GetDragImageWindow() { 328 aura::Window* GetDragImageWindow() {
327 return drag_drop_controller_->drag_image_.get() ? 329 return drag_drop_controller_->drag_image_.get() ?
328 drag_drop_controller_->drag_image_->GetWidget()->GetNativeWindow() : 330 drag_drop_controller_->drag_image_->GetWidget()->GetNativeWindow() :
329 NULL; 331 NULL;
330 } 332 }
331 333
334 internal::DragDropTracker* drag_drop_tracker() {
335 return drag_drop_controller_->drag_drop_tracker_.get();
336 }
337
332 void CompleteCancelAnimation() { 338 void CompleteCancelAnimation() {
333 CompletableLinearAnimation* animation = 339 CompletableLinearAnimation* animation =
334 static_cast<CompletableLinearAnimation*>( 340 static_cast<CompletableLinearAnimation*>(
335 drag_drop_controller_->cancel_animation_.get()); 341 drag_drop_controller_->cancel_animation_.get());
336 animation->Complete(); 342 animation->Complete();
337 } 343 }
338 344
339 protected: 345 protected:
340 scoped_ptr<TestDragDropController> drag_drop_controller_; 346 scoped_ptr<TestDragDropController> drag_drop_controller_;
341 scoped_ptr<views::TestViewsDelegate> views_delegate_; 347 scoped_ptr<views::TestViewsDelegate> views_delegate_;
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 EXPECT_EQ(num_drags - 1 - drag_view->VerticalDragThreshold(), 753 EXPECT_EQ(num_drags - 1 - drag_view->VerticalDragThreshold(),
748 drag_view->num_drag_updates_); 754 drag_view->num_drag_updates_);
749 EXPECT_EQ(1, drag_view->num_drops_); 755 EXPECT_EQ(1, drag_view->num_drops_);
750 EXPECT_EQ(0, drag_view->num_drag_exits_); 756 EXPECT_EQ(0, drag_view->num_drag_exits_);
751 EXPECT_TRUE(drag_view->drag_done_received_); 757 EXPECT_TRUE(drag_view->drag_done_received_);
752 } 758 }
753 759
754 // TODO(win_aura) http://crbug.com/154081 760 // TODO(win_aura) http://crbug.com/154081
755 #if defined(OS_WIN) 761 #if defined(OS_WIN)
756 #define MAYBE_PressingEscapeCancelsDragDrop DISABLED_PressingEscapeCancelsDragDr op 762 #define MAYBE_PressingEscapeCancelsDragDrop DISABLED_PressingEscapeCancelsDragDr op
763 #define MAYBE_CaptureLostCancelsDragDrop DISABLED_CaptureLostCancelsDragDrop
757 #else 764 #else
758 #define MAYBE_PressingEscapeCancelsDragDrop PressingEscapeCancelsDragDrop 765 #define MAYBE_PressingEscapeCancelsDragDrop PressingEscapeCancelsDragDrop
766 #define MAYBE_CaptureLostCancelsDragDrop CaptureLostCancelsDragDrop
759 #endif 767 #endif
760 TEST_F(DragDropControllerTest, MAYBE_PressingEscapeCancelsDragDrop) { 768 TEST_F(DragDropControllerTest, MAYBE_PressingEscapeCancelsDragDrop) {
761 scoped_ptr<views::Widget> widget(CreateNewWidget()); 769 scoped_ptr<views::Widget> widget(CreateNewWidget());
762 DragTestView* drag_view = new DragTestView; 770 DragTestView* drag_view = new DragTestView;
763 AddViewToWidgetAndResize(widget.get(), drag_view); 771 AddViewToWidgetAndResize(widget.get(), drag_view);
764 ui::OSExchangeData data; 772 ui::OSExchangeData data;
765 data.SetString(UTF8ToUTF16("I am being dragged")); 773 data.SetString(UTF8ToUTF16("I am being dragged"));
766 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), 774 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
767 widget->GetNativeView()); 775 widget->GetNativeView());
768 generator.PressLeftButton(); 776 generator.PressLeftButton();
(...skipping 23 matching lines...) Expand all
792 drag_drop_controller_->drag_string_); 800 drag_drop_controller_->drag_string_);
793 801
794 EXPECT_EQ(1, drag_view->num_drag_enters_); 802 EXPECT_EQ(1, drag_view->num_drag_enters_);
795 EXPECT_EQ(num_drags - 1 - drag_view->VerticalDragThreshold(), 803 EXPECT_EQ(num_drags - 1 - drag_view->VerticalDragThreshold(),
796 drag_view->num_drag_updates_); 804 drag_view->num_drag_updates_);
797 EXPECT_EQ(0, drag_view->num_drops_); 805 EXPECT_EQ(0, drag_view->num_drops_);
798 EXPECT_EQ(1, drag_view->num_drag_exits_); 806 EXPECT_EQ(1, drag_view->num_drag_exits_);
799 EXPECT_TRUE(drag_view->drag_done_received_); 807 EXPECT_TRUE(drag_view->drag_done_received_);
800 } 808 }
801 809
810 TEST_F(DragDropControllerTest, MAYBE_CaptureLostCancelsDragDrop) {
811 scoped_ptr<views::Widget> widget(CreateNewWidget());
812 DragTestView* drag_view = new DragTestView;
813 AddViewToWidgetAndResize(widget.get(), drag_view);
814 ui::OSExchangeData data;
815 data.SetString(UTF8ToUTF16("I am being dragged"));
816 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
817 widget->GetNativeView());
818 generator.PressLeftButton();
819
820 int num_drags = 17;
821 for (int i = 0; i < num_drags; ++i) {
822 // Because we are not doing a blocking drag and drop, the original
823 // OSDragExchangeData object is lost as soon as we return from the drag
824 // initiation in DragDropController::StartDragAndDrop(). Hence we set the
825 // drag_data_ to a fake drag data object that we created.
826 if (i > 0)
827 UpdateDragData(&data);
828 generator.MoveMouseBy(0, 1);
829
830 // Execute any scheduled draws to process deferred mouse events.
831 RunAllPendingInMessageLoop();
832 }
833 // Make sure the capture window won't handle mouse events.
834 aura::Window* capture_window = drag_drop_tracker()->capture_window();
835 ASSERT_TRUE(!!capture_window);
836 EXPECT_EQ("0x0", capture_window->bounds().size().ToString());
837 EXPECT_EQ(NULL,
838 capture_window->GetEventHandlerForPoint(gfx::Point()));
839 EXPECT_EQ(NULL,
840 capture_window->GetTopWindowContainingPoint(gfx::Point()));
841
842 aura::client::GetCaptureClient(widget->GetNativeView()->GetRootWindow())->
843 SetCapture(NULL);
844
845 EXPECT_TRUE(drag_drop_controller_->drag_start_received_);
846 EXPECT_EQ(num_drags - 1 - drag_view->VerticalDragThreshold(),
847 drag_drop_controller_->num_drag_updates_);
848 EXPECT_FALSE(drag_drop_controller_->drop_received_);
849 EXPECT_TRUE(drag_drop_controller_->drag_canceled_);
850 EXPECT_EQ(UTF8ToUTF16("I am being dragged"),
851 drag_drop_controller_->drag_string_);
852
853 EXPECT_EQ(1, drag_view->num_drag_enters_);
854 EXPECT_EQ(num_drags - 1 - drag_view->VerticalDragThreshold(),
855 drag_view->num_drag_updates_);
856 EXPECT_EQ(0, drag_view->num_drops_);
857 EXPECT_EQ(1, drag_view->num_drag_exits_);
858 EXPECT_TRUE(drag_view->drag_done_received_);
859 }
860
802 TEST_F(DragDropControllerTest, TouchDragDropInMultipleWindows) { 861 TEST_F(DragDropControllerTest, TouchDragDropInMultipleWindows) {
803 CommandLine::ForCurrentProcess()->AppendSwitch( 862 CommandLine::ForCurrentProcess()->AppendSwitch(
804 switches::kEnableTouchDragDrop); 863 switches::kEnableTouchDragDrop);
805 scoped_ptr<views::Widget> widget1(CreateNewWidget()); 864 scoped_ptr<views::Widget> widget1(CreateNewWidget());
806 DragTestView* drag_view1 = new DragTestView; 865 DragTestView* drag_view1 = new DragTestView;
807 AddViewToWidgetAndResize(widget1.get(), drag_view1); 866 AddViewToWidgetAndResize(widget1.get(), drag_view1);
808 scoped_ptr<views::Widget> widget2(CreateNewWidget()); 867 scoped_ptr<views::Widget> widget2(CreateNewWidget());
809 DragTestView* drag_view2 = new DragTestView; 868 DragTestView* drag_view2 = new DragTestView;
810 AddViewToWidgetAndResize(widget2.get(), drag_view2); 869 AddViewToWidgetAndResize(widget2.get(), drag_view2);
811 gfx::Rect widget1_bounds = widget1->GetClientAreaBoundsInScreen(); 870 gfx::Rect widget1_bounds = widget1->GetClientAreaBoundsInScreen();
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 EXPECT_EQ("405,405", observer.window_location_on_destroying().ToString()); 1077 EXPECT_EQ("405,405", observer.window_location_on_destroying().ToString());
1019 } 1078 }
1020 for (Shell::RootWindowList::iterator iter = root_windows.begin(); 1079 for (Shell::RootWindowList::iterator iter = root_windows.begin();
1021 iter != root_windows.end(); ++iter) { 1080 iter != root_windows.end(); ++iter) {
1022 aura::client::SetDragDropClient(*iter, NULL); 1081 aura::client::SetDragDropClient(*iter, NULL);
1023 } 1082 }
1024 } 1083 }
1025 1084
1026 } // namespace test 1085 } // namespace test
1027 } // namespace aura 1086 } // namespace aura
OLDNEW
« no previous file with comments | « ash/drag_drop/drag_drop_controller.cc ('k') | ash/drag_drop/drag_drop_tracker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698