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 "content/public/test/browser_test_utils.h" | 5 #include "content/public/test/browser_test_utils.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <tuple> | 8 #include <tuple> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 #include "net/test/python_utils.h" | 73 #include "net/test/python_utils.h" |
74 #include "net/url_request/url_request_context.h" | 74 #include "net/url_request/url_request_context.h" |
75 #include "net/url_request/url_request_context_getter.h" | 75 #include "net/url_request/url_request_context_getter.h" |
76 #include "storage/browser/fileapi/file_system_context.h" | 76 #include "storage/browser/fileapi/file_system_context.h" |
77 #include "testing/gtest/include/gtest/gtest.h" | 77 #include "testing/gtest/include/gtest/gtest.h" |
78 #include "ui/base/clipboard/clipboard.h" | 78 #include "ui/base/clipboard/clipboard.h" |
79 #include "ui/base/clipboard/scoped_clipboard_writer.h" | 79 #include "ui/base/clipboard/scoped_clipboard_writer.h" |
80 #include "ui/base/resource/resource_bundle.h" | 80 #include "ui/base/resource/resource_bundle.h" |
81 #include "ui/base/test/test_clipboard.h" | 81 #include "ui/base/test/test_clipboard.h" |
82 #include "ui/compositor/test/draw_waiter_for_test.h" | 82 #include "ui/compositor/test/draw_waiter_for_test.h" |
| 83 #include "ui/events/base_event_utils.h" |
83 #include "ui/events/gesture_detection/gesture_configuration.h" | 84 #include "ui/events/gesture_detection/gesture_configuration.h" |
84 #include "ui/events/keycodes/dom/dom_code.h" | 85 #include "ui/events/keycodes/dom/dom_code.h" |
85 #include "ui/events/keycodes/dom/keycode_converter.h" | 86 #include "ui/events/keycodes/dom/keycode_converter.h" |
86 #include "ui/events/latency_info.h" | 87 #include "ui/events/latency_info.h" |
87 #include "ui/resources/grit/webui_resources.h" | 88 #include "ui/resources/grit/webui_resources.h" |
88 | 89 |
89 #if defined(USE_AURA) | 90 #if defined(USE_AURA) |
90 #include "content/browser/renderer_host/render_widget_host_view_aura.h" | 91 #include "content/browser/renderer_host/render_widget_host_view_aura.h" |
91 #include "ui/aura/test/window_event_dispatcher_test_api.h" | 92 #include "ui/aura/test/window_event_dispatcher_test_api.h" |
92 #include "ui/aura/window.h" | 93 #include "ui/aura/window.h" |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 return false; | 200 return false; |
200 } | 201 } |
201 | 202 |
202 return true; | 203 return true; |
203 } | 204 } |
204 | 205 |
205 void BuildSimpleWebKeyEvent(blink::WebInputEvent::Type type, | 206 void BuildSimpleWebKeyEvent(blink::WebInputEvent::Type type, |
206 ui::DomKey key, | 207 ui::DomKey key, |
207 ui::DomCode code, | 208 ui::DomCode code, |
208 ui::KeyboardCode key_code, | 209 ui::KeyboardCode key_code, |
209 int modifiers, | |
210 NativeWebKeyboardEvent* event) { | 210 NativeWebKeyboardEvent* event) { |
211 event->domKey = key; | 211 event->domKey = key; |
212 event->domCode = static_cast<int>(code); | 212 event->domCode = static_cast<int>(code); |
213 event->nativeKeyCode = ui::KeycodeConverter::DomCodeToNativeKeycode(code); | 213 event->nativeKeyCode = ui::KeycodeConverter::DomCodeToNativeKeycode(code); |
214 event->windowsKeyCode = key_code; | 214 event->windowsKeyCode = key_code; |
215 event->type = type; | |
216 event->modifiers = modifiers; | |
217 event->isSystemKey = false; | 215 event->isSystemKey = false; |
218 event->timeStampSeconds = | |
219 (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF(); | |
220 event->skip_in_browser = true; | 216 event->skip_in_browser = true; |
221 | 217 |
222 if (type == blink::WebInputEvent::Char || | 218 if (type == blink::WebInputEvent::Char || |
223 type == blink::WebInputEvent::RawKeyDown) { | 219 type == blink::WebInputEvent::RawKeyDown) { |
224 event->text[0] = key_code; | 220 event->text[0] = key_code; |
225 event->unmodifiedText[0] = key_code; | 221 event->unmodifiedText[0] = key_code; |
226 } | 222 } |
227 } | 223 } |
228 | 224 |
229 void InjectRawKeyEvent(WebContents* web_contents, | 225 void InjectRawKeyEvent(WebContents* web_contents, |
230 blink::WebInputEvent::Type type, | 226 blink::WebInputEvent::Type type, |
231 ui::DomKey key, | 227 ui::DomKey key, |
232 ui::DomCode code, | 228 ui::DomCode code, |
233 ui::KeyboardCode key_code, | 229 ui::KeyboardCode key_code, |
234 int modifiers) { | 230 int modifiers) { |
235 NativeWebKeyboardEvent event; | 231 NativeWebKeyboardEvent event(type, modifiers, base::TimeTicks::Now()); |
236 BuildSimpleWebKeyEvent(type, key, code, key_code, modifiers, &event); | 232 BuildSimpleWebKeyEvent(type, key, code, key_code, &event); |
237 WebContentsImpl* web_contents_impl = | 233 WebContentsImpl* web_contents_impl = |
238 static_cast<WebContentsImpl*>(web_contents); | 234 static_cast<WebContentsImpl*>(web_contents); |
239 RenderWidgetHostImpl* main_frame_rwh = | 235 RenderWidgetHostImpl* main_frame_rwh = |
240 web_contents_impl->GetMainFrame()->GetRenderWidgetHost(); | 236 web_contents_impl->GetMainFrame()->GetRenderWidgetHost(); |
241 web_contents_impl->GetFocusedRenderWidgetHost(main_frame_rwh) | 237 web_contents_impl->GetFocusedRenderWidgetHost(main_frame_rwh) |
242 ->ForwardKeyboardEvent(event); | 238 ->ForwardKeyboardEvent(event); |
243 } | 239 } |
244 | 240 |
245 void GetCookiesCallback(std::string* cookies_out, | 241 void GetCookiesCallback(std::string* cookies_out, |
246 base::WaitableEvent* event, | 242 base::WaitableEvent* event, |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
523 blink::WebMouseEvent::Button button) { | 519 blink::WebMouseEvent::Button button) { |
524 int x = web_contents->GetContainerBounds().width() / 2; | 520 int x = web_contents->GetContainerBounds().width() / 2; |
525 int y = web_contents->GetContainerBounds().height() / 2; | 521 int y = web_contents->GetContainerBounds().height() / 2; |
526 SimulateMouseClickAt(web_contents, modifiers, button, gfx::Point(x, y)); | 522 SimulateMouseClickAt(web_contents, modifiers, button, gfx::Point(x, y)); |
527 } | 523 } |
528 | 524 |
529 void SimulateMouseClickAt(WebContents* web_contents, | 525 void SimulateMouseClickAt(WebContents* web_contents, |
530 int modifiers, | 526 int modifiers, |
531 blink::WebMouseEvent::Button button, | 527 blink::WebMouseEvent::Button button, |
532 const gfx::Point& point) { | 528 const gfx::Point& point) { |
533 blink::WebMouseEvent mouse_event; | 529 blink::WebMouseEvent mouse_event( |
534 mouse_event.type = blink::WebInputEvent::MouseDown; | 530 blink::WebInputEvent::MouseDown, modifiers, |
| 531 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
535 mouse_event.button = button; | 532 mouse_event.button = button; |
536 mouse_event.x = point.x(); | 533 mouse_event.x = point.x(); |
537 mouse_event.y = point.y(); | 534 mouse_event.y = point.y(); |
538 mouse_event.modifiers = modifiers; | |
539 // Mac needs globalX/globalY for events to plugins. | 535 // Mac needs globalX/globalY for events to plugins. |
540 gfx::Rect offset = web_contents->GetContainerBounds(); | 536 gfx::Rect offset = web_contents->GetContainerBounds(); |
541 mouse_event.globalX = point.x() + offset.x(); | 537 mouse_event.globalX = point.x() + offset.x(); |
542 mouse_event.globalY = point.y() + offset.y(); | 538 mouse_event.globalY = point.y() + offset.y(); |
543 mouse_event.clickCount = 1; | 539 mouse_event.clickCount = 1; |
544 web_contents->GetRenderViewHost()->GetWidget()->ForwardMouseEvent( | 540 web_contents->GetRenderViewHost()->GetWidget()->ForwardMouseEvent( |
545 mouse_event); | 541 mouse_event); |
546 mouse_event.type = blink::WebInputEvent::MouseUp; | 542 mouse_event.setType(blink::WebInputEvent::MouseUp); |
547 web_contents->GetRenderViewHost()->GetWidget()->ForwardMouseEvent( | 543 web_contents->GetRenderViewHost()->GetWidget()->ForwardMouseEvent( |
548 mouse_event); | 544 mouse_event); |
549 } | 545 } |
550 | 546 |
551 void SimulateMouseEvent(WebContents* web_contents, | 547 void SimulateMouseEvent(WebContents* web_contents, |
552 blink::WebInputEvent::Type type, | 548 blink::WebInputEvent::Type type, |
553 const gfx::Point& point) { | 549 const gfx::Point& point) { |
554 blink::WebMouseEvent mouse_event; | 550 blink::WebMouseEvent mouse_event( |
555 mouse_event.type = type; | 551 type, blink::WebInputEvent::NoModifiers, |
| 552 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
556 mouse_event.x = point.x(); | 553 mouse_event.x = point.x(); |
557 mouse_event.y = point.y(); | 554 mouse_event.y = point.y(); |
558 web_contents->GetRenderViewHost()->GetWidget()->ForwardMouseEvent( | 555 web_contents->GetRenderViewHost()->GetWidget()->ForwardMouseEvent( |
559 mouse_event); | 556 mouse_event); |
560 } | 557 } |
561 | 558 |
562 void SimulateMouseWheelEvent(WebContents* web_contents, | 559 void SimulateMouseWheelEvent(WebContents* web_contents, |
563 const gfx::Point& point, | 560 const gfx::Point& point, |
564 const gfx::Vector2d& delta) { | 561 const gfx::Vector2d& delta) { |
565 blink::WebMouseWheelEvent wheel_event; | 562 blink::WebMouseWheelEvent wheel_event( |
566 wheel_event.type = blink::WebInputEvent::MouseWheel; | 563 blink::WebInputEvent::MouseWheel, blink::WebInputEvent::NoModifiers, |
| 564 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
| 565 |
567 wheel_event.x = point.x(); | 566 wheel_event.x = point.x(); |
568 wheel_event.y = point.y(); | 567 wheel_event.y = point.y(); |
569 wheel_event.deltaX = delta.x(); | 568 wheel_event.deltaX = delta.x(); |
570 wheel_event.deltaY = delta.y(); | 569 wheel_event.deltaY = delta.y(); |
571 RenderWidgetHostImpl* widget_host = RenderWidgetHostImpl::From( | 570 RenderWidgetHostImpl* widget_host = RenderWidgetHostImpl::From( |
572 web_contents->GetRenderViewHost()->GetWidget()); | 571 web_contents->GetRenderViewHost()->GetWidget()); |
573 widget_host->ForwardWheelEvent(wheel_event); | 572 widget_host->ForwardWheelEvent(wheel_event); |
574 } | 573 } |
575 | 574 |
576 void SimulateGestureScrollSequence(WebContents* web_contents, | 575 void SimulateGestureScrollSequence(WebContents* web_contents, |
577 const gfx::Point& point, | 576 const gfx::Point& point, |
578 const gfx::Vector2dF& delta) { | 577 const gfx::Vector2dF& delta) { |
579 RenderWidgetHostImpl* widget_host = RenderWidgetHostImpl::From( | 578 RenderWidgetHostImpl* widget_host = RenderWidgetHostImpl::From( |
580 web_contents->GetRenderViewHost()->GetWidget()); | 579 web_contents->GetRenderViewHost()->GetWidget()); |
581 | 580 |
582 blink::WebGestureEvent scroll_begin; | 581 blink::WebGestureEvent scroll_begin( |
583 scroll_begin.type = blink::WebGestureEvent::GestureScrollBegin; | 582 blink::WebGestureEvent::GestureScrollBegin, |
| 583 blink::WebInputEvent::NoModifiers, |
| 584 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
584 scroll_begin.sourceDevice = blink::WebGestureDeviceTouchpad; | 585 scroll_begin.sourceDevice = blink::WebGestureDeviceTouchpad; |
585 scroll_begin.x = point.x(); | 586 scroll_begin.x = point.x(); |
586 scroll_begin.y = point.y(); | 587 scroll_begin.y = point.y(); |
587 widget_host->ForwardGestureEvent(scroll_begin); | 588 widget_host->ForwardGestureEvent(scroll_begin); |
588 | 589 |
589 blink::WebGestureEvent scroll_update; | 590 blink::WebGestureEvent scroll_update( |
590 scroll_update.type = blink::WebGestureEvent::GestureScrollUpdate; | 591 blink::WebGestureEvent::GestureScrollUpdate, |
| 592 blink::WebInputEvent::NoModifiers, |
| 593 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
591 scroll_update.sourceDevice = blink::WebGestureDeviceTouchpad; | 594 scroll_update.sourceDevice = blink::WebGestureDeviceTouchpad; |
592 scroll_update.x = point.x(); | 595 scroll_update.x = point.x(); |
593 scroll_update.y = point.y(); | 596 scroll_update.y = point.y(); |
594 scroll_update.data.scrollUpdate.deltaX = delta.x(); | 597 scroll_update.data.scrollUpdate.deltaX = delta.x(); |
595 scroll_update.data.scrollUpdate.deltaY = delta.y(); | 598 scroll_update.data.scrollUpdate.deltaY = delta.y(); |
596 scroll_update.data.scrollUpdate.velocityX = 0; | 599 scroll_update.data.scrollUpdate.velocityX = 0; |
597 scroll_update.data.scrollUpdate.velocityY = 0; | 600 scroll_update.data.scrollUpdate.velocityY = 0; |
598 widget_host->ForwardGestureEvent(scroll_update); | 601 widget_host->ForwardGestureEvent(scroll_update); |
599 | 602 |
600 blink::WebGestureEvent scroll_end; | 603 blink::WebGestureEvent scroll_end( |
601 scroll_end.type = blink::WebGestureEvent::GestureScrollEnd; | 604 blink::WebGestureEvent::GestureScrollEnd, |
| 605 blink::WebInputEvent::NoModifiers, |
| 606 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
602 scroll_end.sourceDevice = blink::WebGestureDeviceTouchpad; | 607 scroll_end.sourceDevice = blink::WebGestureDeviceTouchpad; |
603 scroll_end.x = point.x() + delta.x(); | 608 scroll_end.x = point.x() + delta.x(); |
604 scroll_end.y = point.y() + delta.y(); | 609 scroll_end.y = point.y() + delta.y(); |
605 widget_host->ForwardGestureEvent(scroll_end); | 610 widget_host->ForwardGestureEvent(scroll_end); |
606 } | 611 } |
607 | 612 |
608 void SimulateGestureFlingSequence(WebContents* web_contents, | 613 void SimulateGestureFlingSequence(WebContents* web_contents, |
609 const gfx::Point& point, | 614 const gfx::Point& point, |
610 const gfx::Vector2dF& velocity) { | 615 const gfx::Vector2dF& velocity) { |
611 RenderWidgetHostImpl* widget_host = RenderWidgetHostImpl::From( | 616 RenderWidgetHostImpl* widget_host = RenderWidgetHostImpl::From( |
612 web_contents->GetRenderViewHost()->GetWidget()); | 617 web_contents->GetRenderViewHost()->GetWidget()); |
613 | 618 |
614 blink::WebGestureEvent scroll_begin; | 619 blink::WebGestureEvent scroll_begin( |
615 scroll_begin.type = blink::WebGestureEvent::GestureScrollBegin; | 620 blink::WebGestureEvent::GestureScrollBegin, |
| 621 blink::WebInputEvent::NoModifiers, |
| 622 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
616 scroll_begin.sourceDevice = blink::WebGestureDeviceTouchpad; | 623 scroll_begin.sourceDevice = blink::WebGestureDeviceTouchpad; |
617 scroll_begin.x = point.x(); | 624 scroll_begin.x = point.x(); |
618 scroll_begin.y = point.y(); | 625 scroll_begin.y = point.y(); |
619 widget_host->ForwardGestureEvent(scroll_begin); | 626 widget_host->ForwardGestureEvent(scroll_begin); |
620 | 627 |
621 blink::WebGestureEvent scroll_end; | 628 blink::WebGestureEvent scroll_end( |
622 scroll_end.type = blink::WebGestureEvent::GestureScrollEnd; | 629 blink::WebGestureEvent::GestureScrollEnd, |
| 630 blink::WebInputEvent::NoModifiers, |
| 631 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
623 scroll_end.sourceDevice = blink::WebGestureDeviceTouchpad; | 632 scroll_end.sourceDevice = blink::WebGestureDeviceTouchpad; |
624 scroll_end.x = point.x(); | 633 scroll_end.x = point.x(); |
625 scroll_end.y = point.y(); | 634 scroll_end.y = point.y(); |
626 widget_host->ForwardGestureEvent(scroll_end); | 635 widget_host->ForwardGestureEvent(scroll_end); |
627 | 636 |
628 blink::WebGestureEvent fling_start; | 637 blink::WebGestureEvent fling_start( |
629 fling_start.type = blink::WebGestureEvent::GestureFlingStart; | 638 blink::WebGestureEvent::GestureFlingStart, |
| 639 blink::WebInputEvent::NoModifiers, |
| 640 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
630 fling_start.sourceDevice = blink::WebGestureDeviceTouchpad; | 641 fling_start.sourceDevice = blink::WebGestureDeviceTouchpad; |
631 fling_start.x = point.x(); | 642 fling_start.x = point.x(); |
632 fling_start.y = point.y(); | 643 fling_start.y = point.y(); |
633 fling_start.data.flingStart.targetViewport = false; | 644 fling_start.data.flingStart.targetViewport = false; |
634 fling_start.data.flingStart.velocityX = velocity.x(); | 645 fling_start.data.flingStart.velocityX = velocity.x(); |
635 fling_start.data.flingStart.velocityY = velocity.y(); | 646 fling_start.data.flingStart.velocityY = velocity.y(); |
636 widget_host->ForwardGestureEvent(fling_start); | 647 widget_host->ForwardGestureEvent(fling_start); |
637 } | 648 } |
638 | 649 |
639 void SimulateTapAt(WebContents* web_contents, const gfx::Point& point) { | 650 void SimulateTapAt(WebContents* web_contents, const gfx::Point& point) { |
640 blink::WebGestureEvent tap; | 651 blink::WebGestureEvent tap( |
641 tap.type = blink::WebGestureEvent::GestureTap; | 652 blink::WebGestureEvent::GestureTap, blink::WebInputEvent::ControlKey, |
| 653 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
642 tap.sourceDevice = blink::WebGestureDeviceTouchpad; | 654 tap.sourceDevice = blink::WebGestureDeviceTouchpad; |
643 tap.x = point.x(); | 655 tap.x = point.x(); |
644 tap.y = point.y(); | 656 tap.y = point.y(); |
645 tap.modifiers = blink::WebInputEvent::ControlKey; | |
646 RenderWidgetHostImpl* widget_host = RenderWidgetHostImpl::From( | 657 RenderWidgetHostImpl* widget_host = RenderWidgetHostImpl::From( |
647 web_contents->GetRenderViewHost()->GetWidget()); | 658 web_contents->GetRenderViewHost()->GetWidget()); |
648 widget_host->ForwardGestureEvent(tap); | 659 widget_host->ForwardGestureEvent(tap); |
649 } | 660 } |
650 | 661 |
651 void SimulateTapWithModifiersAt(WebContents* web_contents, | 662 void SimulateTapWithModifiersAt(WebContents* web_contents, |
652 unsigned modifiers, | 663 unsigned modifiers, |
653 const gfx::Point& point) { | 664 const gfx::Point& point) { |
654 blink::WebGestureEvent tap; | 665 blink::WebGestureEvent tap( |
655 tap.type = blink::WebGestureEvent::GestureTap; | 666 blink::WebGestureEvent::GestureTap, modifiers, |
| 667 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
656 tap.sourceDevice = blink::WebGestureDeviceTouchpad; | 668 tap.sourceDevice = blink::WebGestureDeviceTouchpad; |
657 tap.x = point.x(); | 669 tap.x = point.x(); |
658 tap.y = point.y(); | 670 tap.y = point.y(); |
659 tap.modifiers = modifiers; | |
660 RenderWidgetHostImpl* widget_host = RenderWidgetHostImpl::From( | 671 RenderWidgetHostImpl* widget_host = RenderWidgetHostImpl::From( |
661 web_contents->GetRenderViewHost()->GetWidget()); | 672 web_contents->GetRenderViewHost()->GetWidget()); |
662 widget_host->ForwardGestureEvent(tap); | 673 widget_host->ForwardGestureEvent(tap); |
663 } | 674 } |
664 | 675 |
665 #if defined(USE_AURA) | 676 #if defined(USE_AURA) |
666 void SimulateTouchPressAt(WebContents* web_contents, const gfx::Point& point) { | 677 void SimulateTouchPressAt(WebContents* web_contents, const gfx::Point& point) { |
667 ui::TouchEvent touch(ui::ET_TOUCH_PRESSED, point, 0, base::TimeTicks()); | 678 ui::TouchEvent touch(ui::ET_TOUCH_PRESSED, point, 0, base::TimeTicks()); |
668 static_cast<RenderWidgetHostViewAura*>( | 679 static_cast<RenderWidgetHostViewAura*>( |
669 web_contents->GetRenderWidgetHostView()) | 680 web_contents->GetRenderWidgetHostView()) |
(...skipping 1170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1840 IPC::IpcSecurityTestUtil::PwnMessageReceived( | 1851 IPC::IpcSecurityTestUtil::PwnMessageReceived( |
1841 process->GetChannel(), | 1852 process->GetChannel(), |
1842 FileSystemHostMsg_Write(request_id, file_path, blob_uuid, position)); | 1853 FileSystemHostMsg_Write(request_id, file_path, blob_uuid, position)); |
1843 | 1854 |
1844 // If this started an async operation, wait for it to complete. | 1855 // If this started an async operation, wait for it to complete. |
1845 if (waiter.did_start_update()) | 1856 if (waiter.did_start_update()) |
1846 waiter.WaitForEndUpdate(); | 1857 waiter.WaitForEndUpdate(); |
1847 } | 1858 } |
1848 | 1859 |
1849 } // namespace content | 1860 } // namespace content |
OLD | NEW |