Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: f52abbbacd4b9fd731e8a250e5e8c6379add50a5
https://github.com/WebKit/WebKit/commit/f52abbbacd4b9fd731e8a250e5e8c6379add50a5
Author: Rupin Mittal <[email protected]>
Date: 2024-12-11 (Wed, 11 Dec 2024)
Changed paths:
M Source/WebKit/NetworkProcess/NetworkProcess.cpp
M Source/WebKit/NetworkProcess/NetworkProcess.h
M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
M Source/WebKit/NetworkProcess/storage/LocalStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/LocalStorageManager.h
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
M Source/WebKit/NetworkProcess/storage/SessionStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/SessionStorageManager.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
M Tools/TestWebKitAPI/SourcesCocoa.txt
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
M Tools/TestWebKitAPI/Tests/WebKitCocoa/RestoreLocalStorage.mm
A Tools/TestWebKitAPI/Tests/WebKitCocoa/RestoreSessionStorage.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/TextWidth.mm
Log Message:
-----------
Add WKWebView SPI to fetch and restore Session Storage data
https://bugs.webkit.org/show_bug.cgi?id=283503
rdar://140356755
Reviewed by Sihui Liu and Wenson Hsieh.
Some users may want Session Storage to be restored after a software
update. So we want to allow clients (Safari) to fetch this storage
and then later restore it.
The restoration process will have two parts:
1. Client fetches the session storage data from WebKit and holds onto it.
2. Client gives back the data to WebKit to restore it.
This patch adds SPI for fetch and restore--and will eventually go through
API review.
The SPI works for both ephemeral and persistent data stores, so there is
an API test for each. The SPI also works for both first party storage and
for third party storage, so there are API tests for each.
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::fetchSessionStorage):
(WebKit::NetworkProcess::restoreSessionStorage):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/NetworkProcess/storage/LocalStorageManager.cpp:
(WebKit::LocalStorageManager::setStorageMap):
(WebKit::LocalStorageManager::populateStorageArea): Deleted.
* Source/WebKit/NetworkProcess/storage/LocalStorageManager.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::fetchSessionStorageForWebPage):
(WebKit::NetworkStorageManager::restoreSessionStorageForWebPage):
(WebKit::NetworkStorageManager::restoreLocalStorage):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/SessionStorageManager.cpp:
(WebKit::SessionStorageManager::fetchStorageMap):
(WebKit::SessionStorageManager::setStorageMap):
* Source/WebKit/NetworkProcess/storage/SessionStorageManager.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _fetchDataOfTypes:completionHandler:]):
(-[WKWebView _restoreData:completionHandler:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _fetchDataOfTypes:completionHandler:]):
(-[WKWebsiteDataStore _restoreData:completionHandler:]):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::fetchSessionStorage):
(WebKit::WebPageProxy::restoreSessionStorage):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchLocalStorage):
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/RestoreLocalStorage.mm:
(TEST(WebKit, RestoreLocalStorageFromPersistentDataStore)):
(TEST(WebKit, RestoreLocalStorageFromEphemeralDataStore)):
(RestoreLocalStorageFromPersistentDataStoreThirdPartyIFrame)):
(RestoreLocalStorageFromEphemeralDataStoreThirdPartyIFrame)):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/RestoreSessionStorage.mm: Copied
froTools/TestWebKitAPI/Tests/WebKitCocoa/RestoreLocalStorage.mm.
(testRestoreSessionStorage):
(TEST(WebKit, RestoreSessionStorageFromPersistentDataStore)):
(TEST(WebKit, RestoreSessionStorageFromEphemeralDataStore)):
(-[RestoreSessionStorageMessageHandler
userContentController:didReceiveScriptMessage:]):
(postMessage):
(item):
(RestoreSessionStorageFromPersistentDataStoreThirdPartyIFrame)):
(RestoreSessionStorageFromEphemeralDataStoreThirdPartyIFrame)):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/TextWidth.mm:
Canonical link: https://commits.webkit.org/287729@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes