Touchscreen scrolling with OOPIFs DCHECKs |
|||||
Issue descriptionChrome Version: 61.0.3150.0 OS: Linux, Chrome OS, Android What steps will reproduce the problem? (1) With a device with a touchscreen, visit a page with cross site iframes (e.g. http://csreis.github.io/tests/cross-site-iframe.html ) (2) Touch scroll such that your finger crosses into/out of the iframe We hit the following DCHECKs: When the finger moves from the main frame to the child frame: [62929:62929:0706/141217.120684:FATAL:input_event_stream_validator.cc(32)] Check failed: ValidateImpl(event, &error_msg_). Scroll update outside of scroll Invalid Event: GestureScrollUpdate (Time: 4848289.652000, Modifiers: 0) { Pos: (265, 373) GlobalPos: (4320, 1028) SourceDevice: 2 RawData: (-0.000000, -2.000000, 0.000000, 0.000000, 0) } #0 0x7fcca41073bb base::debug::StackTrace::StackTrace() #1 0x7fcca41060bc base::debug::StackTrace::StackTrace() #2 0x7fcca417a583 logging::LogMessage::~LogMessage() #3 0x7fcc9c730378 content::InputEventStreamValidator::Validate() #4 0x7fcc9d980b04 content::LegacyInputRouterImpl::SendGestureEvent() #5 0x7fcc9db4c4c2 content::RenderWidgetHostImpl::ForwardGestureEventWithLatencyInfo() #6 0x7fcc9d59978c content::RenderWidgetHostViewChildFrame::ProcessGestureEvent() #7 0x7fcc9db70ab6 content::RenderWidgetHostInputEventRouter::RouteTouchscreenGestureEvent() #8 0x7fcc9db702df content::RenderWidgetHostInputEventRouter::RouteGestureEvent() #9 0x7fcc9e03057f content::RenderWidgetHostViewEventHandler::OnGestureEvent() #10 0x7fcc9db82216 content::RenderWidgetHostViewAura::OnGestureEvent() #11 0x7fcc998a6163 ui::EventHandler::OnEvent() #12 0x7fcc998a1840 ui::EventDispatcher::DispatchEvent() #13 0x7fcc998a112b ui::EventDispatcher::ProcessEvent() #14 0x7fcc998a0ec2 ui::EventDispatcherDelegate::DispatchEventToTarget() #15 0x7fcc998a0d6f ui::EventDispatcherDelegate::DispatchEvent() #16 0x7fcc9947bce1 aura::WindowEventDispatcher::ProcessGestures() #17 0x7fcc9947bb2a aura::WindowEventDispatcher::ProcessedTouchEvent() #18 0x7fcc9db7ee3d content::RenderWidgetHostViewAura::ProcessAckedTouchEvent() #19 0x7fcc9db50e29 content::RenderWidgetHostImpl::OnTouchEventAck() #20 0x7fcc9d982603 content::LegacyInputRouterImpl::OnTouchEventAck() #21 0x7fcc9d99bbdb content::PassthroughTouchEventQueue::AckTouchEventToClient() #22 0x7fcc9d99b020 content::PassthroughTouchEventQueue::AckCompletedEvents() #23 0x7fcc9d99aa94 content::PassthroughTouchEventQueue::QueueEvent() #24 0x7fcc9d980d38 content::LegacyInputRouterImpl::SendTouchEvent() #25 0x7fcc9db4cc7f content::RenderWidgetHostImpl::ForwardTouchEventWithLatencyInfo() #26 0x7fcc9db81ecc content::RenderWidgetHostViewAura::ProcessTouchEvent() #27 0x7fcc9db70ebf content::RenderWidgetHostInputEventRouter::RouteTouchEvent() #28 0x7fcc9e02ff62 content::RenderWidgetHostViewEventHandler::OnTouchEvent() #29 0x7fcc9db82196 content::RenderWidgetHostViewAura::OnTouchEvent() #30 0x7fcc998a6123 ui::EventHandler::OnEvent() #31 0x7fcc998a1840 ui::EventDispatcher::DispatchEvent() #32 0x7fcc998a112b ui::EventDispatcher::ProcessEvent() #33 0x7fcc998a0ec2 ui::EventDispatcherDelegate::DispatchEventToTarget() #34 0x7fcc998a0d6f ui::EventDispatcherDelegate::DispatchEvent() #35 0x7fcc998a6f05 ui::EventProcessor::OnEventFromSource() #36 0x7fcc998a708c ui::EventProcessor::OnEventFromSource() #37 0x7fcc998a7fcf ui::EventSource::DeliverEventToSink() #38 0x7fcc998a7bd7 ui::EventSource::SendEventToSink() #39 0x7fcc980b40b9 views::DesktopWindowTreeHostX11::DispatchTouchEvent() #40 0x7fcc980b4dab views::DesktopWindowTreeHostX11::DispatchEvent() #41 0x7fcca255610d ui::PlatformEventSource::DispatchEvent() #42 0x7fcc8a1f5e94 ui::X11EventSourceGlib::ProcessXEvent() #43 0x7fcc8a1e7148 ui::X11EventSource::ExtractCookieDataDispatchEvent() #44 0x7fcc8a1e70b0 ui::X11EventSource::DispatchXEvents() #45 0x7fcc8a1f6035 ui::(anonymous namespace)::XSourceDispatch() #46 0x7fcc8cc62ce5 g_main_context_dispatch #47 0x7fcc8cc63048 <unknown> #48 0x7fcc8cc630ec g_main_context_iteration #49 0x7fcca41b7d7f base::MessagePumpGlib::Run() #50 0x7fcca41a4078 base::MessageLoop::Run() #51 0x7fcca424e89d base::RunLoop::Run() #52 0x55c1cb10cfae ChromeBrowserMainParts::MainMessageLoopRun() #53 0x7fcc9d102ee8 content::BrowserMainLoop::RunMainMessageLoopParts() #54 0x7fcc9d10ecc6 content::BrowserMainRunnerImpl::Run() #55 0x7fcc9d0fc6d8 content::BrowserMain() #56 0x7fcc9eb5e716 content::RunNamedProcessTypeMain() #57 0x7fcc9eb60c0d content::ContentMainRunnerImpl::Run() #58 0x7fcc9eb5d17a content::ContentServiceManagerMainDelegate::RunEmbedderProcess() #59 0x7fcca484bed1 service_manager::Main() #60 0x7fcc9eb5e16f content::ContentMain() #61 0x55c1c9779ade ChromeMain When the finger moves from the child frame to the main frame (gesture needs to be done twice): [63268:63268:0706/141517.335908:FATAL:render_widget_host_impl.cc(1118)] Check failed: !is_in_gesture_scroll_[gesture_event.source_device]. #0 0x7ff5b82353bb base::debug::StackTrace::StackTrace() #1 0x7ff5b82340bc base::debug::StackTrace::StackTrace() #2 0x7ff5b82a8583 logging::LogMessage::~LogMessage() #3 0x7ff5b1c7a1dc content::RenderWidgetHostImpl::ForwardGestureEventWithLatencyInfo() #4 0x7ff5b16c778c content::RenderWidgetHostViewChildFrame::ProcessGestureEvent() #5 0x7ff5b1c9eab6 content::RenderWidgetHostInputEventRouter::RouteTouchscreenGestureEvent() #6 0x7ff5b1c9e2df content::RenderWidgetHostInputEventRouter::RouteGestureEvent() #7 0x7ff5b215e57f content::RenderWidgetHostViewEventHandler::OnGestureEvent() #8 0x7ff5b1cb0216 content::RenderWidgetHostViewAura::OnGestureEvent() #9 0x7ff5ad9d4163 ui::EventHandler::OnEvent() #10 0x7ff5ad9cf840 ui::EventDispatcher::DispatchEvent() #11 0x7ff5ad9cf12b ui::EventDispatcher::ProcessEvent() #12 0x7ff5ad9ceec2 ui::EventDispatcherDelegate::DispatchEventToTarget() #13 0x7ff5ad9ced6f ui::EventDispatcherDelegate::DispatchEvent() #14 0x7ff5ad5a9ce1 aura::WindowEventDispatcher::ProcessGestures() #15 0x7ff5ad5a9b2a aura::WindowEventDispatcher::ProcessedTouchEvent() #16 0x7ff5b1cace3d content::RenderWidgetHostViewAura::ProcessAckedTouchEvent() #17 0x7ff5b15bcbc5 content::CrossProcessFrameConnector::ForwardProcessAckedTouchEvent() #18 0x7ff5b16c7385 content::RenderWidgetHostViewChildFrame::ProcessAckedTouchEvent() #19 0x7ff5b1c7ee29 content::RenderWidgetHostImpl::OnTouchEventAck() #20 0x7ff5b1ab0603 content::LegacyInputRouterImpl::OnTouchEventAck() #21 0x7ff5b1ac9bdb content::PassthroughTouchEventQueue::AckTouchEventToClient() #22 0x7ff5b1ac9020 content::PassthroughTouchEventQueue::AckCompletedEvents() #23 0x7ff5b1ac8a94 content::PassthroughTouchEventQueue::QueueEvent() #24 0x7ff5b1aaed38 content::LegacyInputRouterImpl::SendTouchEvent() #25 0x7ff5b1c7ac7f content::RenderWidgetHostImpl::ForwardTouchEventWithLatencyInfo() #26 0x7ff5b16c7731 content::RenderWidgetHostViewChildFrame::ProcessTouchEvent() #27 0x7ff5b1c9eebf content::RenderWidgetHostInputEventRouter::RouteTouchEvent() #28 0x7ff5b215df62 content::RenderWidgetHostViewEventHandler::OnTouchEvent() #29 0x7ff5b1cb0196 content::RenderWidgetHostViewAura::OnTouchEvent() #30 0x7ff5ad9d4123 ui::EventHandler::OnEvent() #31 0x7ff5ad9cf840 ui::EventDispatcher::DispatchEvent() #32 0x7ff5ad9cf12b ui::EventDispatcher::ProcessEvent() #33 0x7ff5ad9ceec2 ui::EventDispatcherDelegate::DispatchEventToTarget() #34 0x7ff5ad9ced6f ui::EventDispatcherDelegate::DispatchEvent() #35 0x7ff5ad9d4f05 ui::EventProcessor::OnEventFromSource() #36 0x7ff5ad9d508c ui::EventProcessor::OnEventFromSource() #37 0x7ff5ad9d5fcf ui::EventSource::DeliverEventToSink() #38 0x7ff5ad9d5bd7 ui::EventSource::SendEventToSink() #39 0x7ff5ac1e20b9 views::DesktopWindowTreeHostX11::DispatchTouchEvent() #40 0x7ff5ac1e2dab views::DesktopWindowTreeHostX11::DispatchEvent() #41 0x7ff5b668410d ui::PlatformEventSource::DispatchEvent() #42 0x7ff59e323e94 ui::X11EventSourceGlib::ProcessXEvent() #43 0x7ff59e315148 ui::X11EventSource::ExtractCookieDataDispatchEvent() #44 0x7ff59e3150b0 ui::X11EventSource::DispatchXEvents() #45 0x7ff59e324035 ui::(anonymous namespace)::XSourceDispatch() #46 0x7ff5a0d90ce5 g_main_context_dispatch #47 0x7ff5a0d91048 <unknown> #48 0x7ff5a0d910ec g_main_context_iteration #49 0x7ff5b82e5d7f base::MessagePumpGlib::Run() #50 0x7ff5b82d2078 base::MessageLoop::Run() #51 0x7ff5b837c89d base::RunLoop::Run() #52 0x5646a05cafae ChromeBrowserMainParts::MainMessageLoopRun() #53 0x7ff5b1230ee8 content::BrowserMainLoop::RunMainMessageLoopParts() #54 0x7ff5b123ccc6 content::BrowserMainRunnerImpl::Run() #55 0x7ff5b122a6d8 content::BrowserMain() #56 0x7ff5b2c8c716 content::RunNamedProcessTypeMain() #57 0x7ff5b2c8ec0d content::ContentMainRunnerImpl::Run() #58 0x7ff5b2c8b17a content::ContentServiceManagerMainDelegate::RunEmbedderProcess() #59 0x7ff5b8979ed1 service_manager::Main() #60 0x7ff5b2c8c16f content::ContentMain() #61 0x56469ec37ade ChromeMain It may be necessary to run with --validate-input-event-stream. The culprit is https://chromium.googlesource.com/chromium/src/+/00d432064a6fcd6252211a938840efb8e36b463f "Make AreCrossProcessFramesPossible return true on Android"
,
Jul 17 2017
We'll need to fix this before M61 ships. All touch scrolling seems to be broken on Linux, Android & (probably) Windows ...
,
Jul 17 2017
Good news. https://chromium-review.googlesource.com/c/547669/ will fix this issue.
,
Jul 21 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/09a2f88ea04da4884e9d3c3820385c5cc8879c32 commit 09a2f88ea04da4884e9d3c3820385c5cc8879c32 Author: Nathan Fairhurst <nathan.fairhurst@nike.com> Date: Fri Jul 21 21:39:14 2017 Fix an issue where touch events were dispatched to the incorrect webview Was caused by touchscreen_gesture_target_queue_ + prevent default. The webview target was calculated on TouchStart and pushed to the the queue. It was removed on its corresponding GestureTapDown. However, if the TouchStart had default behavior prevented, no GestureTapDown would ever occur, and the queue would forever have an extra element. Fixed by converting touchscreen_gesture_target_queue_ to a map with unique_touch_event_id as keys and gesture target data as values. Also updates AUTHORS file. Bug: 736623 , 739831 Change-Id: If3bf844e2bcfb9a1ca6d6a56cdc7575e0767e6b6 Reviewed-on: https://chromium-review.googlesource.com/547669 Commit-Queue: James MacLean <wjmaclean@chromium.org> Reviewed-by: Charlie Reis <creis@chromium.org> Reviewed-by: Ken Buchanan <kenrb@chromium.org> Reviewed-by: James MacLean <wjmaclean@chromium.org> Cr-Commit-Position: refs/heads/master@{#488759} [modify] https://crrev.com/09a2f88ea04da4884e9d3c3820385c5cc8879c32/AUTHORS [modify] https://crrev.com/09a2f88ea04da4884e9d3c3820385c5cc8879c32/content/browser/renderer_host/render_widget_host_input_event_router.cc [modify] https://crrev.com/09a2f88ea04da4884e9d3c3820385c5cc8879c32/content/browser/renderer_host/render_widget_host_input_event_router.h [modify] https://crrev.com/09a2f88ea04da4884e9d3c3820385c5cc8879c32/content/browser/renderer_host/render_widget_host_view_android.cc [modify] https://crrev.com/09a2f88ea04da4884e9d3c3820385c5cc8879c32/content/browser/renderer_host/render_widget_host_view_aura.cc [modify] https://crrev.com/09a2f88ea04da4884e9d3c3820385c5cc8879c32/content/browser/site_per_process_browsertest.cc [add] https://crrev.com/09a2f88ea04da4884e9d3c3820385c5cc8879c32/content/test/data/page_with_touch_start_default_prevented.html
,
Jul 24 2017
,
Jul 25 2017
Your change meets the bar and is auto-approved for M61. Please go ahead and merge the CL to branch 3163 manually. Please contact milestone owner if you have questions. Owners: amineer@(Android), cmasso@(iOS), ketakid @(ChromeOS), govind@(Desktop) For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Jul 26 2017
Please merge your change to M61 branch #3163 before 4: 00 PM PT, Wednesday (07/26) in order to make it to last M61 dev release. Thank you.
,
Jul 26 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b7aaf6ac529ec489923e875c9d8b67c9d2f6b54a commit b7aaf6ac529ec489923e875c9d8b67c9d2f6b54a Author: W. James MacLean <wjmaclean@chromium.org> Date: Wed Jul 26 12:31:34 2017 Fix an issue where touch events were dispatched to the incorrect webview Was caused by touchscreen_gesture_target_queue_ + prevent default. The webview target was calculated on TouchStart and pushed to the the queue. It was removed on its corresponding GestureTapDown. However, if the TouchStart had default behavior prevented, no GestureTapDown would ever occur, and the queue would forever have an extra element. Fixed by converting touchscreen_gesture_target_queue_ to a map with unique_touch_event_id as keys and gesture target data as values. Also updates AUTHORS file. TBR=nathan.fairhurst@nike.com (cherry picked from commit 09a2f88ea04da4884e9d3c3820385c5cc8879c32) Bug: 736623 , 739831 Change-Id: If3bf844e2bcfb9a1ca6d6a56cdc7575e0767e6b6 Reviewed-on: https://chromium-review.googlesource.com/547669 Commit-Queue: James MacLean <wjmaclean@chromium.org> Reviewed-by: Charlie Reis <creis@chromium.org> Reviewed-by: Ken Buchanan <kenrb@chromium.org> Reviewed-by: James MacLean <wjmaclean@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#488759} Reviewed-on: https://chromium-review.googlesource.com/586747 Cr-Commit-Position: refs/branch-heads/3163@{#54} Cr-Branched-From: ff259bab28b35d242e10186cd63af7ed404fae0d-refs/heads/master@{#488528} [modify] https://crrev.com/b7aaf6ac529ec489923e875c9d8b67c9d2f6b54a/AUTHORS [modify] https://crrev.com/b7aaf6ac529ec489923e875c9d8b67c9d2f6b54a/content/browser/renderer_host/render_widget_host_input_event_router.cc [modify] https://crrev.com/b7aaf6ac529ec489923e875c9d8b67c9d2f6b54a/content/browser/renderer_host/render_widget_host_input_event_router.h [modify] https://crrev.com/b7aaf6ac529ec489923e875c9d8b67c9d2f6b54a/content/browser/renderer_host/render_widget_host_view_android.cc [modify] https://crrev.com/b7aaf6ac529ec489923e875c9d8b67c9d2f6b54a/content/browser/renderer_host/render_widget_host_view_aura.cc [modify] https://crrev.com/b7aaf6ac529ec489923e875c9d8b67c9d2f6b54a/content/browser/site_per_process_browsertest.cc [add] https://crrev.com/b7aaf6ac529ec489923e875c9d8b67c9d2f6b54a/content/test/data/page_with_touch_start_default_prevented.html
,
Jul 26 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ab61848245075e2ca3f5d9dce134ea2fc0a73488 commit ab61848245075e2ca3f5d9dce134ea2fc0a73488 Author: Kevin McNee <mcnee@chromium.org> Date: Wed Jul 26 20:05:34 2017 Add a test for RenderWidgetHostInputEventRouter gesture event targeting. Test that RenderWidgetHostInputEventRouter does not change the target view during a touch scroll gesture. This is a regression test for crbug.com/739831 . Bug: 739831 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_site_isolation Change-Id: I69bdfb39736902c8a0bb5094a0d204596bfe05fe Reviewed-on: https://chromium-review.googlesource.com/582938 Reviewed-by: Charlie Reis (slow) <creis@chromium.org> Reviewed-by: Ken Buchanan <kenrb@chromium.org> Commit-Queue: Kevin McNee <mcnee@chromium.org> Cr-Commit-Position: refs/heads/master@{#489736} [modify] https://crrev.com/ab61848245075e2ca3f5d9dce134ea2fc0a73488/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc [modify] https://crrev.com/ab61848245075e2ca3f5d9dce134ea2fc0a73488/content/browser/frame_host/render_widget_host_view_guest_unittest.cc [modify] https://crrev.com/ab61848245075e2ca3f5d9dce134ea2fc0a73488/content/browser/renderer_host/cursor_manager_unittest.cc [modify] https://crrev.com/ab61848245075e2ca3f5d9dce134ea2fc0a73488/content/browser/renderer_host/render_widget_host_input_event_router.h [add] https://crrev.com/ab61848245075e2ca3f5d9dce134ea2fc0a73488/content/browser/renderer_host/render_widget_host_input_event_router_unittest.cc [modify] https://crrev.com/ab61848245075e2ca3f5d9dce134ea2fc0a73488/content/test/BUILD.gn [add] https://crrev.com/ab61848245075e2ca3f5d9dce134ea2fc0a73488/content/test/dummy_render_widget_host_delegate.h |
|||||
►
Sign in to add a comment |
|||||
Comment 1 by mcnee@chromium.org
, Jul 6 2017