Skip to content

Commit

Permalink
Add web platform tests for the new client hints
Browse files Browse the repository at this point in the history
Add tests for "rtt", "downlink" and "ect".

Bug: 835333
Change-Id: If54c01612f10e96f7b37868e19b01a7ff3266d43
Reviewed-on: https://chromium-review.googlesource.com/1045917
Reviewed-by: Robert Ma <[email protected]>
Reviewed-by: Ryan Sturm <[email protected]>
Commit-Queue: Tarun Bansal <[email protected]>
Cr-Commit-Position: refs/heads/master@{#556532}
  • Loading branch information
Tarun Bansal authored and chromium-wpt-export-bot committed May 7, 2018
1 parent 2f00d45 commit 6f03878
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 16 deletions.
16 changes: 9 additions & 7 deletions client-hints/accept_ch.http.html
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Expand Down
2 changes: 1 addition & 1 deletion client-hints/accept_ch.http.html.headers
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Accept-CH: device-memory, dpr, viewport-width
Accept-CH: device-memory, dpr, viewport-width, rtt, downlink, ect
13 changes: 9 additions & 4 deletions client-hints/accept_ch.sub.https.html
Original file line number Diff line number Diff line change
Expand Up @@ -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 => {
Expand All @@ -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");

Expand All @@ -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");

Expand Down
2 changes: 1 addition & 1 deletion client-hints/accept_ch.sub.https.html.headers
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Accept-CH: device-memory, dpr, viewport-width
Accept-CH: device-memory, dpr, viewport-width, rtt, downlink, ect
3 changes: 3 additions & 0 deletions client-hints/accept_ch_malformed_header.https.html
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Expand Down
12 changes: 9 additions & 3 deletions client-hints/echo_client_hints_received.py
Original file line number Diff line number Diff line change
@@ -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", "*")
Expand All @@ -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")
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")

0 comments on commit 6f03878

Please sign in to comment.