<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>This test validates the value of encodedBodySize in certain situations.</title>
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<script>
    function test_resource_timing_for_content_length({actualContentLength, lengthHeader}, title) {
        promise_test(async t => {
            const content = new Array(actualContentLength).fill('x').join('')
            const url = `resources/resource-timing-content-length.py?content=${content}&length=${lengthHeader}`
            fetch(url)
            const entry = await new Promise(resolve => new PerformanceObserver((entryList, observer) => {
                observer.disconnect()
                resolve(entryList.getEntries()[0])
            }).observe({entryTypes: ['resource']}))

            const expectedContentLength = Number.isInteger(lengthHeader) ? Math.min(actualContentLength, lengthHeader) : actualContentLength
            assert_equals(entry.encodedBodySize, expectedContentLength)
        }, title);
    }

    test_resource_timing_for_content_length({actualContentLength: 3, lengthHeader: 'auto'},
        "encodedBodySize should be equal to the actual byte size of the content")
    test_resource_timing_for_content_length({actualContentLength: 13, lengthHeader: 'none'},
        "encodedBodySize should be equal to the actual byte size of the content when no header present")
    test_resource_timing_for_content_length({actualContentLength: 7, lengthHeader: 3},
        "encodedBodySize should be equal to the actual byte size of the content when header value is lower than actual content")
    test_resource_timing_for_content_length({actualContentLength: 8, lengthHeader: 40},
        "encodedBodySize should be equal to the actual byte size of the content when header value is higher than actual content")
</script>
</html>
