Bug 136590

Summary: Doing a navigation on a non-opaque WKWebView can result in an empty layer tree
Product: WebKit Reporter: Tim Horton <thorton>
Component: Layout and RenderingAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: sam, simon.fraser
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
patch simon.fraser: review+

Description Tim Horton 2014-09-05 16:24:30 PDT
FrameView::setTransparent uses FrameView::renderView to get the RenderView from the Document, but setTransparent can be called from Frame::createView, which is before the new Document has been swapped in, so it gets the old (pre-navigation) RenderView, and uses that to schedule a compositing layer update, which eventually comes through and can blow away the new document's layer tree.

rdar://problem/18234000
Comment 1 Tim Horton 2014-09-05 16:28:15 PDT
Created attachment 237719 [details]
patch
Comment 2 Simon Fraser (smfr) 2014-09-05 16:42:22 PDT
Comment on attachment 237719 [details]
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=237719&action=review

> Source/WebCore/ChangeLog:9
> +        Reviewed by NOBODY (OOPS!).
> +
> +        * page/FrameView.cpp:

You fail to explain the "can result in an empty layer tree" part here.

> Source/WebCore/page/FrameView.cpp:2586
> +    if (&renderView->frameView() != this)
> +        return;

This deserves a comment.
Comment 3 Tim Horton 2014-09-05 17:14:38 PDT
http://trac.webkit.org/changeset/173344