Sync web-platform-tests repo to 197cdad
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 8 Jun 2018 21:26:04 +0000 (21:26 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 8 Jun 2018 21:26:04 +0000 (21:26 +0000)
https://bugs.webkit.org/show_bug.cgi?id=186267

Patch by Brendan McLoughlin <brendan@bocoup.com> on 2018-06-08
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* resources/resource-files.json:
* web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html:
* web-platform-tests/2dcontext/imagebitmap/w3c-import.log:
* web-platform-tests/FileAPI/BlobURL/support/file_test2.txt: Added.
* web-platform-tests/FileAPI/BlobURL/support/w3c-import.log:
* web-platform-tests/FileAPI/FileReader/support/file_test1.txt: Added.
* web-platform-tests/FileAPI/FileReader/workers-expected.txt: Added.
* web-platform-tests/FileAPI/FileReader/workers.html: Added.
* web-platform-tests/FileAPI/blob/Blob-constructor-endings-expected.txt: Added.
* web-platform-tests/FileAPI/blob/Blob-constructor-endings.html: Added.
* web-platform-tests/FileAPI/blob/w3c-import.log:
* web-platform-tests/FileAPI/file/File-constructor-endings-expected.txt: Added.
* web-platform-tests/FileAPI/file/File-constructor-endings.html: Added.
* web-platform-tests/FileAPI/file/send-file-form-expected.txt: Added.
* web-platform-tests/FileAPI/file/send-file-form-iso-2022-jp.tentative-expected.txt: Added.
* web-platform-tests/FileAPI/file/send-file-form-iso-2022-jp.tentative.html: Added.
* web-platform-tests/FileAPI/file/send-file-form-utf-8-expected.txt: Added.
* web-platform-tests/FileAPI/file/send-file-form-utf-8.html: Added.
* web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative-expected.txt: Added.
* web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative.html: Added.
* web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative-expected.txt: Added.
* web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative.html: Added.
* web-platform-tests/FileAPI/file/send-file-form.html: Added.
* web-platform-tests/FileAPI/historical.https-expected.txt:
* web-platform-tests/FileAPI/historical.https.html:
* web-platform-tests/FileAPI/reading-data-section/FileReader-multiple-reads-expected.txt:
* web-platform-tests/FileAPI/reading-data-section/FileReader-multiple-reads.html:
* web-platform-tests/FileAPI/reading-data-section/filereader_readAsBinaryString-expected.txt: Added.
* web-platform-tests/FileAPI/reading-data-section/filereader_readAsBinaryString.html: Added.
* web-platform-tests/FileAPI/reading-data-section/w3c-import.log:
* web-platform-tests/FileAPI/support/send-file-form-helper.js: Added.
(const.formPostFileUploadTest):
* web-platform-tests/FileAPI/support/w3c-import.log:
* web-platform-tests/FileAPI/unicode-expected.txt: Added.
* web-platform-tests/FileAPI/unicode.html: Added.
* web-platform-tests/FileAPI/url/resources/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/FileAPI/BlobURL/support/w3c-import.log.
* web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js: Added.
(async_test.t.frame.onload.t.step_func_done):
(async_test.t.frame.onload.t.step_func):
(async_test.t.add_completion_callback):
(async_test.t.win.onload.t.step_func_done):
(receive_message_on_channel):
(async_test.t.const.blob.new.Blob.window_contents_for_channel):
(async_test.t.e.onload.t.step_func_done):
* web-platform-tests/FileAPI/url/url-in-tags.window.js:
(async_test.t.frame.contentWindow.onscroll.t.step_func_done):
* web-platform-tests/FileAPI/url/url-reload.window.js: Added.
(blob_url_reload_test):
* web-platform-tests/FileAPI/url/w3c-import.log:
* web-platform-tests/FileAPI/w3c-import.log:
* web-platform-tests/IndexedDB/bigint_value-expected.txt: Added.
* web-platform-tests/IndexedDB/bigint_value.htm: Added.
* web-platform-tests/IndexedDB/historical-expected.txt:
* web-platform-tests/IndexedDB/historical.html:
* web-platform-tests/IndexedDB/idbcursor-iterating-update-expected.txt: Added.
* web-platform-tests/IndexedDB/idbcursor-iterating-update.htm: Added.
* web-platform-tests/IndexedDB/interleaved-cursors-common.js: Added.
(objectKey):
(objectValue):
(writeCursorObjects):
(interleaveCursors):
* web-platform-tests/IndexedDB/interleaved-cursors-large-expected.txt: Added.
* web-platform-tests/IndexedDB/interleaved-cursors-large.html: Added.
* web-platform-tests/IndexedDB/interleaved-cursors-small-expected.txt: Added.
* web-platform-tests/IndexedDB/interleaved-cursors-small.html: Added.
* web-platform-tests/IndexedDB/keypath-special-identifiers-expected.txt:
* web-platform-tests/IndexedDB/keypath-special-identifiers.htm:
* web-platform-tests/IndexedDB/keypath.htm:
* web-platform-tests/IndexedDB/support.js:
(add_completion_callback):
(indexeddb_test):
* web-platform-tests/IndexedDB/w3c-import.log:
* web-platform-tests/IndexedDB/wasm-module-value-expected.txt: Added.
* web-platform-tests/IndexedDB/wasm-module-value.html: Added.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.worker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.worker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.worker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.worker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any-expected.txt: Copied from LayoutTests/platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker-expected.txt: Renamed from LayoutTests/platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.worker-expected.txt.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes.js:
(run_test):
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.worker-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.worker-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.worker-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.worker-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.worker-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.worker-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.worker-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.worker-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.worker-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.worker-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.worker-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.worker-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.worker-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.worker-expected.txt: Added.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.worker-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.worker.js: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_aes-cbc.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_aes-cbc.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_aes-ctr-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_aes-ctr.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_aes-ctr.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CBC-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CBC.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CBC.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CTR-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CTR.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CTR.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-KW-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-KW.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-KW.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDH.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDH.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDSA-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDSA.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDSA.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_HMAC-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_HMAC.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_HMAC.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-PSS.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-PSS.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CBC-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CBC.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CBC.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CTR-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CTR.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CTR.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-GCM.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-GCM.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-KW.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-KW.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDH.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDH.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDSA.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDSA.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_HMAC.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_HMAC.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-PSS-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-PSS.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-PSS.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.https-expected.txt: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.https.html: Removed.
* web-platform-tests/WebCryptoAPI/generateKey/w3c-import.log:
* web-platform-tests/WebIDL/ecmascript-binding/default-iterator-object-expected.txt: Added.
* web-platform-tests/WebIDL/ecmascript-binding/default-iterator-object.html: Added.
* web-platform-tests/WebIDL/ecmascript-binding/iterator-prototype-object-expected.txt: Added.
* web-platform-tests/WebIDL/ecmascript-binding/iterator-prototype-object.html: Added.
* web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any-expected.txt: Added.
* web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any.js: Added.
(test):
(test.regExp.Symbol.iterator):
(promise_test.async):
* web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any.worker-expected.txt: Added.
* web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
* web-platform-tests/WebIDL/ecmascript-binding/w3c-import.log:
* web-platform-tests/background-fetch/interfaces.html:
* web-platform-tests/background-fetch/interfaces.worker.js:
(promise_test.async):
(promise_test): Deleted.
* web-platform-tests/beacon/OWNERS: Added.
* web-platform-tests/beacon/beacon-common.sub.js:
* web-platform-tests/beacon/beacon-cors.sub.window.js:
(runTests.self.buildId):
(runTests.self.buildBaseUrl):
(runTests.self.buildTargetUrl):
(runTests):
* web-platform-tests/beacon/beacon-error.window.js:
(promise_test.async):
* web-platform-tests/beacon/beacon-navigate-expected.txt:
* web-platform-tests/beacon/headers/header-content-type.html:
* web-platform-tests/beacon/resources/beacon.py:
(main):
* web-platform-tests/beacon/w3c-import.log:

LayoutTests:

* TestExpectations:
* platform/ios/imported/w3c/web-platform-tests/beacon/headers/header-content-type-expected.txt:
* platform/mac-wk2/imported/w3c/web-platform-tests/beacon/headers/header-content-type-expected.txt: Added.
* platform/mac/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-large-expected.txt: Added.
* platform/mac/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-small-expected.txt: Added.
* platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker-expected.txt: Removed.
* platform/mac/imported/w3c/web-platform-tests/beacon/headers/header-content-type-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232641 268f45cc-cd09-0410-ab3c-d52691b4dbfc

269 files changed:
LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/resources/resource-files.json
LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html
LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/FileAPI/BlobURL/support/file_test2.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/BlobURL/support/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/FileAPI/FileReader/support/file_test1.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/FileReader/workers-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/FileReader/workers.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/blob/Blob-constructor-endings-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/blob/Blob-constructor-endings.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/blob/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/File-constructor-endings-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/File-constructor-endings.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-iso-2022-jp.tentative-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-iso-2022-jp.tentative.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-utf-8-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-utf-8.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/historical.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/FileAPI/historical.https.html
LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/FileReader-multiple-reads-expected.txt
LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/FileReader-multiple-reads.html
LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_readAsBinaryString-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_readAsBinaryString.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/FileAPI/support/send-file-form-helper.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/support/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/FileAPI/unicode-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/unicode.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/resources/w3c-import.log [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-in-tags.window.js
LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-reload.window.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/FileAPI/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bigint_value-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bigint_value.htm [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/historical-expected.txt
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/historical.html
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-iterating-update-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-iterating-update.htm [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-common.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-large-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-large.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-small-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-small.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers-expected.txt
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers.htm
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath.htm
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/support.js
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/wasm-module-value-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/wasm-module-value.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CBC-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.worker-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CBC.https-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.worker.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CTR-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.worker-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CTR.https-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.worker.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.worker-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM.https-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.worker.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-KW-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.worker-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-KW.https-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.worker.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.worker-expected.txt with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.worker-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDH.https-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.worker.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.worker-expected.txt with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.worker-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDSA.https-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.worker.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.worker-expected.txt with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.worker-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_HMAC-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.worker.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.worker-expected.txt with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.worker-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.https-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.worker.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker-expected.txt with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-PSS.https-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.worker-expected.txt with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.worker-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.https-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.worker.html [moved from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.worker.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes.js
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.worker-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.worker-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.worker-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.worker-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.worker-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.worker-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.worker.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_aes-cbc.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_aes-cbc.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_aes-ctr-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_aes-ctr.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_aes-ctr.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CBC.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CTR.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-KW.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDH.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDSA-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDSA.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_HMAC.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_HMAC.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-PSS.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CBC-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CBC.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CBC.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CTR-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CTR.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CTR.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-GCM.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-GCM.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-KW.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-KW.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDH.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDH.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDSA.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDSA.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_HMAC.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_HMAC.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-PSS-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-PSS.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-PSS.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/default-iterator-object-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/default-iterator-object.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/iterator-prototype-object-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/iterator-prototype-object.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any.worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.html
LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker.js
LayoutTests/imported/w3c/web-platform-tests/beacon/OWNERS [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/beacon/beacon-common.sub.js
LayoutTests/imported/w3c/web-platform-tests/beacon/beacon-cors.sub.window.js
LayoutTests/imported/w3c/web-platform-tests/beacon/beacon-error.window.js
LayoutTests/imported/w3c/web-platform-tests/beacon/beacon-navigate-expected.txt
LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-content-type-expected.txt
LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-content-type.html
LayoutTests/imported/w3c/web-platform-tests/beacon/resources/beacon.py
LayoutTests/imported/w3c/web-platform-tests/beacon/w3c-import.log
LayoutTests/platform/ios-simulator/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any-expected.txt [moved from LayoutTests/platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker-expected.txt with 100% similarity]
LayoutTests/platform/ios-simulator/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/IndexedDB/wasm-module-value-expected.txt [new file with mode: 0644]
LayoutTests/platform/ios/imported/w3c/web-platform-tests/beacon/headers/header-content-type-expected.txt [deleted file]
LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/beacon/headers/header-content-type-expected.txt [deleted file]
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/FileAPI/historical.https-expected.txt
LayoutTests/platform/mac/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-large-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-small-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker-expected.txt [deleted file]
LayoutTests/platform/mac/imported/w3c/web-platform-tests/beacon/headers/header-content-type-expected.txt [deleted file]

index 94d6f66..fc310f0 100644 (file)
@@ -1,3 +1,18 @@
+2018-06-08  Brendan McLoughlin  <brendan@bocoup.com>
+
+        Sync web-platform-tests repo to 197cdad
+        https://bugs.webkit.org/show_bug.cgi?id=186267
+
+        Reviewed by Youenn Fablet.
+
+        * TestExpectations:
+        * platform/ios/imported/w3c/web-platform-tests/beacon/headers/header-content-type-expected.txt:
+        * platform/mac-wk2/imported/w3c/web-platform-tests/beacon/headers/header-content-type-expected.txt: Added.
+        * platform/mac/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-large-expected.txt: Added.
+        * platform/mac/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-small-expected.txt: Added.
+        * platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker-expected.txt: Removed.
+        * platform/mac/imported/w3c/web-platform-tests/beacon/headers/header-content-type-expected.txt:
+
 2018-06-08  Chris Dumez  <cdumez@apple.com>
 
         http/tests/navigation/https-no-store-subframe-in-page-cache.html fails with PSON enabled
index 49d2ae1..b332b9c 100644 (file)
@@ -1423,14 +1423,10 @@ workers/wasm-long-compile.html [ Slow ]
 # Flaky WebCrypto API tests
 imported/w3c/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.html [ Pass Failure Slow ]
-imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.https.html [ Pass Failure ]
 
 # WebCryptoAPI tests that take too long to complete
-imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker.html [ Skip ]
-imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.worker.html [ Slow ]
 imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.worker.html [ Slow ]
 imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.https.html [ Slow ]
-imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker.html [ Slow ]
 
 # Imported Beacon test that is flaky because its last check is very slow.
 webkit.org/b/175202 imported/w3c/web-platform-tests/beacon/beacon-basic-string.html [ Pass Failure ]
@@ -2012,3 +2008,6 @@ webkit.org/b/184800 http/tests/workers/worker-importScripts-banned-mimetype.html
 webkit.org/b/184802 http/tests/security/contentTypeOptions/nosniff-importScript-blocked.html [ Pass Timeout ]
 
 webkit.org/b/181100 inspector/worker/worker-recover-if-inspector-close.html [ Pass Failure ]
+
+[ Debug ] imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-large.html [ Failure ]
+[ Debug ] imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-small.html [ Failure ]
\ No newline at end of file
index bb54c16..e7d6847 100644 (file)
@@ -1,3 +1,309 @@
+2018-06-08  Brendan McLoughlin  <brendan@bocoup.com>
+
+        Sync web-platform-tests repo to 197cdad
+        https://bugs.webkit.org/show_bug.cgi?id=186267
+
+        Reviewed by Youenn Fablet.
+
+        * resources/resource-files.json:
+        * web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html:
+        * web-platform-tests/2dcontext/imagebitmap/w3c-import.log:
+        * web-platform-tests/FileAPI/BlobURL/support/file_test2.txt: Added.
+        * web-platform-tests/FileAPI/BlobURL/support/w3c-import.log:
+        * web-platform-tests/FileAPI/FileReader/support/file_test1.txt: Added.
+        * web-platform-tests/FileAPI/FileReader/workers-expected.txt: Added.
+        * web-platform-tests/FileAPI/FileReader/workers.html: Added.
+        * web-platform-tests/FileAPI/blob/Blob-constructor-endings-expected.txt: Added.
+        * web-platform-tests/FileAPI/blob/Blob-constructor-endings.html: Added.
+        * web-platform-tests/FileAPI/blob/w3c-import.log:
+        * web-platform-tests/FileAPI/file/File-constructor-endings-expected.txt: Added.
+        * web-platform-tests/FileAPI/file/File-constructor-endings.html: Added.
+        * web-platform-tests/FileAPI/file/send-file-form-expected.txt: Added.
+        * web-platform-tests/FileAPI/file/send-file-form-iso-2022-jp.tentative-expected.txt: Added.
+        * web-platform-tests/FileAPI/file/send-file-form-iso-2022-jp.tentative.html: Added.
+        * web-platform-tests/FileAPI/file/send-file-form-utf-8-expected.txt: Added.
+        * web-platform-tests/FileAPI/file/send-file-form-utf-8.html: Added.
+        * web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative-expected.txt: Added.
+        * web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative.html: Added.
+        * web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative-expected.txt: Added.
+        * web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative.html: Added.
+        * web-platform-tests/FileAPI/file/send-file-form.html: Added.
+        * web-platform-tests/FileAPI/historical.https-expected.txt:
+        * web-platform-tests/FileAPI/historical.https.html:
+        * web-platform-tests/FileAPI/reading-data-section/FileReader-multiple-reads-expected.txt:
+        * web-platform-tests/FileAPI/reading-data-section/FileReader-multiple-reads.html:
+        * web-platform-tests/FileAPI/reading-data-section/filereader_readAsBinaryString-expected.txt: Added.
+        * web-platform-tests/FileAPI/reading-data-section/filereader_readAsBinaryString.html: Added.
+        * web-platform-tests/FileAPI/reading-data-section/w3c-import.log:
+        * web-platform-tests/FileAPI/support/send-file-form-helper.js: Added.
+        (const.formPostFileUploadTest):
+        * web-platform-tests/FileAPI/support/w3c-import.log:
+        * web-platform-tests/FileAPI/unicode-expected.txt: Added.
+        * web-platform-tests/FileAPI/unicode.html: Added.
+        * web-platform-tests/FileAPI/url/resources/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/FileAPI/BlobURL/support/w3c-import.log.
+        * web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js: Added.
+        (async_test.t.frame.onload.t.step_func_done):
+        (async_test.t.frame.onload.t.step_func):
+        (async_test.t.add_completion_callback):
+        (async_test.t.win.onload.t.step_func_done):
+        (receive_message_on_channel):
+        (async_test.t.const.blob.new.Blob.window_contents_for_channel):
+        (async_test.t.e.onload.t.step_func_done):
+        * web-platform-tests/FileAPI/url/url-in-tags.window.js:
+        (async_test.t.frame.contentWindow.onscroll.t.step_func_done):
+        * web-platform-tests/FileAPI/url/url-reload.window.js: Added.
+        (blob_url_reload_test):
+        * web-platform-tests/FileAPI/url/w3c-import.log:
+        * web-platform-tests/FileAPI/w3c-import.log:
+        * web-platform-tests/IndexedDB/bigint_value-expected.txt: Added.
+        * web-platform-tests/IndexedDB/bigint_value.htm: Added.
+        * web-platform-tests/IndexedDB/historical-expected.txt:
+        * web-platform-tests/IndexedDB/historical.html:
+        * web-platform-tests/IndexedDB/idbcursor-iterating-update-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbcursor-iterating-update.htm: Added.
+        * web-platform-tests/IndexedDB/interleaved-cursors-common.js: Added.
+        (objectKey):
+        (objectValue):
+        (writeCursorObjects):
+        (interleaveCursors):
+        * web-platform-tests/IndexedDB/interleaved-cursors-large-expected.txt: Added.
+        * web-platform-tests/IndexedDB/interleaved-cursors-large.html: Added.
+        * web-platform-tests/IndexedDB/interleaved-cursors-small-expected.txt: Added.
+        * web-platform-tests/IndexedDB/interleaved-cursors-small.html: Added.
+        * web-platform-tests/IndexedDB/keypath-special-identifiers-expected.txt:
+        * web-platform-tests/IndexedDB/keypath-special-identifiers.htm:
+        * web-platform-tests/IndexedDB/keypath.htm:
+        * web-platform-tests/IndexedDB/support.js:
+        (add_completion_callback):
+        (indexeddb_test):
+        * web-platform-tests/IndexedDB/w3c-import.log:
+        * web-platform-tests/IndexedDB/wasm-module-value-expected.txt: Added.
+        * web-platform-tests/IndexedDB/wasm-module-value.html: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.worker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker-expected.txt:
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.worker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker-expected.txt:
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.worker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker-expected.txt:
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.worker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker-expected.txt:
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any-expected.txt: Copied from LayoutTests/platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker-expected.txt: Renamed from LayoutTests/platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.worker-expected.txt.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes.js:
+        (run_test):
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.worker-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.worker-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.worker-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.worker-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.worker-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.worker-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.worker-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.worker-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.worker-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.worker-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.worker-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.worker-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.worker-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.worker-expected.txt: Added.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.worker-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.worker.js: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_aes-cbc.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_aes-cbc.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_aes-ctr-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_aes-ctr.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_aes-ctr.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CBC-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CBC.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CBC.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CTR-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CTR.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-CTR.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-KW-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-KW.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-KW.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDH.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDH.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDSA-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDSA.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDSA.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_HMAC-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_HMAC.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_HMAC.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-PSS.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-PSS.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CBC-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CBC.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CBC.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CTR-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CTR.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-CTR.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-GCM.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-GCM.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-KW.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-KW.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDH.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDH.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDSA.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDSA.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_HMAC.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_HMAC.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-PSS-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-PSS.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-PSS.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.https-expected.txt: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.https.html: Removed.
+        * web-platform-tests/WebCryptoAPI/generateKey/w3c-import.log:
+        * web-platform-tests/WebIDL/ecmascript-binding/default-iterator-object-expected.txt: Added.
+        * web-platform-tests/WebIDL/ecmascript-binding/default-iterator-object.html: Added.
+        * web-platform-tests/WebIDL/ecmascript-binding/iterator-prototype-object-expected.txt: Added.
+        * web-platform-tests/WebIDL/ecmascript-binding/iterator-prototype-object.html: Added.
+        * web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any-expected.txt: Added.
+        * web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any.js: Added.
+        (test):
+        (test.regExp.Symbol.iterator):
+        (promise_test.async):
+        * web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any.worker-expected.txt: Added.
+        * web-platform-tests/WebIDL/ecmascript-binding/no-regexp-special-casing.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.html.
+        * web-platform-tests/WebIDL/ecmascript-binding/w3c-import.log:
+        * web-platform-tests/background-fetch/interfaces.html:
+        * web-platform-tests/background-fetch/interfaces.worker.js:
+        (promise_test.async):
+        (promise_test): Deleted.
+        * web-platform-tests/beacon/OWNERS: Added.
+        * web-platform-tests/beacon/beacon-common.sub.js:
+        * web-platform-tests/beacon/beacon-cors.sub.window.js:
+        (runTests.self.buildId):
+        (runTests.self.buildBaseUrl):
+        (runTests.self.buildTargetUrl):
+        (runTests):
+        * web-platform-tests/beacon/beacon-error.window.js:
+        (promise_test.async):
+        * web-platform-tests/beacon/beacon-navigate-expected.txt:
+        * web-platform-tests/beacon/headers/header-content-type.html:
+        * web-platform-tests/beacon/resources/beacon.py:
+        (main):
+        * web-platform-tests/beacon/w3c-import.log:
+
 2018-06-07  Chris Dumez  <cdumez@apple.com>
 
         PopStateEvent should not be cancelable by default
index 3c4f1ac..ce605d9 100644 (file)
         "web-platform-tests/FileAPI/support/url-origin.html",
         "web-platform-tests/XMLHttpRequest/xmlhttprequest-sync-block-defer-scripts-subframe.html",
         "web-platform-tests/XMLHttpRequest/xmlhttprequest-sync-not-hang-scriptloader-subframe.html",
+        "web-platform-tests/acid/acid2/404.html",
+        "web-platform-tests/acid/acid2/test.html",
+        "web-platform-tests/acid/acid3/empty.html",
+        "web-platform-tests/acid/acid3/empty.xml",
+        "web-platform-tests/acid/acid3/svg.xml",
         "web-platform-tests/beacon/fetch-keepalive-navigate.iFrame.html",
         "web-platform-tests/beacon/navigate.iFrame.sub.html",
+        "web-platform-tests/credential-management/support/echoing-nester.html",
+        "web-platform-tests/credential-management/support/federatedcredential-get.html",
+        "web-platform-tests/credential-management/support/passwordcredential-get.html",
         "web-platform-tests/css/WOFF2/available-001.xht",
+        "web-platform-tests/css/WOFF2/available-002.xht",
         "web-platform-tests/css/WOFF2/support/available-001a.xht",
         "web-platform-tests/css/WOFF2/support/available-001b.xht",
         "web-platform-tests/css/WOFF2/testcaseindex.xht",
+        "web-platform-tests/css/css-color/t32-opacity-basic-0.6-a.xht",
+        "web-platform-tests/css/css-color/t32-opacity-zorder-c.xht",
+        "web-platform-tests/css/css-color/t421-rgb-hex3-expand-b.xht",
+        "web-platform-tests/css/css-color/t422-rgba-a0.6-a.xht",
+        "web-platform-tests/css/css-color/t425-hsla-basic-a.xht",
+        "web-platform-tests/css/css-display/run-in/after-content-display-004.xht",
+        "web-platform-tests/css/css-display/run-in/anonymous-box-generation-002.xht",
+        "web-platform-tests/css/css-display/run-in/background-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/background-attachment-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/background-color-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/background-image-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/background-position-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/background-repeat-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/before-content-display-004.xht",
+        "web-platform-tests/css/css-display/run-in/border-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-bottom-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-bottom-color-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-bottom-style-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-bottom-width-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-collapse-applies-to-004.xht",
+        "web-platform-tests/css/css-display/run-in/border-color-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-left-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-left-color-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-left-style-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-left-width-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-right-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-right-color-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-right-style-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-right-width-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-spacing-applies-to-004.xht",
+        "web-platform-tests/css/css-display/run-in/border-style-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-top-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-top-color-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-top-style-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-top-width-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/border-width-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/bottom-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/caption-side-applies-to-004.xht",
+        "web-platform-tests/css/css-display/run-in/clear-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/clear-runin-001.xht",
+        "web-platform-tests/css/css-display/run-in/color-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/direction-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/display-004.xht",
+        "web-platform-tests/css/css-display/run-in/empty-cells-applies-to-004.xht",
+        "web-platform-tests/css/css-display/run-in/first-line-pseudo-009.xht",
+        "web-platform-tests/css/css-display/run-in/float-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/font-applies-to-004.xht",
+        "web-platform-tests/css/css-display/run-in/font-family-applies-to-004.xht",
+        "web-platform-tests/css/css-display/run-in/font-size-applies-to-004.xht",
+        "web-platform-tests/css/css-display/run-in/left-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/line-height-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/list-style-image-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/list-style-position-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/margin-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/margin-bottom-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/margin-left-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/margin-right-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/margin-top-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/outline-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/outline-color-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/outline-style-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/outline-width-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/overflow-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/padding-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/padding-bottom-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/padding-left-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/padding-right-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/padding-top-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/position-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/right-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-001.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-002.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-003.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-004.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-005.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-006.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-007.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-008.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-009.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-010.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-011.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-012.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-013.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-inheritance-001.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-linebox-001.xht",
+        "web-platform-tests/css/css-display/run-in/run-in-linebox-002.xht",
+        "web-platform-tests/css/css-display/run-in/table-anonymous-block-001.xht",
+        "web-platform-tests/css/css-display/run-in/table-layout-applies-to-004.xht",
+        "web-platform-tests/css/css-display/run-in/text-align-applies-to-004.xht",
+        "web-platform-tests/css/css-display/run-in/text-indent-applies-to-004.xht",
+        "web-platform-tests/css/css-display/run-in/top-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/unicode-bidi-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/vertical-align-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/visibility-applies-to-011.xht",
+        "web-platform-tests/css/css-display/run-in/white-space-applies-to-004.xht",
+        "web-platform-tests/css/css-display/run-in/word-spacing-applies-to-004.xht",
+        "web-platform-tests/css/css-display/run-in/z-index-applies-to-011.xht",
         "web-platform-tests/css/css-grid-1/grid-items/ref-filled-green-100px-square-image.html",
         "web-platform-tests/css/css-grid-1/test-plan/index.html",
         "web-platform-tests/css/css-grid/grid-items/ref-filled-green-100px-square-image.html",
         "web-platform-tests/css/css-grid/test-plan/index.html",
         "web-platform-tests/css/css-multicol/multicol-rule-large-002.xht",
+        "web-platform-tests/css/css-pseudo/placeholder-input-number-notref.html",
         "web-platform-tests/css/css-shapes/test-plan/index.html",
+        "web-platform-tests/css/css-text-decor/text-decoration-visibility-001.xht",
+        "web-platform-tests/css/css-text-decor/text-decoration-visibility-002.xht",
+        "web-platform-tests/css/css-text-decor/text-decoration-visibility-003.xht",
+        "web-platform-tests/css/css-text-decor/text-decoration-visibility-004.xht",
+        "web-platform-tests/css/css-text-decor/text-decoration-visibility-005.xht",
+        "web-platform-tests/css/css-text-decor/text-decoration-visibility-006.xht",
+        "web-platform-tests/css/css-text-decor/text-decoration-visibility-007.xht",
+        "web-platform-tests/css/css-text-decor/text-decoration-visibility-008.xht",
+        "web-platform-tests/css/css-text-decor/text-decoration-visibility-009.xht",
+        "web-platform-tests/css/css-text-decor/text-decoration-visibility-010.xht",
+        "web-platform-tests/css/css-text-decor/text-decoration-visibility-011.xht",
+        "web-platform-tests/css/css-text-decor/text-decoration-visibility-012.xht",
+        "web-platform-tests/css/css-text-decor/text-emphasis-style-016.html",
         "web-platform-tests/css/css-text/text-align/text-align-end-018.html",
         "web-platform-tests/css/css-text/text-align/text-align-end-019.html",
         "web-platform-tests/css/css-text/text-align/text-align-end-020.html",
         "web-platform-tests/css/css-ui/support/nav-up-013-frame.html",
         "web-platform-tests/css/css-ui/text-overflow-018.html",
         "web-platform-tests/css/css-ui/text-overflow-019.html",
+        "web-platform-tests/css/cssom-view/iframe.html",
         "web-platform-tests/css/cssom/support/xmlss-pi.xhtml",
+        "web-platform-tests/css/mediaqueries/media-queries-001.xht",
+        "web-platform-tests/css/mediaqueries/media-queries-002.xht",
+        "web-platform-tests/css/mediaqueries/media-queries-003.xht",
         "web-platform-tests/css/mediaqueries/support/media_queries_iframe.html",
         "web-platform-tests/css/mediaqueries/support/min-width-tables-001-iframe.html",
+        "web-platform-tests/css/selectors/css3-modsel-1.xml",
+        "web-platform-tests/css/selectors/css3-modsel-10.xml",
+        "web-platform-tests/css/selectors/css3-modsel-100.xml",
+        "web-platform-tests/css/selectors/css3-modsel-100b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-101.xml",
+        "web-platform-tests/css/selectors/css3-modsel-101b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-102.xml",
+        "web-platform-tests/css/selectors/css3-modsel-102b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-103.xml",
+        "web-platform-tests/css/selectors/css3-modsel-103b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-104.xml",
+        "web-platform-tests/css/selectors/css3-modsel-104b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-105.xml",
+        "web-platform-tests/css/selectors/css3-modsel-105b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-106.xml",
+        "web-platform-tests/css/selectors/css3-modsel-106b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-107.xml",
+        "web-platform-tests/css/selectors/css3-modsel-107b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-108.xml",
+        "web-platform-tests/css/selectors/css3-modsel-108b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-109.xml",
+        "web-platform-tests/css/selectors/css3-modsel-109b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-11.xml",
+        "web-platform-tests/css/selectors/css3-modsel-110.xml",
+        "web-platform-tests/css/selectors/css3-modsel-110b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-111.xml",
+        "web-platform-tests/css/selectors/css3-modsel-111b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-112.xml",
+        "web-platform-tests/css/selectors/css3-modsel-112b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-113.xml",
+        "web-platform-tests/css/selectors/css3-modsel-113b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-114.xml",
+        "web-platform-tests/css/selectors/css3-modsel-114b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-115.xml",
+        "web-platform-tests/css/selectors/css3-modsel-115b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-116.xml",
+        "web-platform-tests/css/selectors/css3-modsel-116b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-117.xml",
+        "web-platform-tests/css/selectors/css3-modsel-117b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-118.xml",
+        "web-platform-tests/css/selectors/css3-modsel-119.xml",
+        "web-platform-tests/css/selectors/css3-modsel-120.xml",
+        "web-platform-tests/css/selectors/css3-modsel-121.xml",
+        "web-platform-tests/css/selectors/css3-modsel-122.xml",
+        "web-platform-tests/css/selectors/css3-modsel-123.xml",
+        "web-platform-tests/css/selectors/css3-modsel-123b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-124.xml",
+        "web-platform-tests/css/selectors/css3-modsel-124b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-125.xml",
+        "web-platform-tests/css/selectors/css3-modsel-125b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-126.xml",
+        "web-platform-tests/css/selectors/css3-modsel-126b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-127.xml",
+        "web-platform-tests/css/selectors/css3-modsel-127b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-128.xml",
+        "web-platform-tests/css/selectors/css3-modsel-128b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-129.xml",
+        "web-platform-tests/css/selectors/css3-modsel-129b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-13.xml",
+        "web-platform-tests/css/selectors/css3-modsel-130.xml",
+        "web-platform-tests/css/selectors/css3-modsel-130b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-131.xml",
+        "web-platform-tests/css/selectors/css3-modsel-131b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-132.xml",
+        "web-platform-tests/css/selectors/css3-modsel-132b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-133.xml",
+        "web-platform-tests/css/selectors/css3-modsel-133b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-134.xml",
+        "web-platform-tests/css/selectors/css3-modsel-134b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-135.xml",
+        "web-platform-tests/css/selectors/css3-modsel-135b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-136.xml",
+        "web-platform-tests/css/selectors/css3-modsel-136b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-137.xml",
+        "web-platform-tests/css/selectors/css3-modsel-137b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-138.xml",
+        "web-platform-tests/css/selectors/css3-modsel-138b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-139.xml",
+        "web-platform-tests/css/selectors/css3-modsel-139b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-14.xml",
+        "web-platform-tests/css/selectors/css3-modsel-140.xml",
+        "web-platform-tests/css/selectors/css3-modsel-140b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-141.xml",
+        "web-platform-tests/css/selectors/css3-modsel-141b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-142.xml",
+        "web-platform-tests/css/selectors/css3-modsel-142b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-143.xml",
+        "web-platform-tests/css/selectors/css3-modsel-143b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-144.xml",
+        "web-platform-tests/css/selectors/css3-modsel-145a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-145b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-146a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-146b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-147a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-147b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-148.xml",
+        "web-platform-tests/css/selectors/css3-modsel-149.xml",
+        "web-platform-tests/css/selectors/css3-modsel-149b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-14b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-14c.xml",
+        "web-platform-tests/css/selectors/css3-modsel-14d.xml",
+        "web-platform-tests/css/selectors/css3-modsel-14e.xml",
+        "web-platform-tests/css/selectors/css3-modsel-15.xml",
+        "web-platform-tests/css/selectors/css3-modsel-150.xml",
+        "web-platform-tests/css/selectors/css3-modsel-151.xml",
+        "web-platform-tests/css/selectors/css3-modsel-152.xml",
+        "web-platform-tests/css/selectors/css3-modsel-153.xml",
+        "web-platform-tests/css/selectors/css3-modsel-154.xml",
+        "web-platform-tests/css/selectors/css3-modsel-155.xml",
+        "web-platform-tests/css/selectors/css3-modsel-155a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-155b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-155c.xml",
+        "web-platform-tests/css/selectors/css3-modsel-155d.xml",
+        "web-platform-tests/css/selectors/css3-modsel-156.xml",
+        "web-platform-tests/css/selectors/css3-modsel-156b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-156c.xml",
+        "web-platform-tests/css/selectors/css3-modsel-157.xml",
+        "web-platform-tests/css/selectors/css3-modsel-158.xml",
+        "web-platform-tests/css/selectors/css3-modsel-159.xml",
+        "web-platform-tests/css/selectors/css3-modsel-15b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-15c.xml",
+        "web-platform-tests/css/selectors/css3-modsel-16.xml",
+        "web-platform-tests/css/selectors/css3-modsel-160.xml",
+        "web-platform-tests/css/selectors/css3-modsel-161.xml",
+        "web-platform-tests/css/selectors/css3-modsel-166.xml",
+        "web-platform-tests/css/selectors/css3-modsel-166a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-167.xml",
+        "web-platform-tests/css/selectors/css3-modsel-167a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-168.xml",
+        "web-platform-tests/css/selectors/css3-modsel-168a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-169.xml",
+        "web-platform-tests/css/selectors/css3-modsel-169a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-17.xml",
+        "web-platform-tests/css/selectors/css3-modsel-170.xml",
+        "web-platform-tests/css/selectors/css3-modsel-170a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-170b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-170c.xml",
+        "web-platform-tests/css/selectors/css3-modsel-170d.xml",
+        "web-platform-tests/css/selectors/css3-modsel-171.xml",
+        "web-platform-tests/css/selectors/css3-modsel-172a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-172b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-173a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-173b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-174a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-174b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-175a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-175b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-175c.xml",
+        "web-platform-tests/css/selectors/css3-modsel-176.xml",
+        "web-platform-tests/css/selectors/css3-modsel-177a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-177b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-178.xml",
+        "web-platform-tests/css/selectors/css3-modsel-179.xml",
+        "web-platform-tests/css/selectors/css3-modsel-179a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-18.xml",
+        "web-platform-tests/css/selectors/css3-modsel-180a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-181.xml",
+        "web-platform-tests/css/selectors/css3-modsel-182.xml",
+        "web-platform-tests/css/selectors/css3-modsel-183.xml",
+        "web-platform-tests/css/selectors/css3-modsel-184a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-184b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-184c.xml",
+        "web-platform-tests/css/selectors/css3-modsel-184d.xml",
+        "web-platform-tests/css/selectors/css3-modsel-184e.xml",
+        "web-platform-tests/css/selectors/css3-modsel-184f.xml",
+        "web-platform-tests/css/selectors/css3-modsel-18a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-18b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-18c.xml",
+        "web-platform-tests/css/selectors/css3-modsel-19.xml",
+        "web-platform-tests/css/selectors/css3-modsel-19b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-2.xml",
+        "web-platform-tests/css/selectors/css3-modsel-20.xml",
+        "web-platform-tests/css/selectors/css3-modsel-21.xml",
+        "web-platform-tests/css/selectors/css3-modsel-21b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-21c.xml",
+        "web-platform-tests/css/selectors/css3-modsel-22.xml",
+        "web-platform-tests/css/selectors/css3-modsel-23.xml",
+        "web-platform-tests/css/selectors/css3-modsel-24.xml",
+        "web-platform-tests/css/selectors/css3-modsel-25.xml",
+        "web-platform-tests/css/selectors/css3-modsel-27.xml",
+        "web-platform-tests/css/selectors/css3-modsel-27a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-27b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-28.xml",
+        "web-platform-tests/css/selectors/css3-modsel-28b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-29.xml",
+        "web-platform-tests/css/selectors/css3-modsel-29b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-3.xml",
+        "web-platform-tests/css/selectors/css3-modsel-30.xml",
+        "web-platform-tests/css/selectors/css3-modsel-31.xml",
+        "web-platform-tests/css/selectors/css3-modsel-32.xml",
+        "web-platform-tests/css/selectors/css3-modsel-33.xml",
+        "web-platform-tests/css/selectors/css3-modsel-34.xml",
+        "web-platform-tests/css/selectors/css3-modsel-35.xml",
+        "web-platform-tests/css/selectors/css3-modsel-36.xml",
+        "web-platform-tests/css/selectors/css3-modsel-37.xml",
+        "web-platform-tests/css/selectors/css3-modsel-38.xml",
+        "web-platform-tests/css/selectors/css3-modsel-39.xml",
+        "web-platform-tests/css/selectors/css3-modsel-39a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-39b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-39c.xml",
+        "web-platform-tests/css/selectors/css3-modsel-3a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-4.xml",
+        "web-platform-tests/css/selectors/css3-modsel-41.xml",
+        "web-platform-tests/css/selectors/css3-modsel-41a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-42.xml",
+        "web-platform-tests/css/selectors/css3-modsel-42a.xml",
+        "web-platform-tests/css/selectors/css3-modsel-43.xml",
+        "web-platform-tests/css/selectors/css3-modsel-43b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-44.xml",
+        "web-platform-tests/css/selectors/css3-modsel-44b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-44c.xml",
+        "web-platform-tests/css/selectors/css3-modsel-44d.xml",
+        "web-platform-tests/css/selectors/css3-modsel-45.xml",
+        "web-platform-tests/css/selectors/css3-modsel-45b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-45c.xml",
+        "web-platform-tests/css/selectors/css3-modsel-46.xml",
+        "web-platform-tests/css/selectors/css3-modsel-46b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-47.xml",
+        "web-platform-tests/css/selectors/css3-modsel-48.xml",
+        "web-platform-tests/css/selectors/css3-modsel-49.xml",
+        "web-platform-tests/css/selectors/css3-modsel-5.xml",
+        "web-platform-tests/css/selectors/css3-modsel-50.xml",
+        "web-platform-tests/css/selectors/css3-modsel-51.xml",
+        "web-platform-tests/css/selectors/css3-modsel-52.xml",
+        "web-platform-tests/css/selectors/css3-modsel-53.xml",
+        "web-platform-tests/css/selectors/css3-modsel-54.xml",
+        "web-platform-tests/css/selectors/css3-modsel-55.xml",
+        "web-platform-tests/css/selectors/css3-modsel-56.xml",
+        "web-platform-tests/css/selectors/css3-modsel-57.xml",
+        "web-platform-tests/css/selectors/css3-modsel-57b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-59.xml",
+        "web-platform-tests/css/selectors/css3-modsel-6.xml",
+        "web-platform-tests/css/selectors/css3-modsel-60.xml",
+        "web-platform-tests/css/selectors/css3-modsel-61.xml",
+        "web-platform-tests/css/selectors/css3-modsel-62.xml",
+        "web-platform-tests/css/selectors/css3-modsel-63.xml",
+        "web-platform-tests/css/selectors/css3-modsel-64.xml",
+        "web-platform-tests/css/selectors/css3-modsel-65.xml",
+        "web-platform-tests/css/selectors/css3-modsel-66.xml",
+        "web-platform-tests/css/selectors/css3-modsel-66b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-67.xml",
+        "web-platform-tests/css/selectors/css3-modsel-68.xml",
+        "web-platform-tests/css/selectors/css3-modsel-69.xml",
+        "web-platform-tests/css/selectors/css3-modsel-7.xml",
+        "web-platform-tests/css/selectors/css3-modsel-70.xml",
+        "web-platform-tests/css/selectors/css3-modsel-72.xml",
+        "web-platform-tests/css/selectors/css3-modsel-72b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-73.xml",
+        "web-platform-tests/css/selectors/css3-modsel-73b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-74.xml",
+        "web-platform-tests/css/selectors/css3-modsel-74b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-75.xml",
+        "web-platform-tests/css/selectors/css3-modsel-75b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-76.xml",
+        "web-platform-tests/css/selectors/css3-modsel-76b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-77.xml",
+        "web-platform-tests/css/selectors/css3-modsel-77b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-78.xml",
+        "web-platform-tests/css/selectors/css3-modsel-78b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-79.xml",
+        "web-platform-tests/css/selectors/css3-modsel-7b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-8.xml",
+        "web-platform-tests/css/selectors/css3-modsel-80.xml",
+        "web-platform-tests/css/selectors/css3-modsel-81.xml",
+        "web-platform-tests/css/selectors/css3-modsel-81b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-82.xml",
+        "web-platform-tests/css/selectors/css3-modsel-82b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-83.xml",
+        "web-platform-tests/css/selectors/css3-modsel-86.xml",
+        "web-platform-tests/css/selectors/css3-modsel-87.xml",
+        "web-platform-tests/css/selectors/css3-modsel-87b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-88.xml",
+        "web-platform-tests/css/selectors/css3-modsel-88b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-89.xml",
+        "web-platform-tests/css/selectors/css3-modsel-9.xml",
+        "web-platform-tests/css/selectors/css3-modsel-90.xml",
+        "web-platform-tests/css/selectors/css3-modsel-90b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-91.xml",
+        "web-platform-tests/css/selectors/css3-modsel-92.xml",
+        "web-platform-tests/css/selectors/css3-modsel-93.xml",
+        "web-platform-tests/css/selectors/css3-modsel-94.xml",
+        "web-platform-tests/css/selectors/css3-modsel-94b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-95.xml",
+        "web-platform-tests/css/selectors/css3-modsel-96.xml",
+        "web-platform-tests/css/selectors/css3-modsel-96b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-97.xml",
+        "web-platform-tests/css/selectors/css3-modsel-97b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-98.xml",
+        "web-platform-tests/css/selectors/css3-modsel-98b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-99.xml",
+        "web-platform-tests/css/selectors/css3-modsel-99b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-d1.xml",
+        "web-platform-tests/css/selectors/css3-modsel-d1b.xml",
+        "web-platform-tests/css/selectors/css3-modsel-d2.xml",
+        "web-platform-tests/css/selectors/css3-modsel-d3.xml",
+        "web-platform-tests/css/selectors/css3-modsel-d4.xml",
+        "web-platform-tests/css/selectors/selection-image-001-no-selection-noref.html",
+        "web-platform-tests/css/selectors/selection-image-001-noref.html",
         "web-platform-tests/cssom-view/iframe.html",
         "web-platform-tests/cssom/support/xmlss-pi.xhtml",
         "web-platform-tests/dom/events/EventListener-incumbent-global-subframe-1.sub.html",
         "web-platform-tests/dom/nodes/ParentNode-querySelector-All-content.html",
         "web-platform-tests/dom/nodes/ParentNode-querySelector-All-content.xht",
         "web-platform-tests/dom/nodes/getElementsByClassNameFrame.htm",
+        "web-platform-tests/dom/nodes/query-target-in-load-event.part.html",
         "web-platform-tests/dom/ranges/Range-test-iframe.html",
+        "web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp_chars-cseucpkdfmtjapanese.html",
+        "web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp_chars-x-euc-jp.html",
+        "web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp_chars.html",
+        "web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp_errors.html",
+        "web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp_chars-csiso2022jp.html",
+        "web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp_chars.html",
+        "web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp_errors.html",
         "web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis_chars-csshiftjis.html",
         "web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis_chars-ms932.html",
         "web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis_chars-ms_kanji.html",
         "web-platform-tests/html/browsers/history/the-session-history-of-browsing-contexts/navigation-in-onload_form-submission-2.tentative.html",
         "web-platform-tests/html/browsers/history/the-session-history-of-browsing-contexts/navigation-in-onload_form-submission-dynamic-iframe.tentative.html",
         "web-platform-tests/html/browsers/history/the-session-history-of-browsing-contexts/navigation-in-onload_form-submission-iframe.tentative.html",
+        "web-platform-tests/html/browsers/offline/browser-state/navigator_online_event-manual.https.html",
+        "web-platform-tests/html/browsers/offline/manifest_main_empty-manual.https.html",
+        "web-platform-tests/html/browsers/offline/manifest_notchanged_online-manual.https.html",
+        "web-platform-tests/html/browsers/offline/manifest_section_empty-manual.https.html",
+        "web-platform-tests/html/browsers/offline/manifest_section_many-manual.https.html",
+        "web-platform-tests/html/browsers/offline/section_network_offline-manual.https.html",
+        "web-platform-tests/html/browsers/offline/section_network_online-manual.https.html",
         "web-platform-tests/html/browsers/origin/cross-origin-objects/frame-with-then.html",
         "web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html",
         "web-platform-tests/html/browsers/origin/cross-origin-objects/win-documentdomain.sub.html",
         "web-platform-tests/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_setter_iframe.html",
         "web-platform-tests/html/browsers/origin/relaxing-the-same-origin-restriction/support/document_domain_frame.html",
+        "web-platform-tests/html/browsers/origin/relaxing-the-same-origin-restriction/support/document_domain_setter_iframe.html",
         "web-platform-tests/html/browsers/sandboxing/inner-iframe.html",
         "web-platform-tests/html/browsers/the-window-object/accessing-other-browsing-contexts/test1.html",
         "web-platform-tests/html/browsers/the-window-object/accessing-other-browsing-contexts/test2.html",
         "web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe_sandbox_029.htm",
         "web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe_sandbox_031.htm",
         "web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe_sandbox_032.htm",
+        "web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/load-into-the-iframe.html",
         "web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/navigation-changed-iframe.html",
         "web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/sandbox_allow_script.html",
         "web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/standalone-fail.htm",
         "web-platform-tests/secure-contexts/support/https-subframe-dedicated.html",
         "web-platform-tests/secure-contexts/support/https-subframe-shared.html",
         "web-platform-tests/secure-contexts/support/shared-worker-insecure-popup.html",
+        "web-platform-tests/service-workers/service-worker/fetch-event-is-history-backward-navigation-manual.https.html",
+        "web-platform-tests/service-workers/service-worker/fetch-event-is-history-forward-navigation-manual.https.html",
+        "web-platform-tests/service-workers/service-worker/fetch-event-is-reload-navigation-manual.https.html",
         "web-platform-tests/service-workers/service-worker/multi-globals/current/current.https.html",
         "web-platform-tests/service-workers/service-worker/multi-globals/incumbent/incumbent.https.html",
         "web-platform-tests/service-workers/service-worker/multi-globals/relevant/relevant.https.html",
         "web-platform-tests/workers/semantics/xhr/001-1.xml",
         "web-platform-tests/workers/semantics/xhr/support/001-1.xml",
         "web-platform-tests/workers/support/WorkerLocation-origin.html",
-        "web-platform-tests/workers/support/sandboxed-tests.html"
+        "web-platform-tests/workers/support/iframe_sw_dataUrl.html",
+        "web-platform-tests/workers/support/sandboxed-tests.html",
+        "web-platform-tests/xhr/xmlhttprequest-sync-block-defer-scripts-subframe.html",
+        "web-platform-tests/xhr/xmlhttprequest-sync-not-hang-scriptloader-subframe.html"
     ]
 }
\ No newline at end of file
index ebda395..0302634 100644 (file)
@@ -8,20 +8,19 @@
 <script src="common.sub.js"></script>
 <div id=log></div>
 <script>
-let worker, tests = {};
+let worker, continuations = {};
 setup(function() {
     worker = new Worker("transfer-worker.js");
     worker.addEventListener("message", function(event) {
         let { name, bitmap } = event.data;
-        tests[name](bitmap);
+        if (continuations.hasOwnProperty(name)) {
+            continuations[name](bitmap);
+        }
     });
 });
 
 for (let { name, factory } of imageSourceTypes) {
     promise_test(function(t) {
-        let message_handler = new Promise(function(resolve) {
-            tests[t.name] = resolve;
-        });
         return factory().then(createImageBitmap).then(function(bitmap) {
             assert_equals(bitmap.width, 20);
             assert_equals(bitmap.height, 20);
@@ -31,7 +30,9 @@ for (let { name, factory } of imageSourceTypes) {
             assert_equals(bitmap.width, 0);
             assert_equals(bitmap.height, 0);
 
-            return message_handler;
+            return new Promise(function(resolve) {
+                continuations[t.name] = resolve;
+            });
         }).then(function(bitmap) {
             assert_class_string(bitmap, "ImageBitmap");
             assert_equals(bitmap.width, 20);
index 01be627..c8b4271 100644 (file)
@@ -19,3 +19,5 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html
 /LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html
 /LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-sizeOverflow.html
+/LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html
+/LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/transfer-worker.js
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/BlobURL/support/file_test2.txt b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/BlobURL/support/file_test2.txt
new file mode 100644 (file)
index 0000000..e69de29
index 06ae8c1..d58eaac 100644 (file)
@@ -14,6 +14,4 @@ Property values requiring vendor prefixes:
 None
 ------------------------------------------------------------------------
 List of files:
-/LayoutTests/imported/w3c/web-platform-tests/FileAPI/BlobURL/support/file_test1.js
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/BlobURL/support/file_test2.txt
-/LayoutTests/imported/w3c/web-platform-tests/FileAPI/BlobURL/support/file_test3.html
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/FileReader/support/file_test1.txt b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/FileReader/support/file_test1.txt
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/FileReader/workers-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/FileReader/workers-expected.txt
new file mode 100644 (file)
index 0000000..c1c8d1a
--- /dev/null
@@ -0,0 +1,6 @@
+CONSOLE MESSAGE: line 7: InvalidStateError: The object is in an invalid state.
+
+Harness Error (FAIL), message = InvalidStateError: The object is in an invalid state.
+
+TIMEOUT FileReader created after a worker self.close() Test timed out
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/FileReader/workers.html b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/FileReader/workers.html
new file mode 100644 (file)
index 0000000..8e114ee
--- /dev/null
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+
+async_test(t => {
+  function workerCode() {
+    close();
+    var blob = new Blob([123]);
+    var fr = new FileReader();
+    fr.readAsText(blob);
+    fr.abort()
+    fr.readAsArrayBuffer(blob);
+    postMessage(true);
+  }
+
+  var workerBlob = new Blob([workerCode.toString() + ";workerCode();"], {type:"application/javascript"});
+
+  var w = new Worker(URL.createObjectURL(workerBlob));
+  w.onmessage = function(e) {
+    assert_true(e.data, "FileReader created during worker shutdown.");
+    t.done();
+  }
+}, 'FileReader created after a worker self.close()');
+
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/blob/Blob-constructor-endings-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/blob/Blob-constructor-endings-expected.txt
new file mode 100644 (file)
index 0000000..1e0a15d
--- /dev/null
@@ -0,0 +1,47 @@
+
+PASS Valid "endings" value: "transparent" 
+PASS Valid "endings" value: "native" 
+PASS Invalid "endings" value: null 
+PASS Invalid "endings" value: "" 
+PASS Invalid "endings" value: "invalidEnumValue" 
+PASS Invalid "endings" value: "Transparent" 
+PASS Invalid "endings" value: "NATIVE" 
+PASS Invalid "endings" value: 0 
+PASS Invalid "endings" value: {} 
+PASS Exception propagation from options 
+PASS The "endings" options property is used 
+PASS Input LF with endings unspecified 
+PASS Input LF with endings 'transparent' 
+PASS Input LF with endings 'native' 
+PASS Input CR with endings unspecified 
+PASS Input CR with endings 'transparent' 
+PASS Input CR with endings 'native' 
+PASS Input CRLF with endings unspecified 
+PASS Input CRLF with endings 'transparent' 
+PASS Input CRLF with endings 'native' 
+PASS Input CRCR with endings unspecified 
+PASS Input CRCR with endings 'transparent' 
+PASS Input CRCR with endings 'native' 
+PASS Input LFCR with endings unspecified 
+PASS Input LFCR with endings 'transparent' 
+PASS Input LFCR with endings 'native' 
+PASS Input LFLF with endings unspecified 
+PASS Input LFLF with endings 'transparent' 
+PASS Input LFLF with endings 'native' 
+PASS Input CRCRLF with endings unspecified 
+PASS Input CRCRLF with endings 'transparent' 
+PASS Input CRCRLF with endings 'native' 
+PASS Input CRLFLF with endings unspecified 
+PASS Input CRLFLF with endings 'transparent' 
+PASS Input CRLFLF with endings 'native' 
+PASS Input CRLFCR with endings unspecified 
+PASS Input CRLFCR with endings 'transparent' 
+PASS Input CRLFCR with endings 'native' 
+PASS Input CRLFCRLF with endings unspecified 
+PASS Input CRLFCRLF with endings 'transparent' 
+PASS Input CRLFCRLF with endings 'native' 
+PASS Input LFCRLFCR with endings unspecified 
+PASS Input LFCRLFCR with endings 'transparent' 
+PASS Input LFCRLFCR with endings 'native' 
+PASS CR/LF in adjacent input strings 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/blob/Blob-constructor-endings.html b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/blob/Blob-constructor-endings.html
new file mode 100644 (file)
index 0000000..1dee99f
--- /dev/null
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Blob constructor: endings option</title>
+<link rel=help href="https://w3c.github.io/FileAPI/#constructorBlob">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+
+// Windows platforms use CRLF as the native line ending. All others use LF.
+const crlf = navigator.platform.startsWith('Win');
+const native_ending = crlf ? '\r\n' : '\n';
+
+function readBlobAsPromise(blob) {
+  return new Promise((resolve, reject) => {
+    const reader = new FileReader();
+    reader.readAsText(blob);
+    reader.onload = e => resolve(reader.result);
+    reader.onerror = e => reject(reader.error);
+  });
+}
+
+[
+  'transparent',
+  'native'
+].forEach(value => test(t => {
+  assert_class_string(new Blob([], {endings: value}), 'Blob',
+                      `Constructor should allow "${value}" endings`);
+}, `Valid "endings" value: ${JSON.stringify(value)}`));
+
+[
+  null,
+  '',
+  'invalidEnumValue',
+  'Transparent',
+  'NATIVE',
+  0,
+  {}
+].forEach(value => test(t => {
+  assert_throws(new TypeError(), () => new Blob([], {endings: value}),
+                'Blob constructor should throw');
+}, `Invalid "endings" value: ${JSON.stringify(value)}`));
+
+test(t => {
+  const test_error = {name: 'test'};
+  assert_throws(
+    test_error,
+    () => new Blob([], { get endings() { throw test_error; }}),
+    'Blob constructor should propagate exceptions from "endings" property');
+}, 'Exception propagation from options');
+
+test(t => {
+  let got = false;
+  new Blob([], { get endings() { got = true; } });
+  assert_true(got, 'The "endings" property was accessed during construction.');
+}, 'The "endings" options property is used');
+
+[
+  {name: 'LF', input: '\n', native: native_ending},
+  {name: 'CR', input: '\r', native: native_ending},
+
+  {name: 'CRLF', input: '\r\n', native: native_ending},
+  {name: 'CRCR', input: '\r\r', native: native_ending.repeat(2)},
+  {name: 'LFCR', input: '\n\r', native: native_ending.repeat(2)},
+  {name: 'LFLF', input: '\n\n', native: native_ending.repeat(2)},
+
+  {name: 'CRCRLF', input: '\r\r\n', native: native_ending.repeat(2)},
+  {name: 'CRLFLF', input: '\r\n\n', native: native_ending.repeat(2)},
+  {name: 'CRLFCR', input: '\r\n\r\n', native: native_ending.repeat(2)},
+
+  {name: 'CRLFCRLF', input: '\r\n\r\n', native: native_ending.repeat(2)},
+  {name: 'LFCRLFCR', input: '\n\r\n\r', native: native_ending.repeat(3)},
+
+].forEach(testCase => {
+  promise_test(async t => {
+    const blob = new Blob([testCase.input]);
+    assert_equals(
+      await readBlobAsPromise(blob), testCase.input,
+      'Newlines should not change with endings unspecified');
+  }, `Input ${testCase.name} with endings unspecified`);
+
+  promise_test(async t => {
+    const blob = new Blob([testCase.input], {endings: 'transparent'});
+    assert_equals(
+      await readBlobAsPromise(blob), testCase.input,
+      'Newlines should not change with endings "transparent"');
+  }, `Input ${testCase.name} with endings 'transparent'`);
+
+  promise_test(async t => {
+    const blob = new Blob([testCase.input], {endings: 'native'});
+    assert_equals(
+      await readBlobAsPromise(blob), testCase.native,
+      'Newlines should match the platform with endings "native"');
+  }, `Input ${testCase.name} with endings 'native'`);
+});
+
+promise_test(async t => {
+  const blob = new Blob(['\r', '\n'], {endings: 'native'});
+  const expected = native_ending.repeat(2);
+  assert_equals(
+    await readBlobAsPromise(blob), expected,
+    'CR/LF in adjacent strings should be converted to two platform newlines');
+}, `CR/LF in adjacent input strings`);
+
+</script>
index f81e368..9ae9f1d 100644 (file)
@@ -14,6 +14,7 @@ Property values requiring vendor prefixes:
 None
 ------------------------------------------------------------------------
 List of files:
+/LayoutTests/imported/w3c/web-platform-tests/FileAPI/blob/Blob-constructor-endings.html
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/blob/Blob-constructor.html
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/blob/Blob-in-worker.worker.js
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/blob/Blob-slice-overflow.html
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/File-constructor-endings-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/File-constructor-endings-expected.txt
new file mode 100644 (file)
index 0000000..01f97b7
--- /dev/null
@@ -0,0 +1,47 @@
+
+PASS Valid "endings" value: "transparent" 
+PASS Valid "endings" value: "native" 
+PASS Invalid "endings" value: null 
+PASS Invalid "endings" value: "" 
+PASS Invalid "endings" value: "invalidEnumValue" 
+PASS Invalid "endings" value: "Transparent" 
+PASS Invalid "endings" value: "NATIVE" 
+PASS Invalid "endings" value: 0 
+PASS Invalid "endings" value: {} 
+PASS Exception propagation from options 
+PASS The "endings" options property is used 
+PASS Input LF with endings unspecified 
+PASS Input LF with endings 'transparent' 
+PASS Input LF with endings 'native' 
+PASS Input CR with endings unspecified 
+PASS Input CR with endings 'transparent' 
+FAIL Input CR with endings 'native' assert_equals: Newlines should match the platform with endings "native" expected "\n" but got "\r"
+PASS Input CRLF with endings unspecified 
+PASS Input CRLF with endings 'transparent' 
+FAIL Input CRLF with endings 'native' assert_equals: Newlines should match the platform with endings "native" expected "\n" but got "\r\n"
+PASS Input CRCR with endings unspecified 
+PASS Input CRCR with endings 'transparent' 
+FAIL Input CRCR with endings 'native' assert_equals: Newlines should match the platform with endings "native" expected "\n\n" but got "\r\r"
+PASS Input LFCR with endings unspecified 
+PASS Input LFCR with endings 'transparent' 
+FAIL Input LFCR with endings 'native' assert_equals: Newlines should match the platform with endings "native" expected "\n\n" but got "\n\r"
+PASS Input LFLF with endings unspecified 
+PASS Input LFLF with endings 'transparent' 
+PASS Input LFLF with endings 'native' 
+PASS Input CRCRLF with endings unspecified 
+PASS Input CRCRLF with endings 'transparent' 
+FAIL Input CRCRLF with endings 'native' assert_equals: Newlines should match the platform with endings "native" expected "\n\n" but got "\r\r\n"
+PASS Input CRLFLF with endings unspecified 
+PASS Input CRLFLF with endings 'transparent' 
+FAIL Input CRLFLF with endings 'native' assert_equals: Newlines should match the platform with endings "native" expected "\n\n" but got "\r\n\n"
+PASS Input CRLFCR with endings unspecified 
+PASS Input CRLFCR with endings 'transparent' 
+FAIL Input CRLFCR with endings 'native' assert_equals: Newlines should match the platform with endings "native" expected "\n\n" but got "\r\n\r\n"
+PASS Input CRLFCRLF with endings unspecified 
+PASS Input CRLFCRLF with endings 'transparent' 
+FAIL Input CRLFCRLF with endings 'native' assert_equals: Newlines should match the platform with endings "native" expected "\n\n" but got "\r\n\r\n"
+PASS Input LFCRLFCR with endings unspecified 
+PASS Input LFCRLFCR with endings 'transparent' 
+FAIL Input LFCRLFCR with endings 'native' assert_equals: Newlines should match the platform with endings "native" expected "\n\n\n" but got "\n\r\n\r"
+FAIL CR/LF in adjacent input strings assert_equals: CR/LF in adjacent strings should be converted to two platform newlines expected "\n\n" but got "\r\n"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/File-constructor-endings.html b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/File-constructor-endings.html
new file mode 100644 (file)
index 0000000..f0f9090
--- /dev/null
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>File constructor: endings option</title>
+<link rel=help href="https://w3c.github.io/FileAPI/#file-constructor">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+
+// Windows platforms use CRLF as the native line ending. All others use LF.
+const crlf = navigator.platform.startsWith('Win');
+const native_ending = crlf ? '\r\n' : '\n';
+
+function readBlobAsPromise(blob) {
+  return new Promise((resolve, reject) => {
+    const reader = new FileReader();
+    reader.readAsText(blob);
+    reader.onload = e => resolve(reader.result);
+    reader.onerror = e => reject(reader.error);
+  });
+}
+
+[
+  'transparent',
+  'native'
+].forEach(value => test(t => {
+  assert_class_string(new File([], "name", {endings: value}), 'File',
+                      `Constructor should allow "${value}" endings`);
+}, `Valid "endings" value: ${JSON.stringify(value)}`));
+
+[
+  null,
+  '',
+  'invalidEnumValue',
+  'Transparent',
+  'NATIVE',
+  0,
+  {}
+].forEach(value => test(t => {
+  assert_throws(new TypeError(), () => new File([], "name", {endings: value}),
+                'File constructor should throw');
+}, `Invalid "endings" value: ${JSON.stringify(value)}`));
+
+test(t => {
+  const test_error = {name: 'test'};
+  assert_throws(
+    test_error,
+    () => new File([], "name", { get endings() { throw test_error; }}),
+    'File constructor should propagate exceptions from "endings" property');
+}, 'Exception propagation from options');
+
+test(t => {
+  let got = false;
+  new File([], "name", { get endings() { got = true; } });
+  assert_true(got, 'The "endings" property was accessed during construction.');
+}, 'The "endings" options property is used');
+
+[
+  {name: 'LF', input: '\n', native: native_ending},
+  {name: 'CR', input: '\r', native: native_ending},
+
+  {name: 'CRLF', input: '\r\n', native: native_ending},
+  {name: 'CRCR', input: '\r\r', native: native_ending.repeat(2)},
+  {name: 'LFCR', input: '\n\r', native: native_ending.repeat(2)},
+  {name: 'LFLF', input: '\n\n', native: native_ending.repeat(2)},
+
+  {name: 'CRCRLF', input: '\r\r\n', native: native_ending.repeat(2)},
+  {name: 'CRLFLF', input: '\r\n\n', native: native_ending.repeat(2)},
+  {name: 'CRLFCR', input: '\r\n\r\n', native: native_ending.repeat(2)},
+
+  {name: 'CRLFCRLF', input: '\r\n\r\n', native: native_ending.repeat(2)},
+  {name: 'LFCRLFCR', input: '\n\r\n\r', native: native_ending.repeat(3)},
+
+].forEach(testCase => {
+  promise_test(async t => {
+    const file = new File([testCase.input], "name");
+    assert_equals(
+      await readBlobAsPromise(file), testCase.input,
+      'Newlines should not change with endings unspecified');
+  }, `Input ${testCase.name} with endings unspecified`);
+
+  promise_test(async t => {
+    const file = new File([testCase.input], "name", {endings: 'transparent'});
+    assert_equals(
+      await readBlobAsPromise(file), testCase.input,
+      'Newlines should not change with endings "transparent"');
+  }, `Input ${testCase.name} with endings 'transparent'`);
+
+  promise_test(async t => {
+    const file = new File([testCase.input], "name", {endings: 'native'});
+    assert_equals(
+      await readBlobAsPromise(file), testCase.native,
+      'Newlines should match the platform with endings "native"');
+  }, `Input ${testCase.name} with endings 'native'`);
+});
+
+promise_test(async t => {
+  const file = new File(['\r', '\n'], "name", {endings: 'native'});
+  const expected = native_ending.repeat(2);
+  assert_equals(
+    await readBlobAsPromise(file), expected,
+    'CR/LF in adjacent strings should be converted to two platform newlines');
+}, `CR/LF in adjacent input strings`);
+
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-expected.txt
new file mode 100644 (file)
index 0000000..b0de1ca
--- /dev/null
@@ -0,0 +1,3 @@
+
+FAIL Upload file-for-upload-in-form.txt (ASCII) in UTF-8 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-iso-2022-jp.tentative-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-iso-2022-jp.tentative-expected.txt
new file mode 100644 (file)
index 0000000..a3e5b18
--- /dev/null
@@ -0,0 +1,8 @@
+
+FAIL Upload file-for-upload-in-form.txt (ASCII) in ISO-2022-JP form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-.txt (x-user-defined) in ISO-2022-JP form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-☺😂.txt (windows-1252) in ISO-2022-JP form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-★星★.txt (JIS X 0201 and JIS X 0208) in ISO-2022-JP form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-☺😂.txt (Unicode) in ISO-2022-JP form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ.txt (Unicode) in ISO-2022-JP form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-iso-2022-jp.tentative.html b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-iso-2022-jp.tentative.html
new file mode 100644 (file)
index 0000000..421de30
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Upload files in ISO-2022-JP form (tentative)</title>
+<!--
+    NOTE: This test is tentative because encoding for filename
+    characters unrepresentable in the form charset is not yet
+    standardized.
+  -->
+<link rel="help"
+      href="https://github.com/whatwg/html/issues/3223">
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/dnd.html#datatransferitemlist">
+<link rel="help"
+      href="https://w3c.github.io/FileAPI/#file-constructor">
+<link rel="author" title="Benjamin C. Wiley Sittler"
+      href="mailto:bsittler@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../support/send-file-form-helper.js"></script>
+<script>
+'use strict';
+
+formPostFileUploadTest({
+  fileNameSource: 'ASCII',
+  fileBaseName: 'file-for-upload-in-form.txt',
+  formEncoding: 'ISO-2022-JP',
+  expectedEncodedBaseName: 'file-for-upload-in-form.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'x-user-defined',
+  fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt',
+  formEncoding: 'ISO-2022-JP',
+  expectedEncodedBaseName: (
+      'file-for-upload-in-form-&#63472;&#63379;&#63363;&#63392;.txt'),
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'windows-1252',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'ISO-2022-JP',
+  expectedEncodedBaseName: (
+      'file-for-upload-in-form-&#226;&#732;&#186;&#240;&#376;&#732;&#8218;.txt'),
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'JIS X 0201 and JIS X 0208',
+  fileBaseName: 'file-for-upload-in-form-★星★.txt',
+  formEncoding: 'ISO-2022-JP',
+  expectedEncodedBaseName: 'file-for-upload-in-form-\x1B$B!z@1!z\x1B(B.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'ISO-2022-JP',
+  expectedEncodedBaseName: 'file-for-upload-in-form-&#9786;&#128514;.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: `file-for-upload-in-form-${kTestChars}.txt`,
+  formEncoding: 'ISO-2022-JP',
+  expectedEncodedBaseName: `file-for-upload-in-form-${
+      kTestFallbackIso2022jp
+  }.txt`,
+});
+
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-utf-8-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-utf-8-expected.txt
new file mode 100644 (file)
index 0000000..4601f07
--- /dev/null
@@ -0,0 +1,8 @@
+
+FAIL Upload file-for-upload-in-form.txt (ASCII) in UTF-8 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-.txt (x-user-defined) in UTF-8 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-☺😂.txt (windows-1252) in UTF-8 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-★星★.txt (JIS X 0201 and JIS X 0208) in UTF-8 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-☺😂.txt (Unicode) in UTF-8 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ.txt (Unicode) in UTF-8 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-utf-8.html b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-utf-8.html
new file mode 100644 (file)
index 0000000..03417ba
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Upload files in UTF-8 form</title>
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/dnd.html#datatransferitemlist">
+<link rel="help"
+      href="https://w3c.github.io/FileAPI/#file-constructor">
+<link rel="author" title="Benjamin C. Wiley Sittler"
+      href="mailto:bsittler@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../support/send-file-form-helper.js"></script>
+<script>
+'use strict';
+
+formPostFileUploadTest({
+  fileNameSource: 'ASCII',
+  fileBaseName: 'file-for-upload-in-form.txt',
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: 'file-for-upload-in-form.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'x-user-defined',
+  fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt',
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: (
+      'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt'),
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'windows-1252',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: 'file-for-upload-in-form-☺😂.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'JIS X 0201 and JIS X 0208',
+  fileBaseName: 'file-for-upload-in-form-★星★.txt',
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: 'file-for-upload-in-form-★星★.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: 'file-for-upload-in-form-☺😂.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: `file-for-upload-in-form-${kTestChars}.txt`,
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: `file-for-upload-in-form-${kTestChars}.txt`,
+});
+
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative-expected.txt
new file mode 100644 (file)
index 0000000..016ab08
--- /dev/null
@@ -0,0 +1,8 @@
+
+FAIL Upload file-for-upload-in-form.txt (ASCII) in windows-1252 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-.txt (x-user-defined) in windows-1252 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-☺😂.txt (windows-1252) in windows-1252 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-★星★.txt (JIS X 0201 and JIS X 0208) in windows-1252 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-☺😂.txt (Unicode) in windows-1252 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ.txt (Unicode) in windows-1252 form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative.html b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative.html
new file mode 100644 (file)
index 0000000..8e9463f
--- /dev/null
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Upload files in Windows-1252 form (tentative)</title>
+<!--
+    NOTE: This test is tentative because encoding for filename
+    characters unrepresentable in the form charset is not yet
+    standardized.
+  -->
+<link rel="help"
+      href="https://github.com/whatwg/html/issues/3223">
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/dnd.html#datatransferitemlist">
+<link rel="help"
+      href="https://w3c.github.io/FileAPI/#file-constructor">
+<link rel="author" title="Benjamin C. Wiley Sittler"
+      href="mailto:bsittler@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../support/send-file-form-helper.js"></script>
+<script>
+'use strict';
+
+formPostFileUploadTest({
+  fileNameSource: 'ASCII',
+  fileBaseName: 'file-for-upload-in-form.txt',
+  formEncoding: 'windows-1252',
+  expectedEncodedBaseName: 'file-for-upload-in-form.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'x-user-defined',
+  fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt',
+  formEncoding: 'windows-1252',
+  expectedEncodedBaseName: (
+      'file-for-upload-in-form-&#63472;&#63379;&#63363;&#63392;.txt'),
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'windows-1252',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'windows-1252',
+  expectedEncodedBaseName: 'file-for-upload-in-form-☺😂.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'JIS X 0201 and JIS X 0208',
+  fileBaseName: 'file-for-upload-in-form-★星★.txt',
+  formEncoding: 'windows-1252',
+  expectedEncodedBaseName: 'file-for-upload-in-form-&#9733;&#26143;&#9733;.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'windows-1252',
+  expectedEncodedBaseName: 'file-for-upload-in-form-&#9786;&#128514;.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: `file-for-upload-in-form-${kTestChars}.txt`,
+  formEncoding: 'windows-1252',
+  expectedEncodedBaseName: `file-for-upload-in-form-${
+      kTestFallbackWindows1252
+  }.txt`,
+});
+
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative-expected.txt
new file mode 100644 (file)
index 0000000..2a23123
--- /dev/null
@@ -0,0 +1,8 @@
+
+FAIL Upload file-for-upload-in-form.txt (ASCII) in x-user-defined form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-.txt (x-user-defined) in x-user-defined form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-☺😂.txt (windows-1252) in x-user-defined form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-★星★.txt (JIS X 0201 and JIS X 0208) in x-user-defined form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-☺😂.txt (Unicode) in x-user-defined form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+FAIL Upload file-for-upload-in-form-ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ.txt (Unicode) in x-user-defined form promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new DataTransfer')"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative.html b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative.html
new file mode 100644 (file)
index 0000000..072e3bb
--- /dev/null
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Upload files in x-user-defined form (tentative)</title>
+<!--
+    NOTE: This test is tentative because encoding for filename
+    characters unrepresentable in the form charset is not yet
+    standardized.
+  -->
+<link rel="help"
+      href="https://github.com/whatwg/html/issues/3223">
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/dnd.html#datatransferitemlist">
+<link rel="help"
+      href="https://w3c.github.io/FileAPI/#file-constructor">
+<link rel="author" title="Benjamin C. Wiley Sittler"
+      href="mailto:bsittler@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../support/send-file-form-helper.js"></script>
+<script>
+'use strict';
+
+formPostFileUploadTest({
+  fileNameSource: 'ASCII',
+  fileBaseName: 'file-for-upload-in-form.txt',
+  formEncoding: 'x-user-defined',
+  expectedEncodedBaseName: 'file-for-upload-in-form.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'x-user-defined',
+  fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt',
+  formEncoding: 'x-user-defined',
+  expectedEncodedBaseName: 'file-for-upload-in-form-𓃠.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'windows-1252',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'x-user-defined',
+  expectedEncodedBaseName: ('file-for-upload-in-form-' +
+                            '&#226;&#732;&#186;&#240;&#376;&#732;&#8218;.txt'),
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'JIS X 0201 and JIS X 0208',
+  fileBaseName: 'file-for-upload-in-form-★星★.txt',
+  formEncoding: 'x-user-defined',
+  expectedEncodedBaseName: 'file-for-upload-in-form-&#9733;&#26143;&#9733;.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'x-user-defined',
+  expectedEncodedBaseName: 'file-for-upload-in-form-&#9786;&#128514;.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: `file-for-upload-in-form-${kTestChars}.txt`,
+  formEncoding: 'x-user-defined',
+  expectedEncodedBaseName: `file-for-upload-in-form-${
+      kTestFallbackXUserDefined
+  }.txt`,
+});
+
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form.html b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/file/send-file-form.html
new file mode 100644 (file)
index 0000000..baa8d42
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Upload ASCII-named file in UTF-8 form</title>
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/dnd.html#datatransferitemlist">
+<link rel="help"
+      href="https://w3c.github.io/FileAPI/#file-constructor">
+<link rel="author" title="Benjamin C. Wiley Sittler"
+      href="mailto:bsittler@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../support/send-file-form-helper.js"></script>
+<script>
+'use strict';
+
+formPostFileUploadTest({
+  fileNameSource: 'ASCII',
+  fileBaseName: 'file-for-upload-in-form.txt',
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: 'file-for-upload-in-form.txt',
+});
+
+</script>
index 432b314..51c65c5 100644 (file)
@@ -2,10 +2,14 @@
 PASS "toNativeLineEndings" should not be supported 
 FAIL "FileError" should not be supported assert_false: expected false got true
 PASS "FileException" should not be supported 
+PASS "FileHandle" should not be supported 
+PASS "FileRequest" should not be supported 
+PASS "MutableFile" should not be supported 
 PASS Blob should not support slice prefixed 
 PASS BlobBuilder should not be supported. 
 PASS createFor method should not be supported 
 PASS Blob.close() should not be supported 
+PASS File's lastModifiedDate should not be supported 
 PASS Service worker test setup 
 FAIL "FileReaderSync" should not be supported in service workers assert_false: expected false got true
 
index 9d78b56..4f841f1 100644 (file)
  <body>
   <div id="log"></div>
   <script>
-    test(function() {
-        assert_false('toNativeLineEndings' in window);
-    }, '"toNativeLineEndings" should not be supported');
+    var removedFromWindow = [
+        'toNativeLineEndings',
+        'FileError',
+        'FileException',
+        'FileHandle',
+        'FileRequest',
+        'MutableFile',
+    ];
 
-    test(function() {
-        assert_false('FileError' in window);
-    }, '"FileError" should not be supported');
-
-    test(function() {
-        assert_false('FileException' in window);
-    }, '"FileException" should not be supported');
+    removedFromWindow.forEach(function(name) {
+        test(function() {
+            assert_false(name in window);
+        }, '"' + name + '" should not be supported');
+    });
 
     test(function() {
         var b = new Blob();
         assert_false('isClosed' in Blob.prototype, 'isClosed in Blob.prototype');
     }, 'Blob.close() should not be supported');
 
-    // Only add service worker test if service workers are actually supported.
-    if (navigator.serviceWorker)
-      service_worker_test('support/historical-serviceworker.js', 'Service worker test setup');
+    test(() => {
+      const f = new File([], "");
+      assert_false("lastModifiedDate" in f);
+      assert_false("lastModifiedDate" in File.prototype);
+    }, "File's lastModifiedDate should not be supported");
+
+    service_worker_test('support/historical-serviceworker.js', 'Service worker test setup');
   </script>
  </body>
 </html>
index 551b602..3494198 100644 (file)
@@ -4,4 +4,5 @@ PASS test FileReader InvalidStateError exception for readAsDataURL
 PASS test FileReader InvalidStateError exception for readAsArrayBuffer 
 PASS test FileReader InvalidStateError exception in onloadstart event for readAsArrayBuffer 
 PASS test FileReader no InvalidStateError exception in loadend event handler for readAsArrayBuffer 
+FAIL test abort and restart in onloadstart event for readAsText The object is in an invalid state.
 
index ca04f3c..310fa85 100644 (file)
@@ -70,4 +70,20 @@ async_test(function() {
   reader.readAsArrayBuffer(blob_1)
   assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
 }, 'test FileReader no InvalidStateError exception in loadend event handler for readAsArrayBuffer');
+
+async_test(function() {
+  var blob_1 = new Blob([new Uint8Array(0x414141)]);
+  var blob_2 = new Blob(['TEST000000002']);
+  var reader = new FileReader();
+  reader.onloadstart = this.step_func(function() {
+    reader.abort();
+    reader.onloadstart = null;
+    reader.onloadend = this.step_func_done(function() {
+      assert_equals('TEST000000002', reader.result);
+    });
+    reader.readAsText(blob_2);
+  });
+  reader.readAsText(blob_1);
+}, 'test abort and restart in onloadstart event for readAsText');
+
 </script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_readAsBinaryString-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_readAsBinaryString-expected.txt
new file mode 100644 (file)
index 0000000..e8bb2ab
--- /dev/null
@@ -0,0 +1,3 @@
+
+FAIL FileAPI Test: filereader_readAsBinaryString assert_equals: expected 1 but got 2
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_readAsBinaryString.html b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_readAsBinaryString.html
new file mode 100644 (file)
index 0000000..b550e4d
--- /dev/null
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>FileAPI Test: filereader_readAsBinaryString</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://w3c.github.io/FileAPI/#readAsBinaryString">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+
+async_test(t => {
+  const blob = new Blob(["σ"]);
+  const reader = new FileReader();
+
+  reader.onload = t.step_func_done(() => {
+    assert_equals(typeof reader.result, "string", "The result is string");
+    assert_equals(reader.result.length, 2, "The result length is 2");
+    assert_equals(reader.result, "\xcf\x83", "The result is \xcf\x83");
+    assert_equals(reader.readyState, reader.DONE);
+  });
+
+  reader.onloadstart = t.step_func(() => {
+    assert_equals(reader.readyState, reader.LOADING);
+  });
+
+  reader.onprogress = t.step_func(() => {
+    assert_equals(reader.readyState, reader.LOADING);
+  });
+
+  reader.readAsBinaryString(blob);
+});
+
+</script>
index d6b9800..760e262 100644 (file)
@@ -20,6 +20,7 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_abort.html
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_error.html
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_readAsArrayBuffer.html
+/LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_readAsBinaryString.html
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_readAsDataURL.html
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_readAsText.html
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_readystate.html
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/support/send-file-form-helper.js b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/support/send-file-form-helper.js
new file mode 100644 (file)
index 0000000..a7522c7
--- /dev/null
@@ -0,0 +1,249 @@
+'use strict';
+
+// Rationale for this particular test character sequence, which is
+// used in filenames and also in file contents:
+//
+// - ABC~ ensures the string starts with something we can read to
+//   ensure it is from the correct source; ~ is used because even
+//   some 1-byte otherwise-ASCII-like parts of ISO-2022-JP
+//   interpret it differently.
+// - ‾¥ are inside a single-byte range of ISO-2022-JP and help
+//   diagnose problems due to filesystem encoding or locale
+// - ≈ is inside IBM437 and helps diagnose problems due to filesystem
+//   encoding or locale
+// - ¤ is inside Latin-1 and helps diagnose problems due to
+//   filesystem encoding or locale; it is also the "simplest" case
+//   needing substitution in ISO-2022-JP
+// - ・ is inside a single-byte range of ISO-2022-JP in some variants
+//   and helps diagnose problems due to filesystem encoding or locale;
+//   on the web it is distinct when decoding but unified when encoding
+// - ・ is inside a double-byte range of ISO-2022-JP and helps
+//   diagnose problems due to filesystem encoding or locale
+// - • is inside Windows-1252 and helps diagnose problems due to
+//   filesystem encoding or locale and also ensures these aren't
+//   accidentally turned into e.g. control codes
+// - ∙ is inside IBM437 and helps diagnose problems due to filesystem
+//   encoding or locale
+// - · is inside Latin-1 and helps diagnose problems due to
+//   filesystem encoding or locale and also ensures HTML named
+//   character references (e.g. &middot;) are not used
+// - ☼ is inside IBM437 shadowing C0 and helps diagnose problems due to
+//   filesystem encoding or locale and also ensures these aren't
+//   accidentally turned into e.g. control codes
+// - ★ is inside ISO-2022-JP on a non-Kanji page and makes correct
+//   output easier to spot
+// - 星 is inside ISO-2022-JP on a Kanji page and makes correct
+//   output easier to spot
+// - 🌟 is outside the BMP and makes incorrect surrogate pair
+//   substitution detectable and ensures substitutions work
+//   correctly immediately after Kanji 2-byte ISO-2022-JP
+// - 星 repeated here ensures the correct codec state is used
+//   after a non-BMP substitution
+// - ★ repeated here also makes correct output easier to spot
+// - ☼ is inside IBM437 shadowing C0 and helps diagnose problems due to
+//   filesystem encoding or locale and also ensures these aren't
+//   accidentally turned into e.g. control codes and also ensures
+//   substitutions work correctly immediately after non-Kanji
+//   2-byte ISO-2022-JP
+// - · is inside Latin-1 and helps diagnose problems due to
+//   filesystem encoding or locale and also ensures HTML named
+//   character references (e.g. &middot;) are not used
+// - ∙ is inside IBM437 and helps diagnose problems due to filesystem
+//   encoding or locale
+// - • is inside Windows-1252 and again helps diagnose problems
+//   due to filesystem encoding or locale
+// - ・ is inside a double-byte range of ISO-2022-JP and helps
+//   diagnose problems due to filesystem encoding or locale
+// - ・ is inside a single-byte range of ISO-2022-JP in some variants
+//   and helps diagnose problems due to filesystem encoding or locale;
+//   on the web it is distinct when decoding but unified when encoding
+// - ¤ is inside Latin-1 and helps diagnose problems due to
+//   filesystem encoding or locale; again it is a "simple"
+//   substitution case
+// - ≈ is inside IBM437 and helps diagnose problems due to filesystem
+//   encoding or locale
+// - ¥‾ are inside a single-byte range of ISO-2022-JP and help
+//   diagnose problems due to filesystem encoding or locale
+// - ~XYZ ensures earlier errors don't lead to misencoding of
+//   simple ASCII
+//
+// Overall the near-symmetry makes common I18N mistakes like
+// off-by-1-after-non-BMP easier to spot. All the characters
+// are also allowed in Windows Unicode filenames.
+const kTestChars = 'ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ';
+
+// NOTE: The expected interpretation of ISO-2022-JP according to
+// https://encoding.spec.whatwg.org/#iso-2022-jp-encoder unifies
+// single-byte and double-byte katakana.
+const kTestFallbackIso2022jp =
+      ('ABC~\x1B(J~\\≈¤\x1B$B!&!&\x1B(B•∙·☼\x1B$B!z@1\x1B(B🌟' +
+       '\x1B$B@1!z\x1B(B☼·∙•\x1B$B!&!&\x1B(B¤≈\x1B(J\\~\x1B(B~XYZ').replace(
+             /[^\0-\x7F]/gu,
+           x => `&#${x.codePointAt(0)};`);
+
+// NOTE: \uFFFD is used here to replace Windows-1252 bytes to match
+// how we will see them in the reflected POST bytes in a frame using
+// UTF-8 byte interpretation. The bytes will actually be intact, but
+// this code cannot tell and does not really care.
+const kTestFallbackWindows1252 =
+      'ABC~‾\xA5≈\xA4・・\x95∙\xB7☼★星🌟星★☼\xB7∙\x95・・\xA4≈\xA5‾~XYZ'.replace(
+            /[^\0-\xFF]/gu,
+          x => `&#${x.codePointAt(0)};`).replace(/[\x80-\xFF]/g, '\uFFFD');
+
+const kTestFallbackXUserDefined =
+      kTestChars.replace(/[^\0-\x7F]/gu, x => `&#${x.codePointAt(0)};`);
+
+// formPostFileUploadTest - verifies multipart upload structure and
+// numeric character reference replacement for filenames, field names,
+// and field values.
+//
+// Uses /fetch/api/resources/echo-content.py to echo the upload
+// POST with UTF-8 byte interpretation, leading to the "UTF-8 goggles"
+// behavior documented below for expectedEncodedBaseName when non-
+// UTF-8-compatible byte sequences appear in the formEncoding-encoded
+// uploaded data.
+//
+// Fields in the parameter object:
+//
+// - fileNameSource: purely explanatory and gives a clue about which
+//   character encoding is the source for the non-7-bit-ASCII parts of
+//   the fileBaseName, or Unicode if no smaller-than-Unicode source
+//   contains all the characters. Used in the test name.
+// - fileBaseName: the not-necessarily-just-7-bit-ASCII file basename
+//   used for the constructed test file. Used in the test name.
+// - formEncoding: the acceptCharset of the form used to submit the
+//   test file. Used in the test name.
+// - expectedEncodedBaseName: the expected formEncoding-encoded
+//   version of fileBaseName with unencodable characters replaced by
+//   numeric character references and non-7-bit-ASCII bytes seen
+//   through UTF-8 goggles; subsequences not interpretable as UTF-8
+//   have each byte represented here by \uFFFD REPLACEMENT CHARACTER.
+const formPostFileUploadTest = ({
+  fileNameSource,
+  fileBaseName,
+  formEncoding,
+  expectedEncodedBaseName,
+}) => {
+  promise_test(async testCase => {
+
+    if (document.readyState !== 'complete') {
+      await new Promise(resolve => addEventListener('load', resolve));
+    }
+
+    const formTargetFrame = Object.assign(document.createElement('iframe'), {
+      name: 'formtargetframe',
+    });
+    document.body.append(formTargetFrame);
+    testCase.add_cleanup(() => {
+      document.body.removeChild(formTargetFrame);
+    });
+
+    const form = Object.assign(document.createElement('form'), {
+      acceptCharset: formEncoding,
+      action: '/fetch/api/resources/echo-content.py',
+      method: 'POST',
+      enctype: 'multipart/form-data',
+      target: formTargetFrame.name,
+    });
+    document.body.append(form);
+    testCase.add_cleanup(() => {
+      document.body.removeChild(form);
+    });
+
+    // Used to verify that the browser agrees with the test about
+    // which form charset is used.
+    form.append(Object.assign(document.createElement('input'), {
+      type: 'hidden',
+      name: '_charset_',
+    }));
+
+    // Used to verify that the browser agrees with the test about
+    // field value replacement and encoding independently of file system
+    // idiosyncracies.
+    form.append(Object.assign(document.createElement('input'), {
+      type: 'hidden',
+      name: 'filename',
+      value: fileBaseName,
+    }));
+
+    // Same, but with name and value reversed to ensure field names
+    // get the same treatment.
+    form.append(Object.assign(document.createElement('input'), {
+      type: 'hidden',
+      name: fileBaseName,
+      value: 'filename',
+    }));
+
+    const fileInput = Object.assign(document.createElement('input'), {
+      type: 'file',
+      name: 'file',
+    });
+    form.append(fileInput);
+
+    // Removes c:\fakepath\ or other pseudofolder and returns just the
+    // final component of filePath; allows both / and \ as segment
+    // delimiters.
+    const baseNameOfFilePath = filePath => filePath.split(/[\/\\]/).pop();
+    await new Promise(resolve => {
+      const dataTransfer = new DataTransfer;
+      dataTransfer.items.add(
+          new File([kTestChars], fileBaseName, {type: 'text/plain'}));
+      fileInput.files = dataTransfer.files;
+      // For historical reasons .value will be prefixed with
+      // c:\fakepath\, but the basename should match the file name
+      // exposed through the newer .files[0].name API. This check
+      // verifies that assumption.
+      assert_equals(
+          fileInput.files[0].name,
+          baseNameOfFilePath(fileInput.value),
+          `The basename of the field's value should match its files[0].name`);
+      form.submit();
+      formTargetFrame.onload = resolve;
+    });
+
+    const formDataText = formTargetFrame.contentDocument.body.textContent;
+    const formDataLines = formDataText.split('\n');
+    if (formDataLines.length && !formDataLines[formDataLines.length - 1]) {
+      --formDataLines.length;
+    }
+    assert_greater_than(
+        formDataLines.length,
+        2,
+        `${fileBaseName}: multipart form data must have at least 3 lines: ${
+             JSON.stringify(formDataText)
+           }`);
+    const boundary = formDataLines[0];
+    assert_equals(
+        formDataLines[formDataLines.length - 1],
+        boundary + '--',
+        `${fileBaseName}: multipart form data must end with ${boundary}--: ${
+             JSON.stringify(formDataText)
+           }`);
+    const expectedText = [
+      boundary,
+      'Content-Disposition: form-data; name="_charset_"',
+      '',
+      formEncoding,
+      boundary,
+      'Content-Disposition: form-data; name="filename"',
+      '',
+      expectedEncodedBaseName,
+      boundary,
+      `Content-Disposition: form-data; name="${expectedEncodedBaseName}"`,
+      '',
+      'filename',
+      boundary,
+      `Content-Disposition: form-data; name="file"; ` +
+          `filename="${expectedEncodedBaseName}"`,
+      'Content-Type: text/plain',
+      '',
+      kTestChars,
+      boundary + '--',
+    ].join('\n');
+    assert_true(
+        formDataText.startsWith(expectedText),
+        `Unexpected multipart-shaped form data received:\n${
+             formDataText
+           }\nExpected:\n${expectedText}`);
+  }, `Upload ${fileBaseName} (${fileNameSource}) in ${formEncoding} form`);
+};
index 9966e38..5345a31 100644 (file)
@@ -18,5 +18,6 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/support/document-domain-setter.sub.html
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/support/historical-serviceworker.js
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/support/incumbent.sub.html
+/LayoutTests/imported/w3c/web-platform-tests/FileAPI/support/send-file-form-helper.js
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/support/upload.txt
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/support/url-origin.html
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/unicode-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/unicode-expected.txt
new file mode 100644 (file)
index 0000000..96e8ab4
--- /dev/null
@@ -0,0 +1,6 @@
+
+FAIL Test that strings are not NFC normalized by Blob constructor assert_equals: String should not be normalized expected "ό" but got "ό"
+FAIL Test that strings are not NFC normalized by File constructor assert_equals: String should not be normalized expected "ό" but got "ό"
+PASS Test that unpaired surrogates are replaced by Blob constructor 
+PASS Test that unpaired surrogates are replaced by File constructor 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/unicode.html b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/unicode.html
new file mode 100644 (file)
index 0000000..ce3e357
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Blob/Unicode interaction: normalization and encoding</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+'use strict';
+
+const OMICRON_WITH_OXIA = '\u1F79'; // NFC normalized to U+3CC
+const CONTAINS_UNPAIRED_SURROGATES = 'abc\uDC00def\uD800ghi';
+const REPLACED = 'abc\uFFFDdef\uFFFDghi';
+
+function readBlobAsPromise(blob) {
+  return new Promise((resolve, reject) => {
+    const reader = new FileReader();
+    reader.readAsText(blob);
+    reader.onload = () => resolve(reader.result);
+    reader.onerror = () => reject(reader.error);
+  });
+}
+
+promise_test(async t => {
+  const blob = new Blob([OMICRON_WITH_OXIA]);
+  const result = await readBlobAsPromise(blob);
+  assert_equals(result, OMICRON_WITH_OXIA, 'String should not be normalized');
+}, 'Test that strings are not NFC normalized by Blob constructor');
+
+promise_test(async t => {
+  const file = new File([OMICRON_WITH_OXIA], 'name');
+  const result = await readBlobAsPromise(file);
+  assert_equals(result, OMICRON_WITH_OXIA, 'String should not be normalized');
+}, 'Test that strings are not NFC normalized by File constructor');
+
+promise_test(async t => {
+  const blob = new Blob([CONTAINS_UNPAIRED_SURROGATES]);
+  const result = await readBlobAsPromise(blob);
+  assert_equals(result, REPLACED, 'Unpaired surrogates should be replaced.');
+}, 'Test that unpaired surrogates are replaced by Blob constructor');
+
+promise_test(async t => {
+  const file = new File([CONTAINS_UNPAIRED_SURROGATES], 'name');
+  const result = await readBlobAsPromise(file);
+  assert_equals(result, REPLACED, 'Unpaired surrogates should be replaced.');
+}, 'Test that unpaired surrogates are replaced by File constructor');
+
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/resources/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/resources/w3c-import.log
new file mode 100644 (file)
index 0000000..a1bdb1b
--- /dev/null
@@ -0,0 +1,21 @@
+The tests in this directory were imported from the W3C repository.
+Do NOT modify these tests directly in WebKit.
+Instead, create a pull request on the WPT github:
+       https://github.com/w3c/web-platform-tests
+
+Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
+
+Do NOT modify or remove this file.
+
+------------------------------------------------------------------------
+Properties requiring vendor prefixes:
+None
+Property values requiring vendor prefixes:
+None
+------------------------------------------------------------------------
+List of files:
+/LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/resources/create-helper.html
+/LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/resources/create-helper.js
+/LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/resources/fetch-tests.js
+/LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/resources/revoke-helper.html
+/LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/resources/revoke-helper.js
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js
new file mode 100644 (file)
index 0000000..f624f18
--- /dev/null
@@ -0,0 +1,99 @@
+async_test(t => {
+  const run_result = 'test_frame_OK';
+  const blob_contents = '<!doctype html>\n<meta charset="utf-8">\n' +
+    '<script>window.test_result = "' + run_result + '";</script>';
+  const blob = new Blob([blob_contents], {type: 'text/html'});
+  const url = URL.createObjectURL(blob);
+
+  const frame = document.createElement('iframe');
+  frame.setAttribute('src', url);
+  frame.setAttribute('style', 'display:none;');
+  document.body.appendChild(frame);
+  URL.revokeObjectURL(url);
+
+  frame.onload = t.step_func_done(() => {
+    assert_equals(frame.contentWindow.test_result, run_result);
+  });
+}, 'Fetching a blob URL immediately before revoking it works in an iframe.');
+
+async_test(t => {
+  const run_result = 'test_frame_OK';
+  const blob_contents = '<!doctype html>\n<meta charset="utf-8">\n' +
+    '<script>window.test_result = "' + run_result + '";</script>';
+  const blob = new Blob([blob_contents], {type: 'text/html'});
+  const url = URL.createObjectURL(blob);
+
+  const frame = document.createElement('iframe');
+  frame.setAttribute('src', '/common/blank.html');
+  frame.setAttribute('style', 'display:none;');
+  document.body.appendChild(frame);
+
+  frame.onload = t.step_func(() => {
+    frame.contentWindow.location = url;
+    URL.revokeObjectURL(url);
+    frame.onload = t.step_func_done(() => {
+      assert_equals(frame.contentWindow.test_result, run_result);
+    });
+  });
+}, 'Fetching a blob URL immediately before revoking it works in an iframe navigation.');
+
+async_test(t => {
+  const run_result = 'test_frame_OK';
+  const blob_contents = '<!doctype html>\n<meta charset="utf-8">\n' +
+    '<script>window.test_result = "' + run_result + '";</script>';
+  const blob = new Blob([blob_contents], {type: 'text/html'});
+  const url = URL.createObjectURL(blob);
+  const win = window.open(url);
+  URL.revokeObjectURL(url);
+  add_completion_callback(() => { win.close(); });
+
+  win.onload = t.step_func_done(() => {
+    assert_equals(win.test_result, run_result);
+  });
+}, 'Opening a blob URL in a new window immediately before revoking it works.');
+
+function receive_message_on_channel(t, channel_name) {
+  const channel = new BroadcastChannel(channel_name);
+  return new Promise(resolve => {
+    channel.addEventListener('message', t.step_func(e => {
+      resolve(e.data);
+    }));
+  });
+}
+
+function window_contents_for_channel(channel_name) {
+  return '<!doctype html>\n' +
+    '<script>\n' +
+    'new BroadcastChannel("' + channel_name + '").postMessage("foobar");\n' +
+    'self.close();\n' +
+    '</script>';
+}
+
+async_test(t => {
+  const channel_name = 'noopener-window-test';
+  const blob = new Blob([window_contents_for_channel(channel_name)], {type: 'text/html'});
+  receive_message_on_channel(t, channel_name).then(t.step_func_done(t => {
+    assert_equals(t, 'foobar');
+  }));
+  const url = URL.createObjectURL(blob);
+  const win = window.open();
+  win.opener = null;
+  win.location = url;
+  URL.revokeObjectURL(url);
+}, 'Opening a blob URL in a noopener about:blank window immediately before revoking it works.');
+
+async_test(t => {
+  const run_result = 'test_script_OK';
+  const blob_contents = 'window.script_test_result = "' + run_result + '";';
+  const blob = new Blob([blob_contents]);
+  const url = URL.createObjectURL(blob);
+
+  const e = document.createElement('script');
+  e.setAttribute('src', url);
+  e.onload = t.step_func_done(() => {
+    assert_equals(window.script_test_result, run_result);
+  });
+
+  document.body.appendChild(e);
+  URL.revokeObjectURL(url);
+}, 'Fetching a blob URL immediately before revoking it works in <script> tags.');
index 364d33b..f20b359 100644 (file)
@@ -31,7 +31,6 @@ async_test(t => {
 }, 'Blob URLs can be used in iframes, and are treated same origin');
 
 async_test(t => {
-  const scroll_position = 5000;
   const blob_contents = '<!doctype html>\n<meta charset="utf-8">\n' +
     '<style>body { margin: 0; } .block { height: 5000px; }</style>\n' +
     '<body>\n' +
@@ -43,8 +42,7 @@ async_test(t => {
   const frame = document.createElement('iframe');
   frame.setAttribute('src', url + '#block2');
   document.body.appendChild(frame);
-
-  frame.onload = t.step_func_done(() => {
+  frame.contentWindow.onscroll = t.step_func_done(() => {
     assert_equals(frame.contentWindow.scrollY, 5000);
   });
 }, 'Blob URL fragment is implemented.');
diff --git a/LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-reload.window.js b/LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-reload.window.js
new file mode 100644 (file)
index 0000000..d333b3a
--- /dev/null
@@ -0,0 +1,36 @@
+function blob_url_reload_test(t, revoke_before_reload) {
+  const run_result = 'test_frame_OK';
+  const blob_contents = '<!doctype html>\n<meta charset="utf-8">\n' +
+    '<script>window.test_result = "' + run_result + '";</script>';
+  const blob = new Blob([blob_contents], {type: 'text/html'});
+  const url = URL.createObjectURL(blob);
+
+  const frame = document.createElement('iframe');
+  frame.setAttribute('src', url);
+  frame.setAttribute('style', 'display:none;');
+  document.body.appendChild(frame);
+
+  frame.onload = t.step_func(() => {
+    if (revoke_before_reload)
+      URL.revokeObjectURL(url);
+    assert_equals(frame.contentWindow.test_result, run_result);
+    frame.contentWindow.test_result = null;
+    frame.onload = t.step_func_done(() => {
+      assert_equals(frame.contentWindow.test_result, run_result);
+    });
+    // Slight delay before reloading to ensure revoke actually has had a chance
+    // to be processed.
+    t.step_timeout(() => {
+      frame.contentWindow.location.reload();
+    }, 250);
+  });
+}
+
+async_test(t => {
+  blob_url_reload_test(t, false);
+}, 'Reloading a blob URL succeeds.');
+
+
+async_test(t => {
+  blob_url_reload_test(t, true);
+}, 'Reloading a blob URL succeeds even if the URL was revoked.');
index dee6448..fbf21df 100644 (file)
@@ -22,6 +22,7 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-in-tags.window.js
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-lifetime.html
+/LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-reload.window.js
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-with-fetch.any.js
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-with-xhr.any.js
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url_xmlhttprequest_img-expected.html
index 5c92457..56bff5e 100644 (file)
@@ -20,3 +20,4 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/historical.https.html
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/idlharness.html
 /LayoutTests/imported/w3c/web-platform-tests/FileAPI/idlharness.worker.js
+/LayoutTests/imported/w3c/web-platform-tests/FileAPI/unicode.html
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bigint_value-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bigint_value-expected.txt
new file mode 100644 (file)
index 0000000..9d20c69
--- /dev/null
@@ -0,0 +1,4 @@
+CONSOLE MESSAGE: line 41: SyntaxError: No identifiers allowed directly after numeric literal
+
+FAIL IndexedDB: BigInt keys and values SyntaxError: No identifiers allowed directly after numeric literal
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bigint_value.htm b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bigint_value.htm
new file mode 100644 (file)
index 0000000..589eeab
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>IndexedDB: BigInt keys and values</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
+
+<script>
+// BigInt and BigInt objects are supported in serialization, per
+// https://github.com/whatwg/html/pull/3480
+// This support allows them to be used as IndexedDB values.
+
+function value_test(value, predicate, name) {
+    async_test(t => {
+        t.step(function() {
+            assert_true(predicate(value),
+                        "Predicate should return true for the initial value.");
+        });
+
+        createdb(t).onupgradeneeded = t.step_func(e => {
+            e.target.result
+                    .createObjectStore("store")
+                    .add(value, 1);
+
+            e.target.onsuccess = t.step_func(e => {
+                e.target.result
+                        .transaction("store")
+                        .objectStore("store")
+                        .get(1)
+                        .onsuccess = t.step_func(e =>
+                {
+                    assert_true(predicate(e.target.result),
+                                "Predicate should return true for the deserialized result.");
+                    t.done();
+                });
+            });
+        });
+    }, "BigInts as values in IndexedDB - " + name);
+}
+
+value_test(1n,
+           x => x === 1n,
+           "primitive BigInt");
+value_test(Object(1n),
+           x => typeof x === 'object' &&
+                x instanceof BigInt &&
+                x.valueOf() === 1n,
+           "BigInt object");
+value_test({val: 1n},
+           x => x.val === 1n,
+           "primitive BigInt inside object");
+value_test({val: Object(1n)},
+           x => x.val.valueOf() === 1n &&
+                x.val instanceof BigInt &&
+                x.val.valueOf() === 1n,
+           "BigInt object inside object");
+
+// However, BigInt is not supported as an IndexedDB key; support
+// has been proposed in the following PR, but that change has not
+// landed at the time this patch was written
+// https://github.com/w3c/IndexedDB/pull/231
+
+function invalidKey(key, name) {
+    test(t => {
+        assert_throws("DataError", () => indexedDB.cmp(0, key));
+    }, "BigInts as keys in IndexedDB - " + name);
+}
+
+invalidKey(1n, "primitive BigInt");
+// Still an error even if the IndexedDB patch lands
+invalidKey(Object(1n), "BigInt object");
+</script>
index 43d081e..0a3435d 100644 (file)
@@ -11,4 +11,7 @@ PASS "PREV_NO_DUPLICATE" should not be supported on IDBCursor.
 PASS "READ_ONLY" should not be supported on IDBTransaction. 
 PASS "READ_WRITE" should not be supported on IDBTransaction. 
 PASS "VERSION_CHANGE" should not be supported on IDBTransaction. 
+PASS "IDBFileHandle" should not be supported 
+PASS "IDBFileRequest" should not be supported 
+PASS "IDBMutableFile" should not be supported 
 
index 73d78c8..8e7097e 100644 (file)
@@ -63,4 +63,18 @@ test(function() {
   // Replaced circa May 2012 by a DOMString (later, IDBTransactionMode enum).
   assert_false('VERSION_CHANGE' in IDBTransaction);
 }, '"VERSION_CHANGE" should not be supported on IDBTransaction.');
+
+// Gecko-proprietary interfaces.
+var removedFromWindow = [
+  'IDBFileHandle',
+  'IDBFileRequest',
+  'IDBMutableFile',
+];
+
+removedFromWindow.forEach(function(name) {
+  test(function() {
+    assert_false(name in window);
+  }, '"' + name + '" should not be supported');
+});
+
 </script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-iterating-update-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-iterating-update-expected.txt
new file mode 100644 (file)
index 0000000..7e8379d
--- /dev/null
@@ -0,0 +1,8 @@
+CONSOLE MESSAGE: line 2659: Error: assert_equals: Cursor should iterate over 4 records expected 4 but got 2
+CONSOLE MESSAGE: line 2659: Error: assert_equals: Cursor should iterate over 4 records expected 4 but got 2
+
+Harness Error (FAIL), message = Error: assert_equals: Cursor should iterate over 4 records expected 4 but got 2
+
+TIMEOUT Calling cursor => cursor.update({}) doesn't affect index iteration Test timed out
+TIMEOUT Calling cursor => cursor.delete() doesn't affect index iteration Test timed out
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-iterating-update.htm b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-iterating-update.htm
new file mode 100644 (file)
index 0000000..d2a7b9f
--- /dev/null
@@ -0,0 +1,58 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>IndexedDB: Index iteration with cursor updates/deletes</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js"></script>
+<script>
+const objStoreValues = [
+  {name: 'foo', id: 1},
+  {name: 'bar', id: 2},
+  {name: 'foo', id: 3},
+  {name: 'bar', id: 4},
+];
+
+const objStoreValuesByIndex = [
+  objStoreValues[1],
+  objStoreValues[3],
+  objStoreValues[0],
+  objStoreValues[2],
+];
+
+const functionsThatShouldNotAffectIteration = [
+  cursor => cursor.update({}),
+  cursor => cursor.delete(),
+];
+
+functionsThatShouldNotAffectIteration.forEach((func) => indexeddb_test(
+  (t, db) => {
+    const objStore = db.createObjectStore('items', {autoIncrement: true});
+    objStore.createIndex('name', 'name', {unique: false});
+    objStoreValues.forEach((value) => objStore.add(value));
+  },
+  (t, db) => {
+    const txn = db.transaction('items', 'readwrite');
+    const objStore = txn.objectStore('items');
+    const nameIndex = objStore.index('name');
+
+    const cursorValues = [];
+    nameIndex.openCursor().onsuccess = (evt) => {
+      const cursor = evt.target.result;
+      if (cursor) {
+        func(cursor);
+        cursorValues.push(cursor.value);
+        cursor.continue();
+      } else {
+        assert_equals(cursorValues.length, 4,
+            `Cursor should iterate over 4 records`);
+
+        cursorValues.forEach((value, i) => {
+          assert_object_equals(value, objStoreValuesByIndex[i]);
+        });
+        t.done();
+      }
+    }
+  },
+  `Calling ${func} doesn't affect index iteration`
+));
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-common.js b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-common.js
new file mode 100644 (file)
index 0000000..a76ec52
--- /dev/null
@@ -0,0 +1,188 @@
+// Infrastructure shared by interleaved-cursors-{small,large}.html
+
+// Number of objects that each iterator goes over.
+const itemCount = 10;
+
+// Ratio of small objects to large objects.
+const largeObjectRatio = 5;
+
+// Size of large objects. This should exceed the size of a block in the storage
+// method underlying the browser's IndexedDB implementation. For example, this
+// needs to exceed the LevelDB block size on Chrome, and the SQLite block size
+// on Firefox.
+const largeObjectSize = 48 * 1024;
+
+function objectKey(cursorIndex, itemIndex) {
+  return `${cursorIndex}-key-${itemIndex}`;
+}
+
+function objectValue(cursorIndex, itemIndex) {
+  if ((cursorIndex * itemCount + itemIndex) % largeObjectRatio === 0) {
+    // We use a typed array (as opposed to a string) because IndexedDB
+    // implementations may serialize strings using UTF-8 or UTF-16, yielding
+    // larger IndexedDB entries than we'd expect. It's very unlikely that an
+    // IndexedDB implementation would use anything other than the raw buffer to
+    // serialize a typed array.
+    const buffer = new Uint8Array(largeObjectSize);
+
+    // Some IndexedDB implementations, like LevelDB, compress their data blocks
+    // before storing them to disk. We use a simple 32-bit xorshift PRNG, which
+    // should be sufficient to foil any fast generic-purpose compression scheme.
+
+    // 32-bit xorshift - the seed can't be zero
+    let state = 1000 + (cursorIndex * itemCount + itemIndex);
+
+    for (let i = 0; i < largeObjectSize; ++i) {
+      state ^= state << 13;
+      state ^= state >> 17;
+      state ^= state << 5;
+      buffer[i] = state & 0xff;
+    }
+
+    return buffer;
+  }
+  return [cursorIndex, 'small', itemIndex];
+}
+
+// Writes the objects to be read by one cursor. Returns a promise that resolves
+// when the write completes.
+//
+// We want to avoid creating a large transaction, because that is outside the
+// test's scope, and it's a bad practice. So we break up the writes across
+// multiple transactions. For simplicity, each transaction writes all the
+// objects that will be read by a cursor.
+function writeCursorObjects(database, cursorIndex) {
+  return new Promise((resolve, reject) => {
+    const transaction = database.transaction('cache', 'readwrite');
+    transaction.onabort = () => { reject(transaction.error); };
+
+    const store = transaction.objectStore('cache');
+    for (let i = 0; i < itemCount; ++i) {
+      store.put({
+          key: objectKey(cursorIndex, i), value: objectValue(cursorIndex, i)});
+    }
+    transaction.oncomplete = resolve;
+  });
+}
+
+// Returns a promise that resolves when the store has been populated.
+function populateTestStore(testCase, database, cursorCount) {
+  let promiseChain = Promise.resolve();
+
+  for (let i = 0; i < cursorCount; ++i)
+    promiseChain = promiseChain.then(() => writeCursorObjects(database, i));
+
+  return promiseChain;
+}
+
+// Reads cursors in an interleaved fashion, as shown below.
+//
+// Given N cursors, each of which points to the beginning of a K-item sequence,
+// the following accesses will be made.
+//
+// OC(i)    = open cursor i
+// RD(i, j) = read result of cursor i, which should be at item j
+// CC(i)    = continue cursor i
+// |        = wait for onsuccess on the previous OC or CC
+//
+// OC(1)            | RD(1, 1) OC(2) | RD(2, 1) OC(3) | ... | RD(n-1, 1) CC(n) |
+// RD(n, 1)   CC(1) | RD(1, 2) CC(2) | RD(2, 2) CC(3) | ... | RD(n-1, 2) CC(n) |
+// RD(n, 2)   CC(1) | RD(1, 3) CC(2) | RD(2, 3) CC(3) | ... | RD(n-1, 3) CC(n) |
+// ...
+// RD(n, k-1) CC(1) | RD(1, k) CC(2) | RD(2, k) CC(3) | ... | RD(n-1, k) CC(n) |
+// RD(n, k)           done
+function interleaveCursors(testCase, store, cursorCount) {
+  return new Promise((resolve, reject) => {
+    // The cursors used for iteration are stored here so each cursor's onsuccess
+    // handler can call continue() on the next cursor.
+    const cursors = [];
+
+    // The results of IDBObjectStore.openCursor() calls are stored here so we
+    // we can change the requests' onsuccess handler after every
+    // IDBCursor.continue() call.
+    const requests = [];
+
+    const checkCursorState = (cursorIndex, itemIndex) => {
+      const cursor = cursors[cursorIndex];
+      assert_equals(cursor.key, objectKey(cursorIndex, itemIndex));
+      assert_equals(cursor.value.key, objectKey(cursorIndex, itemIndex));
+      assert_equals(
+          cursor.value.value.join('-'),
+          objectValue(cursorIndex, itemIndex).join('-'));
+    };
+
+    const openCursor = (cursorIndex, callback) => {
+      const request = store.openCursor(
+          IDBKeyRange.lowerBound(objectKey(cursorIndex, 0)));
+      requests[cursorIndex] = request;
+
+      request.onsuccess = testCase.step_func(() => {
+        const cursor = request.result;
+        cursors[cursorIndex] = cursor;
+        checkCursorState(cursorIndex, 0);
+        callback();
+      });
+      request.onerror = event => reject(request.error);
+    };
+
+    const readItemFromCursor = (cursorIndex, itemIndex, callback) => {
+      const request = requests[cursorIndex];
+      request.onsuccess = testCase.step_func(() => {
+        const cursor = request.result;
+        cursors[cursorIndex] = cursor;
+        checkCursorState(cursorIndex, itemIndex);
+        callback();
+      });
+
+      const cursor = cursors[cursorIndex];
+      cursor.continue();
+    };
+
+    // We open all the cursors one at a time, then cycle through the cursors and
+    // call continue() on each of them. This access pattern causes maximal
+    // trashing to an LRU cursor cache. Eviction scheme aside, any cache will
+    // have to evict some cursors, and this access pattern verifies that the
+    // cache correctly restores the state of evicted cursors.
+    const steps = [];
+    for (let cursorIndex = 0; cursorIndex < cursorCount; ++cursorIndex)
+      steps.push(openCursor.bind(null, cursorIndex));
+    for (let itemIndex = 1; itemIndex < itemCount; ++itemIndex) {
+      for (let cursorIndex = 0; cursorIndex < cursorCount; ++cursorIndex)
+        steps.push(readItemFromCursor.bind(null, cursorIndex, itemIndex));
+    }
+
+    const runStep = (stepIndex) => {
+      if (stepIndex === steps.length) {
+        resolve();
+        return;
+      }
+      steps[stepIndex](() => { runStep(stepIndex + 1); });
+    };
+    runStep(0);
+  });
+}
+
+function cursorTest(cursorCount) {
+  promise_test(testCase => {
+    return createDatabase(testCase, (database, transaction) => {
+      const store = database.createObjectStore('cache',
+          { keyPath: 'key', autoIncrement: true });
+    }).then(database => {
+      return populateTestStore(testCase, database, cursorCount).then(
+          () => database);
+    }).then(database => {
+      database.close();
+    }).then(() => {
+      return openDatabase(testCase);
+    }).then(database => {
+      const transaction = database.transaction('cache', 'readonly');
+      transaction.onabort = () => { reject(transaction.error); };
+
+      const store = transaction.objectStore('cache');
+      return interleaveCursors(testCase, store, cursorCount).then(
+          () => database);
+    }).then(database => {
+      database.close();
+    });
+  }, `${cursorCount} cursors`);
+}
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-large-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-large-expected.txt
new file mode 100644 (file)
index 0000000..60e441b
--- /dev/null
@@ -0,0 +1,3 @@
+
+PASS 250 cursors 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-large.html b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-large.html
new file mode 100644 (file)
index 0000000..6f4e440
--- /dev/null
@@ -0,0 +1,12 @@
+<!doctype html>
+<meta charset="utf-8">
+<meta name="timeout" content="long">
+<title>IndexedDB: Interleaved iteration of multiple cursors</title>
+<link rel="author" href="pwnall@chromium.org" title="Victor Costan">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support-promises.js"></script>
+<script src="interleaved-cursors-common.js"></script>
+<script>
+cursorTest(250);
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-small-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-small-expected.txt
new file mode 100644 (file)
index 0000000..67798bd
--- /dev/null
@@ -0,0 +1,5 @@
+
+PASS 1 cursors 
+PASS 10 cursors 
+PASS 100 cursors 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-small.html b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-small.html
new file mode 100644 (file)
index 0000000..a4c4777
--- /dev/null
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<meta name="timeout" content="long">
+<title>IndexedDB: Interleaved iteration of multiple cursors</title>
+<link rel="author" href="pwnall@chromium.org" title="Victor Costan">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support-promises.js"></script>
+<script src="interleaved-cursors-common.js"></script>
+<script>
+cursorTest(1);
+cursorTest(10);
+cursorTest(100);
+</script>
index be90589..40cc840 100644 (file)
@@ -5,5 +5,4 @@ PASS Type: Blob, identifier: size
 PASS Type: Blob, identifier: type 
 PASS Type: File, identifier: name 
 PASS Type: File, identifier: lastModified 
-FAIL Type: File, identifier: lastModifiedDate Provided data is inadequate.
 
index 331169b..cb64d0b 100644 (file)
     property: 'lastModified',
     instance: new File([''], '', {lastModified: 123}),
   },
-  {
-    type: 'File',
-    property: 'lastModifiedDate',
-    instance: new File([''], '', {lastModified: 123}),
-  },
 ].forEach(function(testcase) {
   indexeddb_test(
     (t, db) => {
index b59d614..4985712 100644 (file)
             "[Blob.length, Blob.type]");
     }
 
-    // File.name and File.lastModifiedDate is not testable automatically
+    // File.name and File.lastModified is not testable automatically
 
     keypath(['name', 'type'],
         [ { name: "orange", type: "fruit" }, { name: "orange", type: ["telecom", "french"] } ],
index ac9c2f3..5edbdac 100644 (file)
@@ -12,7 +12,7 @@ add_completion_callback(function(tests)
         if(tests[i].db)
         {
             tests[i].db.close();
-            window.indexedDB.deleteDatabase(tests[i].db.name);
+            self.indexedDB.deleteDatabase(tests[i].db.name);
         }
     }
 });
@@ -43,9 +43,9 @@ function createdb_for_multiple_tests(dbname, version) {
         dbname = (dbname ? dbname : "testdb-" + new Date().getTime() + Math.random() );
 
     if (version)
-        rq_open = window.indexedDB.open(dbname, version);
+        rq_open = self.indexedDB.open(dbname, version);
     else
-        rq_open = window.indexedDB.open(dbname);
+        rq_open = self.indexedDB.open(dbname);
 
     function auto_fail(evt, current_test) {
         /* Fail handlers, if we haven't set on/whatever/, don't
@@ -107,7 +107,7 @@ function assert_key_equals(actual, expected, description) {
 function indexeddb_test(upgrade_func, open_func, description, options) {
   async_test(function(t) {
     options = Object.assign({upgrade_will_abort: false}, options);
-    var dbname = document.location + '-' + t.name;
+    var dbname = location + '-' + t.name;
     var del = indexedDB.deleteDatabase(dbname);
     del.onerror = t.unreached_func('deleteDatabase should succeed');
     var open = indexedDB.open(dbname, 1);
index 836fd05..836ba1d 100644 (file)
@@ -17,6 +17,7 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/OWNERS
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/README.md
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/abort-in-initial-upgradeneeded.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bigint_value.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bindings-inject-key.html
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/clone-before-keypath-eval.html
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/close-in-upgradeneeded.html
@@ -48,6 +49,7 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-objectstore.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction.htm
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-iterating-update.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-key.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-primarykey.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-request-source.html
@@ -316,6 +318,9 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbworker.js
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/index_sort_order.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interfaces.any.js
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-common.js
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-large.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-small.html
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key-conversion-exceptions.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key_invalid.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key_valid.html
@@ -364,4 +369,5 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted.html
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/value.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/value_recursive.htm
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/wasm-module-value.html
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/writer-starvation.htm
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/wasm-module-value-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/wasm-module-value-expected.txt
new file mode 100644 (file)
index 0000000..3558542
--- /dev/null
@@ -0,0 +1,5 @@
+
+FAIL WebAssembly module as an IndexedDB value Failed to store record in an IDBObjectStore: An object could not be cloned.
+FAIL WebAssembly module in a JavaScript object IndexedDB value Failed to store record in an IDBObjectStore: An object could not be cloned.
+FAIL WebAssembly module in an IndexedDB value with an inline key Failed to store record in an IDBObjectStore: An object could not be cloned.
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/wasm-module-value.html b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/wasm-module-value.html
new file mode 100644 (file)
index 0000000..9fcfd78
--- /dev/null
@@ -0,0 +1,109 @@
+<!doctype html>
+<meta charset="utf8">
+<meta name="timeout" content="long">
+<title>IndexedDB: WebAssembly module values</title>
+<link rel="help" href="https://w3c.github.io/IndexedDB/">
+<link rel="help" href="https://webassembly.github.io/spec/">
+<link rel="author" href="pwnall@chromium.org" title="Victor Costan">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support-promises.js"></script>
+<script>
+'use strict';
+
+// Binary representation for a WASM module that exports an "inc" function.
+//
+// This test covers storing WASM modules in IndexedDB. Its failure should only
+// be debugged if WASM specification tests pass. To this end, the test does not
+// use the WASM module builder helpers, trading off WASM debuggability in return
+// for having the WASM wire bytes listed explicitly in the test body. Having the
+// wire bytes spelled out can be helpful when debugging IndexedDB failures.
+let wasm_module_bytes = new Uint8Array([
+  0x00, 0x61, 0x73, 0x6d,  // Magic.
+  0x01, 0x00, 0x00, 0x00,  // Version.
+  0x01, 0x06, 0x01,              // Type section - 6 bytes, 1 entry
+  0x60, 0x01, 0x7f, 0x01, 0x7f,  // Type 0. Function: (i32) -> (i32)
+  0x03, 0x02, 0x01,   // Function section - 2 bytes, 1 entry
+  0x00,               // Function 0: Type 0
+  0x07, 0x07, 0x01,              // Export section - 7 bytes, 1 entry
+  0x03, 0x69, 0x6e, 0x63,        // Export 1. { name: "inc"
+  0x00, 0x00,                    //             desc: function 0 }
+  0x0a, 0x09, 0x01,  // Code section: 9 bytes, 1 entry
+  0x07, 0x00,        // Function 1: 7 code bytes, 0 locals
+  0x20, 0x00,        //   getlocal 0
+  0x41, 0x01,        //   i32.const 1
+  0x6a,              //   i32.add
+  0x0b,              //   end
+]);
+
+promise_test(async testCase => {
+  const wasm_module = await WebAssembly.compile(wasm_module_bytes.buffer);
+
+  const database = await createDatabase(testCase, (database, transaction) => {
+    const store = database.createObjectStore('store');
+    store.put(wasm_module, 'key1');
+  });
+
+  const result = await new Promise((resolve, reject) => {
+    const transaction = database.transaction(['store'], 'readonly');
+    const store = transaction.objectStore('store');
+    const request = store.get('key1');
+    request.onsuccess = (event) => resolve(event.target.result);
+    request.onerror = (event) => reject(event.target.error);
+  });
+
+  database.close();
+
+  const instance = await WebAssembly.instantiate(result);
+  assert_equals(
+      instance.exports['inc'](42), 43, 'inc should increment its argument');
+}, 'WebAssembly module as an IndexedDB value');
+
+promise_test(async testCase => {
+  const wasm_module = await WebAssembly.compile(wasm_module_bytes.buffer);
+
+  const database = await createDatabase(testCase, (database, transaction) => {
+    const store = database.createObjectStore('store');
+    store.put({ module: wasm_module }, 'key1');
+  });
+
+  const result = await new Promise((resolve, reject) => {
+    const transaction = database.transaction(['store'], 'readonly');
+    const store = transaction.objectStore('store');
+    const request = store.get('key1');
+    request.onsuccess = (event) => resolve(event.target.result);
+    request.onerror = (event) => reject(event.target.error);
+  });
+
+  database.close();
+
+  const instance = await WebAssembly.instantiate(result.module);
+  assert_equals(
+      instance.exports['inc'](42), 43, 'inc should increment its argument');
+}, 'WebAssembly module in a JavaScript object IndexedDB value');
+
+promise_test(async testCase => {
+  const wasm_module = await WebAssembly.compile(wasm_module_bytes.buffer);
+
+  const database = await createDatabase(testCase, (database, transaction) => {
+    const store = database.createObjectStore('store', { keyPath: 'key' });
+    store.put({ key: 'key1', module: wasm_module });
+  });
+
+  const result = await new Promise((resolve, reject) => {
+    const transaction = database.transaction(['store'], 'readonly');
+    const store = transaction.objectStore('store');
+    const request = store.get('key1');
+    request.onsuccess = (event) => resolve(event.target.result);
+    request.onerror = (event) => reject(event.target.error);
+  });
+
+  database.close();
+
+  assert_equals('key1', result.key);
+  const instance = await WebAssembly.instantiate(result.module);
+  assert_equals(
+      instance.exports['inc'](42), 43, 'inc should increment its argument');
+}, 'WebAssembly module in an IndexedDB value with an inline key');
+
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js
new file mode 100644 (file)
index 0000000..19c9fb2
--- /dev/null
@@ -0,0 +1,4 @@
+// META: timeout=long
+// META: script=../util/helpers.js
+// META: script=failures.js
+run_test(["AES-CBC"]);
index 6ba2c90..68ce262 100644 (file)
-
-PASS Bad algorithm: generateKey(AES, false, [decrypt]) 
-PASS Bad algorithm: generateKey(AES, true, [decrypt]) 
-PASS Bad algorithm: generateKey(AES, RED, [decrypt]) 
-PASS Bad algorithm: generateKey(AES, 7, [decrypt]) 
-PASS Bad algorithm: generateKey(AES, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey(AES, false, [sign]) 
-PASS Bad algorithm: generateKey(AES, true, [sign]) 
-PASS Bad algorithm: generateKey(AES, RED, [sign]) 
-PASS Bad algorithm: generateKey(AES, 7, [sign]) 
-PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey(AES, false, [deriveBits]) 
-PASS Bad algorithm: generateKey(AES, true, [deriveBits]) 
-PASS Bad algorithm: generateKey(AES, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey(AES, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey(AES, false, []) 
-PASS Bad algorithm: generateKey(AES, true, []) 
-PASS Bad algorithm: generateKey(AES, RED, []) 
-PASS Bad algorithm: generateKey(AES, 7, []) 
-PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [sign]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [sign]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [sign]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [sign]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, false, []) 
-PASS Bad algorithm: generateKey({name: AES}, true, []) 
-PASS Bad algorithm: generateKey({name: AES}, RED, []) 
-PASS Bad algorithm: generateKey({name: AES}, 7, []) 
-PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, []) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, []) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, []) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, []) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, []) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, []) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, []) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, []) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, []) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, []) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, []) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, []) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Empty usages: generateKey({length: 128, name: AES-CBC}, false, []) 
-PASS Empty usages: generateKey({length: 128, name: AES-CBC}, true, []) 
-PASS Empty usages: generateKey({length: 192, name: AES-CBC}, false, []) 
-PASS Empty usages: generateKey({length: 192, name: AES-CBC}, true, []) 
-PASS Empty usages: generateKey({length: 256, name: AES-CBC}, false, []) 
-PASS Empty usages: generateKey({length: 256, name: AES-CBC}, true, []) 
-
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x579
+      RenderBlock {PRE} at (0,0) size 784x150
+        RenderText {#text} at (0,0) size 765x150
+          text run at (0,0) width 508: "{\"error\": {\"message\": \"Traceback (most recent call last):\\n  File"
+          text run at (0,15) width 500: "\\\"/Users/bmac/code/webkit/LayoutTests/imported/w3c/web-platform-"
+          text run at (0,30) width 742: "tests/tools/wptserve/wptserve/handlers.py\\\", line 254, in __call__\\n    rv = self.func(request,"
+          text run at (0,45) width 640: "response)\\n  File \\\"/Users/bmac/code/webkit/LayoutTests/imported/w3c/web-platform-"
+          text run at (0,60) width 531: "tests/tools/serve/serve.py\\\", line 58, in handle_request\\n    meta ="
+          text run at (0,75) width 352: "\\\"\\\\n\\\".join(self._get_meta(request))\\n  File"
+          text run at (0,90) width 765: "\\\"/Users/bmac/code/webkit/LayoutTests/imported/w3c/web-platform-tests/tools/serve/serve.py\\\", line"
+          text run at (0,105) width 765: "93, in _get_meta\\n    with open(path, \\\"rb\\\") as f:\\nIOError: [Errno 2] No such file or directory:"
+          text run at (0,120) width 492: "'/Users/bmac/code/webkit/LayoutTests/imported/w3c/web-platform-"
+          text run at (0,135) width 640: "tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.js'\\n\", \"code\": 500}}"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.js b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.worker.js
deleted file mode 100644 (file)
index 7bb3e7f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-// META: timeout=long
-importScripts("/resources/testharness.js");
-importScripts("../util/helpers.js");
-importScripts("failures.js");
-run_test(["AES-CBC"]);
-done();
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js
new file mode 100644 (file)
index 0000000..2f8a0b3
--- /dev/null
@@ -0,0 +1,4 @@
+// META: timeout=long
+// META: script=../util/helpers.js
+// META: script=failures.js
+run_test(["AES-CTR"]);
index 9b38fb3..2578205 100644 (file)
-
-PASS Bad algorithm: generateKey(AES, false, [decrypt]) 
-PASS Bad algorithm: generateKey(AES, true, [decrypt]) 
-PASS Bad algorithm: generateKey(AES, RED, [decrypt]) 
-PASS Bad algorithm: generateKey(AES, 7, [decrypt]) 
-PASS Bad algorithm: generateKey(AES, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey(AES, false, [sign]) 
-PASS Bad algorithm: generateKey(AES, true, [sign]) 
-PASS Bad algorithm: generateKey(AES, RED, [sign]) 
-PASS Bad algorithm: generateKey(AES, 7, [sign]) 
-PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey(AES, false, [deriveBits]) 
-PASS Bad algorithm: generateKey(AES, true, [deriveBits]) 
-PASS Bad algorithm: generateKey(AES, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey(AES, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey(AES, false, []) 
-PASS Bad algorithm: generateKey(AES, true, []) 
-PASS Bad algorithm: generateKey(AES, RED, []) 
-PASS Bad algorithm: generateKey(AES, 7, []) 
-PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [sign]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [sign]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [sign]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [sign]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, false, []) 
-PASS Bad algorithm: generateKey({name: AES}, true, []) 
-PASS Bad algorithm: generateKey({name: AES}, RED, []) 
-PASS Bad algorithm: generateKey({name: AES}, 7, []) 
-PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, deriveBits]) 
-PASS Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, []) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, []) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, []) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, []) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, encrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, decrypt]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey]) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, []) 
-PASS Bad algorithm property: generateKey({length: 129, name: AES-CTR}