Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cf54cd7ce1f0251c089ef4c68d2ec14e05c04058
      
https://github.com/WebKit/WebKit/commit/cf54cd7ce1f0251c089ef4c68d2ec14e05c04058
  Author: Sihui Liu <[email protected]>
  Date:   2026-01-15 (Thu, 15 Jan 2026)

  Changed paths:
    M Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h
    M Source/WebKit/UIProcess/WebProcessPool.cpp
    M Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm

  Log Message:
  -----------
  Ensure third party cookie blocking mode stays unchanged when last page is gone
https://bugs.webkit.org/show_bug.cgi?id=304622
rdar://167053937

Reviewed by Matthew Finkel.

In current implementation, WebsiteDataStore::isOptInCookiePartitioningEnabled() 
returns true if any of its pages has
the flag enabled. It means when the last page is gone, the value becomes false 
(as no page has the flag). When a new
page is created with default preferences (where the flag is enabled), 
isOptInCookiePartitioningEnabled() will become
true again. This causes unnecessary IPC messages to update third party cookie 
blocking mode. To fix it, avoid changing
the flag value when there is no active page.

Test: 
WKWebsiteDataStorePrivate.ThirdPartyCookieBlockingModeUnchangedBetweenViews

* Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp:
(API::HTTPCookieStore::isOptInCookiePartitioningEnabled const):
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _thirdPartyCookieBlockingModeForTesting]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::webProcessDataStoreParameters):
* Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::isOptInCookiePartitioningEnabled const): Deleted.
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::setThirdPartyCookieBlockingMode):
(WebKit::WebsiteDataStore::computeIsOptInCookiePartitioningEnabled const):
(WebKit::WebsiteDataStore::propagateSettingUpdates):
(WebKit::WebsiteDataStore::parameters):
(WebKit::WebsiteDataStore::isOptInCookiePartitioningEnabled const): Deleted.
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm:
(TestWebKitAPI::(WKWebsiteDataStorePrivate, 
ThirdPartyCookieBlockingModeUnchangedBetweenViews)):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to