[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