[webkit-changes] [WebKit/WebKit] b4877c: Add WKWebsiteDataStore SPI to restore Local Storag...

Rupin Mittal noreply at github.com
Tue Dec 10 16:31:09 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b4877c19e09871c820b1b3aa103cff506defec42
      https://github.com/WebKit/WebKit/commit/b4877c19e09871c820b1b3aa103cff506defec42
  Author: Rupin Mittal <rupin at apple.com>
  Date:   2024-12-10 (Tue, 10 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.cpp
    M Source/WebKit/NetworkProcess/storage/MemoryStorageArea.h
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
    M Source/WebKit/NetworkProcess/storage/SQLiteStorageArea.cpp
    M Source/WebKit/NetworkProcess/storage/SQLiteStorageArea.h
    M Source/WebKit/NetworkProcess/storage/StorageAreaBase.h
    M Source/WebKit/Shared/WebsiteData/WebsiteDataType.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/Tests/WebKitCocoa/RestoreLocalStorage.mm

  Log Message:
  -----------
  Add WKWebsiteDataStore SPI to restore Local Storage data
https://bugs.webkit.org/show_bug.cgi?id=284091
rdar://141009843

Reviewed by Sihui Liu, Chris Dumez, and Brady Eidson.

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.

The first part (fetch) has already landed: https://commits.webkit.org/287349@main.

This patch adds an SPI (which will eventually go through API
review) that does the second part of the restoration (restore).

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::restoreLocalStorage):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/NetworkProcess/storage/LocalStorageManager.cpp:
(WebKit::LocalStorageManager::ensureLocalStorageArea):
(WebKit::LocalStorageManager::connectToLocalStorageArea):
(WebKit::LocalStorageManager::ensureTransientLocalStorageArea):
(WebKit::LocalStorageManager::connectToTransientLocalStorageArea):
(WebKit::LocalStorageManager::populateStorageArea):
(WebKit::LocalStorageManager::protectedLocalStorageArea const): Deleted.
* Source/WebKit/NetworkProcess/storage/LocalStorageManager.h:
* Source/WebKit/NetworkProcess/storage/MemoryStorageArea.cpp:
(WebKit::MemoryStorageArea::setItem):
* Source/WebKit/NetworkProcess/storage/MemoryStorageArea.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::fetchLocalStorage):
(WebKit::NetworkStorageManager::restoreLocalStorage):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/SQLiteStorageArea.cpp:
(WebKit::SQLiteStorageArea::setItem):
* Source/WebKit/NetworkProcess/storage/SQLiteStorageArea.h:
* Source/WebKit/NetworkProcess/storage/StorageAreaBase.h:
* Source/WebKit/Shared/WebsiteData/WebsiteDataType.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(filterSupportedTypes):
(-[WKWebsiteDataStore _fetchDataOfTypes:completionHandler:]):
(-[WKWebsiteDataStore _restoreData:completionHandler:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::fetchLocalStorage):
(WebKit::NetworkProcessProxy::restoreLocalStorage):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchLocalStorage):
(WebKit::WebsiteDataStore::restoreLocalStorage):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/RestoreLocalStorage.mm:
(testRestoreLocalStorage):
(TEST(WebKit, RestoreLocalStorageFromPersistentDataStore)):
(TEST(WebKit, RestoreLocalStorageFromEphemeralDataStore)):
(item):
(RestoreLocalStorageFromPersistentDataStoreThirdPartyIFrame)):
(RestoreLocalStorageFromEphemeralDataStoreThirdPartyIFrame)):
(testFetchLocalStorage): Deleted.
(TEST(WebKit, FetchLocalStorageFromPersistentDataStore)): Deleted.
(TEST(WebKit, FetchLocalStorageFromEphemeralDataStore)): Deleted.
(setItem): Deleted.
(FetchLocalStorageFromPersistentDataStoreThirdPartyIFrame)): Deleted.
(FetchLocalStorageFromEphemeralDataStoreThirdPartyIFrame)): Deleted.

Canonical link: https://commits.webkit.org/287641@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