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 "ash/drag_drop/drag_drop_controller.h" | 5 #include "ash/drag_drop/drag_drop_controller.h" |
6 | 6 |
7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
8 #include "ash/test/ash_test_base.h" | 8 #include "ash/test/ash_test_base.h" |
9 #include "ash/wm/root_window_event_filter.h" | 9 #include "ash/wm/root_window_event_filter.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 private: | 209 private: |
210 DISALLOW_COPY_AND_ASSIGN(DragDropControllerTest); | 210 DISALLOW_COPY_AND_ASSIGN(DragDropControllerTest); |
211 }; | 211 }; |
212 | 212 |
213 TEST_F(DragDropControllerTest, DragDropInSingleViewTest) { | 213 TEST_F(DragDropControllerTest, DragDropInSingleViewTest) { |
214 scoped_ptr<views::Widget> widget(CreateNewWidget()); | 214 scoped_ptr<views::Widget> widget(CreateNewWidget()); |
215 DragTestView* drag_view = new DragTestView; | 215 DragTestView* drag_view = new DragTestView; |
216 AddViewToWidgetAndResize(widget.get(), drag_view); | 216 AddViewToWidgetAndResize(widget.get(), drag_view); |
217 ui::OSExchangeData data; | 217 ui::OSExchangeData data; |
218 data.SetString(UTF8ToUTF16("I am being dragged")); | 218 data.SetString(UTF8ToUTF16("I am being dragged")); |
219 aura::test::EventGenerator generator(widget->GetNativeView()); | 219 aura::test::EventGenerator generator(Shell::GetRootWindow(), |
| 220 widget->GetNativeView()); |
220 generator.PressLeftButton(); | 221 generator.PressLeftButton(); |
221 | 222 |
222 int num_drags = 17; | 223 int num_drags = 17; |
223 for (int i = 0; i < num_drags; ++i) { | 224 for (int i = 0; i < num_drags; ++i) { |
224 // Because we are not doing a blocking drag and drop, the original | 225 // Because we are not doing a blocking drag and drop, the original |
225 // OSDragExchangeData object is lost as soon as we return from the drag | 226 // OSDragExchangeData object is lost as soon as we return from the drag |
226 // initiation in DragDropController::StartDragAndDrop(). Hence we set the | 227 // initiation in DragDropController::StartDragAndDrop(). Hence we set the |
227 // drag_data_ to a fake drag data object that we created. | 228 // drag_data_ to a fake drag data object that we created. |
228 if (i > 0) | 229 if (i > 0) |
229 UpdateDragData(&data); | 230 UpdateDragData(&data); |
(...skipping 20 matching lines...) Expand all Loading... |
250 TEST_F(DragDropControllerTest, DragDropInMultipleViewsSingleWidgetTest) { | 251 TEST_F(DragDropControllerTest, DragDropInMultipleViewsSingleWidgetTest) { |
251 scoped_ptr<views::Widget> widget(CreateNewWidget()); | 252 scoped_ptr<views::Widget> widget(CreateNewWidget()); |
252 DragTestView* drag_view1 = new DragTestView; | 253 DragTestView* drag_view1 = new DragTestView; |
253 AddViewToWidgetAndResize(widget.get(), drag_view1); | 254 AddViewToWidgetAndResize(widget.get(), drag_view1); |
254 DragTestView* drag_view2 = new DragTestView; | 255 DragTestView* drag_view2 = new DragTestView; |
255 AddViewToWidgetAndResize(widget.get(), drag_view2); | 256 AddViewToWidgetAndResize(widget.get(), drag_view2); |
256 | 257 |
257 ui::OSExchangeData data; | 258 ui::OSExchangeData data; |
258 data.SetString(UTF8ToUTF16("I am being dragged")); | 259 data.SetString(UTF8ToUTF16("I am being dragged")); |
259 | 260 |
260 aura::test::EventGenerator generator; | 261 aura::test::EventGenerator generator(Shell::GetRootWindow()); |
261 generator.MoveMouseRelativeTo(widget->GetNativeView(), | 262 generator.MoveMouseRelativeTo(widget->GetNativeView(), |
262 drag_view1->bounds().CenterPoint()); | 263 drag_view1->bounds().CenterPoint()); |
263 generator.PressLeftButton(); | 264 generator.PressLeftButton(); |
264 | 265 |
265 int num_drags = drag_view1->width(); | 266 int num_drags = drag_view1->width(); |
266 for (int i = 0; i < num_drags; ++i) { | 267 for (int i = 0; i < num_drags; ++i) { |
267 // Because we are not doing a blocking drag and drop, the original | 268 // Because we are not doing a blocking drag and drop, the original |
268 // OSDragExchangeData object is lost as soon as we return from the drag | 269 // OSDragExchangeData object is lost as soon as we return from the drag |
269 // initiation in DragDropController::StartDragAndDrop(). Hence we set the | 270 // initiation in DragDropController::StartDragAndDrop(). Hence we set the |
270 // drag_data_ to a fake drag data object that we created. | 271 // drag_data_ to a fake drag data object that we created. |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 DragTestView* drag_view2 = new DragTestView; | 308 DragTestView* drag_view2 = new DragTestView; |
308 AddViewToWidgetAndResize(widget2.get(), drag_view2); | 309 AddViewToWidgetAndResize(widget2.get(), drag_view2); |
309 gfx::Rect widget1_bounds = widget1->GetClientAreaScreenBounds(); | 310 gfx::Rect widget1_bounds = widget1->GetClientAreaScreenBounds(); |
310 gfx::Rect widget2_bounds = widget2->GetClientAreaScreenBounds(); | 311 gfx::Rect widget2_bounds = widget2->GetClientAreaScreenBounds(); |
311 widget2->SetBounds(gfx::Rect(widget1_bounds.width(), 0, | 312 widget2->SetBounds(gfx::Rect(widget1_bounds.width(), 0, |
312 widget2_bounds.width(), widget2_bounds.height())); | 313 widget2_bounds.width(), widget2_bounds.height())); |
313 | 314 |
314 ui::OSExchangeData data; | 315 ui::OSExchangeData data; |
315 data.SetString(UTF8ToUTF16("I am being dragged")); | 316 data.SetString(UTF8ToUTF16("I am being dragged")); |
316 | 317 |
317 aura::test::EventGenerator generator(widget1->GetNativeView()); | 318 aura::test::EventGenerator generator(Shell::GetRootWindow(), |
| 319 widget1->GetNativeView()); |
318 generator.PressLeftButton(); | 320 generator.PressLeftButton(); |
319 | 321 |
320 int num_drags = drag_view1->width(); | 322 int num_drags = drag_view1->width(); |
321 for (int i = 0; i < num_drags; ++i) { | 323 for (int i = 0; i < num_drags; ++i) { |
322 // Because we are not doing a blocking drag and drop, the original | 324 // Because we are not doing a blocking drag and drop, the original |
323 // OSDragExchangeData object is lost as soon as we return from the drag | 325 // OSDragExchangeData object is lost as soon as we return from the drag |
324 // initiation in DragDropController::StartDragAndDrop(). Hence we set the | 326 // initiation in DragDropController::StartDragAndDrop(). Hence we set the |
325 // drag_data_ to a fake drag data object that we created. | 327 // drag_data_ to a fake drag data object that we created. |
326 if (i > 0) | 328 if (i > 0) |
327 UpdateDragData(&data); | 329 UpdateDragData(&data); |
(...skipping 27 matching lines...) Expand all Loading... |
355 } | 357 } |
356 | 358 |
357 TEST_F(DragDropControllerTest, ViewRemovedWhileInDragDropTest) { | 359 TEST_F(DragDropControllerTest, ViewRemovedWhileInDragDropTest) { |
358 scoped_ptr<views::Widget> widget(CreateNewWidget()); | 360 scoped_ptr<views::Widget> widget(CreateNewWidget()); |
359 scoped_ptr<DragTestView> drag_view(new DragTestView); | 361 scoped_ptr<DragTestView> drag_view(new DragTestView); |
360 AddViewToWidgetAndResize(widget.get(), drag_view.get()); | 362 AddViewToWidgetAndResize(widget.get(), drag_view.get()); |
361 gfx::Point point = gfx::Rect(drag_view->bounds()).CenterPoint(); | 363 gfx::Point point = gfx::Rect(drag_view->bounds()).CenterPoint(); |
362 ui::OSExchangeData data; | 364 ui::OSExchangeData data; |
363 data.SetString(UTF8ToUTF16("I am being dragged")); | 365 data.SetString(UTF8ToUTF16("I am being dragged")); |
364 | 366 |
365 aura::test::EventGenerator generator; | 367 aura::test::EventGenerator generator(Shell::GetRootWindow()); |
366 generator.MoveMouseToCenterOf(widget->GetNativeView()); | 368 generator.MoveMouseToCenterOf(widget->GetNativeView()); |
367 generator.PressLeftButton(); | 369 generator.PressLeftButton(); |
368 | 370 |
369 int num_drags_1 = 17; | 371 int num_drags_1 = 17; |
370 for (int i = 0; i < num_drags_1; ++i) { | 372 for (int i = 0; i < num_drags_1; ++i) { |
371 // Because we are not doing a blocking drag and drop, the original | 373 // Because we are not doing a blocking drag and drop, the original |
372 // OSDragExchangeData object is lost as soon as we return from the drag | 374 // OSDragExchangeData object is lost as soon as we return from the drag |
373 // initiation in DragDropController::StartDragAndDrop(). Hence we set the | 375 // initiation in DragDropController::StartDragAndDrop(). Hence we set the |
374 // drag_data_ to a fake drag data object that we created. | 376 // drag_data_ to a fake drag data object that we created. |
375 if (i > 0) | 377 if (i > 0) |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
412 EXPECT_FALSE(cb->IsFormatAvailable(ui::Clipboard::GetPlainTextFormatType(), | 414 EXPECT_FALSE(cb->IsFormatAvailable(ui::Clipboard::GetPlainTextFormatType(), |
413 ui::Clipboard::BUFFER_STANDARD)); | 415 ui::Clipboard::BUFFER_STANDARD)); |
414 std::string result; | 416 std::string result; |
415 cb->ReadAsciiText(ui::Clipboard::BUFFER_STANDARD, &result); | 417 cb->ReadAsciiText(ui::Clipboard::BUFFER_STANDARD, &result); |
416 EXPECT_EQ("", result); | 418 EXPECT_EQ("", result); |
417 | 419 |
418 scoped_ptr<views::Widget> widget(CreateNewWidget()); | 420 scoped_ptr<views::Widget> widget(CreateNewWidget()); |
419 DragTestView* drag_view = new DragTestView; | 421 DragTestView* drag_view = new DragTestView; |
420 AddViewToWidgetAndResize(widget.get(), drag_view); | 422 AddViewToWidgetAndResize(widget.get(), drag_view); |
421 | 423 |
422 aura::test::EventGenerator generator(widget->GetNativeView()); | 424 aura::test::EventGenerator generator(Shell::GetRootWindow(), |
| 425 widget->GetNativeView()); |
423 ui::OSExchangeData data; | 426 ui::OSExchangeData data; |
424 std::string data_str("I am being dragged"); | 427 std::string data_str("I am being dragged"); |
425 data.SetString(ASCIIToUTF16(data_str)); | 428 data.SetString(ASCIIToUTF16(data_str)); |
426 | 429 |
427 generator.PressLeftButton(); | 430 generator.PressLeftButton(); |
428 generator.MoveMouseBy(0, drag_view->VerticalDragThreshold() + 1); | 431 generator.MoveMouseBy(0, drag_view->VerticalDragThreshold() + 1); |
429 | 432 |
430 EXPECT_TRUE(cb->IsFormatAvailable(ui::Clipboard::GetPlainTextFormatType(), | 433 EXPECT_TRUE(cb->IsFormatAvailable(ui::Clipboard::GetPlainTextFormatType(), |
431 ui::Clipboard::BUFFER_STANDARD)); | 434 ui::Clipboard::BUFFER_STANDARD)); |
432 cb->ReadAsciiText(ui::Clipboard::BUFFER_STANDARD, &result); | 435 cb->ReadAsciiText(ui::Clipboard::BUFFER_STANDARD, &result); |
433 EXPECT_EQ(data_str, result); | 436 EXPECT_EQ(data_str, result); |
434 } | 437 } |
435 | 438 |
436 TEST_F(DragDropControllerTest, WindowDestroyedDuringDragDrop) { | 439 TEST_F(DragDropControllerTest, WindowDestroyedDuringDragDrop) { |
437 scoped_ptr<views::Widget> widget(CreateNewWidget()); | 440 scoped_ptr<views::Widget> widget(CreateNewWidget()); |
438 DragTestView* drag_view = new DragTestView; | 441 DragTestView* drag_view = new DragTestView; |
439 AddViewToWidgetAndResize(widget.get(), drag_view); | 442 AddViewToWidgetAndResize(widget.get(), drag_view); |
440 aura::Window* window = widget->GetNativeView(); | 443 aura::Window* window = widget->GetNativeView(); |
441 | 444 |
442 ui::OSExchangeData data; | 445 ui::OSExchangeData data; |
443 data.SetString(UTF8ToUTF16("I am being dragged")); | 446 data.SetString(UTF8ToUTF16("I am being dragged")); |
444 aura::test::EventGenerator generator(widget->GetNativeView()); | 447 aura::test::EventGenerator generator(Shell::GetRootWindow(), |
| 448 widget->GetNativeView()); |
445 generator.PressLeftButton(); | 449 generator.PressLeftButton(); |
446 | 450 |
447 int num_drags = 17; | 451 int num_drags = 17; |
448 for (int i = 0; i < num_drags; ++i) { | 452 for (int i = 0; i < num_drags; ++i) { |
449 // Because we are not doing a blocking drag and drop, the original | 453 // Because we are not doing a blocking drag and drop, the original |
450 // OSDragExchangeData object is lost as soon as we return from the drag | 454 // OSDragExchangeData object is lost as soon as we return from the drag |
451 // initiation in DragDropController::StartDragAndDrop(). Hence we set the | 455 // initiation in DragDropController::StartDragAndDrop(). Hence we set the |
452 // drag_data_ to a fake drag data object that we created. | 456 // drag_data_ to a fake drag data object that we created. |
453 if (i > 0) | 457 if (i > 0) |
454 UpdateDragData(&data); | 458 UpdateDragData(&data); |
(...skipping 18 matching lines...) Expand all Loading... |
473 EXPECT_TRUE(drag_drop_controller_->drag_start_received_); | 477 EXPECT_TRUE(drag_drop_controller_->drag_start_received_); |
474 EXPECT_TRUE(drag_drop_controller_->drop_received_); | 478 EXPECT_TRUE(drag_drop_controller_->drop_received_); |
475 } | 479 } |
476 | 480 |
477 TEST_F(DragDropControllerTest, SyntheticEventsDuringDragDrop) { | 481 TEST_F(DragDropControllerTest, SyntheticEventsDuringDragDrop) { |
478 scoped_ptr<views::Widget> widget(CreateNewWidget()); | 482 scoped_ptr<views::Widget> widget(CreateNewWidget()); |
479 DragTestView* drag_view = new DragTestView; | 483 DragTestView* drag_view = new DragTestView; |
480 AddViewToWidgetAndResize(widget.get(), drag_view); | 484 AddViewToWidgetAndResize(widget.get(), drag_view); |
481 ui::OSExchangeData data; | 485 ui::OSExchangeData data; |
482 data.SetString(UTF8ToUTF16("I am being dragged")); | 486 data.SetString(UTF8ToUTF16("I am being dragged")); |
483 aura::test::EventGenerator generator(widget->GetNativeView()); | 487 aura::test::EventGenerator generator(Shell::GetRootWindow(), |
| 488 widget->GetNativeView()); |
484 generator.PressLeftButton(); | 489 generator.PressLeftButton(); |
485 | 490 |
486 int num_drags = 17; | 491 int num_drags = 17; |
487 for (int i = 0; i < num_drags; ++i) { | 492 for (int i = 0; i < num_drags; ++i) { |
488 // Because we are not doing a blocking drag and drop, the original | 493 // Because we are not doing a blocking drag and drop, the original |
489 // OSDragExchangeData object is lost as soon as we return from the drag | 494 // OSDragExchangeData object is lost as soon as we return from the drag |
490 // initiation in DragDropController::StartDragAndDrop(). Hence we set the | 495 // initiation in DragDropController::StartDragAndDrop(). Hence we set the |
491 // drag_data_ to a fake drag data object that we created. | 496 // drag_data_ to a fake drag data object that we created. |
492 if (i > 0) | 497 if (i > 0) |
493 UpdateDragData(&data); | 498 UpdateDragData(&data); |
(...skipping 20 matching lines...) Expand all Loading... |
514 EXPECT_EQ(1, drag_view->num_drag_enters_); | 519 EXPECT_EQ(1, drag_view->num_drag_enters_); |
515 EXPECT_EQ(num_drags - 1 - drag_view->VerticalDragThreshold(), | 520 EXPECT_EQ(num_drags - 1 - drag_view->VerticalDragThreshold(), |
516 drag_view->num_drag_updates_); | 521 drag_view->num_drag_updates_); |
517 EXPECT_EQ(1, drag_view->num_drops_); | 522 EXPECT_EQ(1, drag_view->num_drops_); |
518 EXPECT_EQ(0, drag_view->num_drag_exits_); | 523 EXPECT_EQ(0, drag_view->num_drag_exits_); |
519 EXPECT_TRUE(drag_view->drag_done_received_); | 524 EXPECT_TRUE(drag_view->drag_done_received_); |
520 } | 525 } |
521 | 526 |
522 } // namespace test | 527 } // namespace test |
523 } // namespace aura | 528 } // namespace aura |
OLD | NEW |