Changeset 272383 in webkit


Ignore:
Timestamp:
Feb 4, 2021 1:54:48 PM (3 years ago)
Author:
achristensen@apple.com
Message:

Don't launch a network process when registering URL schemes
https://bugs.webkit.org/show_bug.cgi?id=221427

Reviewed by Chris Dumez.

Source/WebKit:

When Safari on macOS is launching, it calls registerURLSchemeAsSecure and registerURLSchemeAsBypassingContentSecurityPolicy.
This causes the network process to launch before the app has finished launching. Since values are stored in the UI process
and sent in NetworkProcessCreationParameters whenever a network process starts, so it's not necessary to start the network
process when calling these two functions. This should decrease Safari's launch time.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::registerURLSchemeAsSecure):
(WebKit::WebProcessPool::registerURLSchemeAsBypassingContentSecurityPolicy):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:

(TEST):

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r272382 r272383  
     12021-02-04  Alex Christensen  <achristensen@webkit.org>
     2
     3        Don't launch a network process when registering URL schemes
     4        https://bugs.webkit.org/show_bug.cgi?id=221427
     5
     6        Reviewed by Chris Dumez.
     7
     8        When Safari on macOS is launching, it calls registerURLSchemeAsSecure and registerURLSchemeAsBypassingContentSecurityPolicy.
     9        This causes the network process to launch before the app has finished launching.  Since values are stored in the UI process
     10        and sent in NetworkProcessCreationParameters whenever a network process starts, so it's not necessary to start the network
     11        process when calling these two functions.  This should decrease Safari's launch time.
     12
     13        * UIProcess/WebProcessPool.cpp:
     14        (WebKit::WebProcessPool::registerURLSchemeAsSecure):
     15        (WebKit::WebProcessPool::registerURLSchemeAsBypassingContentSecurityPolicy):
     16
    1172021-02-04  Ross Kirsling  <ross.kirsling@sony.com>
    218
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r272376 r272383  
    12661266    sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsSecure(urlScheme));
    12671267    WebsiteDataStore::forEachWebsiteDataStore([urlScheme] (WebsiteDataStore& dataStore) {
    1268         dataStore.networkProcess().send(Messages::NetworkProcess::RegisterURLSchemeAsSecure(urlScheme), 0);
     1268        if (auto* networkProcess = dataStore.networkProcessIfExists())
     1269            networkProcess->send(Messages::NetworkProcess::RegisterURLSchemeAsSecure(urlScheme), 0);
    12691270    });
    12701271}
     
    12751276    sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsBypassingContentSecurityPolicy(urlScheme));
    12761277    WebsiteDataStore::forEachWebsiteDataStore([urlScheme] (WebsiteDataStore& dataStore) {
    1277         dataStore.networkProcess().send(Messages::NetworkProcess::RegisterURLSchemeAsBypassingContentSecurityPolicy(urlScheme), 0);
     1278        if (auto* networkProcess = dataStore.networkProcessIfExists())
     1279            networkProcess->send(Messages::NetworkProcess::RegisterURLSchemeAsBypassingContentSecurityPolicy(urlScheme), 0);
    12781280    });
    12791281}
  • trunk/Tools/ChangeLog

    r272380 r272383  
     12021-02-04  Alex Christensen  <achristensen@webkit.org>
     2
     3        Don't launch a network process when registering URL schemes
     4        https://bugs.webkit.org/show_bug.cgi?id=221427
     5
     6        Reviewed by Chris Dumez.
     7
     8        * TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:
     9        (TEST):
     10
    1112021-02-04  Jonathan Bedard  <jbedard@apple.com>
    212
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm

    r272376 r272383  
    2929#import "TestWKWebView.h"
    3030#import "Utilities.h"
     31#import <WebKit/WKProcessPoolPrivate.h>
    3132#import <WebKit/WKWebsiteDataStorePrivate.h>
    3233#import <wtf/BlockPtr.h>
     
    8485    auto webView = [[WKWebView new] autorelease];
    8586    webView.configuration.websiteDataStore._resourceLoadStatisticsEnabled = YES;
     87    [webView.configuration.processPool _registerURLSchemeAsSecure:@"test"];
     88    [webView.configuration.processPool _registerURLSchemeAsBypassingContentSecurityPolicy:@"test"];
    8689    EXPECT_FALSE([webView.configuration.websiteDataStore _networkProcessExists]);
    8790}
Note: See TracChangeset for help on using the changeset viewer.