[webkit-changes] [WebKit/WebKit] 5a9cae: Add support for Background Fetch persistent storage

youennf noreply at github.com
Wed Mar 1 01:40:50 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5a9caebbb042cd1aebc44514f8a6bdf036f3478b
      https://github.com/WebKit/WebKit/commit/5a9caebbb042cd1aebc44514f8a6bdf036f3478b
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2023-03-01 (Wed, 01 Mar 2023)

  Changed paths:
    A LayoutTests/http/wpt/background-fetch/background-fetch-persistency.window-expected.txt
    A LayoutTests/http/wpt/background-fetch/background-fetch-persistency.window.html
    A LayoutTests/http/wpt/background-fetch/background-fetch-persistency.window.js
    A LayoutTests/http/wpt/background-fetch/resources/trickle.py
    M LayoutTests/http/wpt/background-fetch/sw.js
    M LayoutTests/platform/glib/TestExpectations
    M Source/WebCore/Headers.cmake
    M Source/WebCore/platform/WebCorePersistentCoders.cpp
    M Source/WebCore/platform/WebCorePersistentCoders.h
    M Source/WebCore/workers/service/ServiceWorkerRegistrationKey.cpp
    M Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h
    M Source/WebCore/workers/service/background-fetch/BackgroundFetch.cpp
    M Source/WebCore/workers/service/background-fetch/BackgroundFetch.h
    M Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.cpp
    M Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.h
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.cpp
    M Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.h
    A Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreManager.cpp
    A Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreManager.h
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
    M Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/OriginStorageManager.h
    M Source/WebKit/Shared/WebsiteData/WebsiteData.cpp
    M Source/WebKit/Shared/WebsiteData/WebsiteDataType.h
    M Source/WebKit/Shared/WebsiteData/WebsiteDataType.serialization.in
    M Source/WebKit/Sources.txt
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj

  Log Message:
  -----------
  Add support for Background Fetch persistent storage
https://bugs.webkit.org/show_bug.cgi?id=252831
rdar://problem/105835505

Reviewed by Sihui Liu.

Implement BackgroundFetchStoreImpl by introducing BackgroundFetchStoreManager which is responsible for reading and writing files.
BackgroundFetchStoreManager runs in NetworkStorageManager work queue and is created by OriginStorageManager.
We introduce a helper routine to get a BackgroundFetchStoreManager from its NetworkStorageManager from main thread via a Function.
We introduce a way to push stored background fetches to BackgroundFetchEngine when loading a given BackgroundFetchStoreManager.

Covered by LayoutTests/http/wpt/background-fetch/background-fetch-persistency.window.html.

* LayoutTests/http/wpt/background-fetch/background-fetch-persistency.window-expected.txt: Added.
* LayoutTests/http/wpt/background-fetch/background-fetch-persistency.window.html: Added.
* LayoutTests/http/wpt/background-fetch/background-fetch-persistency.window.js: Added.
(promise_test.async t):
* LayoutTests/http/wpt/background-fetch/resources/trickle.py: Added.
(main):
* LayoutTests/http/wpt/background-fetch/sw.js:
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/Headers.cmake:
* Source/WebCore/platform/WebCorePersistentCoders.cpp:
(WTF::Persistence::Coder<WebCore::ImageResource>::encode):
(WTF::Persistence::Coder<WebCore::ImageResource>::decode):
* Source/WebCore/platform/WebCorePersistentCoders.h:
* Source/WebCore/workers/service/ServiceWorkerRegistrationKey.cpp:
(WebCore::ServiceWorkerRegistrationKey::clientOrigin const):
* Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:
* Source/WebCore/workers/service/background-fetch/BackgroundFetch.cpp:
(WebCore::BackgroundFetch::BackgroundFetch):
(WebCore::BackgroundFetch::didFinishRecord):
(WebCore::BackgroundFetch::recordIsCompleted):
(WebCore::BackgroundFetch::Record::didFinish):
(WebCore::BackgroundFetch::doStore):
(WebCore::BackgroundFetch::createFromStore):
* Source/WebCore/workers/service/background-fetch/BackgroundFetch.h:
(WebCore::BackgroundFetch::registrationKey const):
(WebCore::BackgroundFetch::setRecords):
* Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.cpp:
(WebCore::BackgroundFetchEngine::addFetchFromStore):
* Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.h:
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::createBackgroundFetchStore):
* Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.cpp:
(WebKit::BackgroundFetchStoreImpl::BackgroundFetchStoreImpl):
(WebKit::BackgroundFetchStoreImpl::getFilename):
(WebKit::BackgroundFetchStoreImpl::initializeFetches):
(WebKit::BackgroundFetchStoreImpl::clearFetch):
(WebKit::BackgroundFetchStoreImpl::clearAllFetches):
(WebKit::BackgroundFetchStoreImpl::storeFetch):
(WebKit::BackgroundFetchStoreImpl::storeFetchResponseBodyChunk):
(WebKit::BackgroundFetchStoreImpl::retrieveResponseBody):
* Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.h:
(WebKit::BackgroundFetchStoreImpl::create):
* Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreManager.cpp: Added.
(WebKit::shouldUseFileMapping):
(WebKit::BackgroundFetchStoreManager::createNewStorageIdentifier):
(WebKit::BackgroundFetchStoreManager::BackgroundFetchStoreManager):
(WebKit::BackgroundFetchStoreManager::~BackgroundFetchStoreManager):
(WebKit::BackgroundFetchStoreManager::initializeFetches):
(WebKit::BackgroundFetchStoreManager::clearFetch):
(WebKit::BackgroundFetchStoreManager::clearAllFetches):
(WebKit::BackgroundFetchStoreManager::storeFetch):
(WebKit::createFetchResponseBodyFile):
(WebKit::BackgroundFetchStoreManager::storeFetchResponseBodyChunk):
(WebKit::BackgroundFetchStoreManager::retrieveResponseBody):
* Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreManager.h: Added.
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::dispatchTaskToBackgroundFetchManager):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:
(WebKit::OriginStorageManager::StorageBucket::toStorageType const):
(WebKit::OriginStorageManager::StorageBucket::toStorageIdentifier const):
(WebKit::OriginStorageManager::StorageBucket::backgroundFetchManager):
(WebKit::OriginStorageManager::StorageBucket::resolvedBackgroundFetchStoragePath):
(WebKit::OriginStorageManager::StorageBucket::resolvedPath):
(WebKit::OriginStorageManager::backgroundFetchManager):
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.h:
* Source/WebKit/Shared/WebsiteData/WebsiteData.cpp:
(WebKit::WebsiteData::ownerProcess):
* Source/WebKit/Shared/WebsiteData/WebsiteDataType.h:
* Source/WebKit/Shared/WebsiteData/WebsiteDataType.serialization.in:
* Source/WebKit/Sources.txt:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:

Canonical link: https://commits.webkit.org/260990@main




More information about the webkit-changes mailing list