New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 801043 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jan 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 796651



Sign in to add a comment

Prevent an unresponsive OOPIF from blocking events to main page

Project Member Reported by sadrul@chromium.org, Jan 11 2018

Issue description

When events are targeted asynchronously, the events are queued in the browser for the entire tab until the renderer responds to the targeting request. If the renderer never responds, or responds very slowly, then that affects the event-dispatch for the entire tab. We need to have a failsafe in the browser for this.

The approach we discussed is to give the renderer some deadline to respond (say, X seconds). If the renderer does not respond within that time, then the event is dispatched to its embedder instead. The offending renderer is no longer asked to target again until it responds to the earlier request (and probably also submits a compositor-frame ... although that may not be necessary).

To start off: I think we should start with a fairly large value for X (say 5 or 10 seconds). We can gradually reduce the deadline over time.
 

Comment 1 by sadrul@chromium.org, Jan 16 2018

Status: Started (was: Assigned)
Project Member

Comment 2 by bugdroid1@chromium.org, Jan 17 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2d3141fd67830dd068b0bc14218afae8acc844fc

commit 2d3141fd67830dd068b0bc14218afae8acc844fc
Author: Ken Buchanan <kenrb@chromium.org>
Date: Wed Jan 17 23:08:39 2018

Time out async hit test queries

This CL adds a timer to RenderWidgetTargeter to detect when a request
has been sent to an unresponsive renderer. When the timer fires, the
following happens:
 - the renderer is tracked as unresponsive so that further queries will
   not be sent there;
 - the event is sent to the parent of the unresponsive renderer if it
   has one;
 - if the main frame is unresponsive, the event is sent there anyway

If a hit test query response is later received from a renderer after the
timer has fired, then that renderer is no longer tracked as
unresponsive and the response is discarded.

Bug:  801043 
Change-Id: I854cd3179170367df233bb833fd69d0ff449e6e3
Reviewed-on: https://chromium-review.googlesource.com/865815
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Commit-Queue: Ken Buchanan <kenrb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#529941}
[modify] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/content/browser/BUILD.gn
[add] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/content/browser/renderer_host/input/one_shot_timeout_monitor.cc
[add] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/content/browser/renderer_host/input/one_shot_timeout_monitor.h
[modify] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/content/browser/renderer_host/render_widget_host_input_event_router.cc
[modify] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/content/browser/renderer_host/render_widget_host_input_event_router.h
[modify] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/content/browser/renderer_host/render_widget_targeter.cc
[modify] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/content/browser/renderer_host/render_widget_targeter.h
[modify] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/content/browser/site_per_process_browsertest.cc
[modify] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/content/common/content_constants_internal.cc
[modify] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/content/common/content_constants_internal.h
[add] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/content/test/data/frame_tree/busy_frame.html
[add] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/content/test/data/frame_tree/page_with_positioned_busy_frame.html
[modify] https://crrev.com/2d3141fd67830dd068b0bc14218afae8acc844fc/testing/buildbot/filters/viz.content_browsertests.filter

Comment 3 by kenrb@chromium.org, Jan 18 2018

Status: Fixed (was: Started)

Sign in to add a comment