[webkit-changes] [WebKit/WebKit] 5d9c26: Migrate CacheStorage data to origin directory

Sihui noreply at github.com
Fri Jan 6 18:37:37 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5d9c260954a94cf6ce71bf69ab4b23c92b8e3e02
      https://github.com/WebKit/WebKit/commit/5d9c260954a94cf6ce71bf69ab4b23c92b8e3e02
  Author: Sihui Liu <sihui_liu at apple.com>
  Date:   2023-01-06 (Fri, 06 Jan 2023)

  Changed paths:
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp
    M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
    M Source/WebKit/NetworkProcess/storage/CacheStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/CacheStorageManager.h
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
    M Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/OriginStorageManager.h
    A Source/WebKit/Shared/WebsiteData/UnifiedOriginStorageLevel.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
    M Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBFileName.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm

  Log Message:
  -----------
  Migrate CacheStorage data to origin directory
https://bugs.webkit.org/show_bug.cgi?id=250159
rdar://103931715

Reviewed by Youenn Fablet.

Each partitioned origin has a directory that stores data only that origin can access. The directory is owned by
OriginStorageManager. Now that CacheStorage is managed by OriginStorageManager, we could migrate its data from
CacheStorage directory to origin directory. This change has a few benefits:
1. Current CacheStorage directory is under Caches/, which could be evicted as http cache and does not match spec
(https://w3c.github.io/ServiceWorker/#cache-lifetimes). Moving CacheStorage data to origin direcotry will make it not
purgeable.
2. Current CacheStorage directory also separates data by origin -- in CacheStorage/, each origin has a directory, and
each origin directory has an origin file. By moving data to origin directory, we no longer need the duplicate origin
file and directory under CacheStorage/.
3. Client does not need to set a separate CacheStorageDirectory, WebKit would use GeneralStorageDirectory (where origin
directories are located) for different types.

When we did this (migrating data from custom directory to unified origin directory) for LocalStorage and IndexedDB,
we used a boolean shouldUseCustomStoragePaths to indicate whether the data should be put under origin directory. We
cannot reuse this binary-state flag, since there will be three states:
1. All types use custom directory (non-Cocoa platforms)
2. IndexdDB and LocalStorage use origin directory (Cocoa platforms nowadays)
3. CacheStorage, IndexdDB and LocalStorage use origin directory (Cocoa platforms after the change is shipped)
Therefore, this patch adds UnifiedOriginStorageLevel to replace shouldUseCustomStoragePaths, which can represent more
states.

Test: WKWebsiteDataStore.MigrateCacheStorageDataToGeneralStorageDirectory

* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::createNetworkStorageManager):
* Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp:
(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):
* Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h:
* Source/WebKit/NetworkProcess/storage/CacheStorageManager.cpp:
(WebKit::CacheStorageManager::cacheStorageOriginDirectory):
(WebKit::CacheStorageManager::copySaltFileToOriginDirectory):
(WebKit::CacheStorageManager::saltFilePath const):
(WebKit::CacheStorageManager::CacheStorageManager):
(WebKit::CacheStorageManager::cacheStorageSalt): Deleted.
* Source/WebKit/NetworkProcess/storage/CacheStorageManager.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::create):
(WebKit::NetworkStorageManager::NetworkStorageManager):
(WebKit::NetworkStorageManager::originStorageManager):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:
(WebKit::OriginStorageManager::StorageBucket::StorageBucket):
(WebKit::OriginStorageManager::StorageBucket::cacheStorageManager):
(WebKit::OriginStorageManager::StorageBucket::isEmpty):
(WebKit::OriginStorageManager::StorageBucket::fetchDataTypesInListFromDisk):
(WebKit::OriginStorageManager::StorageBucket::deleteCacheStorageData):
(WebKit::OriginStorageManager::StorageBucket::deleteEmptyDirectory):
(WebKit::OriginStorageManager::StorageBucket::resolvedLocalStoragePath):
(WebKit::OriginStorageManager::StorageBucket::resolvedIDBStoragePath):
(WebKit::OriginStorageManager::StorageBucket::resolvedCacheStoragePath):
(WebKit::OriginStorageManager::StorageBucket::resolvedPath):
(WebKit::OriginStorageManager::OriginStorageManager):
(WebKit::OriginStorageManager::defaultBucket):
(WebKit::OriginStorageManager::quotaManager):
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.h:
* Source/WebKit/Shared/WebsiteData/UnifiedOriginStorageLevel.h: Added.
(WebKit::convertToUnifiedOriginStorageLevel):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(toWKUnifiedOriginStorageLevel):
(toUnifiedOriginStorageLevel):
(-[_WKWebsiteDataStoreConfiguration unifiedOriginStorageLevel]):
(-[_WKWebsiteDataStoreConfiguration setUnifiedOriginStorageLevel:]):
(-[_WKWebsiteDataStoreConfiguration shouldUseCustomStoragePaths]): Deleted.
(-[_WKWebsiteDataStoreConfiguration setShouldUseCustomStoragePaths:]): Deleted.
* Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::defaultUnifiedOriginStorageLevel):
(WebKit::internalFeatureEnabled): Deleted.
(WebKit::WebsiteDataStore::defaultShouldUseCustomStoragePaths): Deleted.
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::parameters):
(WebKit::WebsiteDataStore::defaultUnifiedOriginStorageLevel):
(WebKit::WebsiteDataStore::defaultShouldUseCustomStoragePaths): Deleted.
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
(WebKit::WebsiteDataStoreConfiguration::WebsiteDataStoreConfiguration):
(WebKit::WebsiteDataStoreConfiguration::copy const):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
(WebKit::WebsiteDataStoreConfiguration::unifiedOriginStorageLevel const):
(WebKit::WebsiteDataStoreConfiguration::setUnifiedOriginStorageLevel):
(WebKit::WebsiteDataStoreConfiguration::shouldUseCustomStoragePaths const): Deleted.
(WebKit::WebsiteDataStoreConfiguration::setShouldUseCustomStoragePaths): Deleted.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBFileName.mm:
(runTest):
(TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm:
(TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
(runWebsiteDataStoreCustomPaths):
(TEST):

Canonical link: https://commits.webkit.org/258591@main




More information about the webkit-changes mailing list