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 <robertma@chromium.org>
Reviewed-by: Ryan Sturm <ryansturm@chromium.org>
Commit-Queue: Tarun Bansal <tbansal@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556532}
diff --git a/client-hints/accept_ch.http.html b/client-hints/accept_ch.http.html
index 447dd28..50d7764 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 38f4f33..4f3a57b 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 527a7c9..4b70e85 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 38f4f33..4f3a57b 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 3de78b7..70ccab8 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 ffec0c1..88d1a6b 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 @@
     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