Changeset 228019 in webkit


Ignore:
Timestamp:
Feb 2, 2018 11:25:21 AM (6 years ago)
Author:
commit-queue@webkit.org
Message:

Configure serviceWorkerRegistrationDirectory on the web site data store and move it to a Caches subfolder as a default
https://bugs.webkit.org/show_bug.cgi?id=182403

Patch by Youenn Fablet <youenn@apple.com> on 2018-02-02
Reviewed by Alex Christensen.

Source/WebKit:

WebsiteDataStore is the place to set configuration information such as service worker registration path.
This patch updates WebKit code accordingly.
By default, the service worker registration path is in a Caches subfolder, similarly to cache API path.

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::createWithLegacyOptions):
(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
(API::ProcessPoolConfiguration::ProcessPoolConfiguration):
(API::ProcessPoolConfiguration::copy):

  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/C/WKContextConfigurationRef.cpp:

(WKContextConfigurationCopyServiceWorkerDatabaseDirectory): Deleted.
(WKContextConfigurationSetServiceWorkerDatabaseDirectory): Deleted.

  • UIProcess/API/C/WKContextConfigurationRef.h:
  • UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:

(API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _serviceWorkerRegistrationDirectory]):
(-[WKWebsiteDataStore _setServiceWorkerRegistrationDirectory:]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
(WebKit::WebProcessPool::initializeNewWebProcess):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::serviceWorkerRegistrationDirectory const):
(WebKit::WebsiteDataStore::setServiceWorkerRegistrationDirectory):

  • UIProcess/gtk/WebProcessPoolGtk.cpp:
  • UIProcess/gtk/WebProcessPoolWPE.cpp:

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::generateContextConfiguration const):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::initializeWebViewConfiguration):

Location:
trunk
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r228016 r228019  
     12018-02-02  Youenn Fablet  <youenn@apple.com>
     2
     3        Configure serviceWorkerRegistrationDirectory on the web site data store and move it to a Caches subfolder as a default
     4        https://bugs.webkit.org/show_bug.cgi?id=182403
     5
     6        Reviewed by Alex Christensen.
     7
     8        WebsiteDataStore is the place to set configuration information such as service worker registration path.
     9        This patch updates WebKit code accordingly.
     10        By default, the service worker registration path is in a Caches subfolder, similarly to cache API path.
     11
     12        * UIProcess/API/APIProcessPoolConfiguration.cpp:
     13        (API::ProcessPoolConfiguration::createWithLegacyOptions):
     14        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
     15        (API::ProcessPoolConfiguration::ProcessPoolConfiguration):
     16        (API::ProcessPoolConfiguration::copy):
     17        * UIProcess/API/APIProcessPoolConfiguration.h:
     18        * UIProcess/API/C/WKContextConfigurationRef.cpp:
     19        (WKContextConfigurationCopyServiceWorkerDatabaseDirectory): Deleted.
     20        (WKContextConfigurationSetServiceWorkerDatabaseDirectory): Deleted.
     21        * UIProcess/API/C/WKContextConfigurationRef.h:
     22        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
     23        (API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory):
     24        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
     25        (-[WKWebsiteDataStore _serviceWorkerRegistrationDirectory]):
     26        (-[WKWebsiteDataStore _setServiceWorkerRegistrationDirectory:]):
     27        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
     28        * UIProcess/WebProcessPool.cpp:
     29        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
     30        (WebKit::WebProcessPool::initializeNewWebProcess):
     31        * UIProcess/WebsiteData/WebsiteDataStore.h:
     32        (WebKit::WebsiteDataStore::serviceWorkerRegistrationDirectory const):
     33        (WebKit::WebsiteDataStore::setServiceWorkerRegistrationDirectory):
     34        * UIProcess/gtk/WebProcessPoolGtk.cpp:
     35        * UIProcess/gtk/WebProcessPoolWPE.cpp:
     36
    1372018-02-02  Wenson Hsieh  <wenson_hsieh@apple.com>
    238
  • trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp

    r225890 r228019  
    5050    configuration->m_mediaCacheDirectory = WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory();
    5151    configuration->m_indexedDBDatabaseDirectory = WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory();
    52     configuration->m_serviceWorkerRegistrationDirectory = WebKit::WebProcessPool::legacyPlatformDefaultServiceWorkerRegistrationDirectory();
    5352    configuration->m_localStorageDirectory = WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory();
    5453    configuration->m_mediaKeysStorageDirectory = WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory();
     
    6867    configuration->m_mediaCacheDirectory = legacyConfiguration.mediaCacheDirectory;
    6968    configuration->m_indexedDBDatabaseDirectory = WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory();
    70     configuration->m_serviceWorkerRegistrationDirectory = WebKit::WebProcessPool::legacyPlatformDefaultServiceWorkerRegistrationDirectory();
    7169    configuration->m_localStorageDirectory = legacyConfiguration.localStorageDirectory;
    7270    configuration->m_mediaKeysStorageDirectory = legacyConfiguration.mediaKeysStorageDirectory;
     
    8381    , m_mediaCacheDirectory(WebsiteDataStore::defaultMediaCacheDirectory())
    8482    , m_indexedDBDatabaseDirectory(WebsiteDataStore::defaultIndexedDBDatabaseDirectory())
    85     , m_serviceWorkerRegistrationDirectory(WebsiteDataStore::defaultServiceWorkerRegistrationDirectory())
    8683    , m_localStorageDirectory(WebsiteDataStore::defaultLocalStorageDirectory())
    8784    , m_webSQLDatabaseDirectory(WebsiteDataStore::defaultWebSQLDatabaseDirectory())
     
    110107    copy->m_mediaCacheDirectory = this->m_mediaCacheDirectory;
    111108    copy->m_indexedDBDatabaseDirectory = this->m_indexedDBDatabaseDirectory;
    112     copy->m_serviceWorkerRegistrationDirectory = this->m_serviceWorkerRegistrationDirectory;
    113109    copy->m_injectedBundlePath = this->m_injectedBundlePath;
    114110    copy->m_localStorageDirectory = this->m_localStorageDirectory;
  • trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h

    r225490 r228019  
    7777    void setIndexedDBDatabaseDirectory(const WTF::String& indexedDBDatabaseDirectory) { m_indexedDBDatabaseDirectory = indexedDBDatabaseDirectory; }
    7878
    79     const WTF::String& serviceWorkerRegistrationDirectory() const { return m_serviceWorkerRegistrationDirectory; }
    80     void setServiceWorkerRegistrationDirectory(const WTF::String& directory) { m_serviceWorkerRegistrationDirectory = directory; }
    81    
    8279    const WTF::String& injectedBundlePath() const { return m_injectedBundlePath; }
    8380    void setInjectedBundlePath(const WTF::String& injectedBundlePath) { m_injectedBundlePath = injectedBundlePath; }
     
    152149    WTF::String m_mediaCacheDirectory;
    153150    WTF::String m_indexedDBDatabaseDirectory;
    154     WTF::String m_serviceWorkerRegistrationDirectory;
    155151    WTF::String m_injectedBundlePath;
    156152    WTF::String m_localStorageDirectory;
  • trunk/Source/WebKit/UIProcess/API/C/WKContextConfigurationRef.cpp

    r225690 r228019  
    7777{
    7878    toImpl(configuration)->setIndexedDBDatabaseDirectory(toImpl(indexedDBDatabaseDirectory)->string());
    79 }
    80 
    81 WKStringRef WKContextConfigurationCopyServiceWorkerDatabaseDirectory(WKContextConfigurationRef configuration)
    82 {
    83     return toCopiedAPI(toImpl(configuration)->serviceWorkerRegistrationDirectory());
    84 }
    85 
    86 void WKContextConfigurationSetServiceWorkerDatabaseDirectory(WKContextConfigurationRef configuration, WKStringRef swDatabaseDirectory)
    87 {
    88     toImpl(configuration)->setServiceWorkerRegistrationDirectory(toImpl(swDatabaseDirectory)->string());
    8979}
    9080
  • trunk/Source/WebKit/UIProcess/API/C/WKContextConfigurationRef.h

    r225690 r228019  
    4545WK_EXPORT void WKContextConfigurationSetIndexedDBDatabaseDirectory(WKContextConfigurationRef configuration, WKStringRef indexedDBDatabaseDirectory);
    4646
    47 WK_EXPORT WKStringRef WKContextConfigurationCopyServiceWorkerDatabaseDirectory(WKContextConfigurationRef configuration);
    48 WK_EXPORT void WKContextConfigurationSetServiceWorkerDatabaseDirectory(WKContextConfigurationRef configuration, WKStringRef swDatabaseDirectory);
    49 
    5047WK_EXPORT WKStringRef WKContextConfigurationCopyInjectedBundlePath(WKContextConfigurationRef configuration);
    5148WK_EXPORT void WKContextConfigurationSetInjectedBundlePath(WKContextConfigurationRef configuration, WKStringRef injectedBundlePath);
  • trunk/Source/WebKit/UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm

    r225911 r228019  
    7575String WebsiteDataStore::defaultServiceWorkerRegistrationDirectory()
    7676{
    77     return websiteDataDirectoryFileSystemRepresentation("ServiceWorkers");
     77    return cacheDirectoryFileSystemRepresentation("ServiceWorkers");
    7878}
    7979
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm

    r227943 r228019  
    265265}
    266266
     267- (NSString *)_serviceWorkerRegistrationDirectory
     268{
     269    return _websiteDataStore->websiteDataStore().serviceWorkerRegistrationDirectory();
     270}
     271
     272- (void)_setServiceWorkerRegistrationDirectory:(NSString *)directory
     273{
     274    _websiteDataStore->websiteDataStore().setServiceWorkerRegistrationDirectory(directory);
     275}
     276
    267277- (void)_setBoundInterfaceIdentifier:(NSString *)identifier
    268278{
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h

    r227943 r228019  
    4949@property (nonatomic, setter=_setCacheStoragePerOriginQuota:) NSUInteger _cacheStoragePerOriginQuota WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
    5050@property (nonatomic, setter=_setCacheStorageDirectory:) NSString* _cacheStorageDirectory WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
     51@property (nonatomic, setter=_setServiceWorkerRegistrationDirectory:) NSString* _serviceWorkerRegistrationDirectory WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
    5152
    5253@property (nonatomic, setter=_setBoundInterfaceIdentifier:) NSString *_boundInterfaceIdentifier WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
  • trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm

    r227790 r228019  
    404404}
    405405
    406 String WebProcessPool::legacyPlatformDefaultServiceWorkerRegistrationDirectory()
    407 {
    408     registerUserDefaultsIfNeeded();
    409 
    410     NSString *directory = [[NSUserDefaults standardUserDefaults] objectForKey:WebServiceWorkerRegistrationDirectoryDefaultsKey];
    411     if (!directory || ![directory isKindOfClass:[NSString class]])
    412         directory = @"~/Library/WebKit/ServiceWorkers";
    413     return stringByResolvingSymlinksInPath([directory stringByStandardizingPath]);
    414 }
    415 
    416406String WebProcessPool::legacyPlatformDefaultLocalStorageDirectory()
    417407{
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r227789 r228019  
    556556#if ENABLE(SERVICE_WORKER)
    557557        if (parameters.serviceWorkerRegistrationDirectory.isEmpty()) {
    558             parameters.serviceWorkerRegistrationDirectory = m_configuration->serviceWorkerRegistrationDirectory();
     558            parameters.serviceWorkerRegistrationDirectory = API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory();
    559559            SandboxExtension::createHandleForReadWriteDirectory(parameters.serviceWorkerRegistrationDirectory, parameters.serviceWorkerRegistrationDirectoryExtensionHandle);
    560560        }
     
    817817
    818818#if ENABLE(SERVICE_WORKER)
    819     parameters.hasRegisteredServiceWorkers = ServiceWorkerProcessProxy::hasRegisteredServiceWorkers(m_configuration->serviceWorkerRegistrationDirectory());
     819    String serviceWorkerRegistrationDirectory = websiteDataStore.resolvedServiceWorkerRegistrationDirectory();
     820    if (serviceWorkerRegistrationDirectory.isEmpty())
     821        serviceWorkerRegistrationDirectory = API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory();
     822    parameters.hasRegisteredServiceWorkers = ServiceWorkerProcessProxy::hasRegisteredServiceWorkers(serviceWorkerRegistrationDirectory);
    820823#endif
    821824
  • trunk/Source/WebKit/UIProcess/WebProcessPool.h

    r226325 r228019  
    394394    static String legacyPlatformDefaultLocalStorageDirectory();
    395395    static String legacyPlatformDefaultIndexedDBDatabaseDirectory();
    396     static String legacyPlatformDefaultServiceWorkerRegistrationDirectory();
    397396    static String legacyPlatformDefaultWebSQLDatabaseDirectory();
    398397    static String legacyPlatformDefaultMediaKeysStorageDirectory();
  • trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h

    r227762 r228019  
    108108    const String& cacheStorageDirectory() const { return m_resolvedConfiguration.cacheStorageDirectory; }
    109109    void setCacheStorageDirectory(String&& directory) { m_resolvedConfiguration.cacheStorageDirectory = WTFMove(directory); }
     110    const String& serviceWorkerRegistrationDirectory() const { return m_resolvedConfiguration.serviceWorkerRegistrationDirectory; }
     111    void setServiceWorkerRegistrationDirectory(String&& directory) { m_resolvedConfiguration.serviceWorkerRegistrationDirectory = WTFMove(directory); }
    110112
    111113    WebResourceLoadStatisticsStore* resourceLoadStatistics() const { return m_resourceLoadStatistics.get(); }
  • trunk/Source/WebKit/UIProcess/gtk/WebProcessPoolGtk.cpp

    r225490 r228019  
    107107}
    108108
    109 String WebProcessPool::legacyPlatformDefaultServiceWorkerRegistrationDirectory()
    110 {
    111     return API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory();
    112 }
    113 
    114109String WebProcessPool::legacyPlatformDefaultLocalStorageDirectory()
    115110{
  • trunk/Source/WebKit/UIProcess/wpe/WebProcessPoolWPE.cpp

    r225490 r228019  
    112112}
    113113
    114 String WebProcessPool::legacyPlatformDefaultServiceWorkerRegistrationDirectory()
    115 {
    116     // FIXME: Implement when implementing ServiceWorkers
    117     notImplemented();
    118     return String();
    119 }
    120 
    121114String WebProcessPool::legacyPlatformDefaultLocalStorageDirectory()
    122115{
  • trunk/Tools/ChangeLog

    r228014 r228019  
     12018-02-02  Youenn Fablet  <youenn@apple.com>
     2
     3        Configure serviceWorkerRegistrationDirectory on the web site data store and move it to a Caches subfolder as a default
     4        https://bugs.webkit.org/show_bug.cgi?id=182403
     5
     6        Reviewed by Alex Christensen.
     7
     8        * WebKitTestRunner/TestController.cpp:
     9        (WTR::TestController::generateContextConfiguration const):
     10        * WebKitTestRunner/cocoa/TestControllerCocoa.mm:
     11        (WTR::initializeWebViewConfiguration):
     12
    1132018-02-02  Carlos Garcia Campos  <cgarcia@igalia.com>
    214
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r227933 r228019  
    412412        WKContextConfigurationSetDiskCacheDirectory(configuration.get(), toWK(temporaryFolder + separator + "Cache").get());
    413413        WKContextConfigurationSetIndexedDBDatabaseDirectory(configuration.get(), toWK(temporaryFolder + separator + "Databases" + separator + "IndexedDB").get());
    414         WKContextConfigurationSetServiceWorkerDatabaseDirectory(configuration.get(), toWK(temporaryFolder + separator + "ServiceWorkers").get());
    415414        WKContextConfigurationSetLocalStorageDirectory(configuration.get(), toWK(temporaryFolder + separator + "LocalStorage").get());
    416415        WKContextConfigurationSetWebSQLDatabaseDirectory(configuration.get(), toWK(temporaryFolder + separator + "Databases" + separator + "WebSQL").get());
  • trunk/Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm

    r227943 r228019  
    8484        String cacheStorageDirectory = String(libraryPath) + '/' + "CacheStorage";
    8585        [poolWebsiteDataStore _setCacheStorageDirectory: cacheStorageDirectory];
     86
     87        String serviceWorkerRegistrationDirectory = String(libraryPath) + '/' + "ServiceWorkers";
     88        [poolWebsiteDataStore _setServiceWorkerRegistrationDirectory: serviceWorkerRegistrationDirectory];
    8689    }
    8790
Note: See TracChangeset for help on using the changeset viewer.