DescriptionFix for renderer visibility on Android that doesn't break Aura and Mac.
http://crrev.com/287864 fixed an issue where a renderer that was killed in
background and later reloaded was being respawned with incorrect process
visibility, causing it to be killed on Android.
The fix skipped resetting the |is_hidden_| flag of RenderWidgetHost, so that
RenderWidgetHost crashing in background would retain its visibility status and
trigger the ::Show() paths correctly when recreating the View in foreground,
fixing the process visibility issues.
Unfortunetely, this wasn't that good of an idea.
It turns out that while it is the RenderWidgetHost that is the authoritative
source of visibility truth that views rely on, it is the view that is
responsible for providing signals (WasShown / WasHidden) to the widget host.
That means that after a renderer crashes and the view is destroyed,
RenderWidgetHost has no way to track its visibility anymore and all bets are
off.
It turns out that view implementations on Aura and Mac relied on the
RenderWidgetHost visibility being reset upon crash (http://crbug.com/401859).
Hence, this patch undoes the original "fix" and instead ensures that resetting
the |is_hidden_| flag issues a notification for the RenderProcessHost, so that
the process visibility signal that we attempted to fix with the original patch
is still working.
Regression test for http://crbug.com/399521 is in Chrome for Android repo
(BindingManagerIntegrationTest).
BUG=399521
BUG=401859
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=289276
Patch Set 1 #
Messages
Total messages: 7 (0 generated)
|