Index: third_party/WebKit/LayoutTests/external/wpt/fetch/api/resources/utils.js |
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/resources/utils.js b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/resources/utils.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f290c22ee7f6ce3113b328d782f938f7ec514a79 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/resources/utils.js |
@@ -0,0 +1,90 @@ |
+var inWorker = false; |
+var RESOURCES_DIR = "../resources/"; |
+ |
+try { |
+ inWorker = !(self instanceof Window); |
+} catch (e) { |
+ inWorker = true; |
+} |
+ |
+function dirname(path) { |
+ return path.replace(/\/[^\/]*$/, '/') |
+} |
+ |
+function checkRequest(request, ExpectedValuesDict) { |
+ for (var attribute in ExpectedValuesDict) { |
+ switch(attribute) { |
+ case "headers": |
+ for (var key in ExpectedValuesDict["headers"].keys()) { |
+ assert_equals(request["headers"].get(key), ExpectedValuesDict["headers"].get(key), |
+ "Check headers attribute has " + key + ":" + ExpectedValuesDict["headers"].get(key)); |
+ } |
+ break; |
+ |
+ case "body": |
+ //for checking body's content, a dedicated asyncronous/promise test should be used |
+ assert_true(request["headers"].has("Content-Type") , "Check request has body using Content-Type header") |
+ break; |
+ |
+ case "method": |
+ case "referrer": |
+ case "referrerPolicy": |
+ case "credentials": |
+ case "cache": |
+ case "redirect": |
+ case "integrity": |
+ case "url": |
+ case "destination": |
+ assert_equals(request[attribute], ExpectedValuesDict[attribute], "Check " + attribute + " attribute") |
+ break; |
+ |
+ default: |
+ break; |
+ } |
+ } |
+} |
+ |
+function stringToArray(str) { |
+ var array = new Uint8Array(str.length); |
+ for (var i=0, strLen = str.length; i < strLen; i++) |
+ array[i] = str.charCodeAt(i); |
+ return array; |
+} |
+ |
+function encode_utf8(str) |
+{ |
+ if (self.TextEncoder) |
+ return (new TextEncoder).encode(str); |
+ return stringToArray(unescape(encodeURIComponent(str))); |
+} |
+ |
+function validateBufferFromString(buffer, expectedValue, message) |
+{ |
+ return assert_array_equals(new Uint8Array(buffer !== undefined ? buffer : []), stringToArray(expectedValue), message); |
+} |
+ |
+function validateStreamFromString(reader, expectedValue, retrievedArrayBuffer) { |
+ return reader.read().then(function(data) { |
+ if (!data.done) { |
+ assert_true(data.value instanceof Uint8Array, "Fetch ReadableStream chunks should be Uint8Array"); |
+ var newBuffer; |
+ if (retrievedArrayBuffer) { |
+ newBuffer = new ArrayBuffer(data.value.length + retrievedArrayBuffer.length); |
+ newBuffer.set(retrievedArrayBuffer, 0); |
+ newBuffer.set(data.value, retrievedArrayBuffer.length); |
+ } else { |
+ newBuffer = data.value; |
+ } |
+ return validateStreamFromString(reader, expectedValue, newBuffer); |
+ } |
+ validateBufferFromString(retrievedArrayBuffer, expectedValue, "Retrieve and verify stream"); |
+ }); |
+} |
+ |
+// From streams tests |
+function delay(milliseconds) |
+{ |
+ return new Promise(function(resolve) { |
+ step_timeout(resolve, milliseconds); |
+ }); |
+} |