Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 5d9c260954a94cf6ce71bf69ab4b23c92b8e3e02
https://github.com/WebKit/WebKit/commit/5d9c260954a94cf6ce71bf69ab4b23c92b8e3e02
Author: Sihui Liu <[email protected]>
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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes