[webkit-changes] [WebKit/WebKit] 64fda2: Ensure TrackingPreventionEnabled flag is correctly...

Sihui noreply at github.com
Mon Mar 4 10:11:41 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 64fda2fa68e045b76c91af8864e0cde1d8ffe896
      https://github.com/WebKit/WebKit/commit/64fda2fa68e045b76c91af8864e0cde1d8ffe896
  Author: Sihui Liu <sihui_liu at apple.com>
  Date:   2024-03-04 (Mon, 04 Mar 2024)

  Changed paths:
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
    M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in
    M Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm
    M Source/WebKit/Shared/ResourceLoadStatisticsParameters.h
    M Source/WebKit/Shared/ResourceLoadStatisticsParameters.serialization.in
    M Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm
    M Source/WebKit/UIProcess/WebProcessPool.cpp
    M Source/WebKit/UIProcess/WebProcessPool.h
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h

  Log Message:
  -----------
  Ensure TrackingPreventionEnabled flag is correctly set before using WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=270382
rdar://123922825

Reviewed by Chris Dumez.

We currently set TrackingPreventionEnabled on WebsiteDataStore in WebProcessPool::createNewWebProcess. This has caused
problem that TrackingPreventionEnabled is incorrectly set when WebsiteDataStore (or its corresponding NetworkSession)
is in use. One case is when process is created for prewarm, it does not have a attached WebsiteDataStore (it will be
assigned a WebsiteDataStore later), so we don't set TrackingPreventionEnabled flag, and we don't set it when the
prewarmed process is used for loading (WebsiteDataStore is assigned to it). Another case is when WebsiteDataStore is
used without web process for website data retrieval. Failing to set the flag will cause ITP data not to be fetched or
removed.

To fix this issue, this patch moves TrackingPreventionEnabled setting to WebsiteDataStore: WebsiteDataStore will get
the right value when it needs to send its parameters to network process and web process (i.e. it's going to be used).
To simply the setting logic, this patch also makes the following changes:
1. WebsiteDataStore::m_trackingPreventionEnabled now has 3 states: yes, no and default, where default means we will fall
back to TCC permission state to decide the value. This enables us to remove m_isTrackingPreventionStateExplicitlySet.
2. Drop appHasRequestedCrossWebsiteTrackingPermission and TrackingPreventionStateExplicitlySet parameters since network
process does not need to re-compute the TrackingPreventionEnabled value and know about how it is computed. We previously
used it for logging and debugging purpose, and we probably don't need it any more (as TCC check is not free). This patch
replaces it with normal logging in NetworkSession::setTrackingPreventionEnabled.

* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::setTrackingPreventionEnabled):
* Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h:
* Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in:
* Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
(WebKit::activateSessionCleanup): Deleted.
* Source/WebKit/Shared/ResourceLoadStatisticsParameters.h:
* Source/WebKit/Shared/ResourceLoadStatisticsParameters.serialization.in:
* Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreSetResourceLoadStatisticsEnabled):
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _setResourceLoadStatisticsEnabled:]):
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createNewWebProcess):
* Source/WebKit/UIProcess/WebProcessPool.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::setIsRunningResourceLoadStatisticsTest):
(WebKit::WebsiteDataStore::defaultTrackingPreventionEnabled const):
(WebKit::WebsiteDataStore::trackingPreventionEnabled const):
(WebKit::WebsiteDataStore::setTrackingPreventionEnabled):
(WebKit::WebsiteDataStore::parameters):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::isTrackingPreventionStateExplicitlySet const): Deleted.
(WebKit::WebsiteDataStore::useExplicitTrackingPreventionState): Deleted.

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