| <!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> |