From 6f03878da8255e23699c5d45e98dd123ef88383a Mon Sep 17 00:00:00 2001 From: Tarun Bansal Date: Mon, 7 May 2018 13:01:59 -0700 Subject: [PATCH] Add web platform tests for the new client hints Add tests for "rtt", "downlink" and "ect". Bug: 835333 Change-Id: If54c01612f10e96f7b37868e19b01a7ff3266d43 Reviewed-on: https://chromium-review.googlesource.com/1045917 Reviewed-by: Robert Ma Reviewed-by: Ryan Sturm Commit-Queue: Tarun Bansal Cr-Commit-Position: refs/heads/master@{#556532} --- client-hints/accept_ch.http.html | 16 +++++++++------- client-hints/accept_ch.http.html.headers | 2 +- client-hints/accept_ch.sub.https.html | 13 +++++++++---- client-hints/accept_ch.sub.https.html.headers | 2 +- .../accept_ch_malformed_header.https.html | 3 +++ client-hints/echo_client_hints_received.py | 12 +++++++++--- 6 files changed, 32 insertions(+), 16 deletions(-) diff --git a/client-hints/accept_ch.http.html b/client-hints/accept_ch.http.html index 447dd2861c9e73..50d77646f89aea 100644 --- a/client-hints/accept_ch.http.html +++ b/client-hints/accept_ch.http.html @@ -10,20 +10,22 @@ // the HTTP request headers if the response was delivered by an insecure HTTP // server. Test this functionality by fetching an XHR from this page hosted on // an insecure HTTP server. The response headers for this page include -// "Accept-CH: device-memory, dpr, viewport-width". +// "Accept-CH: device-memory, dpr, viewport-width, rtt, downlink, ect". // -// echo_client_hints_received.py includes "device-memory-received", -// "dpr-received" and "viewport-width-received" in the response headers -// depending on the set of client hints it receives in the request headers. +// echo_client_hints_received.py sets the response headers depending on the set +// of client hints it receives in the request headers. promise_test(t => { return fetch("/client-hints/echo_client_hints_received.py").then(r => { assert_equals(r.status, 200) // Verify that the browser does not include client hints in the headers // when fetching the XHR from an insecure HTTP server. - assert_false(r.headers.has("device-memory-received")); - assert_false(r.headers.has("dpr-received")); - assert_false(r.headers.has("viewport-width-received")); + assert_false(r.headers.has("device-memory-received"), "device-memory-received"); + assert_false(r.headers.has("dpr-received"), "dpr-received"); + assert_false(r.headers.has("viewport-width-received"), "viewport-width-received"); + assert_false(r.headers.has("rtt-received"), "rtt-received"); + assert_false(r.headers.has("downlink-received"), "downlink-received"); + assert_false(r.headers.has("ect-received"), "ect-received"); }); }, "Accept-CH header test"); diff --git a/client-hints/accept_ch.http.html.headers b/client-hints/accept_ch.http.html.headers index 38f4f33be8a9d2..4f3a57b865b8b5 100644 --- a/client-hints/accept_ch.http.html.headers +++ b/client-hints/accept_ch.http.html.headers @@ -1 +1 @@ -Accept-CH: device-memory, dpr, viewport-width \ No newline at end of file +Accept-CH: device-memory, dpr, viewport-width, rtt, downlink, ect \ No newline at end of file diff --git a/client-hints/accept_ch.sub.https.html b/client-hints/accept_ch.sub.https.html index 527a7c9d21d3bb..4b70e855cf170c 100644 --- a/client-hints/accept_ch.sub.https.html +++ b/client-hints/accept_ch.sub.https.html @@ -10,11 +10,10 @@ // HTTP request headers depending on whether the resource is being fetched from // the same origin or a different origin. Test this functionality by fetching // same-origin and cross-origin resources from this page. The response headers -// for this page include "Accept-CH: device-memory, dpr, viewport-width". +// for this page include "Accept-CH: device-memory, dpr, viewport-width, rtt, downlink, ect". // -// echo_client_hints_received.py includes "device-memory-received", -// "dpr-received" and "viewport-width-received" in the response headers -// depending on the set of client hints it receives in the request headers. +// echo_client_hints_received.py sets the response headers depending on the set +// of client hints it receives in the request headers. promise_test(t => { return fetch("https://{{domains[]}}:{{ports[https][0]}}/client-hints/echo_client_hints_received.py", {"mode": "no-cors"}).then(r => { @@ -24,6 +23,9 @@ assert_true(r.headers.has("device-memory-received"), "device-memory-received"); assert_true(r.headers.has("dpr-received"), "dpr-received"); assert_true(r.headers.has("viewport-width-received"), "viewport-width-received"); + assert_true(r.headers.has("rtt-received"), "rtt-received"); + assert_true(r.headers.has("downlink-received"), "downlink-received"); + assert_true(r.headers.has("ect-received"), "ect-received"); }); }, "Accept-CH header test"); @@ -35,6 +37,9 @@ assert_false(r.headers.has("device-memory-received"), "device-memory-received"); assert_false(r.headers.has("dpr-received"), "dpr-received"); assert_false(r.headers.has("viewport-width-received"), "viewport-width-received"); + assert_false(r.headers.has("rtt-received"), "rtt-received"); + assert_false(r.headers.has("downlink-received"), "downlink-received"); + assert_false(r.headers.has("ect-received"), "ect-received"); }); }, "Cross-Origin Accept-CH header test"); diff --git a/client-hints/accept_ch.sub.https.html.headers b/client-hints/accept_ch.sub.https.html.headers index 38f4f33be8a9d2..4f3a57b865b8b5 100644 --- a/client-hints/accept_ch.sub.https.html.headers +++ b/client-hints/accept_ch.sub.https.html.headers @@ -1 +1 @@ -Accept-CH: device-memory, dpr, viewport-width \ No newline at end of file +Accept-CH: device-memory, dpr, viewport-width, rtt, downlink, ect \ No newline at end of file diff --git a/client-hints/accept_ch_malformed_header.https.html b/client-hints/accept_ch_malformed_header.https.html index 3de78b7cff8559..70ccab8c80d057 100644 --- a/client-hints/accept_ch_malformed_header.https.html +++ b/client-hints/accept_ch_malformed_header.https.html @@ -14,6 +14,9 @@ assert_false(r.headers.has("device-memory-received"), "device-memory-received"); assert_false(r.headers.has("dpr-received"), "dpr-received"); assert_false(r.headers.has("viewport-width-received"), "viewport-width-received"); + assert_false(r.headers.has("rtt-received"), "rtt-received"); + assert_false(r.headers.has("downlink-received"), "downlink-received"); + assert_false(r.headers.has("ect-received"), "ect-received"); }); }, "Accept-CH header test"); diff --git a/client-hints/echo_client_hints_received.py b/client-hints/echo_client_hints_received.py index ffec0c1dfc159c..88d1a6b5780ca0 100644 --- a/client-hints/echo_client_hints_received.py +++ b/client-hints/echo_client_hints_received.py @@ -1,7 +1,7 @@ def main(request, response): """ - Simple handler that sets a response header based on if device-memory - request header was received or not. + Simple handler that sets a response header based on if which client hint + request headers were received. """ response.headers.append("Access-Control-Allow-Origin", "*") @@ -11,4 +11,10 @@ def main(request, response): if "dpr" in request.headers: response.headers.set("dpr-received", "true") if "viewport-width" in request.headers: - response.headers.set("viewport-width-received", "true") \ No newline at end of file + response.headers.set("viewport-width-received", "true") + if "rtt" in request.headers: + response.headers.set("rtt-received", "true") + if "downlink" in request.headers: + response.headers.set("downlink-received", "true") + if "ect" in request.headers: + response.headers.set("ect-received", "true") \ No newline at end of file