[webkit-changes] [WebKit/WebKit] 526873: Add WKWebsiteDataStore SPI to fetch Local Storage ...
Rupin Mittal
noreply at github.com
Wed Dec 4 09:57:37 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 5268730b8463f96170dfe8dbbcb3badf1d3bc3ec
https://github.com/WebKit/WebKit/commit/5268730b8463f96170dfe8dbbcb3badf1d3bc3ec
Author: Rupin Mittal <rupin at apple.com>
Date: 2024-12-04 (Wed, 04 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/MemoryStorageArea.h
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
M Tools/TestWebKitAPI/SourcesCocoa.txt
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
A Tools/TestWebKitAPI/Tests/WebKitCocoa/RestoreLocalStorage.mm
Log Message:
-----------
Add WKWebsiteDataStore SPI to fetch Local Storage data
https://bugs.webkit.org/show_bug.cgi?id=283593
rdar://140440709
Reviewed by Sihui Liu.
Some clients may want to restore the local storage of ephemeral
data stores. (For example, Safari restoring the local storage of
private browsing tabs).
The restoration process will have two parts:
1. Client fetches the local storage data from WebKit and holds onto it.
2. Client gives back the data to WebKit to restore it.
This patch adds an SPI (which will eventually go through API
review) that does the first part of the restoration (fetch).
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.
For now the tests simply check that the returned NSData is not null.
But once we add restoration as well, we'll modify the tests to test
that the data returned is the correct data too.
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::fetchLocalStorage):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/NetworkProcess/storage/LocalStorageManager.cpp:
(WebKit::LocalStorageManager::fetchStorageMap const):
* Source/WebKit/NetworkProcess/storage/LocalStorageManager.h:
* Source/WebKit/NetworkProcess/storage/MemoryStorageArea.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::fetchLocalStorage):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _fetchDataOfTypes:completionHandler:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::fetchLocalStorage):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchLocalStorage):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/RestoreLocalStorage.mm: Added.
(testFetchLocalStorage):
(TEST(WebKit, FetchLocalStorageFromPersistentDataStore)):
(TEST(WebKit, FetchLocalStorageFromEphemeralDataStore)):
(-[RestoreLocalStorageMessageHandler userContentController:didReceiveScriptMessage:]):
(postMessage):
(setItem):
(FetchLocalStorageFromPersistentDataStoreThirdPartyIFrame)):
(FetchLocalStorageFromEphemeralDataStoreThirdPartyIFrame)):
Canonical link: https://commits.webkit.org/287349@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