Title: [273682] branches/safari-611.1.21.2-branch
Revision
273682
Author
rubent...@apple.com
Date
2021-03-01 12:53:49 -0800 (Mon, 01 Mar 2021)

Log Message

Revert "Cherry-pick r273590. rdar://problem/74881403"

This reverts commit 8714b941c814ac9e9771325be68853be779c4393.

Modified Paths

Added Paths

Removed Paths

Diff

Modified: branches/safari-611.1.21.2-branch/LayoutTests/ChangeLog (273681 => 273682)


--- branches/safari-611.1.21.2-branch/LayoutTests/ChangeLog	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/LayoutTests/ChangeLog	2021-03-01 20:53:49 UTC (rev 273682)
@@ -61,126 +61,6 @@
             * webanimations/transform-transition-with-delay-on-forced-layer-with-transform-expected.html: Added.
             * webanimations/transform-transition-with-delay-on-forced-layer-with-transform.html: Added.
 
-2021-03-01  Alan Coon  <alanc...@apple.com>
-
-        Cherry-pick r273590. rdar://problem/74881403
-
-    Non-cookie website data not deleted after 7 days of browser use without user interaction
-    https://bugs.webkit.org/show_bug.cgi?id=222248
-    <rdar://problem/74612589>
-    
-    Reviewed by Brent Fulgham and informally by Kate Cheney.
-    
-    Source/WebKit:
-    
-    Tests: http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago.html
-           http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html
-    
-    * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
-    (WebKit::ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters):
-        Now sets two new member variables:
-        - Optional<OperatingDate> m_longWindowOperatingDate
-        - Optional<OperatingDate> m_shortWindowOperatingDate
-        These are only set if the minimum number of operating days has passed.
-        This function no longer sets m_leastRecentOperatingDate.
-    (WebKit::ResourceLoadStatisticsDatabaseStore::hasStatisticsExpired const):
-        Now checks against the two new member variables m_longWindowOperatingDate
-        and m_shortWindowOperatingDate. This fixes the bug.
-    (WebKit::ResourceLoadStatisticsDatabaseStore::insertExpiredStatisticForTesting):
-        Test infrastructure. Now takes the new parameter numberOfOperatingDaysPassed
-        with which layout tests can control the exact number of operating days
-        passed since user interaction.
-    * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
-        Added m_longWindowOperatingDate and m_shortWindowOperatingDate, and
-        removed m_leastRecentOperatingDate since it's no longer used.
-    * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
-    (WebKit::ResourceLoadStatisticsMemoryStore::insertExpiredStatisticForTesting):
-        Test infrastructure. The same changes as in the DB store.
-    * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
-    * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
-    * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
-    (WebKit::WebResourceLoadStatisticsStore::insertExpiredStatisticForTesting):
-        Test infrastructure.
-    * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
-    * NetworkProcess/NetworkProcess.cpp:
-    (WebKit::NetworkProcess::insertExpiredStatisticForTesting):
-        Test infrastructure.
-    * NetworkProcess/NetworkProcess.h:
-    * NetworkProcess/NetworkProcess.messages.in:
-    * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
-    (WKWebsiteDataStoreSetStatisticsExpiredStatistic):
-        Test infrastructure.
-    * UIProcess/API/C/WKWebsiteDataStoreRef.h:
-    * UIProcess/Network/NetworkProcessProxy.cpp:
-    (WebKit::NetworkProcessProxy::insertExpiredStatisticForTesting):
-        Test infrastructure.
-    * UIProcess/Network/NetworkProcessProxy.h:
-    * UIProcess/WebsiteData/WebsiteDataStore.cpp:
-    (WebKit::WebsiteDataStore::insertExpiredStatisticForTesting):
-        Test infrastructure.
-    * UIProcess/WebsiteData/WebsiteDataStore.h:
-    
-    Tools:
-    
-    A new numberOfOperatingDaysPassed parameter was added to
-    testRunner.setStatisticsExpiredStatistic() to control the exact
-    number of operating days passed since user interaction.
-    
-    * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
-    * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
-    (WTR::TestRunner::setStatisticsExpiredStatistic):
-    * WebKitTestRunner/InjectedBundle/TestRunner.h:
-    * WebKitTestRunner/TestController.cpp:
-    (WTR::TestController::setStatisticsExpiredStatistic):
-    * WebKitTestRunner/TestController.h:
-    * WebKitTestRunner/TestInvocation.cpp:
-    (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
-    
-    LayoutTests:
-    
-    Existing test cases now make use of the new numberOfOperatingDaysPassed
-    parameter to testRunner.setStatisticsExpiredStatistic() to control the exact
-    number of operating days passed since user interaction.
-    A new test case makes sure website data is not deleted below the threshold.
-    
-    * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago-expected.txt: Added.
-    * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago.html: Added.
-        Sets numberOfOperatingDaysPassed to 6.
-    * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago-expected.txt: Renamed from LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction-expected.txt.
-    * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html: Renamed from LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction.html.
-        Sets numberOfOperatingDaysPassed to 7.
-    * http/tests/resourceLoadStatistics/operating-dates-all-website-data-removed.html:
-        Sets numberOfOperatingDaysPassed to 30.
-    * platform/wk2/TestExpectations:
-        Updated existing expectation with new file name.
-    
-    
-    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273590 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
-    2021-02-26  John Wilander  <wilan...@apple.com>
-
-            Non-cookie website data not deleted after 7 days of browser use without user interaction
-            https://bugs.webkit.org/show_bug.cgi?id=222248
-            <rdar://problem/74612589>
-
-            Reviewed by Brent Fulgham and informally by Kate Cheney.
-
-            Existing test cases now make use of the new numberOfOperatingDaysPassed
-            parameter to testRunner.setStatisticsExpiredStatistic() to control the exact
-            number of operating days passed since user interaction.
-            A new test case makes sure website data is not deleted below the threshold.
-
-            * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago-expected.txt: Added.
-            * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago.html: Added.
-                Sets numberOfOperatingDaysPassed to 6.
-            * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago-expected.txt: Renamed from LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction-expected.txt.
-            * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html: Renamed from LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction.html.
-                Sets numberOfOperatingDaysPassed to 7.
-            * http/tests/resourceLoadStatistics/operating-dates-all-website-data-removed.html:
-                Sets numberOfOperatingDaysPassed to 30.
-            * platform/wk2/TestExpectations:
-                Updated existing expectation with new file name.
-
 2021-02-26  Alan Coon  <alanc...@apple.com>
 
         Cherry-pick r273512. rdar://problem/74799698

Deleted: branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago-expected.txt (273681 => 273682)


--- branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago-expected.txt	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago-expected.txt	2021-03-01 20:53:49 UTC (rev 273682)
@@ -1,14 +0,0 @@
-
-Before statistics processing: Client-side cookie exists.
-Before statistics processing: HttpOnly cookie exists.
-Before statistics processing: Regular server-side cookie exists.
-Before statistics processing: LocalStorage entry does exist.
-Before statistics processing: IDB entry does exist.
-
-After statistics processing: HttpOnly cookie exists.
-After statistics processing: Client-side cookie exists.
-After statistics processing: Regular server-side cookie exists.
-After statistics processing: LocalStorage entry does exist.
-After statistics processing: IDB entry does exist.
-
-

Deleted: branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago.html (273681 => 273682)


--- branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago.html	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago.html	2021-03-01 20:53:49 UTC (rev 273682)
@@ -1,262 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <script src=""
-    <script src=""
-</head>
-<body _onload_="setTimeout('runTest()', 0)">
-<br>
-<div id="output"></div>
-<br>
-<script>
-    testRunner.waitUntilDone();
-    testRunner.dumpAsText();
-
-    const httpOnlyCookieName = "http-only-cookie";
-    const serverSideCookieName = "server-side-cookie";
-    const clientSideCookieName = "client-side-cookie";
-
-    function sortStringArray(a, b) {
-        a = a.toLowerCase();
-        b = b.toLowerCase();
-
-        return a > b ? 1 : b > a ? -1 : 0;
-    }
-
-    function addLinebreakToOutput() {
-        let element = document.createElement("br");
-        output.appendChild(element);
-    }
-
-    function addOutput(message) {
-        let element = document.createElement("div");
-        element.innerText = message;
-        output.appendChild(element);
-    }
-
-    function checkCookies(isAfterDeletion) {
-        let unsortedTestPassedMessages = [];
-        let cookies = internals.getCookies();
-        if (!cookies.length && isAfterDeletion)
-            addOutput("FAIL: " + "No cookies found.");
-        for (let cookie of cookies) {
-            switch (cookie.name) {
-                case httpOnlyCookieName:
-                    unsortedTestPassedMessages.push((isAfterDeletion ? "After" : "Before") + " statistics processing: " + (isAfterDeletion ? " " : "") + "HttpOnly cookie exists.");
-                    break;
-                case serverSideCookieName:
-                    unsortedTestPassedMessages.push((isAfterDeletion ? "After" : "Before") + " statistics processing: Regular server-side cookie exists.");
-                    break;
-                case clientSideCookieName:
-                    unsortedTestPassedMessages.push((isAfterDeletion ? "After" : "Before") + " statistics processing: Client-side cookie exists.");
-                    break;
-            }
-        }
-        let sortedTestPassedMessages = unsortedTestPassedMessages.sort(sortStringArray);
-        for (let testPassedMessage of sortedTestPassedMessages) {
-            addOutput(testPassedMessage);
-        }
-    }
-
-    const dbName = "TestDatabase";
-
-    function createIDBDataStore(callback) {
-        let request = indexedDB.open(dbName);
-        request._onerror_ = function() {
-            addOutput("Couldn't create indexedDB.");
-            finishTest();
-        };
-        request._onupgradeneeded_ = function(event) {
-            let db = event.target.result;
-            let objStore = db.createObjectStore("test", {autoIncrement: true});
-            objStore.add("value");
-            callback();
-        }
-    }
-
-    const maxIntervals = 20;
-
-    let intervalCounterIDB;
-    let checkIDBCallback;
-    let checkIDBIntervalID;
-    let semaphoreIDBCheck = false;
-    function checkIDBDataStoreExists(isAfterDeletion, callback) {
-        let request;
-        intervalCounterIDB = 0;
-        checkIDBCallback = callback;
-        if (!isAfterDeletion) {
-            // Check until there is a IDB.
-            checkIDBIntervalID = setInterval(function() {
-                if (semaphoreIDBCheck)
-                    return;
-                semaphoreIDBCheck = true;
-
-                if (++intervalCounterIDB >= maxIntervals) {
-                    clearInterval(checkIDBIntervalID);
-                    addOutput("Before statistics processing: IDB entry does not exist.");
-                    semaphoreIDBCheck = false;
-                    checkIDBCallback();
-                } else {
-                    request = indexedDB.open(dbName);
-                    request._onerror_ = function () {
-                        clearInterval(checkIDBIntervalID);
-                        addOutput("Couldn't open indexedDB.");
-                        semaphoreIDBCheck = false;
-                        finishTest();
-                    };
-                    request._onupgradeneeded_ = function () {
-                        // Let the next interval check again.
-                        semaphoreIDBCheck = false;
-                    };
-                    request._onsuccess_ = function () {
-                        clearInterval(checkIDBIntervalID);
-                        addOutput("Before statistics processing: IDB entry does exist.");
-                        semaphoreIDBCheck = false;
-                        checkIDBCallback();
-                    };
-                }
-            }, 200);
-        } else {
-            // Check until there is no IDB.
-            checkIDBIntervalID = setInterval(function () {
-                if (semaphoreIDBCheck)
-                    return;
-                semaphoreIDBCheck = true;
-
-                if (++intervalCounterIDB >= maxIntervals) {
-                    clearInterval(checkIDBIntervalID);
-                    addOutput("After statistics processing: IDB entry does exist.");
-                    semaphoreIDBCheck = false;
-                    checkIDBCallback();
-                } else {
-                    request = indexedDB.open(dbName);
-                    request._onerror_ = function () {
-                        clearInterval(checkIDBIntervalID);
-                        addOutput("Couldn't open indexedDB.");
-                        semaphoreIDBCheck = false;
-                        finishTest();
-                    };
-                    request._onupgradeneeded_ = function () {
-                        clearInterval(checkIDBIntervalID);
-                        addOutput("After statistics processing: IDB entry does not exist.");
-                        semaphoreIDBCheck = false;
-                        finishTest();
-                    };
-                    request._onsuccess_ = function () {
-                        // Let the next interval check again because deletion might be delayed.
-                        semaphoreIDBCheck = false;
-                    };
-                }
-            }, 200);
-        }
-    }
-
-    let intervalCounterLocalStorage;
-    let checkLocalStorageCallback;
-    let checkLocalStorageIntervalID;
-    const localStorageName = "test";
-    const localStorageValue = "value";
-    function checkLocalStorageExists(isAfterDeletion, callback) {
-        intervalCounterLocalStorage = 0;
-        checkLocalStorageCallback = callback;
-        if (!isAfterDeletion) {
-            // Check until there is LocalStorage.
-            checkLocalStorageIntervalID = setInterval(function() {
-                if (++intervalCounterLocalStorage >= maxIntervals) {
-                    clearInterval(checkLocalStorageIntervalID);
-                    let value = localStorage.getItem(localStorageName);
-                    addOutput("Before statistics processing: LocalStorage entry " + (value === localStorageValue ? "does" : "does not") + " exist.");
-                    checkLocalStorageCallback();
-                } else if (testRunner.isStatisticsHasLocalStorage(originUnderTest)) {
-                    clearInterval(checkLocalStorageIntervalID);
-                    let value = localStorage.getItem(localStorageName);
-                    addOutput("Before statistics processing: LocalStorage entry " + (value === localStorageValue ? "does" : "does not") + " exist.");
-                    checkLocalStorageCallback();
-                }
-            }, 100);
-        } else {
-            // Check until there is no LocalStorage.
-            checkLocalStorageIntervalID = setInterval(function() {
-                if (++intervalCounterLocalStorage >= maxIntervals) {
-                    clearInterval(checkLocalStorageIntervalID);
-                    let value = localStorage.getItem(localStorageName);
-                    addOutput("After statistics processing: LocalStorage entry " + (value === localStorageValue ? "does" : "does not") + " exist.");
-                    checkLocalStorageCallback();
-                } else if (!testRunner.isStatisticsHasLocalStorage(originUnderTest)) {
-                    clearInterval(checkLocalStorageIntervalID);
-                    let value = localStorage.getItem(localStorageName);
-                    addOutput("After statistics processing: LocalStorage entry " + (value === localStorageValue ? "does" : "does not") + " exist.");
-                    checkLocalStorageCallback();
-                }
-            }, 100);
-        }
-    }
-
-    async function writeWebsiteDataAndContinue() {
-        // Write cookies.
-        await fetch("/cookies/resources/set-http-only-cookie.php?cookieName=" + httpOnlyCookieName, { credentials: "same-origin" });
-        await fetch("/cookies/resources/setCookies.cgi", { headers: { "Set-Cookie": serverSideCookieName + "=1; path=/;" }, credentials: "same-origin" });
-        document.cookie = clientSideCookieName + "=1";
-
-        checkCookies(false);
-
-        // Write LocalStorage
-        localStorage.setItem(localStorageName, localStorageValue);
-        checkLocalStorageExists(false, function() {
-
-            // Write IndexedDB.
-            createIDBDataStore(function () {
-                checkIDBDataStoreExists(false, function() {
-                    addLinebreakToOutput();
-                    processWebsiteDataAndContinue();
-                });
-            });
-        });
-    }
-
-    function processWebsiteDataAndContinue() {
-        testRunner.installStatisticsDidScanDataRecordsCallback(checkWebsiteDataAndContinue);
-        testRunner.statisticsProcessStatisticsAndDataRecords();
-    }
-
-    function checkWebsiteDataAndContinue() {
-        checkCookies(true);
-        checkLocalStorageExists(true, function () {
-            checkIDBDataStoreExists(true, finishTest);
-        });
-    }
-
-    const originUnderTest  = "http://127.0.0.1:8000";
-    const otherOrigin = "http://localhost:8000"
-    const topFrameOrigin = "http://127.0.0.2:8000";
-    const timeStamp = Math.round((new Date()).getTime() / 1000);
-    function finishTest() {
-        if (!testRunner.isStatisticsHasHadUserInteraction(originUnderTest))
-            addOutput("FAIL: " + originUnderTest + " doesn't have user interaction after processing.");
-        resetCookies();
-        setEnableFeature(false, function() {
-            testRunner.notifyDone();
-        });
-    }
-
-    // Do not use setEnableFeature here because we want to make sure website data deletion is not skipped
-    // by the presence of parameters().isRunningTest.
-    function runTest() {
-        testRunner.setStatisticsMinimumTimeBetweenDataRecordsRemoval(3600);
-        // Merge a statistic with no user interaction to check the -1 case.
-        testRunner.setStatisticsMergeStatistic(otherOrigin, topFrameOrigin, "", timeStamp, false, -1, false, false, false, 0, function() {
-            testRunner.setStatisticsFirstPartyWebsiteDataRemovalMode(true, function () {
-                testRunner.setStatisticsExpiredStatistic(originUnderTest,
-                    6,     // numberOfOperatingDaysPassed
-                    true,  // hasUserInteraction
-                    false, // isScheduledForAllButCookieDataRemoval,
-                    false, // isPrevalent
-                    function() {
-                    writeWebsiteDataAndContinue();
-                });
-            });
-        });
-    }
-</script>
-</body>
-</html>

Copied: branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction-expected.txt (from rev 273677, branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago-expected.txt) (0 => 273682)


--- branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction-expected.txt	                        (rev 0)
+++ branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction-expected.txt	2021-03-01 20:53:49 UTC (rev 273682)
@@ -0,0 +1,14 @@
+
+Before statistics processing: Client-side cookie exists.
+Before statistics processing: HttpOnly cookie exists.
+Before statistics processing: Regular server-side cookie exists.
+Before statistics processing: LocalStorage entry does exist.
+Before statistics processing: IDB entry does exist.
+
+After statistics processing: HttpOnly cookie exists.
+After statistics processing: Client-side cookie exists.
+After statistics processing: Regular server-side cookie exists.
+After statistics processing: LocalStorage entry does not exist.
+After statistics processing: IDB entry does not exist.
+
+

Copied: branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction.html (from rev 273677, branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html) (0 => 273682)


--- branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction.html	                        (rev 0)
+++ branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction.html	2021-03-01 20:53:49 UTC (rev 273682)
@@ -0,0 +1,258 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <script src=""
+    <script src=""
+</head>
+<body _onload_="setTimeout('runTest()', 0)">
+<br>
+<div id="output"></div>
+<br>
+<script>
+    testRunner.waitUntilDone();
+    testRunner.dumpAsText();
+
+    const httpOnlyCookieName = "http-only-cookie";
+    const serverSideCookieName = "server-side-cookie";
+    const clientSideCookieName = "client-side-cookie";
+
+    function sortStringArray(a, b) {
+        a = a.toLowerCase();
+        b = b.toLowerCase();
+
+        return a > b ? 1 : b > a ? -1 : 0;
+    }
+
+    function addLinebreakToOutput() {
+        let element = document.createElement("br");
+        output.appendChild(element);
+    }
+
+    function addOutput(message) {
+        let element = document.createElement("div");
+        element.innerText = message;
+        output.appendChild(element);
+    }
+
+    function checkCookies(isAfterDeletion) {
+        let unsortedTestPassedMessages = [];
+        let cookies = internals.getCookies();
+        if (!cookies.length && isAfterDeletion)
+            addOutput("FAIL: " + "No cookies found.");
+        for (let cookie of cookies) {
+            switch (cookie.name) {
+                case httpOnlyCookieName:
+                    unsortedTestPassedMessages.push((isAfterDeletion ? "After" : "Before") + " statistics processing: " + (isAfterDeletion ? " " : "") + "HttpOnly cookie exists.");
+                    break;
+                case serverSideCookieName:
+                    unsortedTestPassedMessages.push((isAfterDeletion ? "After" : "Before") + " statistics processing: Regular server-side cookie exists.");
+                    break;
+                case clientSideCookieName:
+                    unsortedTestPassedMessages.push((isAfterDeletion ? "After" : "Before") + " statistics processing: Client-side cookie exists.");
+                    break;
+            }
+        }
+        let sortedTestPassedMessages = unsortedTestPassedMessages.sort(sortStringArray);
+        for (let testPassedMessage of sortedTestPassedMessages) {
+            addOutput(testPassedMessage);
+        }
+    }
+
+    const dbName = "TestDatabase";
+
+    function createIDBDataStore(callback) {
+        let request = indexedDB.open(dbName);
+        request._onerror_ = function() {
+            addOutput("Couldn't create indexedDB.");
+            finishTest();
+        };
+        request._onupgradeneeded_ = function(event) {
+            let db = event.target.result;
+            let objStore = db.createObjectStore("test", {autoIncrement: true});
+            objStore.add("value");
+            callback();
+        }
+    }
+
+    const maxIntervals = 20;
+
+    let intervalCounterIDB;
+    let checkIDBCallback;
+    let checkIDBIntervalID;
+    let semaphoreIDBCheck = false;
+    function checkIDBDataStoreExists(isAfterDeletion, callback) {
+        let request;
+        intervalCounterIDB = 0;
+        checkIDBCallback = callback;
+        if (!isAfterDeletion) {
+            // Check until there is a IDB.
+            checkIDBIntervalID = setInterval(function() {
+                if (semaphoreIDBCheck)
+                    return;
+                semaphoreIDBCheck = true;
+
+                if (++intervalCounterIDB >= maxIntervals) {
+                    clearInterval(checkIDBIntervalID);
+                    addOutput("Before statistics processing: IDB entry does not exist.");
+                    semaphoreIDBCheck = false;
+                    checkIDBCallback();
+                } else {
+                    request = indexedDB.open(dbName);
+                    request._onerror_ = function () {
+                        clearInterval(checkIDBIntervalID);
+                        addOutput("Couldn't open indexedDB.");
+                        semaphoreIDBCheck = false;
+                        finishTest();
+                    };
+                    request._onupgradeneeded_ = function () {
+                        // Let the next interval check again.
+                        semaphoreIDBCheck = false;
+                    };
+                    request._onsuccess_ = function () {
+                        clearInterval(checkIDBIntervalID);
+                        addOutput("Before statistics processing: IDB entry does exist.");
+                        semaphoreIDBCheck = false;
+                        checkIDBCallback();
+                    };
+                }
+            }, 200);
+        } else {
+            // Check until there is no IDB.
+            checkIDBIntervalID = setInterval(function () {
+                if (semaphoreIDBCheck)
+                    return;
+                semaphoreIDBCheck = true;
+
+                if (++intervalCounterIDB >= maxIntervals) {
+                    clearInterval(checkIDBIntervalID);
+                    addOutput("After statistics processing: IDB entry does exist.");
+                    semaphoreIDBCheck = false;
+                    checkIDBCallback();
+                } else {
+                    request = indexedDB.open(dbName);
+                    request._onerror_ = function () {
+                        clearInterval(checkIDBIntervalID);
+                        addOutput("Couldn't open indexedDB.");
+                        semaphoreIDBCheck = false;
+                        finishTest();
+                    };
+                    request._onupgradeneeded_ = function () {
+                        clearInterval(checkIDBIntervalID);
+                        addOutput("After statistics processing: IDB entry does not exist.");
+                        semaphoreIDBCheck = false;
+                        finishTest();
+                    };
+                    request._onsuccess_ = function () {
+                        // Let the next interval check again because deletion might be delayed.
+                        semaphoreIDBCheck = false;
+                    };
+                }
+            }, 200);
+        }
+    }
+
+    let intervalCounterLocalStorage;
+    let checkLocalStorageCallback;
+    let checkLocalStorageIntervalID;
+    const localStorageName = "test";
+    const localStorageValue = "value";
+    function checkLocalStorageExists(isAfterDeletion, callback) {
+        intervalCounterLocalStorage = 0;
+        checkLocalStorageCallback = callback;
+        if (!isAfterDeletion) {
+            // Check until there is LocalStorage.
+            checkLocalStorageIntervalID = setInterval(function() {
+                if (++intervalCounterLocalStorage >= maxIntervals) {
+                    clearInterval(checkLocalStorageIntervalID);
+                    let value = localStorage.getItem(localStorageName);
+                    addOutput("Before statistics processing: LocalStorage entry " + (value === localStorageValue ? "does" : "does not") + " exist.");
+                    checkLocalStorageCallback();
+                } else if (testRunner.isStatisticsHasLocalStorage(originUnderTest)) {
+                    clearInterval(checkLocalStorageIntervalID);
+                    let value = localStorage.getItem(localStorageName);
+                    addOutput("Before statistics processing: LocalStorage entry " + (value === localStorageValue ? "does" : "does not") + " exist.");
+                    checkLocalStorageCallback();
+                }
+            }, 100);
+        } else {
+            // Check until there is no LocalStorage.
+            checkLocalStorageIntervalID = setInterval(function() {
+                if (++intervalCounterLocalStorage >= maxIntervals) {
+                    clearInterval(checkLocalStorageIntervalID);
+                    let value = localStorage.getItem(localStorageName);
+                    addOutput("After statistics processing: LocalStorage entry " + (value === localStorageValue ? "does" : "does not") + " exist.");
+                    checkLocalStorageCallback();
+                } else if (!testRunner.isStatisticsHasLocalStorage(originUnderTest)) {
+                    clearInterval(checkLocalStorageIntervalID);
+                    let value = localStorage.getItem(localStorageName);
+                    addOutput("After statistics processing: LocalStorage entry " + (value === localStorageValue ? "does" : "does not") + " exist.");
+                    checkLocalStorageCallback();
+                }
+            }, 100);
+        }
+    }
+
+    async function writeWebsiteDataAndContinue() {
+        // Write cookies.
+        await fetch("/cookies/resources/set-http-only-cookie.php?cookieName=" + httpOnlyCookieName, { credentials: "same-origin" });
+        await fetch("/cookies/resources/setCookies.cgi", { headers: { "Set-Cookie": serverSideCookieName + "=1; path=/;" }, credentials: "same-origin" });
+        document.cookie = clientSideCookieName + "=1";
+
+        checkCookies(false);
+
+        // Write LocalStorage
+        localStorage.setItem(localStorageName, localStorageValue);
+        checkLocalStorageExists(false, function() {
+
+            // Write IndexedDB.
+            createIDBDataStore(function () {
+                checkIDBDataStoreExists(false, function() {
+                    addLinebreakToOutput();
+                    processWebsiteDataAndContinue();
+                });
+            });
+        });
+    }
+
+    function processWebsiteDataAndContinue() {
+        testRunner.installStatisticsDidScanDataRecordsCallback(checkWebsiteDataAndContinue);
+        testRunner.statisticsProcessStatisticsAndDataRecords();
+    }
+
+    function checkWebsiteDataAndContinue() {
+        checkCookies(true);
+        checkLocalStorageExists(true, function () {
+            checkIDBDataStoreExists(true, finishTest);
+        });
+    }
+
+    const originUnderTest  = "http://127.0.0.1:8000";
+    const otherOrigin = "http://localhost:8000"
+    const topFrameOrigin = "http://127.0.0.2:8000";
+    const timeStamp = Math.round((new Date()).getTime() / 1000);
+    function finishTest() {
+        if (testRunner.isStatisticsHasHadUserInteraction(originUnderTest))
+            addOutput("FAIL: " + originUnderTest + " still has user interaction after processing.");
+        resetCookies();
+        setEnableFeature(false, function() {
+            testRunner.notifyDone();
+        });
+    }
+
+    // Do not use setEnableFeature here because we want to make sure website data deletion is not skipped
+    // by the presence of parameters().isRunningTest.
+    function runTest() {
+        testRunner.setStatisticsMinimumTimeBetweenDataRecordsRemoval(3600);
+        // Merge a statistic with no user interaction to check the -1 case.
+        testRunner.setStatisticsMergeStatistic(otherOrigin, topFrameOrigin, "", timeStamp, false, -1, false, false, false, 0, function() {
+            testRunner.setStatisticsFirstPartyWebsiteDataRemovalMode(true, function () {
+                // insertStatisticsExpiredStatistic(domain, hasHadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent)
+                testRunner.setStatisticsExpiredStatistic(originUnderTest, true, true, false, function() {
+                    writeWebsiteDataAndContinue();
+                });
+            });
+        });
+    }
+</script>
+</body>
+</html>

Deleted: branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago-expected.txt (273681 => 273682)


--- branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago-expected.txt	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago-expected.txt	2021-03-01 20:53:49 UTC (rev 273682)
@@ -1,14 +0,0 @@
-
-Before statistics processing: Client-side cookie exists.
-Before statistics processing: HttpOnly cookie exists.
-Before statistics processing: Regular server-side cookie exists.
-Before statistics processing: LocalStorage entry does exist.
-Before statistics processing: IDB entry does exist.
-
-After statistics processing: HttpOnly cookie exists.
-After statistics processing: Client-side cookie exists.
-After statistics processing: Regular server-side cookie exists.
-After statistics processing: LocalStorage entry does exist.
-After statistics processing: IDB entry does exist.
-
-

Deleted: branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html (273681 => 273682)


--- branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html	2021-03-01 20:53:49 UTC (rev 273682)
@@ -1,262 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <script src=""
-    <script src=""
-</head>
-<body _onload_="setTimeout('runTest()', 0)">
-<br>
-<div id="output"></div>
-<br>
-<script>
-    testRunner.waitUntilDone();
-    testRunner.dumpAsText();
-
-    const httpOnlyCookieName = "http-only-cookie";
-    const serverSideCookieName = "server-side-cookie";
-    const clientSideCookieName = "client-side-cookie";
-
-    function sortStringArray(a, b) {
-        a = a.toLowerCase();
-        b = b.toLowerCase();
-
-        return a > b ? 1 : b > a ? -1 : 0;
-    }
-
-    function addLinebreakToOutput() {
-        let element = document.createElement("br");
-        output.appendChild(element);
-    }
-
-    function addOutput(message) {
-        let element = document.createElement("div");
-        element.innerText = message;
-        output.appendChild(element);
-    }
-
-    function checkCookies(isAfterDeletion) {
-        let unsortedTestPassedMessages = [];
-        let cookies = internals.getCookies();
-        if (!cookies.length && isAfterDeletion)
-            addOutput("FAIL: " + "No cookies found.");
-        for (let cookie of cookies) {
-            switch (cookie.name) {
-                case httpOnlyCookieName:
-                    unsortedTestPassedMessages.push((isAfterDeletion ? "After" : "Before") + " statistics processing: " + (isAfterDeletion ? " " : "") + "HttpOnly cookie exists.");
-                    break;
-                case serverSideCookieName:
-                    unsortedTestPassedMessages.push((isAfterDeletion ? "After" : "Before") + " statistics processing: Regular server-side cookie exists.");
-                    break;
-                case clientSideCookieName:
-                    unsortedTestPassedMessages.push((isAfterDeletion ? "After" : "Before") + " statistics processing: Client-side cookie exists.");
-                    break;
-            }
-        }
-        let sortedTestPassedMessages = unsortedTestPassedMessages.sort(sortStringArray);
-        for (let testPassedMessage of sortedTestPassedMessages) {
-            addOutput(testPassedMessage);
-        }
-    }
-
-    const dbName = "TestDatabase";
-
-    function createIDBDataStore(callback) {
-        let request = indexedDB.open(dbName);
-        request._onerror_ = function() {
-            addOutput("Couldn't create indexedDB.");
-            finishTest();
-        };
-        request._onupgradeneeded_ = function(event) {
-            let db = event.target.result;
-            let objStore = db.createObjectStore("test", {autoIncrement: true});
-            objStore.add("value");
-            callback();
-        }
-    }
-
-    const maxIntervals = 20;
-
-    let intervalCounterIDB;
-    let checkIDBCallback;
-    let checkIDBIntervalID;
-    let semaphoreIDBCheck = false;
-    function checkIDBDataStoreExists(isAfterDeletion, callback) {
-        let request;
-        intervalCounterIDB = 0;
-        checkIDBCallback = callback;
-        if (!isAfterDeletion) {
-            // Check until there is a IDB.
-            checkIDBIntervalID = setInterval(function() {
-                if (semaphoreIDBCheck)
-                    return;
-                semaphoreIDBCheck = true;
-
-                if (++intervalCounterIDB >= maxIntervals) {
-                    clearInterval(checkIDBIntervalID);
-                    addOutput("Before statistics processing: IDB entry does not exist.");
-                    semaphoreIDBCheck = false;
-                    checkIDBCallback();
-                } else {
-                    request = indexedDB.open(dbName);
-                    request._onerror_ = function () {
-                        clearInterval(checkIDBIntervalID);
-                        addOutput("Couldn't open indexedDB.");
-                        semaphoreIDBCheck = false;
-                        finishTest();
-                    };
-                    request._onupgradeneeded_ = function () {
-                        // Let the next interval check again.
-                        semaphoreIDBCheck = false;
-                    };
-                    request._onsuccess_ = function () {
-                        clearInterval(checkIDBIntervalID);
-                        addOutput("Before statistics processing: IDB entry does exist.");
-                        semaphoreIDBCheck = false;
-                        checkIDBCallback();
-                    };
-                }
-            }, 200);
-        } else {
-            // Check until there is no IDB.
-            checkIDBIntervalID = setInterval(function () {
-                if (semaphoreIDBCheck)
-                    return;
-                semaphoreIDBCheck = true;
-
-                if (++intervalCounterIDB >= maxIntervals) {
-                    clearInterval(checkIDBIntervalID);
-                    addOutput("After statistics processing: IDB entry does exist.");
-                    semaphoreIDBCheck = false;
-                    checkIDBCallback();
-                } else {
-                    request = indexedDB.open(dbName);
-                    request._onerror_ = function () {
-                        clearInterval(checkIDBIntervalID);
-                        addOutput("Couldn't open indexedDB.");
-                        semaphoreIDBCheck = false;
-                        finishTest();
-                    };
-                    request._onupgradeneeded_ = function () {
-                        clearInterval(checkIDBIntervalID);
-                        addOutput("After statistics processing: IDB entry does not exist.");
-                        semaphoreIDBCheck = false;
-                        finishTest();
-                    };
-                    request._onsuccess_ = function () {
-                        // Let the next interval check again because deletion might be delayed.
-                        semaphoreIDBCheck = false;
-                    };
-                }
-            }, 200);
-        }
-    }
-
-    let intervalCounterLocalStorage;
-    let checkLocalStorageCallback;
-    let checkLocalStorageIntervalID;
-    const localStorageName = "test";
-    const localStorageValue = "value";
-    function checkLocalStorageExists(isAfterDeletion, callback) {
-        intervalCounterLocalStorage = 0;
-        checkLocalStorageCallback = callback;
-        if (!isAfterDeletion) {
-            // Check until there is LocalStorage.
-            checkLocalStorageIntervalID = setInterval(function() {
-                if (++intervalCounterLocalStorage >= maxIntervals) {
-                    clearInterval(checkLocalStorageIntervalID);
-                    let value = localStorage.getItem(localStorageName);
-                    addOutput("Before statistics processing: LocalStorage entry " + (value === localStorageValue ? "does" : "does not") + " exist.");
-                    checkLocalStorageCallback();
-                } else if (testRunner.isStatisticsHasLocalStorage(originUnderTest)) {
-                    clearInterval(checkLocalStorageIntervalID);
-                    let value = localStorage.getItem(localStorageName);
-                    addOutput("Before statistics processing: LocalStorage entry " + (value === localStorageValue ? "does" : "does not") + " exist.");
-                    checkLocalStorageCallback();
-                }
-            }, 100);
-        } else {
-            // Check until there is no LocalStorage.
-            checkLocalStorageIntervalID = setInterval(function() {
-                if (++intervalCounterLocalStorage >= maxIntervals) {
-                    clearInterval(checkLocalStorageIntervalID);
-                    let value = localStorage.getItem(localStorageName);
-                    addOutput("After statistics processing: LocalStorage entry " + (value === localStorageValue ? "does" : "does not") + " exist.");
-                    checkLocalStorageCallback();
-                } else if (!testRunner.isStatisticsHasLocalStorage(originUnderTest)) {
-                    clearInterval(checkLocalStorageIntervalID);
-                    let value = localStorage.getItem(localStorageName);
-                    addOutput("After statistics processing: LocalStorage entry " + (value === localStorageValue ? "does" : "does not") + " exist.");
-                    checkLocalStorageCallback();
-                }
-            }, 100);
-        }
-    }
-
-    async function writeWebsiteDataAndContinue() {
-        // Write cookies.
-        await fetch("/cookies/resources/set-http-only-cookie.php?cookieName=" + httpOnlyCookieName, { credentials: "same-origin" });
-        await fetch("/cookies/resources/setCookies.cgi", { headers: { "Set-Cookie": serverSideCookieName + "=1; path=/;" }, credentials: "same-origin" });
-        document.cookie = clientSideCookieName + "=1";
-
-        checkCookies(false);
-
-        // Write LocalStorage
-        localStorage.setItem(localStorageName, localStorageValue);
-        checkLocalStorageExists(false, function() {
-
-            // Write IndexedDB.
-            createIDBDataStore(function () {
-                checkIDBDataStoreExists(false, function() {
-                    addLinebreakToOutput();
-                    processWebsiteDataAndContinue();
-                });
-            });
-        });
-    }
-
-    function processWebsiteDataAndContinue() {
-        testRunner.installStatisticsDidScanDataRecordsCallback(checkWebsiteDataAndContinue);
-        testRunner.statisticsProcessStatisticsAndDataRecords();
-    }
-
-    function checkWebsiteDataAndContinue() {
-        checkCookies(true);
-        checkLocalStorageExists(true, function () {
-            checkIDBDataStoreExists(true, finishTest);
-        });
-    }
-
-    const originUnderTest  = "http://127.0.0.1:8000";
-    const otherOrigin = "http://localhost:8000"
-    const topFrameOrigin = "http://127.0.0.2:8000";
-    const timeStamp = Math.round((new Date()).getTime() / 1000);
-    function finishTest() {
-        if (!testRunner.isStatisticsHasHadUserInteraction(originUnderTest))
-            addOutput("FAIL: " + originUnderTest + " doesn't have user interaction after processing.");
-        resetCookies();
-        setEnableFeature(false, function() {
-            testRunner.notifyDone();
-        });
-    }
-
-    // Do not use setEnableFeature here because we want to make sure website data deletion is not skipped
-    // by the presence of parameters().isRunningTest.
-    function runTest() {
-        testRunner.setStatisticsMinimumTimeBetweenDataRecordsRemoval(3600);
-        // Merge a statistic with no user interaction to check the -1 case.
-        testRunner.setStatisticsMergeStatistic(otherOrigin, topFrameOrigin, "", timeStamp, false, -1, false, false, false, 0, function() {
-            testRunner.setStatisticsFirstPartyWebsiteDataRemovalMode(true, function () {
-                testRunner.setStatisticsExpiredStatistic(originUnderTest,
-                    7,     // numberOfOperatingDaysPassed
-                    true,  // hasUserInteraction
-                    false, // isScheduledForAllButCookieDataRemoval,
-                    false, // isPrevalent
-                    function() {
-                    writeWebsiteDataAndContinue();
-                });
-            });
-        });
-    }
-</script>
-</body>
-</html>

Modified: branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-website-data-removed.html (273681 => 273682)


--- branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-website-data-removed.html	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-website-data-removed.html	2021-03-01 20:53:49 UTC (rev 273682)
@@ -238,12 +238,8 @@
 
     function runTest() {
         setEnableFeature(true, function () {
-            testRunner.setStatisticsExpiredStatistic(originUnderTest,
-                30,    // numberOfOperatingDaysPassed
-                true,  // hasUserInteraction
-                false, // isScheduledForAllButCookieDataRemoval,
-                true,  // isPrevalent
-                function() {
+            // insertStatisticsExpiredStatistic(domain, hasHadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent)
+            testRunner.setStatisticsExpiredStatistic(originUnderTest, true, false, true, function() {
                 if (!testRunner.isStatisticsPrevalentResource(originUnderTest))
                     addOutput("FAIL: " + originUnderTest + " did not get inserted into database.");
                 writeWebsiteDataAndContinue();

Modified: branches/safari-611.1.21.2-branch/LayoutTests/platform/wk2/TestExpectations (273681 => 273682)


--- branches/safari-611.1.21.2-branch/LayoutTests/platform/wk2/TestExpectations	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/LayoutTests/platform/wk2/TestExpectations	2021-03-01 20:53:49 UTC (rev 273682)
@@ -711,7 +711,7 @@
 http/tests/resourceLoadStatistics/enforce-samesite-strict-based-on-top-frame-unique-redirects-to.html [ Skip ]
 
 # This test is flaky. <rdar://problem/69748720>
-http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html [ Pass Failure ]
+http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction.html [ Pass Failure ]
 
 # The CNAME and cookie transform SPIs are only available in macOS Big Sur + iOS 14 and above.
 http/tests/resourceLoadStatistics/cname-cloaking-top-cname-sub-1p-cname.html [ Skip ]

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/ChangeLog (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/ChangeLog	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/ChangeLog	2021-03-01 20:53:49 UTC (rev 273682)
@@ -1,154 +1,3 @@
-2021-03-01  Alan Coon  <alanc...@apple.com>
-
-        Cherry-pick r273590. rdar://problem/74881403
-
-    Non-cookie website data not deleted after 7 days of browser use without user interaction
-    https://bugs.webkit.org/show_bug.cgi?id=222248
-    <rdar://problem/74612589>
-    
-    Reviewed by Brent Fulgham and informally by Kate Cheney.
-    
-    Source/WebKit:
-    
-    Tests: http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago.html
-           http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html
-    
-    * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
-    (WebKit::ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters):
-        Now sets two new member variables:
-        - Optional<OperatingDate> m_longWindowOperatingDate
-        - Optional<OperatingDate> m_shortWindowOperatingDate
-        These are only set if the minimum number of operating days has passed.
-        This function no longer sets m_leastRecentOperatingDate.
-    (WebKit::ResourceLoadStatisticsDatabaseStore::hasStatisticsExpired const):
-        Now checks against the two new member variables m_longWindowOperatingDate
-        and m_shortWindowOperatingDate. This fixes the bug.
-    (WebKit::ResourceLoadStatisticsDatabaseStore::insertExpiredStatisticForTesting):
-        Test infrastructure. Now takes the new parameter numberOfOperatingDaysPassed
-        with which layout tests can control the exact number of operating days
-        passed since user interaction.
-    * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
-        Added m_longWindowOperatingDate and m_shortWindowOperatingDate, and
-        removed m_leastRecentOperatingDate since it's no longer used.
-    * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
-    (WebKit::ResourceLoadStatisticsMemoryStore::insertExpiredStatisticForTesting):
-        Test infrastructure. The same changes as in the DB store.
-    * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
-    * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
-    * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
-    (WebKit::WebResourceLoadStatisticsStore::insertExpiredStatisticForTesting):
-        Test infrastructure.
-    * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
-    * NetworkProcess/NetworkProcess.cpp:
-    (WebKit::NetworkProcess::insertExpiredStatisticForTesting):
-        Test infrastructure.
-    * NetworkProcess/NetworkProcess.h:
-    * NetworkProcess/NetworkProcess.messages.in:
-    * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
-    (WKWebsiteDataStoreSetStatisticsExpiredStatistic):
-        Test infrastructure.
-    * UIProcess/API/C/WKWebsiteDataStoreRef.h:
-    * UIProcess/Network/NetworkProcessProxy.cpp:
-    (WebKit::NetworkProcessProxy::insertExpiredStatisticForTesting):
-        Test infrastructure.
-    * UIProcess/Network/NetworkProcessProxy.h:
-    * UIProcess/WebsiteData/WebsiteDataStore.cpp:
-    (WebKit::WebsiteDataStore::insertExpiredStatisticForTesting):
-        Test infrastructure.
-    * UIProcess/WebsiteData/WebsiteDataStore.h:
-    
-    Tools:
-    
-    A new numberOfOperatingDaysPassed parameter was added to
-    testRunner.setStatisticsExpiredStatistic() to control the exact
-    number of operating days passed since user interaction.
-    
-    * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
-    * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
-    (WTR::TestRunner::setStatisticsExpiredStatistic):
-    * WebKitTestRunner/InjectedBundle/TestRunner.h:
-    * WebKitTestRunner/TestController.cpp:
-    (WTR::TestController::setStatisticsExpiredStatistic):
-    * WebKitTestRunner/TestController.h:
-    * WebKitTestRunner/TestInvocation.cpp:
-    (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
-    
-    LayoutTests:
-    
-    Existing test cases now make use of the new numberOfOperatingDaysPassed
-    parameter to testRunner.setStatisticsExpiredStatistic() to control the exact
-    number of operating days passed since user interaction.
-    A new test case makes sure website data is not deleted below the threshold.
-    
-    * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago-expected.txt: Added.
-    * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago.html: Added.
-        Sets numberOfOperatingDaysPassed to 6.
-    * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago-expected.txt: Renamed from LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction-expected.txt.
-    * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html: Renamed from LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction.html.
-        Sets numberOfOperatingDaysPassed to 7.
-    * http/tests/resourceLoadStatistics/operating-dates-all-website-data-removed.html:
-        Sets numberOfOperatingDaysPassed to 30.
-    * platform/wk2/TestExpectations:
-        Updated existing expectation with new file name.
-    
-    
-    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273590 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
-    2021-02-26  John Wilander  <wilan...@apple.com>
-
-            Non-cookie website data not deleted after 7 days of browser use without user interaction
-            https://bugs.webkit.org/show_bug.cgi?id=222248
-            <rdar://problem/74612589>
-
-            Reviewed by Brent Fulgham and informally by Kate Cheney.
-
-            Tests: http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago.html
-                   http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html
-
-            * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
-            (WebKit::ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters):
-                Now sets two new member variables:
-                - Optional<OperatingDate> m_longWindowOperatingDate
-                - Optional<OperatingDate> m_shortWindowOperatingDate
-                These are only set if the minimum number of operating days has passed.
-                This function no longer sets m_leastRecentOperatingDate.
-            (WebKit::ResourceLoadStatisticsDatabaseStore::hasStatisticsExpired const):
-                Now checks against the two new member variables m_longWindowOperatingDate
-                and m_shortWindowOperatingDate. This fixes the bug.
-            (WebKit::ResourceLoadStatisticsDatabaseStore::insertExpiredStatisticForTesting):
-                Test infrastructure. Now takes the new parameter numberOfOperatingDaysPassed
-                with which layout tests can control the exact number of operating days
-                passed since user interaction.
-            * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
-                Added m_longWindowOperatingDate and m_shortWindowOperatingDate, and
-                removed m_leastRecentOperatingDate since it's no longer used.
-            * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
-            (WebKit::ResourceLoadStatisticsMemoryStore::insertExpiredStatisticForTesting):
-                Test infrastructure. The same changes as in the DB store.
-            * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
-            * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
-            * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
-            (WebKit::WebResourceLoadStatisticsStore::insertExpiredStatisticForTesting):
-                Test infrastructure.
-            * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
-            * NetworkProcess/NetworkProcess.cpp:
-            (WebKit::NetworkProcess::insertExpiredStatisticForTesting):
-                Test infrastructure.
-            * NetworkProcess/NetworkProcess.h:
-            * NetworkProcess/NetworkProcess.messages.in:
-            * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
-            (WKWebsiteDataStoreSetStatisticsExpiredStatistic):
-                Test infrastructure.
-            * UIProcess/API/C/WKWebsiteDataStoreRef.h:
-            * UIProcess/Network/NetworkProcessProxy.cpp:
-            (WebKit::NetworkProcessProxy::insertExpiredStatisticForTesting):
-                Test infrastructure.
-            * UIProcess/Network/NetworkProcessProxy.h:
-            * UIProcess/WebsiteData/WebsiteDataStore.cpp:
-            (WebKit::WebsiteDataStore::insertExpiredStatisticForTesting):
-                Test infrastructure.
-            * UIProcess/WebsiteData/WebsiteDataStore.h:
-
 2021-02-25  Russell Epstein  <repst...@apple.com>
 
         Cherry-pick r273452. rdar://problem/74753294

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp	2021-03-01 20:53:49 UTC (rev 273682)
@@ -2739,7 +2739,7 @@
 {
     SQLiteStatement countOperatingDatesStatement(m_database, "SELECT COUNT(*) FROM OperatingDates;"_s);
     SQLiteStatement getMostRecentOperatingDateStatement(m_database, "SELECT * FROM OperatingDates ORDER BY year DESC, month DESC, monthDay DESC LIMIT 1;"_s);
-    SQLiteStatement getOperatingDateWindowStatement(m_database, "SELECT * FROM OperatingDates ORDER BY year DESC, month DESC, monthDay DESC LIMIT 1 OFFSET ?;"_s);
+    SQLiteStatement getLeastRecentOperatingDateStatement(m_database, "SELECT * FROM OperatingDates ORDER BY year, month, monthDay LIMIT 1;"_s);
 
     if (countOperatingDatesStatement.prepare() != SQLITE_OK
         || countOperatingDatesStatement.step() != SQLITE_ROW) {
@@ -2756,38 +2756,17 @@
         ASSERT_NOT_REACHED();
         return;
     }
+
     m_mostRecentOperatingDate = OperatingDate(getMostRecentOperatingDateStatement.getColumnInt(0), getMostRecentOperatingDateStatement.getColumnInt(1), getMostRecentOperatingDateStatement.getColumnInt(2));
 
-    if (getOperatingDateWindowStatement.prepare() != SQLITE_OK) {
-        RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, "%p - ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters getOperatingDateWindowStatement failed during the call to prepare() with error message: %{private}s.", this, m_database.lastErrorMsg());
+    if (getLeastRecentOperatingDateStatement.prepare() != SQLITE_OK
+        || getLeastRecentOperatingDateStatement.step() != SQLITE_ROW) {
+        RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, "%p - ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters getLeastRecentOperatingDateStatement failed to step, error message: %{private}s", this, m_database.lastErrorMsg());
         ASSERT_NOT_REACHED();
         return;
     }
 
-    if (m_operatingDatesSize <= operatingDatesWindowShort - 1)
-        m_shortWindowOperatingDate = WTF::nullopt;
-    else {
-        if (getOperatingDateWindowStatement.bindInt(1, operatingDatesWindowShort - 1) != SQLITE_OK
-            || getOperatingDateWindowStatement.step() != SQLITE_ROW) {
-            RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, "%p - ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters getOperatingDateWindowStatement failed with error message: %{private}s. The error could be in the calls to bind() or step().", this, m_database.lastErrorMsg());
-            ASSERT_NOT_REACHED();
-            return;
-        }
-        m_shortWindowOperatingDate = OperatingDate(getOperatingDateWindowStatement.getColumnInt(0), getOperatingDateWindowStatement.getColumnInt(1), getOperatingDateWindowStatement.getColumnInt(2));
-    }
-
-    if (m_operatingDatesSize <= operatingDatesWindowLong - 1)
-        m_longWindowOperatingDate = WTF::nullopt;
-    else {
-        getOperatingDateWindowStatement.reset();
-        if (getOperatingDateWindowStatement.bindInt(1, operatingDatesWindowLong - 1) != SQLITE_OK
-            || getOperatingDateWindowStatement.step() != SQLITE_ROW) {
-            RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, "%p - ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters getOperatingDateWindowStatement failed with error message: %{private}s. The error could be in the calls to bind() or step().", this, m_database.lastErrorMsg());
-            ASSERT_NOT_REACHED();
-            return;
-        }
-        m_longWindowOperatingDate = OperatingDate(getOperatingDateWindowStatement.getColumnInt(0), getOperatingDateWindowStatement.getColumnInt(1), getOperatingDateWindowStatement.getColumnInt(2));
-    }
+    m_leastRecentOperatingDate = OperatingDate(getLeastRecentOperatingDateStatement.getColumnInt(0), getLeastRecentOperatingDateStatement.getColumnInt(1), getLeastRecentOperatingDateStatement.getColumnInt(2));
 }
 
 void ResourceLoadStatisticsDatabaseStore::includeTodayAsOperatingDateIfNecessary()
@@ -2828,14 +2807,13 @@
 {
     ASSERT(!RunLoop::isMain());
 
+    unsigned operatingDatesWindowInDays = 0;
     switch (operatingDatesWindow) {
     case OperatingDatesWindow::Long:
-        if (m_longWindowOperatingDate && OperatingDate::fromWallTime(mostRecentUserInteractionTime) < *m_longWindowOperatingDate)
-            return true;
+        operatingDatesWindowInDays = operatingDatesWindowLong;
         break;
     case OperatingDatesWindow::Short:
-        if (m_shortWindowOperatingDate && OperatingDate::fromWallTime(mostRecentUserInteractionTime) < *m_shortWindowOperatingDate)
-            return true;
+        operatingDatesWindowInDays = operatingDatesWindowShort;
         break;
     case OperatingDatesWindow::ForLiveOnTesting:
         return WallTime::now() > mostRecentUserInteractionTime + operatingTimeWindowForLiveOnTesting;
@@ -2843,6 +2821,11 @@
         return true;
     }
 
+    if (m_operatingDatesSize >= operatingDatesWindowInDays) {
+        if (OperatingDate::fromWallTime(mostRecentUserInteractionTime) < m_leastRecentOperatingDate)
+            return true;
+    }
+
     // If we don't meet the real criteria for an expired statistic, check the user setting for a tighter restriction (mainly for testing).
     if (this->parameters().timeToLiveUserInteraction) {
         if (WallTime::now() > mostRecentUserInteractionTime + this->parameters().timeToLiveUserInteraction.value())
@@ -2851,11 +2834,11 @@
     return false;
 }
 
-void ResourceLoadStatisticsDatabaseStore::insertExpiredStatisticForTesting(const RegistrableDomain& domain, unsigned numberOfOperatingDaysPassed, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent)
+void ResourceLoadStatisticsDatabaseStore::insertExpiredStatisticForTesting(const RegistrableDomain& domain, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent)
 {
     // Populate the Operating Dates table with enough days to require pruning.
     double daysAgoInSeconds = 0;
-    for (unsigned i = 1; i <= numberOfOperatingDaysPassed; i++) {
+    for (unsigned i = 1; i <= operatingDatesWindowLong; i++) {
         double daysToSubtract = Seconds::fromHours(24 * i).value();
         daysAgoInSeconds = WallTime::now().secondsSinceEpoch().value() - daysToSubtract;
         auto dateToInsert = OperatingDate::fromWallTime(WallTime::fromRawSeconds(daysAgoInSeconds));

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h	2021-03-01 20:53:49 UTC (rev 273682)
@@ -128,7 +128,7 @@
     Vector<RegistrableDomain> allDomains() const final;
     bool domainIDExistsInDatabase(int);
     Optional<Vector<String>> checkForMissingTablesInSchema();
-    void insertExpiredStatisticForTesting(const RegistrableDomain&, unsigned numberOfOperatingDaysPassed, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent) override;
+    void insertExpiredStatisticForTesting(const RegistrableDomain&, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent) override;
     void interrupt();
 
     // Private Click Measurement.
@@ -291,8 +291,7 @@
     PAL::SessionID m_sessionID;
     bool m_isNewResourceLoadStatisticsDatabaseFile { false };
     unsigned m_operatingDatesSize { 0 };
-    Optional<OperatingDate> m_longWindowOperatingDate;
-    Optional<OperatingDate> m_shortWindowOperatingDate;
+    OperatingDate m_leastRecentOperatingDate;
     OperatingDate m_mostRecentOperatingDate;
 };
 

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp	2021-03-01 20:53:49 UTC (rev 273682)
@@ -1137,11 +1137,11 @@
     return hasStatisticsExpired(resourceStatistic.mostRecentUserInteractionTime, operatingDatesWindow);
 }
 
-void ResourceLoadStatisticsMemoryStore::insertExpiredStatisticForTesting(const RegistrableDomain& domain, unsigned numberOfOperatingDaysPassed, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent)
+void ResourceLoadStatisticsMemoryStore::insertExpiredStatisticForTesting(const RegistrableDomain& domain, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent)
 {
     // Populate the Operating Dates table with enough days to require pruning.
     double daysAgoInSeconds = 0;
-    for (unsigned i = 1; i <= numberOfOperatingDaysPassed; i++) {
+    for (unsigned i = 1; i <= operatingDatesWindowLong; i++) {
         double daysToSubtract = Seconds::fromHours(24 * i).value();
         daysAgoInSeconds = WallTime::now().secondsSinceEpoch().value() - daysToSubtract;
         auto dateToInsert = OperatingDate::fromWallTime(WallTime::fromRawSeconds(daysAgoInSeconds));

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h	2021-03-01 20:53:49 UTC (rev 273682)
@@ -106,7 +106,7 @@
     void setLastSeen(const RegistrableDomain&, Seconds) override;
     void removeDataForDomain(const RegistrableDomain&) override;
     Vector<RegistrableDomain> allDomains() const final;
-    void insertExpiredStatisticForTesting(const RegistrableDomain&, unsigned numberOfOperatingDaysPassed, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent) override;
+    void insertExpiredStatisticForTesting(const RegistrableDomain&, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent) override;
 
     // Private Click Measurement is not implemented in the ITP memory store.
     void insertPrivateClickMeasurement(WebCore::PrivateClickMeasurement&&, PrivateClickMeasurementAttributionType) override { };

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h	2021-03-01 20:53:49 UTC (rev 273682)
@@ -201,7 +201,7 @@
     virtual void includeTodayAsOperatingDateIfNecessary() = 0;
     virtual void clearOperatingDates() = 0;
     virtual bool hasStatisticsExpired(WallTime mostRecentUserInteractionTime, OperatingDatesWindow) const = 0;
-    virtual void insertExpiredStatisticForTesting(const RegistrableDomain&, unsigned numberOfOperatingDaysPassed, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool) = 0;
+    virtual void insertExpiredStatisticForTesting(const RegistrableDomain&, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool) = 0;
     
     // Private Click Measurement.
     virtual void insertPrivateClickMeasurement(WebCore::PrivateClickMeasurement&&, PrivateClickMeasurementAttributionType) = 0;

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp	2021-03-01 20:53:49 UTC (rev 273682)
@@ -1464,13 +1464,13 @@
         suspendedStateChangeCondition.notifyOne();
 }
 
-void WebResourceLoadStatisticsStore::insertExpiredStatisticForTesting(const RegistrableDomain& domain, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&& completionHandler)
+void WebResourceLoadStatisticsStore::insertExpiredStatisticForTesting(const RegistrableDomain& domain, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&& completionHandler)
 {
     ASSERT(RunLoop::isMain());
 
-    postTask([this, domain = domain.isolatedCopy(), numberOfOperatingDaysPassed, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent, completionHandler = WTFMove(completionHandler)]() mutable {
+    postTask([this, domain = domain.isolatedCopy(), hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent, completionHandler = WTFMove(completionHandler)]() mutable {
         if (m_statisticsStore)
-            m_statisticsStore->insertExpiredStatisticForTesting(WTFMove(domain), numberOfOperatingDaysPassed, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent);
+            m_statisticsStore->insertExpiredStatisticForTesting(WTFMove(domain), hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent);
         postTaskReply(WTFMove(completionHandler));
     });
 }

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h	2021-03-01 20:53:49 UTC (rev 273682)
@@ -304,7 +304,7 @@
     static void resume();
     
     bool isEphemeral() const { return m_isEphemeral == WebCore::ResourceLoadStatistics::IsEphemeral::Yes; };
-    void insertExpiredStatisticForTesting(const RegistrableDomain&, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&&);
+    void insertExpiredStatisticForTesting(const RegistrableDomain&, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&&);
 
     // Private Click Measurement.
     void insertPrivateClickMeasurement(WebCore::PrivateClickMeasurement&&, PrivateClickMeasurementAttributionType);

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2021-03-01 20:53:49 UTC (rev 273682)
@@ -950,11 +950,11 @@
     }
 }
 
-void NetworkProcess::insertExpiredStatisticForTesting(PAL::SessionID sessionID, const RegistrableDomain& domain, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&& completionHandler)
+void NetworkProcess::insertExpiredStatisticForTesting(PAL::SessionID sessionID, const RegistrableDomain& domain, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&& completionHandler)
 {
     if (auto* networkSession = this->networkSession(sessionID)) {
         if (auto* resourceLoadStatistics = networkSession->resourceLoadStatistics())
-            resourceLoadStatistics->insertExpiredStatisticForTesting(domain, numberOfOperatingDaysPassed, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent, WTFMove(completionHandler));
+            resourceLoadStatistics->insertExpiredStatisticForTesting(domain, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent, WTFMove(completionHandler));
         else
             completionHandler();
     } else {

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/NetworkProcess.h (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/NetworkProcess.h	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/NetworkProcess.h	2021-03-01 20:53:49 UTC (rev 273682)
@@ -243,7 +243,7 @@
     void setLastSeen(PAL::SessionID, const RegistrableDomain&, Seconds, CompletionHandler<void()>&&);
     void domainIDExistsInDatabase(PAL::SessionID, int domainID, CompletionHandler<void(bool)>&&);
     void mergeStatisticForTesting(PAL::SessionID, const RegistrableDomain&, const TopFrameDomain& topFrameDomain1, const TopFrameDomain& topFrameDomain2, Seconds lastSeen, bool hadUserInteraction, Seconds mostRecentUserInteraction, bool isGrandfathered, bool isPrevalent, bool isVeryPrevalent, unsigned dataRecordsRemoved, CompletionHandler<void()>&&);
-    void insertExpiredStatisticForTesting(PAL::SessionID, const RegistrableDomain&, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&&);
+    void insertExpiredStatisticForTesting(PAL::SessionID, const RegistrableDomain&, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&&);
     void setMinimumTimeBetweenDataRecordsRemoval(PAL::SessionID, Seconds, CompletionHandler<void()>&&);
     void setNotifyPagesWhenDataRecordsWereScanned(PAL::SessionID, bool value, CompletionHandler<void()>&&);
     void setIsRunningResourceLoadStatisticsTest(PAL::SessionID, bool value, CompletionHandler<void()>&&);

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/NetworkProcess.messages.in	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/NetworkProcess/NetworkProcess.messages.in	2021-03-01 20:53:49 UTC (rev 273682)
@@ -92,7 +92,7 @@
     SetAgeCapForClientSideCookies(PAL::SessionID sessionID, Optional<Seconds> seconds) -> () Async
     SetLastSeen(PAL::SessionID sessionID, WebCore::RegistrableDomain resourceDomain, Seconds seconds) -> () Async
     MergeStatisticForTesting(PAL::SessionID sessionID, WebCore::RegistrableDomain resourceDomain, WebCore::RegistrableDomain topFrameDomain1, WebCore::RegistrableDomain topFrameDomain2, Seconds lastSeen, bool hadUserInteraction, Seconds mostRecentUserInteraction, bool isGrandfathered, bool isPrevalent, bool isVeryPrevalent, uint64_t dataRecordsRemoved) -> () Async
-    InsertExpiredStatisticForTesting(PAL::SessionID sessionID, WebCore::RegistrableDomain resourceDomain, uint64_t numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent) -> () Async
+    InsertExpiredStatisticForTesting(PAL::SessionID sessionID, WebCore::RegistrableDomain resourceDomain, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent) -> () Async
     SetPrevalentResource(PAL::SessionID sessionID, WebCore::RegistrableDomain resourceDomain) -> () Async
     SetPrevalentResourceForDebugMode(PAL::SessionID sessionID, WebCore::RegistrableDomain resourceDomain) -> () Async
     IsResourceLoadStatisticsEphemeral(PAL::SessionID sessionID) -> (bool isEphemeral) Async

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp	2021-03-01 20:53:49 UTC (rev 273682)
@@ -214,10 +214,10 @@
 #endif
 }
 
-void WKWebsiteDataStoreSetStatisticsExpiredStatistic(WKWebsiteDataStoreRef dataStoreRef, WKStringRef host, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, void* context, WKWebsiteDataStoreStatisticsMergeStatisticFunction completionHandler)
+void WKWebsiteDataStoreSetStatisticsExpiredStatistic(WKWebsiteDataStoreRef dataStoreRef, WKStringRef host, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, void* context, WKWebsiteDataStoreStatisticsMergeStatisticFunction completionHandler)
 {
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
-    WebKit::toImpl(dataStoreRef)->insertExpiredStatisticForTesting(URL(URL(), WebKit::toImpl(host)->string()), numberOfOperatingDaysPassed, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent, [context, completionHandler] {
+    WebKit::toImpl(dataStoreRef)->insertExpiredStatisticForTesting(URL(URL(), WebKit::toImpl(host)->string()), hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent, [context, completionHandler] {
         completionHandler(context);
     });
 #else

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h	2021-03-01 20:53:49 UTC (rev 273682)
@@ -75,7 +75,7 @@
 typedef void (*WKWebsiteDataStoreStatisticsMergeStatisticFunction)(void* functionContext);
 WK_EXPORT void WKWebsiteDataStoreSetStatisticsMergeStatistic(WKWebsiteDataStoreRef dataStoreRef, WKStringRef host, WKStringRef topFrameDomain1, WKStringRef topFrameDomain2, double lastSeen, bool hadUserInteraction, double mostRecentUserInteraction, bool isGrandfathered, bool isPrevalent, bool isVeryPrevalent, unsigned dataRecordsRemoved, void* context, WKWebsiteDataStoreStatisticsMergeStatisticFunction completionHandler);
 typedef void (*WKWebsiteDataStoreStatisticsExpiredStatisticFunction)(void* functionContext);
-WK_EXPORT void WKWebsiteDataStoreSetStatisticsExpiredStatistic(WKWebsiteDataStoreRef dataStoreRef, WKStringRef host, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, void* context, WKWebsiteDataStoreStatisticsExpiredStatisticFunction completionHandler);
+WK_EXPORT void WKWebsiteDataStoreSetStatisticsExpiredStatistic(WKWebsiteDataStoreRef dataStoreRef, WKStringRef host, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, void* context, WKWebsiteDataStoreStatisticsExpiredStatisticFunction completionHandler);
 typedef void (*WKWebsiteDataStoreStatisticsPrevalentResourceFunction)(void* functionContext);
 WK_EXPORT void WKWebsiteDataStoreSetStatisticsPrevalentResource(WKWebsiteDataStoreRef dataStoreRef, WKStringRef host, bool value, void* context, WKWebsiteDataStoreStatisticsPrevalentResourceFunction completionHandler);
 typedef void (*WKWebsiteDataStoreStatisticsVeryPrevalentResourceFunction)(void* functionContext);

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2021-03-01 20:53:49 UTC (rev 273682)
@@ -700,9 +700,9 @@
     sendWithAsyncReply(Messages::NetworkProcess::MergeStatisticForTesting(sessionID, resourceDomain, topFrameDomain1, topFrameDomain2, lastSeen, hadUserInteraction, mostRecentUserInteraction, isGrandfathered, isPrevalent, isVeryPrevalent, dataRecordsRemoved), WTFMove(completionHandler));
 }
 
-void NetworkProcessProxy::insertExpiredStatisticForTesting(PAL::SessionID sessionID, const RegistrableDomain& resourceDomain, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&& completionHandler)
+void NetworkProcessProxy::insertExpiredStatisticForTesting(PAL::SessionID sessionID, const RegistrableDomain& resourceDomain, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&& completionHandler)
 {
-    sendWithAsyncReply(Messages::NetworkProcess::InsertExpiredStatisticForTesting(sessionID, resourceDomain, numberOfOperatingDaysPassed, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent), WTFMove(completionHandler));
+    sendWithAsyncReply(Messages::NetworkProcess::InsertExpiredStatisticForTesting(sessionID, resourceDomain, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent), WTFMove(completionHandler));
 }
 
 void NetworkProcessProxy::clearPrevalentResource(PAL::SessionID sessionID, const RegistrableDomain& resourceDomain, CompletionHandler<void()>&& completionHandler)

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h	2021-03-01 20:53:49 UTC (rev 273682)
@@ -150,7 +150,7 @@
     void domainIDExistsInDatabase(PAL::SessionID, int domainID, CompletionHandler<void(bool)>&&);
     void statisticsDatabaseHasAllTables(PAL::SessionID, CompletionHandler<void(bool)>&&);
     void mergeStatisticForTesting(PAL::SessionID, const RegistrableDomain&, const TopFrameDomain& topFrameDomain1, const TopFrameDomain& topFrameDomain2, Seconds lastSeen, bool hadUserInteraction, Seconds mostRecentUserInteraction, bool isGrandfathered, bool isPrevalent, bool isVeryPrevalent, unsigned dataRecordsRemoved, CompletionHandler<void()>&&);
-    void insertExpiredStatisticForTesting(PAL::SessionID, const RegistrableDomain&, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&&);
+    void insertExpiredStatisticForTesting(PAL::SessionID, const RegistrableDomain&, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&&);
     void setAgeCapForClientSideCookies(PAL::SessionID, Optional<Seconds>, CompletionHandler<void()>&&);
     void setCacheMaxAgeCap(PAL::SessionID, Seconds, CompletionHandler<void()>&&);
     void setGrandfathered(PAL::SessionID, const RegistrableDomain&, bool isGrandfathered, CompletionHandler<void()>&&);

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp	2021-03-01 20:53:49 UTC (rev 273682)
@@ -1551,7 +1551,7 @@
     networkProcess().mergeStatisticForTesting(m_sessionID, WebCore::RegistrableDomain { url }, WebCore::RegistrableDomain { topFrameUrl1 }, WebCore::RegistrableDomain { topFrameUrl2 }, lastSeen, hadUserInteraction, mostRecentUserInteraction, isGrandfathered, isPrevalent, isVeryPrevalent, dataRecordsRemoved, [callbackAggregator] { });
 }
 
-void WebsiteDataStore::insertExpiredStatisticForTesting(const URL& url, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&& completionHandler)
+void WebsiteDataStore::insertExpiredStatisticForTesting(const URL& url, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&& completionHandler)
 {
     if (url.protocolIsAbout() || url.isEmpty()) {
         completionHandler();
@@ -1560,7 +1560,7 @@
 
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
 
-    networkProcess().insertExpiredStatisticForTesting(m_sessionID, WebCore::RegistrableDomain { url }, numberOfOperatingDaysPassed, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent, [callbackAggregator] { });
+    networkProcess().insertExpiredStatisticForTesting(m_sessionID, WebCore::RegistrableDomain { url }, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent, [callbackAggregator] { });
 }
 
 void WebsiteDataStore::setNotifyPagesWhenDataRecordsWereScanned(bool value, CompletionHandler<void()>&& completionHandler)

Modified: branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h	2021-03-01 20:53:49 UTC (rev 273682)
@@ -197,7 +197,7 @@
     void domainIDExistsInDatabase(int domainID, CompletionHandler<void(bool)>&&);
     void statisticsDatabaseHasAllTables(CompletionHandler<void(bool)>&&);
     void mergeStatisticForTesting(const URL&, const URL& topFrameUrl1, const URL& topFrameUrl2, Seconds lastSeen, bool hadUserInteraction, Seconds mostRecentUserInteraction, bool isGrandfathered, bool isPrevalent, bool isVeryPrevalent, unsigned dataRecordsRemoved, CompletionHandler<void()>&&);
-    void insertExpiredStatisticForTesting(const URL&, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&&);
+    void insertExpiredStatisticForTesting(const URL&, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, CompletionHandler<void()>&&);
     void setNotifyPagesWhenDataRecordsWereScanned(bool, CompletionHandler<void()>&&);
     void setIsRunningResourceLoadStatisticsTest(bool, CompletionHandler<void()>&&);
     void setPruneEntriesDownTo(size_t, CompletionHandler<void()>&&);

Modified: branches/safari-611.1.21.2-branch/Tools/ChangeLog (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Tools/ChangeLog	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Tools/ChangeLog	2021-03-01 20:53:49 UTC (rev 273682)
@@ -1,141 +1,23 @@
-2021-03-01  Alan Coon  <alanc...@apple.com>
+    2021-02-25  Myles C. Maxfield  <mmaxfi...@apple.com>
 
-        Cherry-pick r273590. rdar://problem/74881403
+            Unreviewed, reverting r273390 and r273391.
+            https://bugs.webkit.org/show_bug.cgi?id=222449
 
-    Non-cookie website data not deleted after 7 days of browser use without user interaction
-    https://bugs.webkit.org/show_bug.cgi?id=222248
-    <rdar://problem/74612589>
-    
-    Reviewed by Brent Fulgham and informally by Kate Cheney.
-    
-    Source/WebKit:
-    
-    Tests: http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago.html
-           http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html
-    
-    * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
-    (WebKit::ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters):
-        Now sets two new member variables:
-        - Optional<OperatingDate> m_longWindowOperatingDate
-        - Optional<OperatingDate> m_shortWindowOperatingDate
-        These are only set if the minimum number of operating days has passed.
-        This function no longer sets m_leastRecentOperatingDate.
-    (WebKit::ResourceLoadStatisticsDatabaseStore::hasStatisticsExpired const):
-        Now checks against the two new member variables m_longWindowOperatingDate
-        and m_shortWindowOperatingDate. This fixes the bug.
-    (WebKit::ResourceLoadStatisticsDatabaseStore::insertExpiredStatisticForTesting):
-        Test infrastructure. Now takes the new parameter numberOfOperatingDaysPassed
-        with which layout tests can control the exact number of operating days
-        passed since user interaction.
-    * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
-        Added m_longWindowOperatingDate and m_shortWindowOperatingDate, and
-        removed m_leastRecentOperatingDate since it's no longer used.
-    * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
-    (WebKit::ResourceLoadStatisticsMemoryStore::insertExpiredStatisticForTesting):
-        Test infrastructure. The same changes as in the DB store.
-    * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
-    * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
-    * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
-    (WebKit::WebResourceLoadStatisticsStore::insertExpiredStatisticForTesting):
-        Test infrastructure.
-    * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
-    * NetworkProcess/NetworkProcess.cpp:
-    (WebKit::NetworkProcess::insertExpiredStatisticForTesting):
-        Test infrastructure.
-    * NetworkProcess/NetworkProcess.h:
-    * NetworkProcess/NetworkProcess.messages.in:
-    * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
-    (WKWebsiteDataStoreSetStatisticsExpiredStatistic):
-        Test infrastructure.
-    * UIProcess/API/C/WKWebsiteDataStoreRef.h:
-    * UIProcess/Network/NetworkProcessProxy.cpp:
-    (WebKit::NetworkProcessProxy::insertExpiredStatisticForTesting):
-        Test infrastructure.
-    * UIProcess/Network/NetworkProcessProxy.h:
-    * UIProcess/WebsiteData/WebsiteDataStore.cpp:
-    (WebKit::WebsiteDataStore::insertExpiredStatisticForTesting):
-        Test infrastructure.
-    * UIProcess/WebsiteData/WebsiteDataStore.h:
-    
-    Tools:
-    
-    A new numberOfOperatingDaysPassed parameter was added to
-    testRunner.setStatisticsExpiredStatistic() to control the exact
-    number of operating days passed since user interaction.
-    
-    * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
-    * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
-    (WTR::TestRunner::setStatisticsExpiredStatistic):
-    * WebKitTestRunner/InjectedBundle/TestRunner.h:
-    * WebKitTestRunner/TestController.cpp:
-    (WTR::TestController::setStatisticsExpiredStatistic):
-    * WebKitTestRunner/TestController.h:
-    * WebKitTestRunner/TestInvocation.cpp:
-    (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
-    
-    LayoutTests:
-    
-    Existing test cases now make use of the new numberOfOperatingDaysPassed
-    parameter to testRunner.setStatisticsExpiredStatistic() to control the exact
-    number of operating days passed since user interaction.
-    A new test case makes sure website data is not deleted below the threshold.
-    
-    * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago-expected.txt: Added.
-    * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago.html: Added.
-        Sets numberOfOperatingDaysPassed to 6.
-    * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago-expected.txt: Renamed from LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction-expected.txt.
-    * http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html: Renamed from LayoutTests/http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction.html.
-        Sets numberOfOperatingDaysPassed to 7.
-    * http/tests/resourceLoadStatistics/operating-dates-all-website-data-removed.html:
-        Sets numberOfOperatingDaysPassed to 30.
-    * platform/wk2/TestExpectations:
-        Updated existing expectation with new file name.
-    
-    
-    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273590 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+            Didn't fix the extreme test variance, and caused some internal
+            performance bots to hang during testing
 
-    2021-02-26  John Wilander  <wilan...@apple.com>
+            Reverted changesets:
 
-            Non-cookie website data not deleted after 7 days of browser use without user interaction
-            https://bugs.webkit.org/show_bug.cgi?id=222248
-            <rdar://problem/74612589>
+            "MotionMark scores are super sensitive to a single long frame"
+            https://bugs.webkit.org/show_bug.cgi?id=220847
+            https://trac.webkit.org/changeset/273390
 
-            Reviewed by Brent Fulgham and informally by Kate Cheney.
+            "MotionMark scores are super sensitive to a single long frame"
+            https://bugs.webkit.org/show_bug.cgi?id=220847
+            https://trac.webkit.org/changeset/273391
 
-            A new numberOfOperatingDaysPassed parameter was added to
-            testRunner.setStatisticsExpiredStatistic() to control the exact
-            number of operating days passed since user interaction.
+            * Scripts/webkitpy/benchmark_runner/data/plans/motionmark1.1.plan:
 
-            * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
-            * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
-            (WTR::TestRunner::setStatisticsExpiredStatistic):
-            * WebKitTestRunner/InjectedBundle/TestRunner.h:
-            * WebKitTestRunner/TestController.cpp:
-            (WTR::TestController::setStatisticsExpiredStatistic):
-            * WebKitTestRunner/TestController.h:
-            * WebKitTestRunner/TestInvocation.cpp:
-            (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
-
-        2021-02-25  Myles C. Maxfield  <mmaxfi...@apple.com>
-
-                Unreviewed, reverting r273390 and r273391.
-                https://bugs.webkit.org/show_bug.cgi?id=222449
-
-                Didn't fix the extreme test variance, and caused some internal
-                performance bots to hang during testing
-
-                Reverted changesets:
-
-                "MotionMark scores are super sensitive to a single long frame"
-                https://bugs.webkit.org/show_bug.cgi?id=220847
-                https://trac.webkit.org/changeset/273390
-
-                "MotionMark scores are super sensitive to a single long frame"
-                https://bugs.webkit.org/show_bug.cgi?id=220847
-                https://trac.webkit.org/changeset/273391
-
-                * Scripts/webkitpy/benchmark_runner/data/plans/motionmark1.1.plan:
-
 2021-02-25  Russell Epstein  <repst...@apple.com>
 
         Cherry-pick r273314. rdar://problem/74753323

Modified: branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl	2021-03-01 20:53:49 UTC (rev 273682)
@@ -294,7 +294,7 @@
     undefined setStatisticsPrevalentResourceForDebugMode(DOMString hostName, object completionHandler);
     undefined setStatisticsLastSeen(DOMString hostName, double seconds, object completionHandler);
     undefined setStatisticsMergeStatistic(DOMString hostName, DOMString topFrameDomain1, DOMString topFrameDomain2, double lastSeen, boolean hadUserInteraction, double mostRecentUserInteraction, boolean isGrandfathered, boolean isPrevalent, boolean isVeryPrevalent, unsigned long dataRecordsRemoved, object completionHandler);
-    undefined setStatisticsExpiredStatistic(DOMString hostName, unsigned long numberOfOperatingDaysPassed, boolean hadUserInteraction, boolean isScheduledForAllButCookieDataRemoval, boolean isPrevalent, object completionHandler);
+    undefined setStatisticsExpiredStatistic(DOMString hostName, boolean hadUserInteraction, boolean isScheduledForAllButCookieDataRemoval, boolean isPrevalent, object completionHandler);
     undefined setStatisticsPrevalentResource(DOMString hostName, boolean value, object completionHandler);
     undefined setStatisticsVeryPrevalentResource(DOMString hostName, boolean value, object completionHandler);
     boolean isStatisticsPrevalentResource(DOMString hostName);

Modified: branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp	2021-03-01 20:53:49 UTC (rev 273682)
@@ -1228,13 +1228,12 @@
     callTestRunnerCallback(SetStatisticsMergeStatisticCallbackID);
 }
 
-void TestRunner::setStatisticsExpiredStatistic(JSStringRef hostName, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, JSValueRef completionHandler)
+void TestRunner::setStatisticsExpiredStatistic(JSStringRef hostName, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, JSValueRef completionHandler)
 {
     cacheTestRunnerCallback(SetStatisticsExpiredStatisticCallbackID, completionHandler);
 
     postMessage("SetStatisticsExpiredStatistic", createWKDictionary({
         { "HostName", toWK(hostName) },
-        { "NumberOfOperatingDaysPassed", adoptWK(WKUInt64Create(numberOfOperatingDaysPassed)) },
         { "HadUserInteraction", adoptWK(WKBooleanCreate(hadUserInteraction)) },
         { "IsScheduledForAllButCookieDataRemoval", adoptWK(WKBooleanCreate(isScheduledForAllButCookieDataRemoval)) },
         { "IsPrevalent", adoptWK(WKBooleanCreate(isPrevalent)) }

Modified: branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h	2021-03-01 20:53:49 UTC (rev 273682)
@@ -386,7 +386,7 @@
     void statisticsCallDidSetLastSeenCallback();
     void setStatisticsMergeStatistic(JSStringRef hostName, JSStringRef topFrameDomain1, JSStringRef topFrameDomain2, double lastSeen, bool hadUserInteraction, double mostRecentUserInteraction, bool isGrandfathered, bool isPrevalent, bool isVeryPrevalent, unsigned dataRecordsRemoved, JSValueRef completionHandler);
     void statisticsCallDidSetMergeStatisticCallback();
-    void setStatisticsExpiredStatistic(JSStringRef hostName, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, JSValueRef completionHandler);
+    void setStatisticsExpiredStatistic(JSStringRef hostName, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent, JSValueRef completionHandler);
     void statisticsCallDidSetExpiredStatisticCallback();
     void setStatisticsPrevalentResource(JSStringRef hostName, bool value, JSValueRef completionHandler);
     void statisticsCallDidSetPrevalentResourceCallback();

Modified: branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/TestController.cpp (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/TestController.cpp	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/TestController.cpp	2021-03-01 20:53:49 UTC (rev 273682)
@@ -3063,10 +3063,10 @@
     m_currentInvocation->didMergeStatistic();
 }
 
-void TestController::setStatisticsExpiredStatistic(WKStringRef host, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent)
+void TestController::setStatisticsExpiredStatistic(WKStringRef host, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent)
 {
     ResourceStatisticsCallbackContext context(*this);
-    WKWebsiteDataStoreSetStatisticsExpiredStatistic(websiteDataStore(), host, numberOfOperatingDaysPassed, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent, &context, resourceStatisticsVoidResultCallback);
+    WKWebsiteDataStoreSetStatisticsExpiredStatistic(websiteDataStore(), host, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent, &context, resourceStatisticsVoidResultCallback);
     runUntil(context.done, noTimeout);
     m_currentInvocation->didSetExpiredStatistic();
 }

Modified: branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/TestController.h (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/TestController.h	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/TestController.h	2021-03-01 20:53:49 UTC (rev 273682)
@@ -214,7 +214,7 @@
     void setStatisticsPrevalentResourceForDebugMode(WKStringRef hostName);
     void setStatisticsLastSeen(WKStringRef hostName, double seconds);
     void setStatisticsMergeStatistic(WKStringRef host, WKStringRef topFrameDomain1, WKStringRef topFrameDomain2, double lastSeen, bool hadUserInteraction, double mostRecentUserInteraction, bool isGrandfathered, bool isPrevalent, bool isVeryPrevalent, int dataRecordsRemoved);
-    void setStatisticsExpiredStatistic(WKStringRef host, unsigned numberOfOperatingDaysPassed, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent);
+    void setStatisticsExpiredStatistic(WKStringRef host, bool hadUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent);
     void setStatisticsPrevalentResource(WKStringRef hostName, bool value);
     void setStatisticsVeryPrevalentResource(WKStringRef hostName, bool value);
     String dumpResourceLoadStatistics();

Modified: branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/TestInvocation.cpp (273681 => 273682)


--- branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/TestInvocation.cpp	2021-03-01 20:51:19 UTC (rev 273681)
+++ branches/safari-611.1.21.2-branch/Tools/WebKitTestRunner/TestInvocation.cpp	2021-03-01 20:53:49 UTC (rev 273682)
@@ -677,11 +677,10 @@
     if (WKStringIsEqualToUTF8CString(messageName, "SetStatisticsExpiredStatistic")) {
         auto messageBodyDictionary = dictionaryValue(messageBody);
         auto hostName = stringValue(messageBodyDictionary, "HostName");
-        auto numberOfOperatingDaysPassed = uint64Value(messageBodyDictionary, "NumberOfOperatingDaysPassed");
         auto hadUserInteraction = booleanValue(messageBodyDictionary, "HadUserInteraction");
         auto isScheduledForAllButCookieDataRemoval = booleanValue(messageBodyDictionary, "IsScheduledForAllButCookieDataRemoval");
         auto isPrevalent = booleanValue(messageBodyDictionary, "IsPrevalent");
-        TestController::singleton().setStatisticsExpiredStatistic(hostName, numberOfOperatingDaysPassed, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent);
+        TestController::singleton().setStatisticsExpiredStatistic(hostName, hadUserInteraction, isScheduledForAllButCookieDataRemoval, isPrevalent);
         return;
     }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to