[webkit-changes] [WebKit/WebKit] cb0774: [SOUP] Add support for the Cookie Store API

Patrick noreply at github.com
Sat Feb 1 20:13:57 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cb077473952d7036cceedb1a721502d74ee766c5
      https://github.com/WebKit/WebKit/commit/cb077473952d7036cceedb1a721502d74ee766c5
  Author: Patrick Griffis <pgriffis at igalia.com>
  Date:   2025-02-01 (Sat, 01 Feb 2025)

  Changed paths:
    M LayoutTests/imported/w3c/web-platform-tests/cookies/samesite/multiple-samesite-attributes.https-expected.txt
    M LayoutTests/platform/glib/TestExpectations
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_document_cookie.https.window-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_and_no_value.https.window-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_equals_in_value.https.window-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_multiple_values.https.window-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieListItem_attributes.https.any-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieListItem_attributes.https.any.serviceworker-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_delete_arguments.https.any-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_delete_arguments.https.any.serviceworker-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_event_delete.https.window-expected.txt
    M LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_get_set_across_origins.sub.https-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/encoding.https.any-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/encoding.https.any.serviceworker-expected.txt
    M LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/serviceworker_cookieStore_cross_origin.https.sub-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/attributes/attributes-ctl.sub-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/attributes/domain.sub-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/name/name-ctl-expected.txt
    M LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/name/name-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__host.document-cookie-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__host.document-cookie.https-expected.txt
    M LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__host.header-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__host.header.https-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__secure.document-cookie-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__secure.document-cookie.https-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__secure.header-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__secure.header.https-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/document-cookie.non-secure-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/samesite-none-secure/cookies-without-samesite-must-be-secure.https-expected.txt
    R LayoutTests/platform/gtk/imported/w3c/web-platform-tests/cookies/attributes/attributes-ctl.sub-expected.txt
    R LayoutTests/platform/gtk/imported/w3c/web-platform-tests/cookies/attributes/domain.sub-expected.txt
    M Source/WTF/wtf/PlatformHave.h
    M Source/WebCore/platform/network/NetworkStorageSession.cpp
    M Source/WebCore/platform/network/NetworkStorageSession.h
    M Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp
    M Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp
    M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
    M Source/WebKit/PlatformWPE.cmake
    M Source/WebKit/SourcesGTK.txt
    M Source/WebKit/SourcesWPE.txt
    M Source/WebKit/WebProcess/WebPage/WebCookieCache.cpp
    A Source/WebKit/WebProcess/WebPage/soup/WebCookieCacheSoup.cpp

  Log Message:
  -----------
  [SOUP] Add support for the Cookie Store API
https://bugs.webkit.org/show_bug.cgi?id=286189

Reviewed by Michael Catanzaro.

NetworkStorageSession had two methods that soup did not implement: cookiesForDOMAsVector() and setCookieFromDOM()

These methods were implemented matching macOS' behavior along with some minor refactoring to ensure all cookie code-paths do the same thing.

Once these methods are implemented it depends on the HAVE(COOKIE_CHANGE_LISTENER_API) build option, this involves calling out from the
cookiesDidChange to observers managed with startListeningForCookieChangeNotifications()/stopListeningForCookieChangeNotifications().

Enabling that option then enables WebCookieCache, a cache of cookies maintained in the WebProcess, WebCookieCacheSoup.cpp just
makes an in-memory SoupCookieJar.

In order to test these changes the cookies tests in web-platform-tests were ran, these were largely just outdated so had
to be rebaselined.

* LayoutTests/imported/w3c/web-platform-tests/cookies/samesite/multiple-samesite-attributes.https-expected.txt:
* LayoutTests/platform/glib/TestExpectations:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_document_cookie.https.window-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_and_no_value.https.window-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_equals_in_value.https.window-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_multiple_values.https.window-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieListItem_attributes.https.any-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieListItem_attributes.https.any.serviceworker-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_delete_arguments.https.any-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_delete_arguments.https.any.serviceworker-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_get_set_across_origins.sub.https-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/encoding.https.any-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/encoding.https.any.serviceworker-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/serviceworker_cookieStore_cross_origin.https.sub-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/attributes/attributes-ctl.sub-expected.txt: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/cookies/attributes/attributes-ctl.sub-expected.txt.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/attributes/domain.sub-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/attributes/invalid-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/attributes/max-age-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/name/name-ctl-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/name/name-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__host.document-cookie-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__host.document-cookie.https-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__host.header-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__host.header.https-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__secure.document-cookie-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__secure.document-cookie.https-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__secure.header-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/__secure.header.https-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/prefix/document-cookie.non-secure-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/samesite-none-secure/cookies-without-samesite-must-be-secure.https-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/value/value-ctl-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/value/value-expected.txt:
* LayoutTests/platform/gtk/imported/w3c/web-platform-tests/cookies/attributes/domain.sub-expected.txt: Removed.
* Source/WTF/wtf/PlatformHave.h:
* Source/WebCore/platform/network/NetworkStorageSession.cpp:
* Source/WebCore/platform/network/NetworkStorageSession.h:
* Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:
(WebCore::NetworkStorageSession::NetworkStorageSession):
(WebCore::NetworkStorageSession::cookiesDidChange):
(WebCore::NetworkStorageSession::setCookieStorage):
(WebCore::NetworkStorageSession::getCredentialFromPersistentStorage):
(WebCore::NetworkStorageSession::saveCredentialToPersistentStorage):
(WebCore::NetworkStorageSession::setCookieFromDOM const):
(WebCore::NetworkStorageSession::replaceCookies):
(WebCore:: const):
(WebCore::cookiesToHeader):
(WebCore::NetworkStorageSession::getRawCookies const):
(WebCore::NetworkStorageSession::domCookiesForHost):
(WebCore::NetworkStorageSession::cookiesForDOM const):
(WebCore::NetworkStorageSession::cookiesForDOMAsVector const):
(WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const):
(WebCore::NetworkStorageSession::startListeningForCookieChangeNotifications):
(WebCore::NetworkStorageSession::stopListeningForCookieChangeNotifications):
(WebCore::cookiesForSession): Deleted.
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::shouldTreatAsSameSite):
* Source/WebKit/PlatformWPE.cmake:
* Source/WebKit/SourcesGTK.txt:
* Source/WebKit/SourcesWPE.txt:
* Source/WebKit/WebProcess/WebPage/WebCookieCache.cpp:
* Source/WebKit/WebProcess/WebPage/soup/WebCookieCacheSoup.cpp: Added.
(WebKit::WebCookieCache::inMemoryStorageSession):

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