<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Delegate-CH" content="sec-ch-viewport-width; viewport-width; rtt">
<meta http-equiv="Delegate-CH" content="downlink; ect; sec-ch-prefers-color-scheme">
<meta http-equiv="Delegate-CH" content="sec-ch-prefers-reduced-motion; sec-ch-prefers-reduced-transparency">
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script>

// Test of merge of meta-equiv headers on top of delegate-ch provided ones.
//
// resources/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(get_host_info()["HTTPS_ORIGIN"] + "/client-hints/resources/echo-client-hints-received.py").then(r => {
    assert_equals(r.status, 200)
    // Verify that the browser includes client hints in the headers.
    assert_true(r.headers.has("device-memory-received"), "device-memory-received");
    assert_true(r.headers.has("device-memory-deprecated-received"), "device-memory-deprecated-received");
    assert_true(r.headers.has("dpr-received"), "dpr-received");
    assert_true(r.headers.has("dpr-deprecated-received"), "dpr-deprecated-received");
    assert_true(r.headers.has("viewport-width-received"), "viewport-width-received");
    assert_true(r.headers.has("viewport-width-deprecated-received"), "viewport-width-deprecated-received");

    assert_true(r.headers.has("rtt-received"), "rtt-received");
    var rtt = parseInt(r.headers.get("rtt-received"));
    assert_greater_than_equal(rtt, 0);
    assert_less_than_equal(rtt, 3000);
    assert_equals(rtt % 50, 0, 'rtt must be a multiple of 50 msec');

    assert_true(r.headers.has("downlink-received"), "downlink-received");
    var downlinkKbps  = r.headers.get("downlink-received") * 1000;
    assert_greater_than_equal(downlinkKbps, 0);
    assert_less_than_equal(downlinkKbps, 10000);

    assert_in_array(r.headers.get("ect-received"), ["slow-2g", "2g",
          "3g", "4g"], 'ect-received is unexpected');
    assert_true(r.headers.has("prefers-color-scheme-received"), "prefers-color-scheme-received");
    assert_true(r.headers.has("prefers-reduced-motion-received"), "prefers-reduced-motion-received");
    assert_true(r.headers.has("prefers-reduced-transparency-received"), "prefers-reduced-transparency-received");
  });
}, "Delegate-CH header test");

</script>

</body>
</html>
