Changeset 208340 in webkit


Ignore:
Timestamp:
Nov 3, 2016 12:31:07 PM (7 years ago)
Author:
mitz@apple.com
Message:

WKWebView’s _observedRenderingProgressEvents not restored after web process crash
https://bugs.webkit.org/show_bug.cgi?id=164368
<rdar://problem/29091954>

Reviewed by Anders Carlsson.

Source/WebKit2:

Test: TestWebKitAPI/Tests/WebKit2Cocoa/ObservedRenderingProgressEventsAfterCrash.mm.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode): Encode new observedLayoutMilestones member.
(WebKit::WebPageCreationParameters::decode): Decode it.

  • Shared/WebPageCreationParameters.h: Declared new observedLayoutMilestones member variable.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::WebPageProxy): Removed initializer for

m_wantsSessionRestorationRenderTreeSizeThresholdEvent.

(WebKit::WebPageProxy::listenForLayoutMilestones): Update new m_observedLayoutMilestones

member variable. Don’t update m_wantsSessionRestorationRenderTreeSizeThresholdEvent.

(WebKit::WebPageProxy::creationParameters): Set the observedLayoutMilestones member in the

creation parameters.

  • UIProcess/WebPageProxy.h: Declared new member variable, deleted m_wantsSessionRestorationRenderTreeSizeThresholdEvent declaration.
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didCommitLayerTree): Rather than using

m_wantsSessionRestorationRenderTreeSizeThresholdEvent, use m_observedLayoutMilestones.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage): Add the observed layout milestones from the creation parameters.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/ObservedRenderingProgressEventsAfterCrash.mm: Added.

(TEST):

Location:
trunk
Files:
1 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r208330 r208340  
     12016-11-03  Dan Bernstein  <mitz@apple.com>
     2
     3        WKWebView’s _observedRenderingProgressEvents not restored after web process crash
     4        https://bugs.webkit.org/show_bug.cgi?id=164368
     5        <rdar://problem/29091954>
     6
     7        Reviewed by Anders Carlsson.
     8
     9        Test: TestWebKitAPI/Tests/WebKit2Cocoa/ObservedRenderingProgressEventsAfterCrash.mm.
     10
     11        * Shared/WebPageCreationParameters.cpp:
     12        (WebKit::WebPageCreationParameters::encode): Encode new observedLayoutMilestones member.
     13        (WebKit::WebPageCreationParameters::decode): Decode it.
     14        * Shared/WebPageCreationParameters.h: Declared new observedLayoutMilestones member variable.
     15
     16        * UIProcess/WebPageProxy.cpp:
     17        (WebKit::WebPageProxy::WebPageProxy): Removed initializer for
     18          m_wantsSessionRestorationRenderTreeSizeThresholdEvent.
     19        (WebKit::WebPageProxy::listenForLayoutMilestones): Update new m_observedLayoutMilestones
     20          member variable. Don’t update m_wantsSessionRestorationRenderTreeSizeThresholdEvent.
     21        (WebKit::WebPageProxy::creationParameters): Set the observedLayoutMilestones member in the
     22          creation parameters.
     23
     24        * UIProcess/WebPageProxy.h: Declared new member variable, deleted
     25          m_wantsSessionRestorationRenderTreeSizeThresholdEvent declaration.
     26
     27        * UIProcess/ios/WebPageProxyIOS.mm:
     28        (WebKit::WebPageProxy::didCommitLayerTree): Rather than using
     29          m_wantsSessionRestorationRenderTreeSizeThresholdEvent, use m_observedLayoutMilestones.
     30
     31        * WebProcess/WebPage/WebPage.cpp:
     32        (WebKit::WebPage::WebPage): Add the observed layout milestones from the creation parameters.
     33
    1342016-11-02  Alex Christensen  <achristensen@webkit.org>
    235
  • trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp

    r208225 r208340  
    8989    encoder << shouldScaleViewToFitDocument;
    9090    encoder.encodeEnum(userInterfaceLayoutDirection);
     91    encoder.encodeEnum(observedLayoutMilestones);
    9192}
    9293
     
    201202    if (!decoder.decodeEnum(parameters.userInterfaceLayoutDirection))
    202203        return false;
     204    if (!decoder.decodeEnum(parameters.observedLayoutMilestones))
     205        return false;
    203206
    204207    return true;
  • trunk/Source/WebKit2/Shared/WebPageCreationParameters.h

    r208225 r208340  
    3737#include <WebCore/FloatSize.h>
    3838#include <WebCore/IntSize.h>
     39#include <WebCore/LayoutMilestones.h>
    3940#include <WebCore/MediaProducer.h>
    4041#include <WebCore/Pagination.h>
     
    139140
    140141    WebCore::UserInterfaceLayoutDirection userInterfaceLayoutDirection;
     142    WebCore::LayoutMilestones observedLayoutMilestones;
    141143};
    142144
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r208237 r208340  
    444444    , m_renderTreeSize(0)
    445445    , m_sessionRestorationRenderTreeSize(0)
    446     , m_wantsSessionRestorationRenderTreeSizeThresholdEvent(false)
    447446    , m_hitRenderTreeSizeThreshold(false)
    448447    , m_suppressVisibilityUpdates(false)
     
    26162615        return;
    26172616   
    2618     m_wantsSessionRestorationRenderTreeSizeThresholdEvent = milestones & WebCore::ReachedSessionRestorationRenderTreeSizeThreshold;
    2619 
     2617    if (milestones == m_observedLayoutMilestones)
     2618        return;
     2619
     2620    m_observedLayoutMilestones = milestones;
    26202621    m_process->send(Messages::WebPage::ListenForLayoutMilestones(milestones), m_pageID);
    26212622}
     
    55305531    parameters.shouldScaleViewToFitDocument = m_shouldScaleViewToFitDocument;
    55315532    parameters.userInterfaceLayoutDirection = m_pageClient.userInterfaceLayoutDirection();
     5533    parameters.observedLayoutMilestones = m_observedLayoutMilestones;
    55325534
    55335535    return parameters;
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r208237 r208340  
    16981698    WebCore::IntSize m_fixedLayoutSize;
    16991699
     1700    WebCore::LayoutMilestones m_observedLayoutMilestones { 0 };
     1701
    17001702    bool m_suppressScrollbarAnimations;
    17011703
     
    18501852    uint64_t m_renderTreeSize;
    18511853    uint64_t m_sessionRestorationRenderTreeSize;
    1852     bool m_wantsSessionRestorationRenderTreeSizeThresholdEvent;
    18531854    bool m_hitRenderTreeSizeThreshold;
    18541855
  • trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm

    r208225 r208340  
    362362
    363363    // FIXME: Remove this special mechanism and fold it into the transaction's layout milestones.
    364     if (m_wantsSessionRestorationRenderTreeSizeThresholdEvent && !m_hitRenderTreeSizeThreshold
     364    if ((m_observedLayoutMilestones & WebCore::ReachedSessionRestorationRenderTreeSizeThreshold) && !m_hitRenderTreeSizeThreshold
    365365        && exceedsRenderTreeSizeSizeThreshold(m_sessionRestorationRenderTreeSize, layerTreeTransaction.renderTreeSize())) {
    366366        m_hitRenderTreeSizeThreshold = true;
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r208329 r208340  
    561561        scaleView(parameters.viewScaleFactor);
    562562
     563    m_page->addLayoutMilestones(parameters.observedLayoutMilestones);
     564
    563565#if PLATFORM(COCOA)
    564566    m_page->settings().setContentDispositionAttachmentSandboxEnabled(true);
  • trunk/Tools/ChangeLog

    r208338 r208340  
     12016-11-03  Dan Bernstein  <mitz@apple.com>
     2
     3        WKWebView’s _observedRenderingProgressEvents not restored after web process crash
     4        https://bugs.webkit.org/show_bug.cgi?id=164368
     5        <rdar://problem/29091954>
     6
     7        Reviewed by Anders Carlsson.
     8
     9        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
     10        * TestWebKitAPI/Tests/WebKit2Cocoa/ObservedRenderingProgressEventsAfterCrash.mm: Added.
     11        (TEST):
     12
    1132016-11-03  Alex Christensen  <achristensen@webkit.org>
    214
  • trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

    r208027 r208340  
    9696                378E64791632707400B6C676 /* link-with-title.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 378E647816326FDF00B6C676 /* link-with-title.html */; };
    9797                379028B914FAC24C007E6B43 /* acceptsFirstMouse.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 379028B814FABE49007E6B43 /* acceptsFirstMouse.html */; };
     98                37A22AA71DCAA27200AFBFC4 /* ObservedRenderingProgressEventsAfterCrash.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37A22AA51DCAA27200AFBFC4 /* ObservedRenderingProgressEventsAfterCrash.mm */; };
    9899                37B47E301D64E7CA005F4EFF /* WKObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37B47E2E1D64E7CA005F4EFF /* WKObject.mm */; };
    99100                37BCA61C1B596BA9002012CA /* ShouldOpenExternalURLsInNewWindowActions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37BCA61B1B596BA9002012CA /* ShouldOpenExternalURLsInNewWindowActions.mm */; };
     
    851852                379028B814FABE49007E6B43 /* acceptsFirstMouse.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = acceptsFirstMouse.html; sourceTree = "<group>"; };
    852853                3799AD3914120A43005EB0C6 /* StringByEvaluatingJavaScriptFromString.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = StringByEvaluatingJavaScriptFromString.mm; sourceTree = "<group>"; };
     854                37A22AA51DCAA27200AFBFC4 /* ObservedRenderingProgressEventsAfterCrash.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ObservedRenderingProgressEventsAfterCrash.mm; sourceTree = "<group>"; };
    853855                37A6895D148A9B50005100FA /* SubresourceErrorCrash.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SubresourceErrorCrash.mm; sourceTree = "<group>"; };
    854856                37B47E2E1D64E7CA005F4EFF /* WKObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKObject.mm; sourceTree = "<group>"; };
     
    14151417                                1ABC3DED1899BE6D004F0626 /* Navigation.mm */,
    14161418                                2ECFF5541D9B12F800B55394 /* NowPlayingControlsTests.mm */,
     1419                                37A22AA51DCAA27200AFBFC4 /* ObservedRenderingProgressEventsAfterCrash.mm */,
    14171420                                CEA6CF2219CCF5BD0064F5A7 /* OpenAndCloseWindow.mm */,
    14181421                                C95501BE19AD2FAF0049BE3E /* Preferences.mm */,
     
    23892392                                7CCE7EEA1A411AE600447C4C /* DidNotHandleKeyDown.cpp in Sources */,
    23902393                                7CCE7EEB1A411AE600447C4C /* DocumentStartUserScriptAlertCrash.cpp in Sources */,
     2394                                37A22AA71DCAA27200AFBFC4 /* ObservedRenderingProgressEventsAfterCrash.mm in Sources */,
    23912395                                7CCE7EBB1A411A7E00447C4C /* DOMHTMLTableCellCellAbove.mm in Sources */,
    23922396                                2D51A0C71C8BF00C00765C45 /* DOMHTMLVideoElementWrapper.mm in Sources */,
Note: See TracChangeset for help on using the changeset viewer.