| Index: third_party/WebKit/LayoutTests/external/wpt/fetch/api/headers/headers-basic.html
|
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/headers/headers-basic.html b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/headers/headers-basic.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1d3f4d462b89f63b325594973db90074c33af3de
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/headers/headers-basic.html
|
| @@ -0,0 +1,230 @@
|
| +<!doctype html>
|
| +<html>
|
| + <head>
|
| + <meta charset="utf-8">
|
| + <title>Headers structure</title>
|
| + <meta name="help" href="https://fetch.spec.whatwg.org/#headers">
|
| + <meta name="author" title="Canon Research France" href="https://www.crf.canon.fr">
|
| + <script src="/resources/testharness.js"></script>
|
| + <script src="/resources/testharnessreport.js"></script>
|
| + </head>
|
| + <body>
|
| + <script>
|
| + test(function() {
|
| + new Headers();
|
| + }, "Create headers from no parameter");
|
| +
|
| + test(function() {
|
| + new Headers(undefined);
|
| + }, "Create headers from undefined parameter");
|
| +
|
| + test(function() {
|
| + new Headers({});
|
| + }, "Create headers from empty object");
|
| +
|
| + var parameters = [null, 1];
|
| + parameters.forEach(function(parameter) {
|
| + test(function() {
|
| + assert_throws(new TypeError(), function() { new Headers(parameter) });
|
| + }, "Create headers with " + parameter + " should throw");
|
| + });
|
| +
|
| + var headerDict = {"name1": "value1",
|
| + "name2": "value2",
|
| + "name3": "value3",
|
| + "name4": null,
|
| + "name5": undefined,
|
| + "name6": 1,
|
| + "Content-Type": "value4"
|
| + };
|
| +
|
| + var headerSeq = [];
|
| + for (var name in headerDict)
|
| + headerSeq.push([name, headerDict[name]]);
|
| +
|
| + test(function() {
|
| + var headers = new Headers(headerSeq);
|
| + for (name in headerDict) {
|
| + assert_equals(headers.get(name), String(headerDict[name]),
|
| + "name: " + name + " has value: " + headerDict[name]);
|
| + }
|
| + assert_equals(headers.get("length"), null, "init should be treated as a sequence, not as a dictionary");
|
| + }, "Create headers with sequence");
|
| +
|
| + test(function() {
|
| + var headers = new Headers(headerDict);
|
| + for (name in headerDict) {
|
| + assert_equals(headers.get(name), String(headerDict[name]),
|
| + "name: " + name + " has value: " + headerDict[name]);
|
| + }
|
| + }, "Create headers with record");
|
| +
|
| + test(function() {
|
| + var headers = new Headers(headerDict);
|
| + var headers2 = new Headers(headers);
|
| + for (name in headerDict) {
|
| + assert_equals(headers2.get(name), String(headerDict[name]),
|
| + "name: " + name + " has value: " + headerDict[name]);
|
| + }
|
| + }, "Create headers with existing headers");
|
| +
|
| + test(function() {
|
| + var headers = new Headers()
|
| + headers[Symbol.iterator] = function *() {
|
| + yield ["test", "test"]
|
| + }
|
| + var headers2 = new Headers(headers)
|
| + assert_equals(headers2.get("test"), "test")
|
| + }, "Create headers with existing headers with custom iterator");
|
| +
|
| + test(function() {
|
| + var headers = new Headers();
|
| + for (name in headerDict) {
|
| + headers.append(name, headerDict[name]);
|
| + assert_equals(headers.get(name), String(headerDict[name]),
|
| + "name: " + name + " has value: " + headerDict[name]);
|
| + }
|
| + }, "Check append method");
|
| +
|
| + test(function() {
|
| + var headers = new Headers();
|
| + for (name in headerDict) {
|
| + headers.set(name, headerDict[name]);
|
| + assert_equals(headers.get(name), String(headerDict[name]),
|
| + "name: " + name + " has value: " + headerDict[name]);
|
| + }
|
| + }, "Check set method");
|
| +
|
| + test(function() {
|
| + var headers = new Headers(headerDict);
|
| + for (name in headerDict)
|
| + assert_true(headers.has(name),"headers has name " + name);
|
| +
|
| + assert_false(headers.has("nameNotInHeaders"),"headers do not have header: nameNotInHeaders");
|
| + }, "Check has method");
|
| +
|
| + test(function() {
|
| + var headers = new Headers(headerDict);
|
| + for (name in headerDict) {
|
| + assert_true(headers.has(name),"headers have a header: " + name);
|
| + headers.delete(name)
|
| + assert_true(!headers.has(name),"headers do not have anymore a header: " + name);
|
| + }
|
| + }, "Check delete method");
|
| +
|
| + test(function() {
|
| + var headers = new Headers(headerDict);
|
| + for (name in headerDict)
|
| + assert_equals(headers.get(name), String(headerDict[name]),
|
| + "name: " + name + " has value: " + headerDict[name]);
|
| +
|
| + assert_equals(headers.get("nameNotInHeaders"), null, "header: nameNotInHeaders has no value");
|
| + }, "Check get method");
|
| +
|
| + var headerEntriesDict = {"name1": "value1",
|
| + "Name2": "value2",
|
| + "name": "value3",
|
| + "content-Type": "value4",
|
| + "Content-Typ": "value5",
|
| + "Content-Types": "value6"
|
| + };
|
| + var sortedHeaderDict = {};
|
| + var headerValues = [];
|
| + var sortedHeaderKeys = Object.keys(headerEntriesDict).map(function(value) {
|
| + sortedHeaderDict[value.toLowerCase()] = headerEntriesDict[value];
|
| + headerValues.push(headerEntriesDict[value]);
|
| + return value.toLowerCase();
|
| + }).sort();
|
| +
|
| + var iteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));
|
| + function checkIteratorProperties(iterator) {
|
| + var prototype = Object.getPrototypeOf(iterator);
|
| + assert_equals(Object.getPrototypeOf(prototype), iteratorPrototype);
|
| +
|
| + var descriptor = Object.getOwnPropertyDescriptor(prototype, "next");
|
| + assert_true(descriptor.configurable, "configurable");
|
| + assert_true(descriptor.enumerable, "enumerable");
|
| + assert_true(descriptor.writable, "writable");
|
| + }
|
| +
|
| + test(function() {
|
| + var headers = new Headers(headerEntriesDict);
|
| + var actual = headers.keys();
|
| + checkIteratorProperties(actual);
|
| +
|
| + sortedHeaderKeys.forEach(function(key) {
|
| + entry = actual.next();
|
| + assert_false(entry.done);
|
| + assert_equals(entry.value, key);
|
| + });
|
| + assert_true(actual.next().done);
|
| + assert_true(actual.next().done);
|
| +
|
| + for (key of headers.keys())
|
| + assert_true(sortedHeaderKeys.indexOf(key) != -1);
|
| + }, "Check keys method");
|
| +
|
| + test(function() {
|
| + var headers = new Headers(headerEntriesDict);
|
| + var actual = headers.values();
|
| + checkIteratorProperties(actual);
|
| +
|
| + sortedHeaderKeys.forEach(function(key) {
|
| + entry = actual.next();
|
| + assert_false(entry.done);
|
| + assert_equals(entry.value, sortedHeaderDict[key]);
|
| + });
|
| + assert_true(actual.next().done);
|
| + assert_true(actual.next().done);
|
| +
|
| + for (value of headers.values())
|
| + assert_true(headerValues.indexOf(value) != -1);
|
| + }, "Check values method");
|
| +
|
| + test(function() {
|
| + var headers = new Headers(headerEntriesDict);
|
| + var actual = headers.entries();
|
| + checkIteratorProperties(actual);
|
| +
|
| + sortedHeaderKeys.forEach(function(key) {
|
| + entry = actual.next();
|
| + assert_false(entry.done);
|
| + assert_equals(entry.value[0], key);
|
| + assert_equals(entry.value[1], sortedHeaderDict[key]);
|
| + });
|
| + assert_true(actual.next().done);
|
| + assert_true(actual.next().done);
|
| +
|
| + for (entry of headers.entries())
|
| + assert_equals(entry[1], sortedHeaderDict[entry[0]]);
|
| + }, "Check entries method");
|
| +
|
| + test(function() {
|
| + var headers = new Headers(headerEntriesDict);
|
| + var actual = headers[Symbol.iterator]();
|
| +
|
| + sortedHeaderKeys.forEach(function(key) {
|
| + entry = actual.next();
|
| + assert_false(entry.done);
|
| + assert_equals(entry.value[0], key);
|
| + assert_equals(entry.value[1], sortedHeaderDict[key]);
|
| + });
|
| + assert_true(actual.next().done);
|
| + assert_true(actual.next().done);
|
| + }, "Check Symbol.iterator method");
|
| +
|
| + test(function() {
|
| + var headers = new Headers(headerEntriesDict);
|
| + var reference = sortedHeaderKeys[Symbol.iterator]();
|
| + headers.forEach(function(value, key, container) {
|
| + assert_equals(headers, container);
|
| + entry = reference.next();
|
| + assert_false(entry.done);
|
| + assert_equals(key, entry.value);
|
| + assert_equals(value, sortedHeaderDict[entry.value]);
|
| + });
|
| + assert_true(reference.next().done);
|
| + }, "Check forEach method");
|
| + </script>
|
| + </body>
|
| +</html>
|
|
|