Changeset 250728 in webkit


Ignore:
Timestamp:
Oct 4, 2019 9:43:17 AM (4 years ago)
Author:
achristensen@apple.com
Message:

Move WKProcessPool._registerURLSchemeServiceWorkersCanHandle to _WKWebsiteDataStoreConfiguration
https://bugs.webkit.org/show_bug.cgi?id=202553

Reviewed by Youenn Fablet.

Source/WebCore:

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::SWServer):

  • workers/service/server/SWServer.h:

(WebCore::SWServer::registeredSchemes const):

  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::runRegisterJob):

Source/WebKit:

It was only used for testing, and all the tests that use it still pass with the new SPI.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::addWebsiteDataStore):
(WebKit::NetworkProcess::swServerForSession):
(WebKit::NetworkProcess::addServiceWorkerSession):

  • NetworkProcess/NetworkProcess.h:
  • Shared/AuxiliaryProcess.cpp:

(WebKit::AuxiliaryProcess::registerURLSchemeServiceWorkersCanHandle const): Deleted.

  • Shared/AuxiliaryProcess.h:
  • Shared/AuxiliaryProcess.messages.in:
  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::encode const):
(WebKit::WebsiteDataStoreParameters::decode):

  • Shared/WebsiteDataStoreParameters.h:
  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _registerURLSchemeServiceWorkersCanHandle:]): Deleted.

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::registerURLSchemeServiceWorkersCanHandle): Deleted.

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::serviceWorkerRegisteredSchemes const):
(WebKit::WebsiteDataStoreConfiguration::registerServiceWorkerScheme):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/StorageQuota.mm:
Location:
trunk
Files:
25 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r250727 r250728  
     12019-10-04  Alex Christensen  <achristensen@webkit.org>
     2
     3        Move WKProcessPool._registerURLSchemeServiceWorkersCanHandle to _WKWebsiteDataStoreConfiguration
     4        https://bugs.webkit.org/show_bug.cgi?id=202553
     5
     6        Reviewed by Youenn Fablet.
     7
     8        * workers/service/server/SWServer.cpp:
     9        (WebCore::SWServer::SWServer):
     10        * workers/service/server/SWServer.h:
     11        (WebCore::SWServer::registeredSchemes const):
     12        * workers/service/server/SWServerJobQueue.cpp:
     13        (WebCore::SWServerJobQueue::runRegisterJob):
     14
    1152019-10-04  youenn fablet  <youenn@apple.com>
    216
  • trunk/Source/WebCore/workers/service/server/SWServer.cpp

    r250426 r250728  
    300300}
    301301
    302 SWServer::SWServer(UniqueRef<SWOriginStore>&& originStore, bool processTerminationDelayEnabled, String&& registrationDatabaseDirectory, PAL::SessionID sessionID, CreateContextConnectionCallback&& callback)
     302SWServer::SWServer(UniqueRef<SWOriginStore>&& originStore, HashSet<String>&& registeredSchemes, bool processTerminationDelayEnabled, String&& registrationDatabaseDirectory, PAL::SessionID sessionID, CreateContextConnectionCallback&& callback)
    303303    : m_originStore(WTFMove(originStore))
    304304    , m_sessionID(sessionID)
    305305    , m_isProcessTerminationDelayEnabled(processTerminationDelayEnabled)
     306    , m_registeredSchemes(WTFMove(registeredSchemes))
    306307    , m_createContextConnectionCallback(WTFMove(callback))
    307308{
  • trunk/Source/WebCore/workers/service/server/SWServer.h

    r250426 r250728  
    126126
    127127    using CreateContextConnectionCallback = Function<void(const WebCore::RegistrableDomain&)>;
    128     WEBCORE_EXPORT SWServer(UniqueRef<SWOriginStore>&&, bool processTerminationDelayEnabled, String&& registrationDatabaseDirectory, PAL::SessionID, CreateContextConnectionCallback&&);
     128    WEBCORE_EXPORT SWServer(UniqueRef<SWOriginStore>&&, HashSet<String>&& registeredSchemes, bool processTerminationDelayEnabled, String&& registrationDatabaseDirectory, PAL::SessionID, CreateContextConnectionCallback&&);
    129129
    130130    WEBCORE_EXPORT ~SWServer();
     
    165165
    166166    const HashMap<SWServerConnectionIdentifier, std::unique_ptr<Connection>>& connections() const { return m_connections; }
     167    const HashSet<String> registeredSchemes() const { return m_registeredSchemes; }
    167168
    168169    SWOriginStore& originStore() { return m_originStore; }
     
    256257    bool m_importCompleted { false };
    257258    bool m_isProcessTerminationDelayEnabled { true };
     259    HashSet<String> m_registeredSchemes;
    258260    Vector<CompletionHandler<void()>> m_clearCompletionCallbacks;
    259261    Vector<Function<void(const HashSet<SecurityOriginData>&)>> m_getOriginsWithRegistrationsCallbacks;
  • trunk/Source/WebCore/workers/service/server/SWServerJobQueue.cpp

    r249627 r250728  
    261261    ASSERT(job.type == ServiceWorkerJobType::Register);
    262262
    263     if (!shouldTreatAsPotentiallyTrustworthy(job.scriptURL) && !SchemeRegistry::isServiceWorkerContainerCustomScheme(job.scriptURL.protocol().toStringWithoutCopying()))
     263    if (!shouldTreatAsPotentiallyTrustworthy(job.scriptURL) && !m_server.registeredSchemes().contains(job.scriptURL.protocol().toStringWithoutCopying()))
    264264        return rejectCurrentJob(ExceptionData { SecurityError, "Script URL is not potentially trustworthy"_s });
    265265
  • trunk/Source/WebKit/ChangeLog

    r250726 r250728  
     12019-10-04  Alex Christensen  <achristensen@webkit.org>
     2
     3        Move WKProcessPool._registerURLSchemeServiceWorkersCanHandle to _WKWebsiteDataStoreConfiguration
     4        https://bugs.webkit.org/show_bug.cgi?id=202553
     5
     6        Reviewed by Youenn Fablet.
     7
     8        It was only used for testing, and all the tests that use it still pass with the new SPI.
     9
     10        * NetworkProcess/NetworkProcess.cpp:
     11        (WebKit::NetworkProcess::initializeNetworkProcess):
     12        (WebKit::NetworkProcess::addWebsiteDataStore):
     13        (WebKit::NetworkProcess::swServerForSession):
     14        (WebKit::NetworkProcess::addServiceWorkerSession):
     15        * NetworkProcess/NetworkProcess.h:
     16        * Shared/AuxiliaryProcess.cpp:
     17        (WebKit::AuxiliaryProcess::registerURLSchemeServiceWorkersCanHandle const): Deleted.
     18        * Shared/AuxiliaryProcess.h:
     19        * Shared/AuxiliaryProcess.messages.in:
     20        * Shared/WebsiteDataStoreParameters.cpp:
     21        (WebKit::WebsiteDataStoreParameters::encode const):
     22        (WebKit::WebsiteDataStoreParameters::decode):
     23        * Shared/WebsiteDataStoreParameters.h:
     24        * UIProcess/API/Cocoa/WKProcessPool.mm:
     25        (-[WKProcessPool _registerURLSchemeServiceWorkersCanHandle:]): Deleted.
     26        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
     27        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
     28        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
     29        (-[_WKWebsiteDataStoreConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:]):
     30        * UIProcess/WebProcessPool.cpp:
     31        (WebKit::WebProcessPool::ensureNetworkProcess):
     32        (WebKit::WebProcessPool::initializeNewWebProcess):
     33        (WebKit::WebProcessPool::registerURLSchemeServiceWorkersCanHandle): Deleted.
     34        * UIProcess/WebProcessPool.h:
     35        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
     36        (WebKit::WebsiteDataStore::parameters):
     37        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
     38        (WebKit::WebsiteDataStoreConfiguration::copy):
     39        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
     40        (WebKit::WebsiteDataStoreConfiguration::serviceWorkerRegisteredSchemes const):
     41        (WebKit::WebsiteDataStoreConfiguration::registerServiceWorkerScheme):
     42        * WebProcess/WebProcess.cpp:
     43        (WebKit::WebProcess::initializeWebProcess):
     44
    1452019-10-04  youenn fablet  <youenn@apple.com>
    246
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r250621 r250728  
    324324    if (parentProcessHasServiceWorkerEntitlement()) {
    325325        bool serviceWorkerProcessTerminationDelayEnabled = true;
    326         addServiceWorkerSession(PAL::SessionID::defaultSessionID(), serviceWorkerProcessTerminationDelayEnabled, parameters.serviceWorkerRegistrationDirectory, parameters.serviceWorkerRegistrationDirectoryExtensionHandle);
    327 
    328         for (auto& scheme : parameters.urlSchemesServiceWorkersCanHandle)
    329             registerURLSchemeServiceWorkersCanHandle(scheme);
     326        addServiceWorkerSession(PAL::SessionID::defaultSessionID(), serviceWorkerProcessTerminationDelayEnabled, { }, WTFMove(parameters.serviceWorkerRegistrationDirectory), parameters.serviceWorkerRegistrationDirectoryExtensionHandle);
    330327    }
    331328#endif
     
    453450#if ENABLE(SERVICE_WORKER)
    454451    if (parentProcessHasServiceWorkerEntitlement())
    455         addServiceWorkerSession(parameters.networkSessionParameters.sessionID, parameters.serviceWorkerProcessTerminationDelayEnabled, parameters.serviceWorkerRegistrationDirectory, parameters.serviceWorkerRegistrationDirectoryExtensionHandle);
     452        addServiceWorkerSession(parameters.networkSessionParameters.sessionID, parameters.serviceWorkerProcessTerminationDelayEnabled, WTFMove(parameters.serviceWorkerRegisteredSchemes), WTFMove(parameters.serviceWorkerRegistrationDirectory), parameters.serviceWorkerRegistrationDirectoryExtensionHandle);
    456453#endif
    457454
     
    23942391        auto info = m_serviceWorkerInfo.get(sessionID);
    23952392        auto path = info.databasePath;
     2393        auto registeredSchemes = info.registeredSchemes;
    23962394        // There should already be a registered path for this PAL::SessionID.
    23972395        // If there's not, then where did this PAL::SessionID come from?
    23982396        ASSERT(sessionID.isEphemeral() || !path.isEmpty());
    23992397
    2400         return makeUnique<SWServer>(makeUniqueRef<WebSWOriginStore>(), info.processTerminationDelayEnabled, WTFMove(path), sessionID, [this, sessionID](auto& registrableDomain) {
     2398        return makeUnique<SWServer>(makeUniqueRef<WebSWOriginStore>(), WTFMove(registeredSchemes), info.processTerminationDelayEnabled, WTFMove(path), sessionID, [this, sessionID](auto& registrableDomain) {
    24012399            ASSERT(!registrableDomain.isEmpty());
    24022400            parentProcessConnection()->send(Messages::NetworkProcessProxy::EstablishWorkerContextConnectionToNetworkProcess { registrableDomain, sessionID }, 0);
     
    24292427}
    24302428
    2431 void NetworkProcess::addServiceWorkerSession(PAL::SessionID sessionID, bool processTerminationDelayEnabled, String& serviceWorkerRegistrationDirectory, const SandboxExtension::Handle& handle)
     2429void NetworkProcess::addServiceWorkerSession(PAL::SessionID sessionID, bool processTerminationDelayEnabled, HashSet<String>&& registeredSchemes, String&& serviceWorkerRegistrationDirectory, const SandboxExtension::Handle& handle)
    24322430{
    24332431    ServiceWorkerInfo info {
    2434         serviceWorkerRegistrationDirectory,
     2432        WTFMove(serviceWorkerRegistrationDirectory),
    24352433        processTerminationDelayEnabled,
     2434        WTFMove(registeredSchemes)
    24362435    };
    24372436    auto addResult = m_serviceWorkerInfo.add(sessionID, WTFMove(info));
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r250621 r250728  
    460460    WebSWOriginStore* existingSWOriginStoreForSession(PAL::SessionID) const;
    461461
    462     void addServiceWorkerSession(PAL::SessionID, bool processTerminationDelayEnabled, String& serviceWorkerRegistrationDirectory, const SandboxExtension::Handle&);
     462    void addServiceWorkerSession(PAL::SessionID, bool processTerminationDelayEnabled, HashSet<String>&& registeredSchemes, String&& serviceWorkerRegistrationDirectory, const SandboxExtension::Handle&);
    463463#endif
    464464
     
    528528        String databasePath;
    529529        bool processTerminationDelayEnabled { true };
     530        HashSet<String> registeredSchemes;
    530531    };
    531532    HashMap<PAL::SessionID, ServiceWorkerInfo> m_serviceWorkerInfo;
  • trunk/Source/WebKit/Shared/AuxiliaryProcess.cpp

    r248533 r250728  
    196196}
    197197
    198 void AuxiliaryProcess::registerURLSchemeServiceWorkersCanHandle(const String& urlScheme) const
    199 {
    200     WebCore::SchemeRegistry::registerURLSchemeServiceWorkersCanHandle(urlScheme);
    201 }
    202 
    203198#if !PLATFORM(COCOA)
    204199void AuxiliaryProcess::platformInitialize()
  • trunk/Source/WebKit/Shared/AuxiliaryProcess.h

    r245796 r250728  
    122122    void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
    123123
    124     void registerURLSchemeServiceWorkersCanHandle(const String&) const;
    125124#if OS(LINUX)
    126125    void didReceiveMemoryPressureEvent(bool isCritical);
  • trunk/Source/WebKit/Shared/AuxiliaryProcess.messages.in

    r240683 r250728  
    2323messages -> AuxiliaryProcess {
    2424    ShutDown()
    25     RegisterURLSchemeServiceWorkersCanHandle(String scheme)
    2625    SetProcessSuppressionEnabled(bool flag)
    2726
  • trunk/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp

    r250426 r250728  
    5252#if ENABLE(SERVICE_WORKER)
    5353    encoder << serviceWorkerRegistrationDirectory << serviceWorkerRegistrationDirectoryExtensionHandle << serviceWorkerProcessTerminationDelayEnabled;
     54    encoder << serviceWorkerRegisteredSchemes;
    5455#endif
    5556
     
    128129        return WTF::nullopt;
    129130    parameters.serviceWorkerProcessTerminationDelayEnabled = WTFMove(*serviceWorkerProcessTerminationDelayEnabled);
     131   
     132    Optional<HashSet<String>> serviceWorkerRegisteredSchemes;
     133    decoder >> serviceWorkerRegisteredSchemes;
     134    if (!serviceWorkerRegisteredSchemes)
     135        return WTF::nullopt;
     136    parameters.serviceWorkerRegisteredSchemes = WTFMove(*serviceWorkerRegisteredSchemes);
    130137#endif
    131138
  • trunk/Source/WebKit/Shared/WebsiteDataStoreParameters.h

    r250426 r250728  
    6767    SandboxExtension::Handle serviceWorkerRegistrationDirectoryExtensionHandle;
    6868    bool serviceWorkerProcessTerminationDelayEnabled { true };
     69    HashSet<String> serviceWorkerRegisteredSchemes;
    6970#endif
    7071
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm

    r250426 r250728  
    190190}
    191191
    192 - (void)_registerURLSchemeServiceWorkersCanHandle:(NSString *)scheme
    193 {
    194     _processPool->registerURLSchemeServiceWorkersCanHandle(scheme);
    195 }
    196 
    197192- (void)_registerURLSchemeAsCanDisplayOnlyIfCanRequest:(NSString *)scheme
    198193{
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h

    r250426 r250728  
    123123// Test only.
    124124- (void)_setAllowsAnySSLCertificateForServiceWorker:(BOOL)allows WK_API_AVAILABLE(macos(10.13.4), ios(11.3));
    125 - (void)_registerURLSchemeServiceWorkersCanHandle:(NSString *)scheme WK_API_AVAILABLE(macos(10.13.4), ios(11.3));
    126125- (void)_getActivePagesOriginsInWebProcessForTesting:(pid_t)pid completionHandler:(void(^)(NSArray<NSString *> *))completionHandler WK_API_AVAILABLE(macos(10.14.4), ios(12.2));
    127126- (BOOL)_networkProcessHasEntitlementForTesting:(NSString *)entitlement WK_API_AVAILABLE(macos(10.14.4), ios(12.2));
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h

    r250677 r250728  
    7272
    7373// Testing only.
     74- (void)registerURLSchemeServiceWorkersCanHandleForTesting:(NSString *)scheme WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
    7475@property (nonatomic) BOOL allLoadsBlockedByDeviceManagementRestrictionsForTesting WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
    7576
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm

    r250677 r250728  
    401401}
    402402
     403- (void)registerURLSchemeServiceWorkersCanHandleForTesting:(NSString *)scheme
     404{
     405    _configuration->registerServiceWorkerScheme(scheme);
     406}
     407
    403408- (API::Object&)_apiObject
    404409{
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r250602 r250728  
    545545        parameters.serviceWorkerRegistrationDirectory =  WebKit::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory();
    546546    SandboxExtension::createHandleForReadWriteDirectory(parameters.serviceWorkerRegistrationDirectory, parameters.serviceWorkerRegistrationDirectoryExtensionHandle);
    547 
    548     if (!m_schemesServiceWorkersCanHandle.isEmpty())
    549         parameters.urlSchemesServiceWorkersCanHandle = copyToVector(m_schemesServiceWorkersCanHandle);
    550547#endif
    551548
     
    925922    parameters.urlSchemesRegisteredAsAlwaysRevalidated = copyToVector(m_schemesToRegisterAsAlwaysRevalidated);
    926923    parameters.urlSchemesRegisteredAsCachePartitioned = copyToVector(m_schemesToRegisterAsCachePartitioned);
    927     parameters.urlSchemesServiceWorkersCanHandle = copyToVector(m_schemesServiceWorkersCanHandle);
     924    if (websiteDataStore)
     925        parameters.urlSchemesServiceWorkersCanHandle = copyToVector(websiteDataStore->configuration().serviceWorkerRegisteredSchemes());
    928926    parameters.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest = copyToVector(m_schemesToRegisterAsCanDisplayOnlyIfCanRequest);
    929927
     
    15351533    m_schemesToRegisterAsCachePartitioned.add(urlScheme);
    15361534    sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsCachePartitioned(urlScheme));
    1537 }
    1538 
    1539 void WebProcessPool::registerURLSchemeServiceWorkersCanHandle(const String& urlScheme)
    1540 {
    1541     m_schemesServiceWorkersCanHandle.add(urlScheme);
    1542     sendToAllProcesses(Messages::AuxiliaryProcess::RegisterURLSchemeServiceWorkersCanHandle(urlScheme));
    1543     if (m_networkProcess)
    1544         m_networkProcess->send(Messages::AuxiliaryProcess::RegisterURLSchemeServiceWorkersCanHandle(urlScheme), 0);
    15451535}
    15461536
  • trunk/Source/WebKit/UIProcess/WebProcessPool.h

    r250457 r250728  
    273273    void registerURLSchemeAsCORSEnabled(const String&);
    274274    void registerURLSchemeAsCachePartitioned(const String&);
    275     void registerURLSchemeServiceWorkersCanHandle(const String&);
    276275    void registerURLSchemeAsCanDisplayOnlyIfCanRequest(const String&);
    277276
     
    651650    HashSet<String> m_schemesToRegisterAsAlwaysRevalidated;
    652651    HashSet<String> m_schemesToRegisterAsCachePartitioned;
    653     HashSet<String> m_schemesServiceWorkersCanHandle;
    654652    HashSet<String> m_schemesToRegisterAsCanDisplayOnlyIfCanRequest;
    655653
  • trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm

    r250677 r250728  
    181181        SandboxExtension::createHandleForReadWriteDirectory(parameters.serviceWorkerRegistrationDirectory, parameters.serviceWorkerRegistrationDirectoryExtensionHandle);
    182182    parameters.serviceWorkerProcessTerminationDelayEnabled = m_configuration->serviceWorkerProcessTerminationDelayEnabled();
     183    parameters.serviceWorkerRegisteredSchemes = m_configuration->serviceWorkerRegisteredSchemes();
    183184#endif
    184185
  • trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp

    r250677 r250728  
    5555
    5656    copy->m_serviceWorkerProcessTerminationDelayEnabled = this->m_serviceWorkerProcessTerminationDelayEnabled;
     57    copy->m_serviceWorkerRegisteredSchemes = this->m_serviceWorkerRegisteredSchemes;
    5758    copy->m_fastServerTrustEvaluationEnabled = this->m_fastServerTrustEvaluationEnabled;
    5859    copy->m_networkCacheSpeculativeValidationEnabled = this->m_networkCacheSpeculativeValidationEnabled;
  • trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h

    r250677 r250728  
    118118    void setServiceWorkerProcessTerminationDelayEnabled(bool enabled) { m_serviceWorkerProcessTerminationDelayEnabled = enabled; }
    119119
     120    const HashSet<String> serviceWorkerRegisteredSchemes() const { return m_serviceWorkerRegisteredSchemes; }
     121    void registerServiceWorkerScheme(String&& scheme) { m_serviceWorkerRegisteredSchemes.add(scheme); }
     122   
    120123    const String& sourceApplicationBundleIdentifier() const { return m_sourceApplicationBundleIdentifier; }
    121124    void setSourceApplicationBundleIdentifier(String&& identifier) { m_sourceApplicationBundleIdentifier = WTFMove(identifier); }
     
    180183    bool m_suppressesConnectionTerminationOnSystemChange { false };
    181184    unsigned m_testSpeedMultiplier { 1 };
     185    HashSet<String> m_serviceWorkerRegisteredSchemes;
    182186#if PLATFORM(COCOA)
    183187    RetainPtr<CFDictionaryRef> m_proxyConfiguration;
  • trunk/Source/WebKit/WebProcess/WebProcess.cpp

    r250713 r250728  
    380380
    381381    for (auto& scheme : parameters.urlSchemesServiceWorkersCanHandle)
    382         registerURLSchemeServiceWorkersCanHandle(scheme);
     382        WebCore::SchemeRegistry::registerURLSchemeServiceWorkersCanHandle(scheme);
    383383
    384384    for (auto& scheme : parameters.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest)
  • trunk/Tools/ChangeLog

    r250723 r250728  
     12019-10-04  Alex Christensen  <achristensen@webkit.org>
     2
     3        Move WKProcessPool._registerURLSchemeServiceWorkersCanHandle to _WKWebsiteDataStoreConfiguration
     4        https://bugs.webkit.org/show_bug.cgi?id=202553
     5
     6        Reviewed by Youenn Fablet.
     7
     8        * TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
     9        * TestWebKitAPI/Tests/WebKitCocoa/StorageQuota.mm:
     10
    1112019-10-04  Alex Christensen  <achristensen@webkit.org>
    212
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm

    r250613 r250728  
    2727
    2828#import "PlatformUtilities.h"
     29#import "TCPServer.h"
    2930#import "Test.h"
    3031#import "TestNavigationDelegate.h"
     
    470471)SWRESOURCE";
    471472
     473static WKWebsiteDataStore *dataStoreWithRegisteredServiceWorkerScheme(NSString *scheme)
     474{
     475    _WKWebsiteDataStoreConfiguration *configuration = [[[_WKWebsiteDataStoreConfiguration alloc] init] autorelease];
     476    [configuration registerURLSchemeServiceWorkersCanHandleForTesting:scheme];
     477    return [[[WKWebsiteDataStore alloc] _initWithConfiguration:configuration] autorelease];
     478}
     479
    472480TEST(ServiceWorkers, Basic)
    473481{
     
    477485    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    478486
     487    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
     488   
    479489    // Start with a clean slate data store
    480     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    481         done = true;
    482     }];
    483     TestWebKitAPI::Util::run(&done);
    484     done = false;
    485 
    486     RetainPtr<WKWebViewConfiguration> configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     490    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     491        done = true;
     492    }];
     493    TestWebKitAPI::Util::run(&done);
     494    done = false;
     495
     496    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     497    [configuration setWebsiteDataStore:dataStore];
    487498
    488499    RetainPtr<SWMessageHandler> messageHandler = adoptNS([[SWMessageHandler alloc] init]);
     
    495506
    496507    RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    497     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    498508
    499509    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/main.html"]];
    500510    [webView loadRequest:request];
     511
     512    TestWebKitAPI::Util::run(&done);
     513    done = false;
     514
     515    webView = nullptr;
     516
     517    [dataStore fetchDataRecordsOfTypes:[NSSet setWithObject:WKWebsiteDataTypeServiceWorkerRegistrations] completionHandler:^(NSArray<WKWebsiteDataRecord *> *websiteDataRecords) {
     518        EXPECT_EQ(1u, [websiteDataRecords count]);
     519        EXPECT_TRUE([websiteDataRecords[0].displayName isEqualToString:@"sw host"]);
     520
     521        done = true;
     522    }];
     523
     524    TestWebKitAPI::Util::run(&done);
     525    done = false;
     526}
     527
     528TEST(ServiceWorkers, BasicDefaultSession)
     529{
     530    using namespace TestWebKitAPI;
     531    TCPServer server([] (int socket) {
     532        NSString *format = @"HTTP/1.1 200 OK\r\n"
     533        "Content-Type: %s\r\n"
     534        "Content-Length: %d\r\n\r\n"
     535        "%s";
     536        NSString *firstResponse = [NSString stringWithFormat:format, "text/html", strlen(mainBytes), mainBytes];
     537        NSString *secondResponse = [NSString stringWithFormat:format, "application/javascript", strlen(scriptBytes), scriptBytes];
     538
     539        TCPServer::read(socket);
     540        TCPServer::write(socket, firstResponse.UTF8String, firstResponse.length);
     541        TCPServer::read(socket);
     542        TCPServer::write(socket, secondResponse.UTF8String, secondResponse.length);
     543    });
     544
     545    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
     546
     547    // Start with a clean slate data store
     548    [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     549        done = true;
     550    }];
     551    TestWebKitAPI::Util::run(&done);
     552    done = false;
     553
     554    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     555
     556    auto messageHandler = adoptNS([[SWMessageHandler alloc] init]);
     557    [[configuration userContentController] addScriptMessageHandler:messageHandler.get() name:@"sw"];
     558
     559    auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
     560
     561    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://127.0.0.1:%d/", server.port()]]]];
    501562
    502563    TestWebKitAPI::Util::run(&done);
     
    507568    [[WKWebsiteDataStore defaultDataStore] fetchDataRecordsOfTypes:[NSSet setWithObject:WKWebsiteDataTypeServiceWorkerRegistrations] completionHandler:^(NSArray<WKWebsiteDataRecord *> *websiteDataRecords) {
    508569        EXPECT_EQ(1u, [websiteDataRecords count]);
    509         EXPECT_TRUE([websiteDataRecords[0].displayName isEqualToString:@"sw host"]);
     570        EXPECT_WK_STREQ(websiteDataRecords[0].displayName, "127.0.0.1");
    510571
    511572        done = true;
     
    577638    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    578639
     640    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
     641
    579642    // Start with a clean slate data store
    580     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     643    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    581644        done = true;
    582645    }];
     
    585648
    586649    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     650    [configuration setWebsiteDataStore:dataStore];
    587651
    588652    auto messageHandler = adoptNS([[SWUserAgentMessageHandler alloc] initWithExpectedMessage:@"Message from worker: Foo Custom UserAgent"]);
     
    596660
    597661    auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    598     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    599662
    600663    auto delegate = adoptNS([[SWCustomUserAgentDelegate alloc] initWithUserAgent:@"Foo Custom UserAgent"]);
     
    615678
    616679    configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     680    [configuration setWebsiteDataStore:dataStore];
    617681
    618682    messageHandler = adoptNS([[SWUserAgentMessageHandler alloc] initWithExpectedMessage:@"Message from worker: Bar Custom UserAgent"]);
     
    626690
    627691    webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    628     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    629692
    630693    delegate = adoptNS([[SWCustomUserAgentDelegate alloc] initWithUserAgent:@"Bar Custom UserAgent"]);
     
    646709    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    647710
     711    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
     712   
    648713    // Start with a clean slate data store
    649     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    650         done = true;
    651     }];
    652     TestWebKitAPI::Util::run(&done);
    653     done = false;
    654 
    655     RetainPtr<WKWebViewConfiguration> configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     714    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     715        done = true;
     716    }];
     717    TestWebKitAPI::Util::run(&done);
     718    done = false;
     719
     720    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     721    [configuration setWebsiteDataStore:dataStore];
    656722
    657723    RetainPtr<SWMessageHandlerForRestoreFromDiskTest> messageHandler = adoptNS([[SWMessageHandlerForRestoreFromDiskTest alloc] initWithExpectedMessage:@"PASS: Registration was successful and service worker was activated"]);
     
    664730
    665731    RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    666     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    667732
    668733    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/main.html"]];
     
    679744
    680745    configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     746    [configuration setWebsiteDataStore:dataStore];
    681747    messageHandler = adoptNS([[SWMessageHandlerForRestoreFromDiskTest alloc] initWithExpectedMessage:@"PASS: Registration already has an active worker"]);
    682748    [[configuration userContentController] addScriptMessageHandler:messageHandler.get() name:@"sw"];
     
    688754
    689755    webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    690     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    691756
    692757    request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/main.html"]];
     
    702767    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    703768
     769    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
     770   
    704771    // Start with a clean slate data store
    705     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     772    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    706773        done = true;
    707774    }];
     
    716783
    717784    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     785    [configuration setWebsiteDataStore:dataStore];
    718786    auto messageHandler = adoptNS([[SWMessageHandlerForRestoreFromDiskTest alloc] initWithExpectedMessage:@"No cache storage data"]);
    719787
     
    722790
    723791    auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    724     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    725792
    726793    // Trigger creation of network process.
     
    738805
    739806    configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     807    [configuration setWebsiteDataStore:dataStore];
    740808    messageHandler = adoptNS([[SWMessageHandlerForRestoreFromDiskTest alloc] initWithExpectedMessage:@"Some cache storage data: my cache"]);
    741809
     
    744812
    745813    webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    746     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    747814
    748815    request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/main.html"]];
     
    761828    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    762829
     830    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
     831   
    763832    // Start with a clean slate data store
    764     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     833    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    765834        done = true;
    766835    }];
     
    769838
    770839    RetainPtr<WKWebViewConfiguration> configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     840    [configuration setWebsiteDataStore:dataStore];
    771841
    772842    RetainPtr<SWMessageHandlerForFetchTest> messageHandler = adoptNS([[SWMessageHandlerForFetchTest alloc] init]);
     
    780850
    781851    RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    782     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    783852
    784853    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/main.html"]];
     
    795864
    796865    configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     866    [configuration setWebsiteDataStore:dataStore];
    797867    messageHandler = adoptNS([[SWMessageHandlerForFetchTest alloc] init]);
    798868    [[configuration userContentController] addScriptMessageHandler:messageHandler.get() name:@"sw"];
     
    805875
    806876    webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    807     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    808877
    809878    request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/main.html"]];
     
    821890    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    822891
     892    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
     893
    823894    // Start with a clean slate data store
    824     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     895    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    825896        done = true;
    826897    }];
     
    829900
    830901    RetainPtr<WKWebViewConfiguration> configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     902    [configuration setWebsiteDataStore:dataStore];
    831903
    832904    RetainPtr<SWMessageHandlerWithExpectedMessage> messageHandler = adoptNS([[SWMessageHandlerWithExpectedMessage alloc] init]);
     
    839911
    840912    RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    841     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    842913
    843914    expectedMessage = "Service Worker activated";
     
    855926
    856927    configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     928    [configuration setWebsiteDataStore:dataStore];
    857929    messageHandler = adoptNS([[SWMessageHandlerWithExpectedMessage alloc] init]);
    858930    [[configuration userContentController] addScriptMessageHandler:messageHandler.get() name:@"sw"];
     
    864936
    865937    webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    866     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    867938
    868939    expectedMessage = "Intercepted by worker";
     
    878949    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    879950
     951    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
     952
    880953    // Start with a clean slate data store
    881     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     954    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    882955        done = true;
    883956    }];
     
    886959
    887960    RetainPtr<WKWebViewConfiguration> configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     961    [configuration setWebsiteDataStore:dataStore];
    888962
    889963    RetainPtr<SWMessageHandlerWithExpectedMessage> messageHandler = adoptNS([[SWMessageHandlerWithExpectedMessage alloc] init]);
     
    896970
    897971    RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    898     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    899972
    900973    // Register a service worker and activate it.
     
    913986
    914987    configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     988    [configuration setWebsiteDataStore:dataStore];
    915989    messageHandler = adoptNS([[SWMessageHandlerWithExpectedMessage alloc] init]);
    916990    [[configuration userContentController] addScriptMessageHandler:messageHandler.get() name:@"sw"];
     
    922996
    923997    webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    924     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    925998
    926999    // Verify service worker is intercepting load.
     
    9331006
    9341007    webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    935     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    9361008    auto delegate = adoptNS([[TestSWAsyncNavigationDelegate alloc] init]);
    9371009    [webView setNavigationDelegate:delegate.get()];
     
    9501022
    9511023    webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    952     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    9531024    [webView setNavigationDelegate:delegate.get()];
    9541025    [webView setUIDelegate:delegate.get()];
     
    9711042    WKRetainPtr<WKContextRef> context = adoptWK(TestWebKitAPI::Util::createContextForInjectedBundleTest("InternalsInjectedBundleTest"));
    9721043    configuration.processPool = (WKProcessPool *)context.get();
    973     auto pool = configuration.processPool;
    974     [pool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
     1044    configuration.websiteDataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
    9751045}
    9761046
     
    13341404    [configuration setURLSchemeHandler:handler.get() forURLScheme:@"SW"];
    13351405
    1336     configuration.get().websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
    1337     [configuration.get().processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
     1406    _WKWebsiteDataStoreConfiguration *dataStoreConfiguration = [[[_WKWebsiteDataStoreConfiguration alloc] initNonPersistentConfiguration] autorelease];
     1407    [dataStoreConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"sw"];
     1408    configuration.get().websiteDataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:dataStoreConfiguration] autorelease];
    13381409
    13391410    auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
     
    13891460    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    13901461
     1462    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
     1463   
    13911464    // Start with a clean slate data store
    1392     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     1465    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    13931466        done = true;
    13941467    }];
     
    13971470   
    13981471    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
    1399     setConfigurationInjectedBundlePath(configuration.get());
     1472
     1473    auto context = adoptWK(TestWebKitAPI::Util::createContextForInjectedBundleTest("InternalsInjectedBundleTest"));
     1474    [configuration setProcessPool:(WKProcessPool *)context.get()];
     1475    [configuration setWebsiteDataStore:dataStore];
    14001476   
    14011477    auto defaultPreferences = [configuration preferences];
     
    14181494    TestWebKitAPI::Util::run(&openedCache);
    14191495
    1420     configuration.get().websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
     1496    _WKWebsiteDataStoreConfiguration *nonPersistentConfiguration = [[[_WKWebsiteDataStoreConfiguration alloc] initNonPersistentConfiguration] autorelease];
     1497    [nonPersistentConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"sw"];
     1498    configuration.get().websiteDataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:nonPersistentConfiguration] autorelease];
    14211499
    14221500    auto messageHandler = adoptNS([[SWMessageHandlerForCacheStorage alloc] init]);
     
    15441622    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    15451623
     1624    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
     1625
    15461626    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     1627    [configuration setWebsiteDataStore:dataStore];
    15471628    setConfigurationInjectedBundlePath(configuration.get());
    15481629
     
    15661647
    15671648    webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    1568     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    15691649
    15701650    request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/regularPageGrabbingCacheStorageDirectory.html"]];
     
    15891669    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    15901670
     1671    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
     1672
    15911673    RetainPtr<WKWebViewConfiguration> configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     1674    [configuration setWebsiteDataStore:dataStore];
    15921675
    15931676    configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     
    16071690
    16081691    RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    1609     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    16101692
    16111693    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/main.html"]];
     
    16481730    websiteDataStoreConfiguration.get()._serviceWorkerRegistrationDirectory = serviceWorkersPath;
    16491731    websiteDataStoreConfiguration.get()._indexedDBDatabaseDirectory = idbPath;
     1732    [websiteDataStoreConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"sw"];
    16501733
    16511734    configuration.get().websiteDataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()] autorelease];
     
    16611744    expectedMessage = "PASS: activation successful";
    16621745    RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    1663     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    16641746
    16651747    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/main.html"]];
     
    17051787    _WKWebsiteDataStoreConfiguration *dataStoreConfiguration = [[[_WKWebsiteDataStoreConfiguration alloc] init] autorelease];
    17061788    dataStoreConfiguration.serviceWorkerProcessTerminationDelayEnabled = NO;
     1789    [dataStoreConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"sw1"];
     1790    [dataStoreConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"sw2"];
     1791
    17071792    auto dataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:dataStoreConfiguration]);
    17081793   
     
    17331818
    17341819    WKProcessPool *processPool = configuration.get().processPool;
    1735     [processPool _registerURLSchemeServiceWorkersCanHandle:@"sw1"];
    1736     [processPool _registerURLSchemeServiceWorkersCanHandle:@"sw2"];
    17371820
    17381821    RetainPtr<WKWebView> webView1 = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
     
    17921875    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    17931876
     1877    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw1");
     1878
    17941879    // Start with a clean slate data store
    1795     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     1880    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    17961881        done = true;
    17971882    }];
     
    18001885
    18011886    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     1887    [configuration setWebsiteDataStore:dataStore];
    18021888
    18031889    auto messageHandler = adoptNS([[SWMessageHandler alloc] init]);
     
    18121898
    18131899    auto *processPool = configuration.get().processPool;
    1814     [processPool _registerURLSchemeServiceWorkersCanHandle:@"sw1"];
    18151900
    18161901    auto webView1 = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
     
    18331918    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    18341919
     1920    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw1");
     1921
    18351922    // Start with a clean slate data store
    1836     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     1923    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    18371924        done = true;
    18381925    }];
     
    18521939
    18531940    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     1941    [configuration setWebsiteDataStore:dataStore];
    18541942#if PLATFORM(MAC)
    18551943    [[configuration preferences] _setAppNapEnabled:YES];
     
    18591947
    18601948    auto *processPool = configuration.get().processPool;
    1861     [processPool _registerURLSchemeServiceWorkersCanHandle:@"sw1"];
    18621949
    18631950    auto webView1 = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get() addToWindow: YES]);
     
    18811968#endif
    18821969    [webView2Configuration setProcessPool:processPool];
     1970    [webView2Configuration setWebsiteDataStore:dataStore];
    18831971    [[webView2Configuration userContentController] addScriptMessageHandler:messageHandler.get() name:@"sw"];
    18841972    [webView2Configuration setURLSchemeHandler:handler.get() forURLScheme:@"sw1"];
     
    19011989    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    19021990
     1991    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
     1992
    19031993    // Start with a clean slate data store
    1904     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     1994    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    19051995        done = true;
    19061996    }];
     
    19091999
    19102000    RetainPtr<WKWebViewConfiguration> configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     2001    [configuration setWebsiteDataStore:dataStore];
    19112002
    19122003    RetainPtr<SWMessageHandler> messageHandler = adoptNS([[SWMessageHandler alloc] init]);
     
    19192010
    19202011    RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    1921     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    19222012
    19232013    auto delegate = adoptNS([[TestSWAsyncNavigationDelegate alloc] init]);
     
    19642054        auto websiteDataStoreConfiguration = adoptNS([[_WKWebsiteDataStoreConfiguration alloc] init]);
    19652055        websiteDataStoreConfiguration.get()._serviceWorkerRegistrationDirectory = swDBPath;
     2056        [websiteDataStoreConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"sw"];
    19662057        auto nonDefaultDataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()]);
    19672058        configuration.get().websiteDataStore = nonDefaultDataStore.get();
     
    19762067
    19772068        auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    1978         [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    19792069        protectedProcessPool = webView.get().configuration.processPool;
    19802070
     
    19922082        auto websiteDataStoreConfiguration = adoptNS([[_WKWebsiteDataStoreConfiguration alloc] init]);
    19932083        websiteDataStoreConfiguration.get()._serviceWorkerRegistrationDirectory = swDBPath;
     2084        [websiteDataStoreConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"sw"];
    19942085        auto nonDefaultDataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()]);
    19952086        configuration.get().websiteDataStore = nonDefaultDataStore.get();
     
    20042095
    20052096        auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    2006         [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    20072097
    20082098        [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/main.html"]]];
     
    20172107    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    20182108
     2109    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw");
     2110   
    20192111    // Start with a clean slate data store
    2020     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     2112    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    20212113        done = true;
    20222114    }];
     
    20252117
    20262118    RetainPtr<WKWebViewConfiguration> configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     2119    [configuration setWebsiteDataStore:dataStore];
    20272120
    20282121    RetainPtr<SWMessageHandler> messageHandler = adoptNS([[SWMessageHandler alloc] init]);
     
    20352128
    20362129    RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
    2037     [webView.get().configuration.processPool _registerURLSchemeServiceWorkersCanHandle:@"sw"];
    20382130
    20392131    auto delegate = adoptNS([[TestSWAsyncNavigationDelegate alloc] init]);
     
    21022194    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
    21032195
     2196    auto* dataStore = dataStoreWithRegisteredServiceWorkerScheme(@"sw1");
     2197   
    21042198    // Start with a clean slate data store
    2105     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     2199    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    21062200        done = true;
    21072201    }];
     
    21102204
    21112205    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     2206    [configuration setWebsiteDataStore:dataStore];
    21122207
    21132208    auto messageHandler = adoptNS([[SWMessageHandler alloc] init]);
     
    21222217
    21232218    WKProcessPool *processPool = configuration.get().processPool;
    2124     [processPool _registerURLSchemeServiceWorkersCanHandle:@"sw1"];
    21252219
    21262220    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw1://host/main.html"]];
    21272221
    2128     configuration.get().websiteDataStore = [WKWebsiteDataStore defaultDataStore];
     2222    configuration.get().websiteDataStore = dataStore;
    21292223
    21302224    auto webView1 = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
     
    21352229    EXPECT_EQ(1U, processPool._serviceWorkerProcessCount);
    21362230
    2137     configuration.get().websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
     2231    _WKWebsiteDataStoreConfiguration *nonPersistentConfiguration = [[[_WKWebsiteDataStoreConfiguration alloc] initNonPersistentConfiguration] autorelease];
     2232    [nonPersistentConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"sw1"];
     2233    configuration.get().websiteDataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:nonPersistentConfiguration] autorelease];
    21382234
    21392235    auto webView2 = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/StorageQuota.mm

    r250156 r250728  
    228228    _WKWebsiteDataStoreConfiguration *storeConfiguration = [[[_WKWebsiteDataStoreConfiguration alloc] init] autorelease];
    229229    storeConfiguration.perOriginStorageQuota = 1024 * 400;
     230    [storeConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"qt1"];
     231    [storeConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"qt2"];
    230232    WKWebsiteDataStore *dataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:storeConfiguration] autorelease];
    231233    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     
    243245    handler1->resources.set("qt1://test1.html", ResourceInfo { @"text/html", TestBytes });
    244246    [configuration setURLSchemeHandler:handler1.get() forURLScheme:@"QT1"];
    245     [configuration.get().processPool _registerURLSchemeServiceWorkersCanHandle:@"qt1"];
    246247
    247248    auto handler2 = adoptNS([[StorageSchemes alloc] init]);
    248249    handler2->resources.set("qt2://test2.html", ResourceInfo { @"text/html", TestBytes });
    249250    [configuration setURLSchemeHandler:handler2.get() forURLScheme:@"QT2"];
    250     [configuration.get().processPool _registerURLSchemeServiceWorkersCanHandle:@"qt2"];
    251251
    252252    auto webView1 = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get() addToWindow:YES]);
     
    290290    done = false;
    291291    _WKWebsiteDataStoreConfiguration *storeConfiguration = [[[_WKWebsiteDataStoreConfiguration alloc] init] autorelease];
     292    storeConfiguration.perOriginStorageQuota = 1024 * 400;
     293    [storeConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"qt"];
     294    WKWebsiteDataStore *dataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:storeConfiguration] autorelease];
     295    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     296        done = true;
     297    }];
     298    TestWebKitAPI::Util::run(&done);
     299   
     300    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     301    [configuration setWebsiteDataStore:dataStore];
     302   
     303    auto messageHandler = adoptNS([[QuotaMessageHandler alloc] init]);
     304    [[configuration userContentController] addScriptMessageHandler:messageHandler.get() name:@"qt"];
     305   
     306    auto handler = adoptNS([[StorageSchemes alloc] init]);
     307    handler->resources.set("qt://test1.html", ResourceInfo { @"text/html", TestBytes });
     308    [configuration setURLSchemeHandler:handler.get() forURLScheme:@"QT"];
     309   
     310    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get() addToWindow:YES]);
     311    auto delegate = adoptNS([[QuotaDelegate alloc] init]);
     312    [webView setUIDelegate:delegate.get()];
     313    setVisible(webView.get());
     314
     315    receivedQuotaDelegateCalled = false;
     316    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"qt://test1.html"]]];
     317    Util::run(&receivedQuotaDelegateCalled);
     318
     319    [delegate denyQuota];
     320
     321    [messageHandler setExpectedMessage: @"fail"];
     322    receivedMessage = false;
     323    Util::run(&receivedMessage);
     324
     325    receivedQuotaDelegateCalled = false;
     326    [webView reload];
     327    Util::run(&receivedQuotaDelegateCalled);
     328
     329    [delegate grantQuota];
     330
     331    [messageHandler setExpectedMessage: @"pass"];
     332    receivedMessage = false;
     333    Util::run(&receivedMessage);
     334}
     335
     336TEST(WebKit, QuotaDelegateNavigateFragment)
     337{
     338    done = false;
     339    _WKWebsiteDataStoreConfiguration *storeConfiguration = [[[_WKWebsiteDataStoreConfiguration alloc] init] autorelease];
     340    [storeConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"qt"];
    292341    storeConfiguration.perOriginStorageQuota = 1024 * 400;
    293342    WKWebsiteDataStore *dataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:storeConfiguration] autorelease];
     
    296345    }];
    297346    TestWebKitAPI::Util::run(&done);
    298    
     347
    299348    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
    300349    [configuration setWebsiteDataStore:dataStore];
    301    
     350
    302351    auto messageHandler = adoptNS([[QuotaMessageHandler alloc] init]);
    303352    [[configuration userContentController] addScriptMessageHandler:messageHandler.get() name:@"qt"];
    304    
     353
    305354    auto handler = adoptNS([[StorageSchemes alloc] init]);
    306355    handler->resources.set("qt://test1.html", ResourceInfo { @"text/html", TestBytes });
    307356    [configuration setURLSchemeHandler:handler.get() forURLScheme:@"QT"];
    308     [configuration.get().processPool _registerURLSchemeServiceWorkersCanHandle:@"qt"];
    309    
     357
    310358    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get() addToWindow:YES]);
    311359    auto delegate = adoptNS([[QuotaDelegate alloc] init]);
     
    324372
    325373    receivedQuotaDelegateCalled = false;
    326     [webView reload];
    327     Util::run(&receivedQuotaDelegateCalled);
    328 
    329     [delegate grantQuota];
    330 
    331     [messageHandler setExpectedMessage: @"pass"];
    332     receivedMessage = false;
    333     Util::run(&receivedMessage);
    334 }
    335 
    336 TEST(WebKit, QuotaDelegateNavigateFragment)
     374    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"qt://test1.html#fragment"]]];
     375    [webView stringByEvaluatingJavaScript:@"doTestAgain()"];
     376
     377    [messageHandler setExpectedMessage: @"start"];
     378    receivedMessage = false;
     379    Util::run(&receivedMessage);
     380
     381    [messageHandler setExpectedMessage: @"fail"];
     382    receivedMessage = false;
     383    Util::run(&receivedMessage);
     384
     385    EXPECT_FALSE(receivedQuotaDelegateCalled);
     386}
     387
     388TEST(WebKit, DefaultQuota)
    337389{
    338390    done = false;
    339391    _WKWebsiteDataStoreConfiguration *storeConfiguration = [[[_WKWebsiteDataStoreConfiguration alloc] init] autorelease];
    340     storeConfiguration.perOriginStorageQuota = 1024 * 400;
     392    [storeConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:@"qt"];
    341393    WKWebsiteDataStore *dataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:storeConfiguration] autorelease];
     394
    342395    [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    343396        done = true;
     
    352405
    353406    auto handler = adoptNS([[StorageSchemes alloc] init]);
    354     handler->resources.set("qt://test1.html", ResourceInfo { @"text/html", TestBytes });
    355     [configuration setURLSchemeHandler:handler.get() forURLScheme:@"QT"];
    356     [configuration.get().processPool _registerURLSchemeServiceWorkersCanHandle:@"qt"];
    357 
    358     auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get() addToWindow:YES]);
    359     auto delegate = adoptNS([[QuotaDelegate alloc] init]);
    360     [webView setUIDelegate:delegate.get()];
    361     setVisible(webView.get());
    362 
    363     receivedQuotaDelegateCalled = false;
    364     [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"qt://test1.html"]]];
    365     Util::run(&receivedQuotaDelegateCalled);
    366 
    367     [delegate denyQuota];
    368 
    369     [messageHandler setExpectedMessage: @"fail"];
    370     receivedMessage = false;
    371     Util::run(&receivedMessage);
    372 
    373     receivedQuotaDelegateCalled = false;
    374     [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"qt://test1.html#fragment"]]];
    375     [webView stringByEvaluatingJavaScript:@"doTestAgain()"];
    376 
    377     [messageHandler setExpectedMessage: @"start"];
    378     receivedMessage = false;
    379     Util::run(&receivedMessage);
    380 
    381     [messageHandler setExpectedMessage: @"fail"];
    382     receivedMessage = false;
    383     Util::run(&receivedMessage);
    384 
    385     EXPECT_FALSE(receivedQuotaDelegateCalled);
    386 }
    387 
    388 TEST(WebKit, DefaultQuota)
    389 {
    390     done = false;
    391     [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
    392         done = true;
    393     }];
    394     TestWebKitAPI::Util::run(&done);
    395 
    396     auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
    397 
    398     auto messageHandler = adoptNS([[QuotaMessageHandler alloc] init]);
    399     [[configuration userContentController] addScriptMessageHandler:messageHandler.get() name:@"qt"];
    400 
    401     auto handler = adoptNS([[StorageSchemes alloc] init]);
    402407    handler->resources.set("qt://test1.html", ResourceInfo { @"text/html", TestUrlBytes });
    403408    [configuration setURLSchemeHandler:handler.get() forURLScheme:@"QT"];
    404     [configuration.get().processPool _registerURLSchemeServiceWorkersCanHandle:@"qt"];
    405409
    406410    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get() addToWindow:YES]);
Note: See TracChangeset for help on using the changeset viewer.