Hack for demo screensaver disappearing momentarily after login

There is an existing bug in Chrome OS where the screensaver is told to
hide even though it's still visible. Before crrev.com/c/1277826 this
used to only cause a freeze, but since then the screensaver disappears
altogether. The reason is that during the first 10-20 seconds after
logging into Chrome OS, there are 30+ renderers spawned in the
background that don't actually draw anything. These renderers overwhelm
FrameEvictionManager such that any renderer that goes hidden (e.g. the
screensaver) will have its surface immediately evicted. This used to
work fine before because notifying FrameEvictionManager used to happen
in OnFirstSurfaceActivation as opposed to EmbedSurface, and therefore
these useless renderers would not interfere with frame eviction. The
Chrome OS team is worried they won't have a proper fix in time, so for
the time being implement a behaviour similar to what we had before: only
report DelegatedFrameHosts to FrameEvictionManager that have seen their
first surface activation.

Bug: 900373
Change-Id: Ic98929f8e1c834de2af22aa299805395be6a9072
Reviewed-on: https://chromium-review.googlesource.com/c/1334590
Commit-Queue: Saman Sami <samans@chromium.org>
Reviewed-by: Fady Samuel <fsamuel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608041}
3 files changed