⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 243379 in webkit


Ignore:
Timestamp:
Mar 22, 2019, 9:27:14 AM (7 years ago)
Author:
Chris Dumez
Message:

REGRESSION (r243094): ePub files do not render or open in Books
https://bugs.webkit.org/show_bug.cgi?id=196119
<rdar://problem/49121686>

Reviewed by Brady Eidson.

Do not delay the WebProcess launch until a load when contructing a web view and the client
may observe when its injected bundle is loaded via WKProcessGroupDelegate's
didCreateConnectionToWebProcessPlugIn.

  • UIProcess/API/Cocoa/WKProcessGroup.mm:

(-[WKProcessGroup setDelegate:]):

  • UIProcess/WebInspectorUtilities.cpp:

(WebKit::inspectorProcessPool):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::createWebPage):

  • UIProcess/WebProcessPool.h:
Location:
trunk/Source/WebKit
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r243378 r243379  
     12019-03-22  Chris Dumez  <cdumez@apple.com>
     2
     3        REGRESSION (r243094): ePub files do not render or open in Books
     4        https://bugs.webkit.org/show_bug.cgi?id=196119
     5        <rdar://problem/49121686>
     6
     7        Reviewed by Brady Eidson.
     8
     9        Do not delay the WebProcess launch until a load when contructing a web view and the client
     10        may observe when its injected bundle is loaded via WKProcessGroupDelegate's
     11        didCreateConnectionToWebProcessPlugIn.
     12
     13        * UIProcess/API/Cocoa/WKProcessGroup.mm:
     14        (-[WKProcessGroup setDelegate:]):
     15        * UIProcess/WebInspectorUtilities.cpp:
     16        (WebKit::inspectorProcessPool):
     17        * UIProcess/WebProcessPool.cpp:
     18        (WebKit::WebProcessPool::createWebPage):
     19        * UIProcess/WebProcessPool.h:
     20
    1212019-03-22  Carlos Garcia Campos  <cgarcia@igalia.com>
    222
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessGroup.mm

    r242339 r243379  
    216216{
    217217    _delegate = delegate;
     218
     219    // If the client can observe when the connection to the WebProcess injected bundle is established, then we cannot
     220    // safely delay the launch of the WebProcess until something is loaded in the Web view.
     221    if ([delegate respondsToSelector:@selector(processGroup:didCreateConnectionToWebProcessPlugIn:)])
     222        _processPool->disableDelayedWebProcessLaunch();
    218223}
    219224
  • trunk/Source/WebKit/UIProcess/WebInspectorUtilities.cpp

    r240557 r243379  
    8383        auto configuration = API::ProcessPoolConfiguration::createWithLegacyOptions();
    8484        pool = &WebProcessPool::create(configuration.get()).leakRef();
     85        // Do not delay process launch for inspector pages as inspector pages do not know how to transition from a terminated process.
     86        pool->disableDelayedWebProcessLaunch();
    8587    }
    8688    return *pool;
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r243320 r243379  
    12191219        ASSERT(process.get() == m_dummyProcessProxy || &pageConfiguration->websiteDataStore()->websiteDataStore() == &process->websiteDataStore());
    12201220        ASSERT(&pageConfiguration->relatedPage()->websiteDataStore() == &pageConfiguration->websiteDataStore()->websiteDataStore());
    1221     } else if (WebKit::isInspectorProcessPool(*this)) {
    1222         // Do not delay process launch for inspector pages as inspector pages do not know how to transition from a terminated process.
    1223         process = &processForRegistrableDomain(pageConfiguration->websiteDataStore()->websiteDataStore(), nullptr, { });
    1224     } else {
     1221    } else if (!m_isDelayedWebProcessLaunchDisabled) {
    12251222        // In the common case, we delay process launch until something is actually loaded in the page.
    12261223        if (!m_dummyProcessProxy) {
     
    12301227        }
    12311228        process = m_dummyProcessProxy;
    1232     }
     1229    } else
     1230        process = &processForRegistrableDomain(pageConfiguration->websiteDataStore()->websiteDataStore(), nullptr, { });
     1231
    12331232    ASSERT(process);
    12341233
  • trunk/Source/WebKit/UIProcess/WebProcessPool.h

    r243110 r243379  
    506506    void clearWebProcessHasUploads(WebCore::ProcessIdentifier);
    507507
     508    void disableDelayedWebProcessLaunch() { m_isDelayedWebProcessLaunchDisabled = true; }
     509
    508510private:
    509511    void platformInitialize();
     
    786788    HashMap<WebCore::ProcessIdentifier, std::unique_ptr<ProcessAssertion>> m_processesWithUploads;
    787789    std::unique_ptr<ProcessAssertion> m_uiProcessUploadAssertion;
     790    bool m_isDelayedWebProcessLaunchDisabled { false };
    788791};
    789792
Note: See TracChangeset for help on using the changeset viewer.