[webkit-changes] [WebKit/WebKit] f52abb: Add WKWebView SPI to fetch and restore Session Sto...
Rupin Mittal
noreply at github.com
Wed Dec 11 22:51:38 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: f52abbbacd4b9fd731e8a250e5e8c6379add50a5
https://github.com/WebKit/WebKit/commit/f52abbbacd4b9fd731e8a250e5e8c6379add50a5
Author: Rupin Mittal <rupin at apple.com>
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
More information about the webkit-changes
mailing list