Changeset 168514 in webkit


Ignore:
Timestamp:
May 8, 2014 7:26:22 PM (10 years ago)
Author:
Simon Fraser
Message:

Occasional crash under AsyncScrollingCoordinator::frameViewRootLayerDidChange() on history navigation
https://bugs.webkit.org/show_bug.cgi?id=132723

Reviewed by Sam Weinig.

Crash reports suggest that when we call AsyncScrollingCoordinator::frameViewRootLayerDidChange()
from HistoryController::restoreScrollPositionAndViewState(), the FrameView may not have a
scrolling node ID, which suggests that either the FrameView doesn't have a RenderView,
or compositing hasn't happened yet.

So if we enter AsyncScrollingCoordinator::frameViewRootLayerDidChange()
and the FrameView has no scrollLayerID, just return. We'll fix things up
when compositing kicks in later.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r168513 r168514  
     12014-05-08  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Occasional crash under AsyncScrollingCoordinator::frameViewRootLayerDidChange() on history navigation
     4        https://bugs.webkit.org/show_bug.cgi?id=132723
     5
     6        Reviewed by Sam Weinig.
     7       
     8        Crash reports suggest that when we call AsyncScrollingCoordinator::frameViewRootLayerDidChange()
     9        from HistoryController::restoreScrollPositionAndViewState(), the FrameView may not have a
     10        scrolling node ID, which suggests that either the FrameView doesn't have a RenderView,
     11        or compositing hasn't happened yet.
     12       
     13        So if we enter AsyncScrollingCoordinator::frameViewRootLayerDidChange()
     14        and the FrameView has no scrollLayerID, just return. We'll fix things up
     15        when compositing kicks in later.
     16
     17        * page/scrolling/AsyncScrollingCoordinator.cpp:
     18        (WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
     19
    1202014-05-08  Simon Fraser  <simon.fraser@apple.com>
    221
  • trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp

    r168338 r168514  
    120120    if (!coordinatesScrollingForFrameView(frameView))
    121121        return;
    122 
     122   
     123    // FIXME: In some navigation scenarios, the FrameView has no RenderView or that RenderView has not been composited.
     124    // This needs cleaning up: https://bugs.webkit.org/show_bug.cgi?id=132724
     125    if (!frameView->scrollLayerID())
     126        return;
     127   
    123128    // If the root layer does not have a ScrollingStateNode, then we should create one.
    124129    ensureRootStateNodeForFrameView(frameView);
Note: See TracChangeset for help on using the changeset viewer.