• Christopher Cameron's avatar
    mac: Eliminate remaining flashes during navigation · faae3909
    Christopher Cameron authored
    During navigation, in RenderFrameHostManager::CommitPending, when the
    navigation results in creation of a new RenderWidgetHostView, the
    sequence of events in that function is that
    - the old RenderWidgetHostView is hidden
    - the new RenderWidgetHostView takes content from the old one
    - the new RenderWidgetHostView is shown
    
    On macOS, this can result in a one-frame flicker where there is no
    content present (between the hide and the show). Fix this by adding
    a ScopedCocoaDisableScreenUpdates for the duration of CommitPending.
    This will make all Cocoa changes in the function be atomic.
    
    In order to include ScopedCocoaDisableScreenUpdates in a non-objective-C
    file, move its ScopedCocoaDisableScreenUpdates implementation out of
    the header file.
    
    Bug: 829523
    Change-Id: If541ef8985cf7990d63a79435b179f84339a9372
    Reviewed-on: https://chromium-review.googlesource.com/1024968Reviewed-by: default avatarccameron <ccameron@chromium.org>
    Reviewed-by: default avatarSaman Sami <samans@chromium.org>
    Reviewed-by: default avatarAntoine Labour <piman@chromium.org>
    Commit-Queue: ccameron <ccameron@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#553628}
    faae3909
BUILD.gn 19.3 KB