Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 45061230013728ec9c4900b01b12af26dc592b4b
      
https://github.com/WebKit/WebKit/commit/45061230013728ec9c4900b01b12af26dc592b4b
  Author: Matthew Finkel <sys...@apple.com>
  Date:   2024-02-09 (Fri, 09 Feb 2024)

  Changed paths:
    M 
LayoutTests/http/tests/resourceLoadStatistics/aggregate-sorted-data-no-storage-access-expected.txt
    M 
LayoutTests/http/tests/resourceLoadStatistics/count-third-party-script-import-in-worker-expected.txt
    M 
LayoutTests/http/tests/resourceLoadStatistics/count-third-party-script-loads-expected.txt
    M 
LayoutTests/http/tests/resourceLoadStatistics/dont-count-third-party-image-as-third-party-script-expected.txt
    M 
LayoutTests/http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration-expected.txt
    M 
LayoutTests/http/tests/resourceLoadStatistics/log-delayed-client-side-redirects-expected.txt
    M 
LayoutTests/http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration-expected.txt
    M 
LayoutTests/http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads-expected.txt
    A 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-after-long-deletion-expected.txt
    A 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-after-long-deletion.html
    A 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-after-short-deletion-expected.txt
    A 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-after-short-deletion.html
    A 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-before-short-deletion-expected.txt
    A 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-before-short-deletion.html
    R 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt
    R 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html
    A 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-unfiltered-link-decoration-after-short-deletion-expected.txt
    A 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-unfiltered-link-decoration-after-short-deletion.html
    A 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-unfiltered-link-decoration-before-short-deletion-expected.txt
    A 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-unfiltered-link-decoration-before-short-deletion.html
    A 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-without-link-decoration-expected.txt
    A 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-without-link-decoration.html
    M 
LayoutTests/http/tests/storageAccess/aggregate-sorted-data-with-storage-access-expected.txt
    M 
LayoutTests/http/tests/webAPIStatistics/canvas-read-and-write-data-collection-expected.txt
    M 
LayoutTests/http/tests/webAPIStatistics/font-load-data-collection-expected.txt
    M 
LayoutTests/http/tests/webAPIStatistics/navigator-functions-accessed-data-collection-expected.txt
    M 
LayoutTests/http/tests/webAPIStatistics/screen-functions-accessed-data-collection-expected.txt
    A 
LayoutTests/platform/glib/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-after-long-deletion-expected.txt
    R 
LayoutTests/platform/glib/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt
    A 
LayoutTests/platform/glib/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-unfiltered-link-decoration-after-short-deletion-expected.txt
    A 
LayoutTests/platform/glib/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-without-link-decoration-expected.txt
    M LayoutTests/platform/ios-wk2/TestExpectations
    A 
LayoutTests/platform/mac-monterey/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-after-long-deletion-expected.txt
    R 
LayoutTests/platform/mac-monterey/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt
    A 
LayoutTests/platform/mac-monterey/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-unfiltered-link-decoration-after-short-deletion-expected.txt
    A 
LayoutTests/platform/mac-monterey/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-without-link-decoration-expected.txt
    M LayoutTests/platform/wincairo/TestExpectations
    A Source/WebKit/NetworkProcess/Classifier/DidFilterKnownLinkDecoration.h
    M Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp
    M Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h
    M Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp
    M Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h
    M Source/WebKit/NetworkProcess/NetworkProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkProcess.h
    M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
    M Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp
    M Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
    M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
    M Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
    M Tools/WebKitTestRunner/TestController.cpp
    M Tools/WebKitTestRunner/TestController.h
    M Tools/WebKitTestRunner/TestInvocation.cpp
    M Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm

  Log Message:
  -----------
  Introduce DataRemovalFrequency for scheduled data removal in the 
NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=265598
rdar://118998314

Reviewed by Sihui Liu.

In the current implementation, first-party script-written web site storage is
deleted after 7 operational-days without user interaction on the web site. That
7-day operational period is important for limiting persistent cross-site
tracking, but it has a negative impact on usability by people who visit sites
semi-frequently but longer than 7-operational-days. This change introduces a
lower frequency deletion policy if a web site was always loaded with link
decoration filtering enabled (currently disabled by default).

This patch doesn't change the current behavior and it is backwards compatible
with the current database. It takes the current boolean value that indicates if
the domain is scheduled for data removal, and it converts that into an integer
that defines the data removal frequency. In the current implementation, 0
indicates that the domain is not scheduled for data removal, 1 indicates that
it is scheduled. This patch redefines the value 1 as indicating the web site
data should be removed on a short frequency (7 operational days), and it
defines the value 2 as indicating the web site data should be removed on a
longer frequency (30 operational days).

More precisely, a domain's data is deleted in two situations. In the first
case, when the current FirstPartyDataRemovalMode is AllButCookies, website data
is deleted after 7-operational days (without user interaction) regardless of
whether cross-site link decoration was detected. In the second case, the
website's data is deleted after 7-operational days when it is navigated to with
query parameters from a classified domain. If link decoration filtering is
enabled, then a sites ability to transfer a high-entropy identifier cross-site
is significantly reduced. Therefore, storing web site data for longer periods
of time should be safer.

This change combines the two existing scenarios for removing first-party data
(AllButCookies). When cross-site link decoration is detected and if link
decoration filtering is disabled, then the DataRemovalFrequency remains at
7-operational days. However, if we never load a page with cross-site link
decoration, or if we load a site with link decoration and link decoration
filtering is enabled (such that we filter known-problematic identifiers), then
the DataRemovalFrequency is set to 30-operational days.

* 
LayoutTests/http/tests/resourceLoadStatistics/aggregate-sorted-data-no-storage-access-expected.txt:
* 
LayoutTests/http/tests/resourceLoadStatistics/count-third-party-script-import-in-worker-expected.txt:
* 
LayoutTests/http/tests/resourceLoadStatistics/count-third-party-script-loads-expected.txt:
* 
LayoutTests/http/tests/resourceLoadStatistics/dont-count-third-party-image-as-third-party-script-expected.txt:
* 
LayoutTests/http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration-expected.txt:
* 
LayoutTests/http/tests/resourceLoadStatistics/log-delayed-client-side-redirects-expected.txt:
* 
LayoutTests/http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration-expected.txt:
* 
LayoutTests/http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads-expected.txt:

Rebaseline

 * 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-after-long-deletion-expected.txt:
 Added.
 * 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-after-long-deletion.html:
 Copied from 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html.
 * 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-after-short-deletion-expected.txt:
 Added.
 * 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-after-short-deletion.html:
 Copied from 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html.
 * 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-before-short-deletion-expected.txt:
 Added.
 * 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-before-short-deletion.html:
 Copied from 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html.
 * 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-unfiltered-link-decoration-after-short-deletion-expected.txt:
 Added.
 * 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-unfiltered-link-decoration-after-short-deletion.html:
 Copied from 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html.
 * 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-unfiltered-link-decoration-before-short-deletion-expected.txt:
 Added.
 * 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-unfiltered-link-decoration-before-short-deletion.html:
 Copied from 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html.
 * 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-without-link-decoration-expected.txt:
 Added.
 * 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-without-link-decoration.html:
 Renamed from 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html.

New tests.

* 
LayoutTests/http/tests/storageAccess/aggregate-sorted-data-with-storage-access-expected.txt:
* 
LayoutTests/http/tests/webAPIStatistics/canvas-read-and-write-data-collection-expected.txt:
* 
LayoutTests/http/tests/webAPIStatistics/font-load-data-collection-expected.txt:
* 
LayoutTests/http/tests/webAPIStatistics/screen-functions-accessed-data-collection-expected.txt:

Rebaseline

* 
LayoutTests/platform/glib/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-after-long-deletion-expected.txt:
 Added.
* 
LayoutTests/platform/glib/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt:
 Removed.
* 
LayoutTests/platform/glib/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-unfiltered-link-decoration-after-short-deletion-expected.txt:
 Added.
* 
LayoutTests/platform/glib/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-without-link-decoration-expected.txt:
 Copied from 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-without-link-decoration-expected.txt.
* 
LayoutTests/platform/mac-monterey/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-filtered-link-decoration-after-long-deletion-expected.txt:
 Added.
* 
LayoutTests/platform/mac-monterey/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt:
 Removed.
* 
LayoutTests/platform/mac-monterey/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-unfiltered-link-decoration-after-short-deletion-expected.txt:
 Added.
* 
LayoutTests/platform/mac-monterey/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-without-link-decoration-expected.txt:
 Copied from 
LayoutTests/http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-without-link-decoration-expected.txt.

These platform exceptions are necessary because they don't support deleting 
only script-written cookies while keeping server-written cookies.

* LayoutTests/platform/ios-wk2/TestExpectations:
* LayoutTests/platform/wincairo/TestExpectations:
* Source/WebKit/NetworkProcess/Classifier/DidFilterKnownLinkDecoration.h: Added.
* Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
(WebKit::dataRemovalFrequencyToString):
(WebKit::toDataRemovalFrequency):
(WebKit::ResourceLoadStatisticsStore::resetParametersToDefaultValues):
(WebKit::ResourceLoadStatisticsStore::destroyStatements):
(WebKit::ResourceLoadStatisticsStore::merge):
(WebKit::ResourceLoadStatisticsStore::logCrossSiteLoadWithLinkDecoration):
(WebKit::ResourceLoadStatisticsStore::predicateValueForDomain const):
(WebKit::ResourceLoadStatisticsStore::isPrevalentResource const):
(WebKit::ResourceLoadStatisticsStore::isVeryPrevalentResource const):
(WebKit::ResourceLoadStatisticsStore::dataRemovalFrequency const):
(WebKit::ResourceLoadStatisticsStore::setIsScheduledForAllScriptWrittenStorageRemoval):
(WebKit::ResourceLoadStatisticsStore::isGrandfathered const):
(WebKit::ResourceLoadStatisticsStore::domains const):
(WebKit::ResourceLoadStatisticsStore::shouldRemoveAllButCookiesFor):
(WebKit::ResourceLoadStatisticsStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor):
(WebKit::ResourceLoadStatisticsStore::resourceToString const):
* Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
* Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::logCrossSiteLoadWithLinkDecoration):
* Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::didCommitCrossSiteLoadWithDataTransfer):
(WebKit::NetworkProcess::setCrossSiteLoadWithLinkDecorationForTesting):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreSetStatisticsCrossSiteLoadWithLinkDecoration):
* Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView 
_setStatisticsCrossSiteLoadWithLinkDecorationForTesting:withToHost:withWasFiltered:withCompletionHandler:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransfer):
(WebKit::NetworkProcessProxy::setCrossSiteLoadWithLinkDecorationForTesting):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::setCrossSiteLoadWithLinkDecorationForTesting):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::setCrossSiteLoadWithLinkDecorationForTesting):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setStatisticsCrossSiteLoadWithLinkDecoration):
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::setStatisticsCrossSiteLoadWithLinkDecoration):
* Tools/WebKitTestRunner/TestController.h:
* Tools/WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
* Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::platformSetStatisticsCrossSiteLoadWithLinkDecoration):

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to