| Differences between
and this patch
- a/LayoutTests/ChangeLog +19 lines
Lines 1-3 a/LayoutTests/ChangeLog_sec1
1
2021-06-07  Youenn Fablet  <youenn@apple.com>
2
3
        Same-site lax cookies not sent by fetch event handler after page reload
4
        https://bugs.webkit.org/show_bug.cgi?id=226386
5
        <rdar://problem/78878853>
6
7
        Reviewed by NOBODY (OOPS!).
8
9
        Add a test to cover samesite lax cookies.
10
11
        * http/wpt/service-workers/resources/get-cookie2.py: Added.
12
        (main):
13
        * http/wpt/service-workers/resources/set-cookie2.py: Added.
14
        (main):
15
        * http/wpt/service-workers/same-cookie-lax-worker.js: Added.
16
        (async doTest):
17
        (doFetch):
18
        * http/wpt/service-workers/same-cookie-lax.https.html: Added.
19
1
2021-06-01  Youenn Fablet  <youenn@apple.com>
20
2021-06-01  Youenn Fablet  <youenn@apple.com>
2
21
3
        Update libwebrtc to M92
22
        Update libwebrtc to M92
- a/LayoutTests/http/wpt/service-workers/resources/get-cookie.py +6 lines
Line 0 a/LayoutTests/http/wpt/service-workers/resources/get-cookie.py_sec1
1
def main(request, response):
2
    headers = [
3
        ("Content-Type", "text/ascii"),
4
    ]
5
    body = request.headers.get("Cookie", "")
6
    return headers, body
- a/LayoutTests/http/wpt/service-workers/resources/set-cookie-lax.py +12 lines
Line 0 a/LayoutTests/http/wpt/service-workers/resources/set-cookie-lax.py_sec1
1
import sys
2
import urlparse
3
4
5
def main(request, response):
6
    params = urlparse.parse_qs(request.url_parts.query)
7
    headers = [
8
        ("Content-Type", "application/json"),
9
        ("Set-Cookie", "{name[0]}=1; path=/; secure; HttpOnly; SameSite=Lax".format(**params))
10
    ]
11
    body = "{}"
12
    return headers, body
- a/LayoutTests/http/wpt/service-workers/same-cookie-lax-worker.js +23 lines
Line 0 a/LayoutTests/http/wpt/service-workers/same-cookie-lax-worker.js_sec1
1
async function doTest(event)
2
{
3
    try {
4
        if (!event.data.startsWith("test-cookie")) {
5
            event.source.postMessage("FAIL: received unexpected message from client");
6
            return;
7
        }
8
9
        const response = await fetch("resources/get-cookie.py");
10
        event.source.postMessage(await response.text());
11
    } catch (e) {
12
        event.source.postMessage(e);
13
    }
14
}
15
16
function doFetch(event)
17
{
18
    if (event.request.url.includes("fetchTest"))
19
        event.respondWith(fetch(event.request));
20
}
21
22
self.addEventListener("message", doTest);
23
self.addEventListener("fetch", doFetch);
- a/LayoutTests/http/wpt/service-workers/same-cookie-lax.https-expected.txt +5 lines
Line 0 a/LayoutTests/http/wpt/service-workers/same-cookie-lax.https-expected.txt_sec1
1
2
PASS Setup worker
3
PASS Test service worker samesite lax cookie - service worker internal fetch
4
PASS Test service worker samesite lax cookie - fetch served from service worker
5
- a/LayoutTests/http/wpt/service-workers/same-cookie-lax.https.html +50 lines
Line 0 a/LayoutTests/http/wpt/service-workers/same-cookie-lax.https.html_sec1
1
<html>
2
<head>
3
<script src="/resources/testharness.js"></script>
4
<script src="/resources/testharnessreport.js"></script>
5
</head>
6
<body>
7
<script>
8
var scope = "";
9
var activeWorker;
10
11
promise_test(async (test) => {
12
    var registration = await navigator.serviceWorker.register("same-cookie-lax-worker.js", { scope : scope });
13
    activeWorker = registration.active;
14
    if (activeWorker)
15
        return;
16
    activeWorker = registration.installing;
17
    return new Promise(resolve => {
18
        activeWorker.addEventListener('statechange', () => {
19
            if (activeWorker.state === "activated")
20
                resolve();
21
        });
22
    });
23
}, "Setup worker");
24
25
promise_test(async (test) => {
26
    const cookieValue = "samesite-cookie-test";
27
    await fetch("resources/set-cookie-lax.py?name=" + cookieValue);
28
29
    var promise = new Promise((resolve, reject) => {
30
        navigator.serviceWorker.addEventListener("message", (event) => {
31
            resolve(event.data);
32
        });
33
    });
34
35
    activeWorker.postMessage("test-cookie");
36
    const result = await promise;
37
    assert_true(result.includes(cookieValue + "=1"));
38
}, "Test service worker samesite lax cookie - service worker internal fetch");
39
40
promise_test(async (test) => {
41
    const cookieValue = "samesite-cookie-test-fetch";
42
    await fetch("resources/set-cookie-lax.py?name=" + cookieValue);
43
44
    const response = await fetch("resources/get-cookie.py?fetchTest");
45
    const result = await response.text();
46
    assert_true(result.includes(cookieValue + "=1"));
47
}, "Test service worker samesite lax cookie - fetch served from service worker");
48
</script>
49
</body>
50
</html>

Return to Bug 226386