[webkit-changes] [WebKit/WebKit] 1767a0: Add a functional background fetch backend

youennf noreply at github.com
Tue Feb 28 03:01:02 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1767a09f5be8c26c8b4e95a11cfe9af937a0f114
      https://github.com/WebKit/WebKit/commit/1767a09f5be8c26c8b4e95a11cfe9af937a0f114
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2023-02-28 (Tue, 28 Feb 2023)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/imported/w3c/web-platform-tests/background-fetch/abort.https.window-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/background-fetch/content-security-policy.https.window-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/background-fetch/fetch-uploads.https.window-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/background-fetch/fetch.https.window-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/background-fetch/get-ids.https.window-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/background-fetch/get.https.window-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/background-fetch/match.https.window-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/background-fetch/mixed-content-and-allowed-schemes.https.window-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/background-fetch/port-blocking.https.window-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/background-fetch/update-ui.https.window-expected.txt
    M Source/WebCore/Headers.cmake
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h
    M Source/WebCore/workers/service/WorkerSWClientConnection.cpp
    A Source/WebCore/workers/service/background-fetch/BackgroundFetch.cpp
    A Source/WebCore/workers/service/background-fetch/BackgroundFetch.h
    A Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.cpp
    A Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.h
    A Source/WebCore/workers/service/background-fetch/BackgroundFetchRecordLoader.h
    A Source/WebCore/workers/service/background-fetch/BackgroundFetchStore.h
    M Source/WebCore/workers/service/context/SWContextManager.cpp
    M Source/WebCore/workers/service/context/SWContextManager.h
    M Source/WebCore/workers/service/context/ServiceWorkerThread.cpp
    M Source/WebCore/workers/service/context/ServiceWorkerThread.h
    M Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp
    M Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.h
    M Source/WebCore/workers/service/server/SWServer.cpp
    M Source/WebCore/workers/service/server/SWServer.h
    M Source/WebCore/workers/service/server/SWServerDelegate.h
    M Source/WebCore/workers/service/server/SWServerToContextConnection.h
    A Source/WebKit/NetworkProcess/BackgroundFetchLoad.cpp
    A Source/WebKit/NetworkProcess/BackgroundFetchLoad.h
    M Source/WebKit/NetworkProcess/NetworkLoadChecker.h
    M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.h
    M Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp
    M Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h
    A Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.cpp
    A Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.h
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
    M Source/WebKit/Sources.txt
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp
    M Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h
    M Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in

  Log Message:
  -----------
  Add a functional background fetch backend
https://bugs.webkit.org/show_bug.cgi?id=252657
rdar://problem/105720611

Reviewed by Chris Dumez and Sihui Liu.

Implement background fetch backend as follows:
- BackgroundFetchEngine is the class that is used by SWServer to implement the background fetch functionality
- BackgroundFetch represents a back ground fetch and has BackgroundFetch::Record(s).
- BackgroundFetchRecordLoader and its BackgroundFetchLoad implementation is about the actual network load.
- BackgroundFetchStore and its WebKit implementation BackgroundFetchStoreImpl allow storing background fetches.
BackgroundFetchStoreImpl is currently an empty shell.

Covered by rebased tests.

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/background-fetch/abort.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/background-fetch/content-security-policy.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/background-fetch/fetch-uploads.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/background-fetch/fetch.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/background-fetch/get-ids.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/background-fetch/get.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/background-fetch/match.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/background-fetch/mixed-content-and-allowed-schemes.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/background-fetch/port-blocking.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/background-fetch/update-ui.https.window-expected.txt:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:
* Source/WebCore/workers/service/background-fetch/BackgroundFetch.cpp: Added.
(WebCore::BackgroundFetch::BackgroundFetch):
(WebCore::BackgroundFetch::~BackgroundFetch):
(WebCore::BackgroundFetch::information const):
(WebCore::BackgroundFetch::match):
(WebCore::BackgroundFetch::abort):
(WebCore::BackgroundFetch::perform):
(WebCore::BackgroundFetch::storeResponse):
(WebCore::BackgroundFetch::storeResponseBodyChunk):
(WebCore::BackgroundFetch::didSendData):
(WebCore::BackgroundFetch::didFinishRecord):
(WebCore::BackgroundFetch::handleStoreResult):
(WebCore::BackgroundFetch::recordIsCompleted):
(WebCore::BackgroundFetch::updateBackgroundFetchStatus):
(WebCore::BackgroundFetch::unsetRecordsAvailableFlag):
(WebCore::BackgroundFetch::Record::Record):
(WebCore::BackgroundFetch::Record::~Record):
(WebCore::BackgroundFetch::Record::isMatching const):
(WebCore::BackgroundFetch::Record::information const):
(WebCore::BackgroundFetch::Record::complete):
(WebCore::BackgroundFetch::Record::abort):
(WebCore::BackgroundFetch::Record::didSendData):
(WebCore::BackgroundFetch::Record::didReceiveResponse):
(WebCore::BackgroundFetch::Record::didReceiveResponseBodyChunk):
(WebCore::BackgroundFetch::Record::didFinish):
(WebCore::BackgroundFetch::Record::retrieveResponse):
(WebCore::BackgroundFetch::Record::retrieveRecordResponseBody):
* Source/WebCore/workers/service/background-fetch/BackgroundFetch.h: Added.
(WebCore::BackgroundFetch::identifier const):
(WebCore::BackgroundFetch::Record::create):
(WebCore::BackgroundFetch::Record::setAsCompleted):
(WebCore::BackgroundFetch::Record::isCompleted const):
(WebCore::BackgroundFetch::Record::responseDataSize const):
(WebCore::BackgroundFetch::isActive const):
(WebCore::BackgroundFetch::origin const):
(WebCore::BackgroundFetch::downloadTotal const):
(WebCore::BackgroundFetch::uploadTotal const):
* Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.cpp: Added.
(WebCore::BackgroundFetchEngine::BackgroundFetchEngine):
(WebCore::BackgroundFetchEngine::startBackgroundFetch):
(WebCore::BackgroundFetchEngine::notifyBackgroundFetchUpdate):
(WebCore::BackgroundFetchEngine::backgroundFetchInformation):
(WebCore::BackgroundFetchEngine::backgroundFetchIdentifiers):
(WebCore::BackgroundFetchEngine::abortBackgroundFetch):
(WebCore::BackgroundFetchEngine::matchBackgroundFetch):
(WebCore::BackgroundFetchEngine::remove):
(WebCore::BackgroundFetchEngine::retrieveRecordResponse):
(WebCore::BackgroundFetchEngine::retrieveRecordResponseBody):
* Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.h: Added.
* Source/WebCore/workers/service/background-fetch/BackgroundFetchRecordLoader.h: Added.
* Source/WebCore/workers/service/background-fetch/BackgroundFetchStore.h: Added.
(WebCore::BackgroundFetchStore::clearRecords):
(WebCore::BackgroundFetchStore::clearAllRecords):
* Source/WebCore/workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::fireBackgroundFetchEvent):
* Source/WebCore/workers/service/context/SWContextManager.h:
* Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::queueTaskToFireBackgroundFetchEvent):
* Source/WebCore/workers/service/context/ServiceWorkerThread.h:
* Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::fireBackgroundFetchEvent):
* Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.h:
* Source/WebCore/workers/service/server/SWServer.cpp:
(WebCore::SWServer::removeRegistration):
(WebCore::SWServer::fireBackgroundFetchEvent):
(WebCore::SWServer::backgroundFetchEngine):
(WebCore::SWServer::Connection::startBackgroundFetch):
(WebCore::SWServer::Connection::backgroundFetchInformation):
(WebCore::SWServer::Connection::backgroundFetchIdentifiers):
(WebCore::SWServer::Connection::abortBackgroundFetch):
(WebCore::SWServer::Connection::matchBackgroundFetch):
(WebCore::SWServer::Connection::retrieveRecordResponse):
(WebCore::SWServer::Connection::retrieveRecordResponseBody):
* Source/WebCore/workers/service/server/SWServer.h:
(WebCore::SWServer::createBackgroundFetchRecordLoader):
(WebCore::SWServer::requestBackgroundFetchSpace):
(WebCore::SWServer::createBackgroundFetchStore):
* Source/WebCore/workers/service/server/SWServerDelegate.h:
* Source/WebCore/workers/service/server/SWServerToContextConnection.h:
* Source/WebKit/NetworkProcess/BackgroundFetchLoad.cpp: Added.
(WebKit::toSecurityOrigin):
(WebKit::BackgroundFetchLoad::BackgroundFetchLoad):
(WebKit::BackgroundFetchLoad::initialize):
(WebKit::BackgroundFetchLoad::~BackgroundFetchLoad):
(WebKit::BackgroundFetchLoad::abort):
(WebKit::BackgroundFetchLoad::didFinish):
(WebKit::BackgroundFetchLoad::loadRequest):
(WebKit::BackgroundFetchLoad::willPerformHTTPRedirection):
(WebKit::BackgroundFetchLoad::didReceiveChallenge):
(WebKit::BackgroundFetchLoad::didReceiveResponse):
(WebKit::BackgroundFetchLoad::didReceiveData):
(WebKit::BackgroundFetchLoad::didCompleteWithError):
(WebKit::BackgroundFetchLoad::didSendData):
(WebKit::BackgroundFetchLoad::wasBlocked):
(WebKit::BackgroundFetchLoad::cannotShowURL):
(WebKit::BackgroundFetchLoad::wasBlockedByRestrictions):
(WebKit::BackgroundFetchLoad::wasBlockedByDisabledFTP):
(WebKit::BackgroundFetchLoad::currentURL const):
* Source/WebKit/NetworkProcess/BackgroundFetchLoad.h: Added.
* Source/WebKit/NetworkProcess/NetworkLoadChecker.h:
(WebKit::NetworkLoadChecker::origin const):
(WebKit::NetworkLoadChecker::topOrigin const):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::createBackgroundFetchRecordLoader):
(WebKit::NetworkSession::requestBackgroundFetchSpace):
(WebKit::NetworkSession::createBackgroundFetchStore):
* Source/WebKit/NetworkProcess/NetworkSession.h:
* Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::fireBackgroundFetchEvent):
* Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
* Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.cpp: Added.
* Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.h: Added.
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::createBackgroundFetchStore):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/Sources.txt:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::fireBackgroundFetchEvent):
* Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h:
* Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in:

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




More information about the webkit-changes mailing list