mac: ensure ui::Compositor exists for visible RWHVs

RenderWidgetHostViewMac is careful about creating ui::Compositor and so
currently only does this in Show and SwapCompositorFrame.  However, if
it the RenderWidgetHostView is created while the RenderWidgetHost is
visible, then Show will early out and never create a ui::Compositor.

This causes problems with begin frame scheduling, which wants to have
the Display (which is created as part of creating the ui::Compositor's
output surface currently) own the real begin frame source that drives
everything.  In that world, if no ui::Compositor exists, no frames ever
are sent or swapped.  So, the ui::Compositor needs to be created first.

Also, if the ui::Compositor is correctly created during Show (or the
constructor), then there's no need to ensure that it exists during
swap compositor frame, and so that can be safely removed.

R=asvitkine@chromium.org,ccameron@chromium.org

Review-Url: https://codereview.chromium.org/2005013002
Cr-Commit-Position: refs/heads/master@{#397755}
7 files changed