-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 1697541 [wpt PR 27955] - [Resource-Timing] content-length/encoded…
…BodySize, a=testonly Automatic update from web-platform-tests [Resource-Timing] content-length/encodedBodySize (#27955) Added tests for different scenarios of `Content-Length` header and how it affects `encodedBodySize`. Closes web-platform-tests/wpt#27952 -- wpt-commits: a0c6344f36cf8079943523314cfeac959e24dea3 wpt-pr: 27955
- Loading branch information
1 parent
a00c02f
commit 72cb370
Showing
2 changed files
with
54 additions
and
0 deletions.
There are no files selected for viewing
35 changes: 35 additions & 0 deletions
35
testing/web-platform/tests/resource-timing/resource_timing_content_length.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
<!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> |
19 changes: 19 additions & 0 deletions
19
testing/web-platform/tests/resource-timing/resources/resource-timing-content-length.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
def main(request, response): | ||
content = request.GET.first(b"content") | ||
length = request.GET.first(b"length").decode("ascii") | ||
response.add_required_headers = False | ||
|
||
output = b"HTTP/1.1 200 OK\r\n" | ||
output += b"Content-Type: text/plain;charset=UTF-8\r\n" | ||
if length == b"auto" : | ||
output += b"Content-Length:" | ||
output += "{0}".format(len(content)).encode("ascii") | ||
output += b"\r\n" | ||
elif length != b"none" : | ||
output += b"Content-Length:" | ||
output += "{0}".format(length).encode("ascii") | ||
output += b"\r\n" | ||
output += b"\r\n" | ||
output += content | ||
response.writer.write(output) | ||
response.close_connection = True |