Backed out changeset e9407b04cde1 (bug 1433144) for build bustage on test_orphan_file_patterns on a CLOSED TREE

--HG--
rename : testing/web-platform/tests/interfaces/WebCryptoAPI.idl => testing/web-platform/tests/WebCryptoAPI/WebCryptoAPI.idl
rename : testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js => testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js => testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js => testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/hkdf.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js => testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/digest/digest.https.worker.js => testing/web-platform/tests/WebCryptoAPI/digest/digest.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js => testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js => testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js => testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js => testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/rsa.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/import_export/ec_importKey.https.worker.js => testing/web-platform/tests/WebCryptoAPI/import_export/ec_importKey.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/import_export/rsa_importKey.https.worker.js => testing/web-platform/tests/WebCryptoAPI/import_export/rsa_importKey.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/import_export/symmetric_importKey.https.worker.js => testing/web-platform/tests/WebCryptoAPI/import_export/symmetric_importKey.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/sign_verify/ecdsa.https.worker.js => testing/web-platform/tests/WebCryptoAPI/sign_verify/ecdsa.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/sign_verify/hmac.https.worker.js => testing/web-platform/tests/WebCryptoAPI/sign_verify/hmac.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js => testing/web-platform/tests/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/sign_verify/rsa_pss.https.worker.js => testing/web-platform/tests/WebCryptoAPI/sign_verify/rsa_pss.worker.js
rename : testing/web-platform/tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js => testing/web-platform/tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js
rename : testing/web-platform/tests/xhr/FormData-append.html => testing/web-platform/tests/XMLHttpRequest/FormData-append.html
rename : testing/web-platform/tests/xhr/OWNERS => testing/web-platform/tests/XMLHttpRequest/OWNERS
rename : testing/web-platform/tests/xhr/README.md => testing/web-platform/tests/XMLHttpRequest/README.md
rename : testing/web-platform/tests/xhr/XMLHttpRequest-withCredentials.any.js => testing/web-platform/tests/XMLHttpRequest/XMLHttpRequest-withCredentials.any.js
rename : testing/web-platform/tests/xhr/abort-after-receive.htm => testing/web-platform/tests/XMLHttpRequest/abort-after-receive.htm
rename : testing/web-platform/tests/xhr/abort-after-send.htm => testing/web-platform/tests/XMLHttpRequest/abort-after-send.htm
rename : testing/web-platform/tests/xhr/abort-after-stop.htm => testing/web-platform/tests/XMLHttpRequest/abort-after-stop.htm
rename : testing/web-platform/tests/xhr/abort-after-timeout.htm => testing/web-platform/tests/XMLHttpRequest/abort-after-timeout.htm
rename : testing/web-platform/tests/xhr/abort-during-done.htm => testing/web-platform/tests/XMLHttpRequest/abort-during-done.htm
rename : testing/web-platform/tests/xhr/abort-during-headers-received.htm => testing/web-platform/tests/XMLHttpRequest/abort-during-headers-received.htm
rename : testing/web-platform/tests/xhr/abort-during-loading.htm => testing/web-platform/tests/XMLHttpRequest/abort-during-loading.htm
rename : testing/web-platform/tests/xhr/abort-during-open.htm => testing/web-platform/tests/XMLHttpRequest/abort-during-open.htm
rename : testing/web-platform/tests/xhr/abort-during-open.js => testing/web-platform/tests/XMLHttpRequest/abort-during-open.js
rename : testing/web-platform/tests/xhr/abort-during-open.worker.js => testing/web-platform/tests/XMLHttpRequest/abort-during-open.worker.js
rename : testing/web-platform/tests/xhr/abort-during-unsent.htm => testing/web-platform/tests/XMLHttpRequest/abort-during-unsent.htm
rename : testing/web-platform/tests/xhr/abort-during-upload.htm => testing/web-platform/tests/XMLHttpRequest/abort-during-upload.htm
rename : testing/web-platform/tests/xhr/abort-event-abort.htm => testing/web-platform/tests/XMLHttpRequest/abort-event-abort.htm
rename : testing/web-platform/tests/xhr/abort-event-listeners.htm => testing/web-platform/tests/XMLHttpRequest/abort-event-listeners.htm
rename : testing/web-platform/tests/xhr/abort-event-loadend.htm => testing/web-platform/tests/XMLHttpRequest/abort-event-loadend.htm
rename : testing/web-platform/tests/xhr/abort-event-order.htm => testing/web-platform/tests/XMLHttpRequest/abort-event-order.htm
rename : testing/web-platform/tests/xhr/abort-upload-event-abort.htm => testing/web-platform/tests/XMLHttpRequest/abort-upload-event-abort.htm
rename : testing/web-platform/tests/xhr/abort-upload-event-loadend.htm => testing/web-platform/tests/XMLHttpRequest/abort-upload-event-loadend.htm
rename : testing/web-platform/tests/xhr/anonymous-mode-unsupported.htm => testing/web-platform/tests/XMLHttpRequest/anonymous-mode-unsupported.htm
rename : testing/web-platform/tests/xhr/data-uri.htm => testing/web-platform/tests/XMLHttpRequest/data-uri.htm
rename : testing/web-platform/tests/xhr/event-abort.htm => testing/web-platform/tests/XMLHttpRequest/event-abort.htm
rename : testing/web-platform/tests/xhr/event-error-order.sub.html => testing/web-platform/tests/XMLHttpRequest/event-error-order.sub.html
rename : testing/web-platform/tests/xhr/event-error.sub.html => testing/web-platform/tests/XMLHttpRequest/event-error.sub.html
rename : testing/web-platform/tests/xhr/event-load.htm => testing/web-platform/tests/XMLHttpRequest/event-load.htm
rename : testing/web-platform/tests/xhr/event-loadend.htm => testing/web-platform/tests/XMLHttpRequest/event-loadend.htm
rename : testing/web-platform/tests/xhr/event-loadstart-upload.htm => testing/web-platform/tests/XMLHttpRequest/event-loadstart-upload.htm
rename : testing/web-platform/tests/xhr/event-loadstart.htm => testing/web-platform/tests/XMLHttpRequest/event-loadstart.htm
rename : testing/web-platform/tests/xhr/event-progress.htm => testing/web-platform/tests/XMLHttpRequest/event-progress.htm
rename : testing/web-platform/tests/xhr/event-readystate-sync-open.htm => testing/web-platform/tests/XMLHttpRequest/event-readystate-sync-open.htm
rename : testing/web-platform/tests/xhr/event-readystatechange-loaded.htm => testing/web-platform/tests/XMLHttpRequest/event-readystatechange-loaded.htm
rename : testing/web-platform/tests/xhr/event-timeout-order.htm => testing/web-platform/tests/XMLHttpRequest/event-timeout-order.htm
rename : testing/web-platform/tests/xhr/event-timeout.htm => testing/web-platform/tests/XMLHttpRequest/event-timeout.htm
rename : testing/web-platform/tests/xhr/event-upload-progress.htm => testing/web-platform/tests/XMLHttpRequest/event-upload-progress.htm
rename : testing/web-platform/tests/xhr/firing-events-http-content-length.html => testing/web-platform/tests/XMLHttpRequest/firing-events-http-content-length.html
rename : testing/web-platform/tests/xhr/firing-events-http-no-content-length.html => testing/web-platform/tests/XMLHttpRequest/firing-events-http-no-content-length.html
rename : testing/web-platform/tests/xhr/folder.txt => testing/web-platform/tests/XMLHttpRequest/folder.txt
rename : testing/web-platform/tests/xhr/formdata-blob.htm => testing/web-platform/tests/XMLHttpRequest/formdata-blob.htm
rename : testing/web-platform/tests/xhr/formdata-delete.htm => testing/web-platform/tests/XMLHttpRequest/formdata-delete.htm
rename : testing/web-platform/tests/xhr/formdata-foreach.html => testing/web-platform/tests/XMLHttpRequest/formdata-foreach.html
rename : testing/web-platform/tests/xhr/formdata-get.htm => testing/web-platform/tests/XMLHttpRequest/formdata-get.htm
rename : testing/web-platform/tests/xhr/formdata-has.htm => testing/web-platform/tests/XMLHttpRequest/formdata-has.htm
rename : testing/web-platform/tests/xhr/formdata-set.htm => testing/web-platform/tests/XMLHttpRequest/formdata-set.htm
rename : testing/web-platform/tests/xhr/formdata.htm => testing/web-platform/tests/XMLHttpRequest/formdata.htm
rename : testing/web-platform/tests/xhr/getallresponseheaders-cookies.htm => testing/web-platform/tests/XMLHttpRequest/getallresponseheaders-cookies.htm
rename : testing/web-platform/tests/xhr/getallresponseheaders-status.htm => testing/web-platform/tests/XMLHttpRequest/getallresponseheaders-status.htm
rename : testing/web-platform/tests/xhr/getallresponseheaders.htm => testing/web-platform/tests/XMLHttpRequest/getallresponseheaders.htm
rename : testing/web-platform/tests/xhr/getresponseheader-case-insensitive.htm => testing/web-platform/tests/XMLHttpRequest/getresponseheader-case-insensitive.htm
rename : testing/web-platform/tests/xhr/getresponseheader-chunked-trailer.htm => testing/web-platform/tests/XMLHttpRequest/getresponseheader-chunked-trailer.htm
rename : testing/web-platform/tests/xhr/getresponseheader-cookies-and-more.htm => testing/web-platform/tests/XMLHttpRequest/getresponseheader-cookies-and-more.htm
rename : testing/web-platform/tests/xhr/getresponseheader-error-state.htm => testing/web-platform/tests/XMLHttpRequest/getresponseheader-error-state.htm
rename : testing/web-platform/tests/xhr/getresponseheader-server-date.htm => testing/web-platform/tests/XMLHttpRequest/getresponseheader-server-date.htm
rename : testing/web-platform/tests/xhr/getresponseheader-special-characters.htm => testing/web-platform/tests/XMLHttpRequest/getresponseheader-special-characters.htm
rename : testing/web-platform/tests/xhr/getresponseheader-unsent-opened-state.htm => testing/web-platform/tests/XMLHttpRequest/getresponseheader-unsent-opened-state.htm
rename : testing/web-platform/tests/xhr/headers-normalize-response.htm => testing/web-platform/tests/XMLHttpRequest/headers-normalize-response.htm
rename : testing/web-platform/tests/xhr/historical.html => testing/web-platform/tests/XMLHttpRequest/historical.html
rename : testing/web-platform/tests/xhr/loadstart-and-state.html => testing/web-platform/tests/XMLHttpRequest/loadstart-and-state.html
rename : testing/web-platform/tests/xhr/no-utf16-json.htm => testing/web-platform/tests/XMLHttpRequest/no-utf16-json.htm
rename : testing/web-platform/tests/xhr/open-after-abort.htm => testing/web-platform/tests/XMLHttpRequest/open-after-abort.htm
rename : testing/web-platform/tests/xhr/open-after-setrequestheader.htm => testing/web-platform/tests/XMLHttpRequest/open-after-setrequestheader.htm
rename : testing/web-platform/tests/xhr/open-during-abort-event.htm => testing/web-platform/tests/XMLHttpRequest/open-during-abort-event.htm
rename : testing/web-platform/tests/xhr/open-during-abort-processing.htm => testing/web-platform/tests/XMLHttpRequest/open-during-abort-processing.htm
rename : testing/web-platform/tests/xhr/open-during-abort.htm => testing/web-platform/tests/XMLHttpRequest/open-during-abort.htm
rename : testing/web-platform/tests/xhr/open-method-bogus.htm => testing/web-platform/tests/XMLHttpRequest/open-method-bogus.htm
rename : testing/web-platform/tests/xhr/open-method-case-insensitive.htm => testing/web-platform/tests/XMLHttpRequest/open-method-case-insensitive.htm
rename : testing/web-platform/tests/xhr/open-method-case-sensitive.htm => testing/web-platform/tests/XMLHttpRequest/open-method-case-sensitive.htm
rename : testing/web-platform/tests/xhr/open-method-insecure.htm => testing/web-platform/tests/XMLHttpRequest/open-method-insecure.htm
rename : testing/web-platform/tests/xhr/open-method-responsetype-set-sync.htm => testing/web-platform/tests/XMLHttpRequest/open-method-responsetype-set-sync.htm
rename : testing/web-platform/tests/xhr/open-open-send.htm => testing/web-platform/tests/XMLHttpRequest/open-open-send.htm
rename : testing/web-platform/tests/xhr/open-open-sync-send.htm => testing/web-platform/tests/XMLHttpRequest/open-open-sync-send.htm
rename : testing/web-platform/tests/xhr/open-referer.htm => testing/web-platform/tests/XMLHttpRequest/open-referer.htm
rename : testing/web-platform/tests/xhr/open-send-during-abort.htm => testing/web-platform/tests/XMLHttpRequest/open-send-during-abort.htm
rename : testing/web-platform/tests/xhr/open-send-open.htm => testing/web-platform/tests/XMLHttpRequest/open-send-open.htm
rename : testing/web-platform/tests/xhr/open-sync-open-send.htm => testing/web-platform/tests/XMLHttpRequest/open-sync-open-send.htm
rename : testing/web-platform/tests/xhr/open-url-about-blank-window.htm => testing/web-platform/tests/XMLHttpRequest/open-url-about-blank-window.htm
rename : testing/web-platform/tests/xhr/open-url-base-inserted-after-open.htm => testing/web-platform/tests/XMLHttpRequest/open-url-base-inserted-after-open.htm
rename : testing/web-platform/tests/xhr/open-url-base-inserted.htm => testing/web-platform/tests/XMLHttpRequest/open-url-base-inserted.htm
rename : testing/web-platform/tests/xhr/open-url-base.htm => testing/web-platform/tests/XMLHttpRequest/open-url-base.htm
rename : testing/web-platform/tests/xhr/open-url-encoding.htm => testing/web-platform/tests/XMLHttpRequest/open-url-encoding.htm
rename : testing/web-platform/tests/xhr/open-url-javascript-window-2.htm => testing/web-platform/tests/XMLHttpRequest/open-url-javascript-window-2.htm
rename : testing/web-platform/tests/xhr/open-url-javascript-window.htm => testing/web-platform/tests/XMLHttpRequest/open-url-javascript-window.htm
rename : testing/web-platform/tests/xhr/open-url-multi-window-2.htm => testing/web-platform/tests/XMLHttpRequest/open-url-multi-window-2.htm
rename : testing/web-platform/tests/xhr/open-url-multi-window-3.htm => testing/web-platform/tests/XMLHttpRequest/open-url-multi-window-3.htm
rename : testing/web-platform/tests/xhr/open-url-multi-window-4.htm => testing/web-platform/tests/XMLHttpRequest/open-url-multi-window-4.htm
rename : testing/web-platform/tests/xhr/open-url-multi-window-5.htm => testing/web-platform/tests/XMLHttpRequest/open-url-multi-window-5.htm
rename : testing/web-platform/tests/xhr/open-url-multi-window-6.htm => testing/web-platform/tests/XMLHttpRequest/open-url-multi-window-6.htm
rename : testing/web-platform/tests/xhr/open-url-multi-window.htm => testing/web-platform/tests/XMLHttpRequest/open-url-multi-window.htm
rename : testing/web-platform/tests/xhr/open-url-redirected-worker-origin.htm => testing/web-platform/tests/XMLHttpRequest/open-url-redirected-worker-origin.htm
rename : testing/web-platform/tests/xhr/open-url-worker-origin.htm => testing/web-platform/tests/XMLHttpRequest/open-url-worker-origin.htm
rename : testing/web-platform/tests/xhr/open-url-worker-simple.htm => testing/web-platform/tests/XMLHttpRequest/open-url-worker-simple.htm
rename : testing/web-platform/tests/xhr/open-user-password-non-same-origin.htm => testing/web-platform/tests/XMLHttpRequest/open-user-password-non-same-origin.htm
rename : testing/web-platform/tests/xhr/overridemimetype-blob.html => testing/web-platform/tests/XMLHttpRequest/overridemimetype-blob.html
rename : testing/web-platform/tests/xhr/overridemimetype-done-state.htm => testing/web-platform/tests/XMLHttpRequest/overridemimetype-done-state.htm
rename : testing/web-platform/tests/xhr/overridemimetype-headers-received-state-force-shiftjis.htm => testing/web-platform/tests/XMLHttpRequest/overridemimetype-headers-received-state-force-shiftjis.htm
rename : testing/web-platform/tests/xhr/overridemimetype-invalid-mime-type.htm => testing/web-platform/tests/XMLHttpRequest/overridemimetype-invalid-mime-type.htm
rename : testing/web-platform/tests/xhr/overridemimetype-loading-state.htm => testing/web-platform/tests/XMLHttpRequest/overridemimetype-loading-state.htm
rename : testing/web-platform/tests/xhr/overridemimetype-open-state-force-utf-8.htm => testing/web-platform/tests/XMLHttpRequest/overridemimetype-open-state-force-utf-8.htm
rename : testing/web-platform/tests/xhr/overridemimetype-open-state-force-xml.htm => testing/web-platform/tests/XMLHttpRequest/overridemimetype-open-state-force-xml.htm
rename : testing/web-platform/tests/xhr/overridemimetype-unsent-state-force-shiftjis.htm => testing/web-platform/tests/XMLHttpRequest/overridemimetype-unsent-state-force-shiftjis.htm
rename : testing/web-platform/tests/xhr/preserve-ua-header-on-redirect.htm => testing/web-platform/tests/XMLHttpRequest/preserve-ua-header-on-redirect.htm
rename : testing/web-platform/tests/xhr/progress-events-response-data-gzip.htm => testing/web-platform/tests/XMLHttpRequest/progress-events-response-data-gzip.htm
rename : testing/web-platform/tests/xhr/progressevent-constructor.html => testing/web-platform/tests/XMLHttpRequest/progressevent-constructor.html
rename : testing/web-platform/tests/xhr/progressevent-interface.html => testing/web-platform/tests/XMLHttpRequest/progressevent-interface.html
rename : testing/web-platform/tests/xhr/resources/accept-language.py => testing/web-platform/tests/XMLHttpRequest/resources/accept-language.py
rename : testing/web-platform/tests/xhr/resources/accept.py => testing/web-platform/tests/XMLHttpRequest/resources/accept.py
rename : testing/web-platform/tests/xhr/resources/access-control-allow-lists.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-lists.py
rename : testing/web-platform/tests/xhr/resources/access-control-allow-with-body.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-with-body.py
rename : testing/web-platform/tests/xhr/resources/access-control-auth-basic.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-auth-basic.py
rename : testing/web-platform/tests/xhr/resources/access-control-basic-allow-no-credentials.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-allow-no-credentials.py
rename : testing/web-platform/tests/xhr/resources/access-control-basic-allow-star.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-allow-star.py
rename : testing/web-platform/tests/xhr/resources/access-control-basic-allow.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-allow.py
rename : testing/web-platform/tests/xhr/resources/access-control-basic-cors-safelisted-request-headers.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py
rename : testing/web-platform/tests/xhr/resources/access-control-basic-denied.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-denied.py
rename : testing/web-platform/tests/xhr/resources/access-control-basic-options-not-supported.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-options-not-supported.py
rename : testing/web-platform/tests/xhr/resources/access-control-basic-preflight-cache-invalidation.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py
rename : testing/web-platform/tests/xhr/resources/access-control-basic-preflight-cache-timeout.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-preflight-cache-timeout.py
rename : testing/web-platform/tests/xhr/resources/access-control-basic-preflight-cache.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-preflight-cache.py
rename : testing/web-platform/tests/xhr/resources/access-control-basic-put-allow.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-put-allow.py
rename : testing/web-platform/tests/xhr/resources/access-control-basic-whitelist-response-headers.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py
rename : testing/web-platform/tests/xhr/resources/access-control-cookie.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-cookie.py
rename : testing/web-platform/tests/xhr/resources/access-control-origin-header.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-origin-header.py
rename : testing/web-platform/tests/xhr/resources/access-control-preflight-denied.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-denied.py
rename : testing/web-platform/tests/xhr/resources/access-control-preflight-request-header-lowercase.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-header-lowercase.py
rename : testing/web-platform/tests/xhr/resources/access-control-preflight-request-header-sorted.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py
rename : testing/web-platform/tests/xhr/resources/access-control-preflight-request-headers-origin.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py
rename : testing/web-platform/tests/xhr/resources/access-control-preflight-request-invalid-status.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-invalid-status.py
rename : testing/web-platform/tests/xhr/resources/access-control-preflight-request-must-not-contain-cookie.py => testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py
rename : testing/web-platform/tests/xhr/resources/access-control-sandboxed-iframe.html => testing/web-platform/tests/XMLHttpRequest/resources/access-control-sandboxed-iframe.html
rename : testing/web-platform/tests/xhr/resources/auth1/auth.py => testing/web-platform/tests/XMLHttpRequest/resources/auth1/auth.py
rename : testing/web-platform/tests/xhr/resources/auth2/auth.py => testing/web-platform/tests/XMLHttpRequest/resources/auth2/auth.py
rename : testing/web-platform/tests/xhr/resources/auth2/corsenabled.py => testing/web-platform/tests/XMLHttpRequest/resources/auth2/corsenabled.py
rename : testing/web-platform/tests/xhr/resources/auth3/auth.py => testing/web-platform/tests/XMLHttpRequest/resources/auth3/auth.py
rename : testing/web-platform/tests/xhr/resources/auth4/auth.py => testing/web-platform/tests/XMLHttpRequest/resources/auth4/auth.py
rename : testing/web-platform/tests/xhr/resources/auth5/auth.py => testing/web-platform/tests/XMLHttpRequest/resources/auth5/auth.py
rename : testing/web-platform/tests/xhr/resources/auth6/auth.py => testing/web-platform/tests/XMLHttpRequest/resources/auth6/auth.py
rename : testing/web-platform/tests/xhr/resources/auth7/corsenabled.py => testing/web-platform/tests/XMLHttpRequest/resources/auth7/corsenabled.py
rename : testing/web-platform/tests/xhr/resources/auth8/corsenabled-no-authorize.py => testing/web-platform/tests/XMLHttpRequest/resources/auth8/corsenabled-no-authorize.py
rename : testing/web-platform/tests/xhr/resources/auth9/auth.py => testing/web-platform/tests/XMLHttpRequest/resources/auth9/auth.py
rename : testing/web-platform/tests/xhr/resources/authentication.py => testing/web-platform/tests/XMLHttpRequest/resources/authentication.py
rename : testing/web-platform/tests/xhr/resources/base.xml => testing/web-platform/tests/XMLHttpRequest/resources/base.xml
rename : testing/web-platform/tests/xhr/resources/chunked.py => testing/web-platform/tests/XMLHttpRequest/resources/chunked.py
rename : testing/web-platform/tests/xhr/resources/conditional.py => testing/web-platform/tests/XMLHttpRequest/resources/conditional.py
rename : testing/web-platform/tests/xhr/resources/content.py => testing/web-platform/tests/XMLHttpRequest/resources/content.py
rename : testing/web-platform/tests/xhr/resources/corsenabled.py => testing/web-platform/tests/XMLHttpRequest/resources/corsenabled.py
rename : testing/web-platform/tests/xhr/resources/delay.py => testing/web-platform/tests/XMLHttpRequest/resources/delay.py
rename : testing/web-platform/tests/xhr/resources/echo-headers.py => testing/web-platform/tests/XMLHttpRequest/resources/echo-headers.py
rename : testing/web-platform/tests/xhr/resources/echo-method.py => testing/web-platform/tests/XMLHttpRequest/resources/echo-method.py
rename : testing/web-platform/tests/xhr/resources/empty-div-utf8-html.py => testing/web-platform/tests/XMLHttpRequest/resources/empty-div-utf8-html.py
rename : testing/web-platform/tests/xhr/resources/folder.txt => testing/web-platform/tests/XMLHttpRequest/resources/folder.txt
rename : testing/web-platform/tests/xhr/resources/form.py => testing/web-platform/tests/XMLHttpRequest/resources/form.py
rename : testing/web-platform/tests/xhr/resources/gzip.py => testing/web-platform/tests/XMLHttpRequest/resources/gzip.py
rename : testing/web-platform/tests/xhr/resources/header-content-length.asis => testing/web-platform/tests/XMLHttpRequest/resources/header-content-length.asis
rename : testing/web-platform/tests/xhr/resources/headers-basic.asis => testing/web-platform/tests/XMLHttpRequest/resources/headers-basic.asis
rename : testing/web-platform/tests/xhr/resources/headers.asis => testing/web-platform/tests/XMLHttpRequest/resources/headers.asis
rename : testing/web-platform/tests/xhr/resources/headers.py => testing/web-platform/tests/XMLHttpRequest/resources/headers.py
rename : testing/web-platform/tests/xhr/resources/image.gif => testing/web-platform/tests/XMLHttpRequest/resources/image.gif
rename : testing/web-platform/tests/xhr/resources/img-utf8-html.py => testing/web-platform/tests/XMLHttpRequest/resources/img-utf8-html.py
rename : testing/web-platform/tests/xhr/resources/img.jpg => testing/web-platform/tests/XMLHttpRequest/resources/img.jpg
rename : testing/web-platform/tests/xhr/resources/infinite-redirects.py => testing/web-platform/tests/XMLHttpRequest/resources/infinite-redirects.py
rename : testing/web-platform/tests/xhr/resources/init.htm => testing/web-platform/tests/XMLHttpRequest/resources/init.htm
rename : testing/web-platform/tests/xhr/resources/inspect-headers.py => testing/web-platform/tests/XMLHttpRequest/resources/inspect-headers.py
rename : testing/web-platform/tests/xhr/resources/invalid-utf8-html.py => testing/web-platform/tests/XMLHttpRequest/resources/invalid-utf8-html.py
rename : testing/web-platform/tests/xhr/resources/last-modified.py => testing/web-platform/tests/XMLHttpRequest/resources/last-modified.py
rename : testing/web-platform/tests/xhr/resources/no-custom-header-on-preflight.py => testing/web-platform/tests/XMLHttpRequest/resources/no-custom-header-on-preflight.py
rename : testing/web-platform/tests/xhr/resources/nocors/folder.txt => testing/web-platform/tests/XMLHttpRequest/resources/nocors/folder.txt
rename : testing/web-platform/tests/xhr/resources/parse-headers.py => testing/web-platform/tests/XMLHttpRequest/resources/parse-headers.py
rename : testing/web-platform/tests/xhr/resources/pass.txt => testing/web-platform/tests/XMLHttpRequest/resources/pass.txt
rename : testing/web-platform/tests/xhr/resources/redirect-cors.py => testing/web-platform/tests/XMLHttpRequest/resources/redirect-cors.py
rename : testing/web-platform/tests/xhr/resources/redirect.py => testing/web-platform/tests/XMLHttpRequest/resources/redirect.py
rename : testing/web-platform/tests/xhr/resources/requri.py => testing/web-platform/tests/XMLHttpRequest/resources/requri.py
rename : testing/web-platform/tests/xhr/resources/reset-token.py => testing/web-platform/tests/XMLHttpRequest/resources/reset-token.py
rename : testing/web-platform/tests/xhr/resources/responseType-document-in-worker.js => testing/web-platform/tests/XMLHttpRequest/resources/responseType-document-in-worker.js
rename : testing/web-platform/tests/xhr/resources/responseXML-unavailable-in-worker.js => testing/web-platform/tests/XMLHttpRequest/resources/responseXML-unavailable-in-worker.js
rename : testing/web-platform/tests/xhr/resources/send-after-setting-document-domain-window-1.htm => testing/web-platform/tests/XMLHttpRequest/resources/send-after-setting-document-domain-window-1.htm
rename : testing/web-platform/tests/xhr/resources/send-after-setting-document-domain-window-2.htm => testing/web-platform/tests/XMLHttpRequest/resources/send-after-setting-document-domain-window-2.htm
rename : testing/web-platform/tests/xhr/resources/send-after-setting-document-domain-window-helper.js => testing/web-platform/tests/XMLHttpRequest/resources/send-after-setting-document-domain-window-helper.js
rename : testing/web-platform/tests/xhr/resources/shift-jis-html.py => testing/web-platform/tests/XMLHttpRequest/resources/shift-jis-html.py
rename : testing/web-platform/tests/xhr/resources/status.py => testing/web-platform/tests/XMLHttpRequest/resources/status.py
rename : testing/web-platform/tests/xhr/resources/trickle.py => testing/web-platform/tests/XMLHttpRequest/resources/trickle.py
rename : testing/web-platform/tests/xhr/resources/upload.py => testing/web-platform/tests/XMLHttpRequest/resources/upload.py
rename : testing/web-platform/tests/xhr/resources/utf16-bom.json => testing/web-platform/tests/XMLHttpRequest/resources/utf16-bom.json
rename : testing/web-platform/tests/xhr/resources/utf16.txt => testing/web-platform/tests/XMLHttpRequest/resources/utf16.txt
rename : testing/web-platform/tests/xhr/resources/well-formed.xml => testing/web-platform/tests/XMLHttpRequest/resources/well-formed.xml
rename : testing/web-platform/tests/xhr/resources/win-1252-html.py => testing/web-platform/tests/XMLHttpRequest/resources/win-1252-html.py
rename : testing/web-platform/tests/xhr/resources/win-1252-xml.py => testing/web-platform/tests/XMLHttpRequest/resources/win-1252-xml.py
rename : testing/web-platform/tests/xhr/resources/workerxhr-origin-referrer.js => testing/web-platform/tests/XMLHttpRequest/resources/workerxhr-origin-referrer.js
rename : testing/web-platform/tests/xhr/resources/workerxhr-simple.js => testing/web-platform/tests/XMLHttpRequest/resources/workerxhr-simple.js
rename : testing/web-platform/tests/xhr/resources/xmlhttprequest-event-order.js => testing/web-platform/tests/XMLHttpRequest/resources/xmlhttprequest-event-order.js
rename : testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-aborted.js => testing/web-platform/tests/XMLHttpRequest/resources/xmlhttprequest-timeout-aborted.js
rename : testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-abortedonmain.js => testing/web-platform/tests/XMLHttpRequest/resources/xmlhttprequest-timeout-abortedonmain.js
rename : testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-overrides.js => testing/web-platform/tests/XMLHttpRequest/resources/xmlhttprequest-timeout-overrides.js
rename : testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-overridesexpires.js => testing/web-platform/tests/XMLHttpRequest/resources/xmlhttprequest-timeout-overridesexpires.js
rename : testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-runner.js => testing/web-platform/tests/XMLHttpRequest/resources/xmlhttprequest-timeout-runner.js
rename : testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-simple.js => testing/web-platform/tests/XMLHttpRequest/resources/xmlhttprequest-timeout-simple.js
rename : testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-synconmain.js => testing/web-platform/tests/XMLHttpRequest/resources/xmlhttprequest-timeout-synconmain.js
rename : testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-synconworker.js => testing/web-platform/tests/XMLHttpRequest/resources/xmlhttprequest-timeout-synconworker.js
rename : testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-twice.js => testing/web-platform/tests/XMLHttpRequest/resources/xmlhttprequest-timeout-twice.js
rename : testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout.js => testing/web-platform/tests/XMLHttpRequest/resources/xmlhttprequest-timeout.js
rename : testing/web-platform/tests/xhr/resources/zlib.py => testing/web-platform/tests/XMLHttpRequest/resources/zlib.py
rename : testing/web-platform/tests/xhr/response-data-arraybuffer.htm => testing/web-platform/tests/XMLHttpRequest/response-data-arraybuffer.htm
rename : testing/web-platform/tests/xhr/response-data-blob.htm => testing/web-platform/tests/XMLHttpRequest/response-data-blob.htm
rename : testing/web-platform/tests/xhr/response-data-deflate.htm => testing/web-platform/tests/XMLHttpRequest/response-data-deflate.htm
rename : testing/web-platform/tests/xhr/response-data-gzip.htm => testing/web-platform/tests/XMLHttpRequest/response-data-gzip.htm
rename : testing/web-platform/tests/xhr/response-data-progress.htm => testing/web-platform/tests/XMLHttpRequest/response-data-progress.htm
rename : testing/web-platform/tests/xhr/response-invalid-responsetype.htm => testing/web-platform/tests/XMLHttpRequest/response-invalid-responsetype.htm
rename : testing/web-platform/tests/xhr/response-json.htm => testing/web-platform/tests/XMLHttpRequest/response-json.htm
rename : testing/web-platform/tests/xhr/response-method.htm => testing/web-platform/tests/XMLHttpRequest/response-method.htm
rename : testing/web-platform/tests/xhr/responseText-status.html => testing/web-platform/tests/XMLHttpRequest/responseText-status.html
rename : testing/web-platform/tests/xhr/responseType-document-in-worker.html => testing/web-platform/tests/XMLHttpRequest/responseType-document-in-worker.html
rename : testing/web-platform/tests/xhr/responseXML-unavailable-in-worker.html => testing/web-platform/tests/XMLHttpRequest/responseXML-unavailable-in-worker.html
rename : testing/web-platform/tests/xhr/responsedocument-decoding.htm => testing/web-platform/tests/XMLHttpRequest/responsedocument-decoding.htm
rename : testing/web-platform/tests/xhr/responsetext-decoding.htm => testing/web-platform/tests/XMLHttpRequest/responsetext-decoding.htm
rename : testing/web-platform/tests/xhr/responsetype.html => testing/web-platform/tests/XMLHttpRequest/responsetype.html
rename : testing/web-platform/tests/xhr/responseurl.html => testing/web-platform/tests/XMLHttpRequest/responseurl.html
rename : testing/web-platform/tests/xhr/responsexml-basic.htm => testing/web-platform/tests/XMLHttpRequest/responsexml-basic.htm
rename : testing/web-platform/tests/xhr/responsexml-document-properties.htm => testing/web-platform/tests/XMLHttpRequest/responsexml-document-properties.htm
rename : testing/web-platform/tests/xhr/responsexml-get-twice.htm => testing/web-platform/tests/XMLHttpRequest/responsexml-get-twice.htm
rename : testing/web-platform/tests/xhr/responsexml-media-type.htm => testing/web-platform/tests/XMLHttpRequest/responsexml-media-type.htm
rename : testing/web-platform/tests/xhr/responsexml-non-document-types.htm => testing/web-platform/tests/XMLHttpRequest/responsexml-non-document-types.htm
rename : testing/web-platform/tests/xhr/responsexml-non-well-formed.htm => testing/web-platform/tests/XMLHttpRequest/responsexml-non-well-formed.htm
rename : testing/web-platform/tests/xhr/send-accept-language.htm => testing/web-platform/tests/XMLHttpRequest/send-accept-language.htm
rename : testing/web-platform/tests/xhr/send-accept.htm => testing/web-platform/tests/XMLHttpRequest/send-accept.htm
rename : testing/web-platform/tests/xhr/send-authentication-basic-cors-not-enabled.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-basic-cors-not-enabled.htm
rename : testing/web-platform/tests/xhr/send-authentication-basic-cors.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-basic-cors.htm
rename : testing/web-platform/tests/xhr/send-authentication-basic-repeat-no-args.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-basic-repeat-no-args.htm
rename : testing/web-platform/tests/xhr/send-authentication-basic-setrequestheader-and-arguments.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-basic-setrequestheader-and-arguments.htm
rename : testing/web-platform/tests/xhr/send-authentication-basic-setrequestheader-existing-session.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-basic-setrequestheader-existing-session.htm
rename : testing/web-platform/tests/xhr/send-authentication-basic-setrequestheader.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-basic-setrequestheader.htm
rename : testing/web-platform/tests/xhr/send-authentication-basic.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-basic.htm
rename : testing/web-platform/tests/xhr/send-authentication-competing-names-passwords.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-competing-names-passwords.htm
rename : testing/web-platform/tests/xhr/send-authentication-cors-basic-setrequestheader.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader.htm
rename : testing/web-platform/tests/xhr/send-authentication-cors-setrequestheader-no-cred.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-cors-setrequestheader-no-cred.htm
rename : testing/web-platform/tests/xhr/send-authentication-existing-session-manual.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-existing-session-manual.htm
rename : testing/web-platform/tests/xhr/send-authentication-prompt-2-manual.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-prompt-2-manual.htm
rename : testing/web-platform/tests/xhr/send-authentication-prompt-manual.htm => testing/web-platform/tests/XMLHttpRequest/send-authentication-prompt-manual.htm
rename : testing/web-platform/tests/xhr/send-blob-with-no-mime-type.html => testing/web-platform/tests/XMLHttpRequest/send-blob-with-no-mime-type.html
rename : testing/web-platform/tests/xhr/send-conditional-cors.htm => testing/web-platform/tests/XMLHttpRequest/send-conditional-cors.htm
rename : testing/web-platform/tests/xhr/send-conditional.htm => testing/web-platform/tests/XMLHttpRequest/send-conditional.htm
rename : testing/web-platform/tests/xhr/send-content-type-charset.htm => testing/web-platform/tests/XMLHttpRequest/send-content-type-charset.htm
rename : testing/web-platform/tests/xhr/send-content-type-string.htm => testing/web-platform/tests/XMLHttpRequest/send-content-type-string.htm
rename : testing/web-platform/tests/xhr/send-data-arraybuffer.htm => testing/web-platform/tests/XMLHttpRequest/send-data-arraybuffer.htm
rename : testing/web-platform/tests/xhr/send-data-arraybufferview.htm => testing/web-platform/tests/XMLHttpRequest/send-data-arraybufferview.htm
rename : testing/web-platform/tests/xhr/send-data-blob.htm => testing/web-platform/tests/XMLHttpRequest/send-data-blob.htm
rename : testing/web-platform/tests/xhr/send-data-es-object.htm => testing/web-platform/tests/XMLHttpRequest/send-data-es-object.htm
rename : testing/web-platform/tests/xhr/send-data-formdata.htm => testing/web-platform/tests/XMLHttpRequest/send-data-formdata.htm
rename : testing/web-platform/tests/xhr/send-data-unexpected-tostring.htm => testing/web-platform/tests/XMLHttpRequest/send-data-unexpected-tostring.htm
rename : testing/web-platform/tests/xhr/send-entity-body-basic.htm => testing/web-platform/tests/XMLHttpRequest/send-entity-body-basic.htm
rename : testing/web-platform/tests/xhr/send-entity-body-document-bogus.htm => testing/web-platform/tests/XMLHttpRequest/send-entity-body-document-bogus.htm
rename : testing/web-platform/tests/xhr/send-entity-body-document.htm => testing/web-platform/tests/XMLHttpRequest/send-entity-body-document.htm
rename : testing/web-platform/tests/xhr/send-entity-body-empty.htm => testing/web-platform/tests/XMLHttpRequest/send-entity-body-empty.htm
rename : testing/web-platform/tests/xhr/send-entity-body-get-head-async.htm => testing/web-platform/tests/XMLHttpRequest/send-entity-body-get-head-async.htm
rename : testing/web-platform/tests/xhr/send-entity-body-get-head.htm => testing/web-platform/tests/XMLHttpRequest/send-entity-body-get-head.htm
rename : testing/web-platform/tests/xhr/send-entity-body-none.htm => testing/web-platform/tests/XMLHttpRequest/send-entity-body-none.htm
rename : testing/web-platform/tests/xhr/send-network-error-async-events.sub.htm => testing/web-platform/tests/XMLHttpRequest/send-network-error-async-events.sub.htm
rename : testing/web-platform/tests/xhr/send-network-error-sync-events.sub.htm => testing/web-platform/tests/XMLHttpRequest/send-network-error-sync-events.sub.htm
rename : testing/web-platform/tests/xhr/send-no-response-event-loadend.htm => testing/web-platform/tests/XMLHttpRequest/send-no-response-event-loadend.htm
rename : testing/web-platform/tests/xhr/send-no-response-event-loadstart.htm => testing/web-platform/tests/XMLHttpRequest/send-no-response-event-loadstart.htm
rename : testing/web-platform/tests/xhr/send-no-response-event-order.htm => testing/web-platform/tests/XMLHttpRequest/send-no-response-event-order.htm
rename : testing/web-platform/tests/xhr/send-non-same-origin.htm => testing/web-platform/tests/XMLHttpRequest/send-non-same-origin.htm
rename : testing/web-platform/tests/xhr/send-receive-utf16.htm => testing/web-platform/tests/XMLHttpRequest/send-receive-utf16.htm
rename : testing/web-platform/tests/xhr/send-redirect-bogus-sync.htm => testing/web-platform/tests/XMLHttpRequest/send-redirect-bogus-sync.htm
rename : testing/web-platform/tests/xhr/send-redirect-bogus.htm => testing/web-platform/tests/XMLHttpRequest/send-redirect-bogus.htm
rename : testing/web-platform/tests/xhr/send-redirect-infinite-sync.htm => testing/web-platform/tests/XMLHttpRequest/send-redirect-infinite-sync.htm
rename : testing/web-platform/tests/xhr/send-redirect-infinite.htm => testing/web-platform/tests/XMLHttpRequest/send-redirect-infinite.htm
rename : testing/web-platform/tests/xhr/send-redirect-no-location.htm => testing/web-platform/tests/XMLHttpRequest/send-redirect-no-location.htm
rename : testing/web-platform/tests/xhr/send-redirect-post-upload.htm => testing/web-platform/tests/XMLHttpRequest/send-redirect-post-upload.htm
rename : testing/web-platform/tests/xhr/send-redirect-to-cors.htm => testing/web-platform/tests/XMLHttpRequest/send-redirect-to-cors.htm
rename : testing/web-platform/tests/xhr/send-redirect-to-non-cors.htm => testing/web-platform/tests/XMLHttpRequest/send-redirect-to-non-cors.htm
rename : testing/web-platform/tests/xhr/send-redirect.htm => testing/web-platform/tests/XMLHttpRequest/send-redirect.htm
rename : testing/web-platform/tests/xhr/send-response-event-order.htm => testing/web-platform/tests/XMLHttpRequest/send-response-event-order.htm
rename : testing/web-platform/tests/xhr/send-response-upload-event-loadend.htm => testing/web-platform/tests/XMLHttpRequest/send-response-upload-event-loadend.htm
rename : testing/web-platform/tests/xhr/send-response-upload-event-loadstart.htm => testing/web-platform/tests/XMLHttpRequest/send-response-upload-event-loadstart.htm
rename : testing/web-platform/tests/xhr/send-response-upload-event-progress.htm => testing/web-platform/tests/XMLHttpRequest/send-response-upload-event-progress.htm
rename : testing/web-platform/tests/xhr/send-send.htm => testing/web-platform/tests/XMLHttpRequest/send-send.htm
rename : testing/web-platform/tests/xhr/send-send.js => testing/web-platform/tests/XMLHttpRequest/send-send.js
rename : testing/web-platform/tests/xhr/send-send.worker.js => testing/web-platform/tests/XMLHttpRequest/send-send.worker.js
rename : testing/web-platform/tests/xhr/send-sync-blocks-async.htm => testing/web-platform/tests/XMLHttpRequest/send-sync-blocks-async.htm
rename : testing/web-platform/tests/xhr/send-sync-no-response-event-load.htm => testing/web-platform/tests/XMLHttpRequest/send-sync-no-response-event-load.htm
rename : testing/web-platform/tests/xhr/send-sync-no-response-event-loadend.htm => testing/web-platform/tests/XMLHttpRequest/send-sync-no-response-event-loadend.htm
rename : testing/web-platform/tests/xhr/send-sync-no-response-event-order.htm => testing/web-platform/tests/XMLHttpRequest/send-sync-no-response-event-order.htm
rename : testing/web-platform/tests/xhr/send-sync-response-event-order.htm => testing/web-platform/tests/XMLHttpRequest/send-sync-response-event-order.htm
rename : testing/web-platform/tests/xhr/send-sync-timeout.htm => testing/web-platform/tests/XMLHttpRequest/send-sync-timeout.htm
rename : testing/web-platform/tests/xhr/send-timeout-events.htm => testing/web-platform/tests/XMLHttpRequest/send-timeout-events.htm
rename : testing/web-platform/tests/xhr/send-usp.any.js => testing/web-platform/tests/XMLHttpRequest/send-usp.any.js
rename : testing/web-platform/tests/xhr/setrequestheader-after-send.htm => testing/web-platform/tests/XMLHttpRequest/setrequestheader-after-send.htm
rename : testing/web-platform/tests/xhr/setrequestheader-allow-empty-value.htm => testing/web-platform/tests/XMLHttpRequest/setrequestheader-allow-empty-value.htm
rename : testing/web-platform/tests/xhr/setrequestheader-allow-whitespace-in-value.htm => testing/web-platform/tests/XMLHttpRequest/setrequestheader-allow-whitespace-in-value.htm
rename : testing/web-platform/tests/xhr/setrequestheader-before-open.htm => testing/web-platform/tests/XMLHttpRequest/setrequestheader-before-open.htm
rename : testing/web-platform/tests/xhr/setrequestheader-bogus-name.htm => testing/web-platform/tests/XMLHttpRequest/setrequestheader-bogus-name.htm
rename : testing/web-platform/tests/xhr/setrequestheader-bogus-value.htm => testing/web-platform/tests/XMLHttpRequest/setrequestheader-bogus-value.htm
rename : testing/web-platform/tests/xhr/setrequestheader-case-insensitive.htm => testing/web-platform/tests/XMLHttpRequest/setrequestheader-case-insensitive.htm
rename : testing/web-platform/tests/xhr/setrequestheader-content-type.htm => testing/web-platform/tests/XMLHttpRequest/setrequestheader-content-type.htm
rename : testing/web-platform/tests/xhr/setrequestheader-header-allowed.htm => testing/web-platform/tests/XMLHttpRequest/setrequestheader-header-allowed.htm
rename : testing/web-platform/tests/xhr/setrequestheader-header-forbidden.htm => testing/web-platform/tests/XMLHttpRequest/setrequestheader-header-forbidden.htm
rename : testing/web-platform/tests/xhr/setrequestheader-open-setrequestheader.htm => testing/web-platform/tests/XMLHttpRequest/setrequestheader-open-setrequestheader.htm
rename : testing/web-platform/tests/xhr/status-async.htm => testing/web-platform/tests/XMLHttpRequest/status-async.htm
rename : testing/web-platform/tests/xhr/status-basic.htm => testing/web-platform/tests/XMLHttpRequest/status-basic.htm
rename : testing/web-platform/tests/xhr/status-error.htm => testing/web-platform/tests/XMLHttpRequest/status-error.htm
rename : testing/web-platform/tests/xhr/template-element.html => testing/web-platform/tests/XMLHttpRequest/template-element.html
rename : testing/web-platform/tests/xhr/timeout-cors-async.htm => testing/web-platform/tests/XMLHttpRequest/timeout-cors-async.htm
rename : testing/web-platform/tests/xhr/timeout-sync.htm => testing/web-platform/tests/XMLHttpRequest/timeout-sync.htm
rename : testing/web-platform/tests/xhr/xmlhttprequest-basic.htm => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-basic.htm
rename : testing/web-platform/tests/xhr/xmlhttprequest-eventtarget.htm => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-eventtarget.htm
rename : testing/web-platform/tests/xhr/xmlhttprequest-network-error-sync.htm => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-network-error-sync.htm
rename : testing/web-platform/tests/xhr/xmlhttprequest-network-error.htm => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-network-error.htm
rename : testing/web-platform/tests/xhr/xmlhttprequest-sync-block-defer-scripts-subframe.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-sync-block-defer-scripts-subframe.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-sync-block-defer-scripts.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-sync-block-defer-scripts.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-sync-block-scripts.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-sync-block-scripts.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-sync-not-hang-scriptloader-subframe.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-sync-not-hang-scriptloader-subframe.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-sync-not-hang-scriptloader.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-sync-not-hang-scriptloader.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-aborted.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-aborted.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-abortedonmain.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-abortedonmain.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-overrides.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-overrides.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-overridesexpires.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-overridesexpires.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-reused.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-reused.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-simple.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-simple.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-synconmain.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-synconmain.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-twice.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-twice.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-aborted.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-worker-aborted.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-overrides.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-worker-overrides.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-overridesexpires.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-worker-overridesexpires.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-simple.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-worker-simple.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-synconworker.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-worker-synconworker.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-twice.html => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-timeout-worker-twice.html
rename : testing/web-platform/tests/xhr/xmlhttprequest-unsent.htm => testing/web-platform/tests/XMLHttpRequest/xmlhttprequest-unsent.htm
rename : testing/web-platform/tests/quirks/active-and-hover-manual.html => testing/web-platform/tests/quirks-mode/active-and-hover-manual.html
rename : testing/web-platform/tests/quirks/blocks-ignore-line-height.html => testing/web-platform/tests/quirks-mode/blocks-ignore-line-height.html
rename : testing/web-platform/tests/quirks/classname-query-after-sibling-adoption.html => testing/web-platform/tests/quirks-mode/classname-query-after-sibling-adoption.html
rename : testing/web-platform/tests/quirks/hashless-hex-color.html => testing/web-platform/tests/quirks-mode/hashless-hex-color.html
rename : testing/web-platform/tests/quirks/historical/list-item-bullet-size-ref.html => testing/web-platform/tests/quirks-mode/historical/list-item-bullet-size-ref.html
rename : testing/web-platform/tests/quirks/historical/list-item-bullet-size.html => testing/web-platform/tests/quirks-mode/historical/list-item-bullet-size.html
rename : testing/web-platform/tests/quirks/line-height-calculation.html => testing/web-platform/tests/quirks-mode/line-height-calculation.html
rename : testing/web-platform/tests/quirks/percentage-height-calculation.html => testing/web-platform/tests/quirks-mode/percentage-height-calculation.html
rename : testing/web-platform/tests/quirks/supports.html => testing/web-platform/tests/quirks-mode/supports.html
rename : testing/web-platform/tests/quirks/table-cell-nowrap-minimum-width-calculation.html => testing/web-platform/tests/quirks-mode/table-cell-nowrap-minimum-width-calculation.html
rename : testing/web-platform/tests/quirks/table-cell-width-calculation.html => testing/web-platform/tests/quirks-mode/table-cell-width-calculation.html
rename : testing/web-platform/tests/quirks/unitless-length.html => testing/web-platform/tests/quirks-mode/unitless-length.html
This commit is contained in:
Dorel Luca 2018-01-25 23:47:48 +02:00
Родитель 2d283eea75
Коммит 35276d96fb
1513 изменённых файлов: 9188 добавлений и 34018 удалений

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,2 +1,2 @@
local: e2bb11b88bd45bdb2e055042e1624b74d414e73c local: ac93fdadf1022211eec62258ad22b42cb37a6d14
upstream: 2e19bfdaee6edb2c1069c07e14037284167284a3 upstream: 45668a155fde7eb87c4c82721fc18fcf8c757c60

Просмотреть файл

@ -1423,7 +1423,7 @@
"support" "support"
], ],
"wasm/js/harness/index.js": [ "wasm/js/harness/index.js": [
"b1af046bac238e99d0bc73cc89faf3030149340f", "654a29a03543230ddd2db8f8a3398f33233cbf69",
"support" "support"
], ],
"wasm/js/harness/wasm-constants.js": [ "wasm/js/harness/wasm-constants.js": [

Просмотреть файл

@ -68,7 +68,7 @@ matrix:
python: "2.7" python: "2.7"
env: env:
- secure: "YTSXPwI0DyCA1GhYrLT9KMEV6b7QQKuEeaQgeFDP38OTzJ1+cIj3CC4SRNqbnJ/6SJwPGcdqSxLuV8m4e5HFFnyCcQnJe6h8EMsTehZ7W3j/fP9UYrJqYqvGpe3Vj3xblO5pwBYmq7sg3jAmmuCgAgOW6VGf7cRMucrsmFeo7VM=" - secure: "YTSXPwI0DyCA1GhYrLT9KMEV6b7QQKuEeaQgeFDP38OTzJ1+cIj3CC4SRNqbnJ/6SJwPGcdqSxLuV8m4e5HFFnyCcQnJe6h8EMsTehZ7W3j/fP9UYrJqYqvGpe3Vj3xblO5pwBYmq7sg3jAmmuCgAgOW6VGf7cRMucrsmFeo7VM="
- JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=sauce:safari:11.0 PLATFORM='macOS 10.12' - JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=sauce:safari:10.0 PLATFORM='macOS 10.12'
- os: linux - os: linux
python: "2.7" python: "2.7"
env: env:
@ -87,7 +87,7 @@ matrix:
apt: apt:
packages: packages:
- libnss3-tools - libnss3-tools
env: JOB=wpt_integration TOXENV=py27,py27-flake8 SCRIPT=tools/ci/ci_wpt.sh env: JOB=wpt_integration TOXENV=py27 SCRIPT=tools/ci/ci_wpt.sh
exclude: exclude:
- env: # exclude empty env from the top-level above - env: # exclude empty env from the top-level above
allow_failures: allow_failures:
@ -100,7 +100,7 @@ matrix:
- JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=sauce:MicrosoftEdge:14.14393 PLATFORM='Windows 10' - JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=sauce:MicrosoftEdge:14.14393 PLATFORM='Windows 10'
- env: - env:
- secure: "YTSXPwI0DyCA1GhYrLT9KMEV6b7QQKuEeaQgeFDP38OTzJ1+cIj3CC4SRNqbnJ/6SJwPGcdqSxLuV8m4e5HFFnyCcQnJe6h8EMsTehZ7W3j/fP9UYrJqYqvGpe3Vj3xblO5pwBYmq7sg3jAmmuCgAgOW6VGf7cRMucrsmFeo7VM=" - secure: "YTSXPwI0DyCA1GhYrLT9KMEV6b7QQKuEeaQgeFDP38OTzJ1+cIj3CC4SRNqbnJ/6SJwPGcdqSxLuV8m4e5HFFnyCcQnJe6h8EMsTehZ7W3j/fP9UYrJqYqvGpe3Vj3xblO5pwBYmq7sg3jAmmuCgAgOW6VGf7cRMucrsmFeo7VM="
- JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=sauce:safari:11.0 PLATFORM='macOS 10.12' - JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=sauce:safari:10.0 PLATFORM='macOS 10.12'
script: script:
- ./tools/ci/run.sh - ./tools/ci/run.sh
cache: cache:

Просмотреть файл

@ -1,108 +1,58 @@
function makeCanvas() { function testCanvasDisplayingPattern(canvas)
return new Promise(resolve => { {
var testCanvas = document.createElement("canvas"); var tolerance = 5; // for creating ImageBitmap from a video, the tolerance needs to be high
testCanvas.width = 20; _assertPixelApprox(canvas, 5,5, 255,0,0,255, "5,5", "255,0,0,255", tolerance);
testCanvas.height = 20; _assertPixelApprox(canvas, 15,5, 0,255,0,255, "15,5", "0,255,0,255", tolerance);
var testCtx = testCanvas.getContext("2d"); _assertPixelApprox(canvas, 5,15, 0,0,255,255, "5,15", "0,0,255,255", tolerance);
testCtx.fillStyle = "rgb(255, 0, 0)"; _assertPixelApprox(canvas, 15,15, 0,0,0,255, "15,15", "0,0,0,255", tolerance);
testCtx.fillRect(0, 0, 10, 10); }
testCtx.fillStyle = "rgb(0, 255, 0)";
testCtx.fillRect(10, 0, 10, 10); function testDrawImageBitmap(source)
testCtx.fillStyle = "rgb(0, 0, 255)"; {
testCtx.fillRect(0, 10, 10, 10); var canvas = document.createElement("canvas");
testCtx.fillStyle = "rgb(0, 0, 0)"; canvas.width = 20;
testCtx.fillRect(10, 10, 10, 10); canvas.height = 20;
resolve(testCanvas); var ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
return createImageBitmap(source).then(imageBitmap => {
ctx.drawImage(imageBitmap, 0, 0);
testCanvasDisplayingPattern(canvas);
}); });
} }
function makeOffscreenCanvas() { function initializeTestCanvas(testCanvas)
return new Promise(resolve => { {
let canvas = new OffscreenCanvas(20, 20); testCanvas.width = 20;
var testCtx = canvas.getContext("2d"); testCanvas.height = 20;
testCtx.fillStyle = "rgb(255, 0, 0)"; var testCtx = testCanvas.getContext("2d");
testCtx.fillRect(0, 0, 10, 10); testCtx.fillStyle = "rgb(255, 0, 0)";
testCtx.fillStyle = "rgb(0, 255, 0)"; testCtx.fillRect(0, 0, 10, 10);
testCtx.fillRect(10, 0, 10, 10); testCtx.fillStyle = "rgb(0, 255, 0)";
testCtx.fillStyle = "rgb(0, 0, 255)"; testCtx.fillRect(10, 0, 10, 10);
testCtx.fillRect(0, 10, 10, 10); testCtx.fillStyle = "rgb(0, 0, 255)";
testCtx.fillStyle = "rgb(0, 0, 0)"; testCtx.fillRect(0, 10, 10, 10);
testCtx.fillRect(10, 10, 10, 10); testCtx.fillStyle = "rgb(0, 0, 0)";
resolve(canvas); testCtx.fillRect(10, 10, 10, 10);
});
} }
function makeVideo() { function initializeImageData(imgData, width, height)
return new Promise(function(resolve, reject) { {
var video = document.createElement("video"); for (var i = 0; i < width * height * 4; i+=4) {
video.oncanplaythrough = function() { imgData.data[i] = 0;
resolve(video); imgData.data[i + 1] = 0;
}; imgData.data[i + 2] = 0;
video.onerror = reject; imgData.data[i + 3] = 255; //alpha channel: 255
video.src = getVideoURI("/images/pattern"); }
}); var halfWidth = width/2;
var halfHeight = height/2;
// initialize to R, G, B, Black, with each one 10*10 pixels
for (var i = 0; i < halfHeight; i++)
for (var j = 0; j < halfWidth; j++)
imgData.data[i * width * 4 + j * 4] = 255;
for (var i = 0; i < halfHeight; i++)
for (var j = halfWidth; j < width; j++)
imgData.data[i * width * 4 + j * 4 + 1] = 255;
for (var i = halfHeight; i < height; i++)
for (var j = 0; j < halfWidth; j++)
imgData.data[i * width * 4 + j * 4 + 2] = 255;
} }
function makeImage() {
return new Promise(resolve => {
var img = new Image();
img.onload = function() {
resolve(img);
};
img.src = "/images/pattern.png";
});
}
function makeImageData() {
return new Promise(function(resolve, reject) {
var width = 20, height = 20;
var imgData = new ImageData(width, height);
for (var i = 0; i < width * height * 4; i += 4) {
imgData.data[i] = 0;
imgData.data[i + 1] = 0;
imgData.data[i + 2] = 0;
imgData.data[i + 3] = 255; //alpha channel: 255
}
var halfWidth = width / 2;
var halfHeight = height / 2;
// initialize to R, G, B, Black, with each one 10*10 pixels
for (var i = 0; i < halfHeight; i++)
for (var j = 0; j < halfWidth; j++)
imgData.data[i * width * 4 + j * 4] = 255;
for (var i = 0; i < halfHeight; i++)
for (var j = halfWidth; j < width; j++)
imgData.data[i * width * 4 + j * 4 + 1] = 255;
for (var i = halfHeight; i < height; i++)
for (var j = 0; j < halfWidth; j++)
imgData.data[i * width * 4 + j * 4 + 2] = 255;
resolve(imgData);
});
}
function makeImageBitmap() {
return makeCanvas().then(canvas => {
return createImageBitmap(canvas);
});
}
function makeBlob() {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/pattern.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
}
var imageSourceTypes = [
{ name: 'an HTMLCanvasElement', factory: makeCanvas },
{ name: 'an HTMLVideoElement', factory: makeVideo },
{ name: 'an HTMLImageElement', factory: makeImage },
{ name: 'an OffscreenCanvas', factory: makeOffscreenCanvas },
{ name: 'an ImageData', factory: makeImageData },
{ name: 'an ImageBitmap', factory: makeImageBitmap },
{ name: 'a Blob', factory: makeBlob },
];

Просмотреть файл

@ -4,46 +4,72 @@
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/common/canvas-tests.js"></script> <script src="/common/canvas-tests.js"></script>
<script src="/common/media.js"></script>
<script src="common.js"></script> <script src="common.js"></script>
<link rel="stylesheet" href="/common/canvas-tests.css"> <link rel="stylesheet" href="/common/canvas-tests.css">
<body> <body>
<script> <script>
function testCanvasDisplayingPattern(canvas) (function() {
{
var tolerance = 5; // for creating ImageBitmap from a video, the tolerance needs to be high
_assertPixelApprox(canvas, 5,5, 255,0,0,255, "5,5", "255,0,0,255", tolerance);
_assertPixelApprox(canvas, 15,5, 0,255,0,255, "15,5", "0,255,0,255", tolerance);
_assertPixelApprox(canvas, 5,15, 0,0,255,255, "5,15", "0,0,255,255", tolerance);
_assertPixelApprox(canvas, 15,15, 0,0,0,255, "15,15", "0,0,0,255", tolerance);
}
function testDrawImageBitmap(source, args = [])
{
var canvas = document.createElement("canvas");
canvas.width = 20;
canvas.height = 20;
var ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
return createImageBitmap(source, ...args).then(imageBitmap => {
ctx.drawImage(imageBitmap, 0, 0);
testCanvasDisplayingPattern(canvas);
});
}
for (let { name, factory } of imageSourceTypes) {
promise_test(function() { promise_test(function() {
return factory().then(function(img) { return new Promise(function(resolve, reject) {
var img = new Image();
img.onload = function() { resolve(img); };
img.src = "/images/pattern.png";
}).then(function(img) {
return testDrawImageBitmap(img); return testDrawImageBitmap(img);
}); });
}, `createImageBitmap from ${name}, and drawImage on the created ImageBitmap`); }, "createImageBitmap from a HTMLImageElement, and drawImage on the created ImageBitmap");
promise_test(function() { promise_test(function() {
return factory().then(function(img) { return new Promise(function(resolve, reject) {
return testDrawImageBitmap(img, [20, 20, -20, -20]); var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/pattern.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
blob = xhr.response;
resolve(blob);
};
}).then(function(blob) {
return testDrawImageBitmap(blob);
}); });
}, `createImageBitmap from ${name} with negative sw/sh, and drawImage on the created ImageBitmap`); }, "createImageBitmap from a Blob, and drawImage on the created ImageBitmap");
}
promise_test(function() {
var testCanvas = document.createElement("canvas");
initializeTestCanvas(testCanvas);
return testDrawImageBitmap(testCanvas);
}, "createImageBitmap from a HTMLCanvasElement, and drawImage on the created ImageBitmap");
promise_test(function() {
var testCanvas = document.createElement("canvas");
initializeTestCanvas(testCanvas);
return new Promise(function(resolve, reject) {
createImageBitmap(testCanvas).then(function(bitmap) {
resolve(bitmap);
});
}).then(function(bitmap) {
return testDrawImageBitmap(bitmap);
});
}, "createImageBitmap from an ImageBitmap, and drawImage on the created ImageBitmap");
promise_test(function() {
var imgData = new ImageData(20, 20);
initializeImageData(imgData, 20, 20);
return testDrawImageBitmap(imgData);
}, "createImageBitmap from an ImageData, and drawImage on the created ImageBitmap");
promise_test(function() {
return new Promise(function(resolve, reject) {
var video = document.createElement("video");
video.oncanplaythrough = function() {
resolve(video);
};
video.src = "/images/pattern.ogv";
}).then(function(video) {
return testDrawImageBitmap(video);
});
}, "createImageBitmap from a HTMLVideoElement, and drawImage on the created ImageBitmap");
})();
</script> </script>
</body> </body>
</html> </html>

Просмотреть файл

@ -1,10 +1,24 @@
<!doctype html> <!doctype html>
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/common/media.js"></script>
<script src="common.js"></script>
<script> <script>
function makeCanvas() {
return new Promise(resolve => {
let canvas = document.createElement('canvas');
canvas.setAttribute('width', '10');
canvas.setAttribute('height', '10');
resolve(canvas);
});
}
function makeOffscreenCanvas() {
return new Promise(resolve => {
let canvas = new OffscreenCanvas(10, 10);
resolve(canvas);
});
}
function makeOversizedCanvas() { function makeOversizedCanvas() {
return new Promise(resolve => { return new Promise(resolve => {
@ -22,6 +36,46 @@ function makeOversizedOffscreenCanvas() {
}); });
} }
function makeVideo() {
return new Promise(resolve => {
let video = document.createElement('video');
video.addEventListener('canplaythrough', resolve.bind(undefined, video), false);
video.src = '/media/A4.ogv';
});
}
function makeImage() {
return makeCanvas().then(canvas => {
let image = new Image();
image.src = canvas.toDataURL();
return new Promise(resolve => {
image.onload = resolve.bind(undefined, image);
});
});
}
function makeImageData() {
return makeCanvas().then(canvas => {
return new Promise(function(resolve, reject) {
resolve(canvas.getContext('2d').getImageData(0, 0, 10, 10));
});
});
}
function makeImageBitmap() {
return makeCanvas().then(canvas => {
return createImageBitmap(canvas);
});
}
function makeBlob() {
return makeCanvas().then(canvas => {
return new Promise(resolve => {
canvas.toBlob(resolve);
});
});
}
function makeInvalidBlob() { function makeInvalidBlob() {
return new Promise(resolve => { return new Promise(resolve => {
resolve(new Blob()); // Blob with no data cannot be decoded. resolve(new Blob()); // Blob with no data cannot be decoded.
@ -31,23 +85,33 @@ function makeInvalidBlob() {
function makeBrokenImage() { function makeBrokenImage() {
return new Promise(resolve => { return new Promise(resolve => {
const image = new Image(); const image = new Image();
image.src = "data:,x"; image.src = "data,x";
image.onerror = () => resolve(image); image.onerror = () => resolve(image);
}); });
} }
function makeAvailableButBrokenImage() { function makeAvailableButBrokenImage() {
return new Promise((resolve, reject) => { return new Promise(resolve => {
const image = new Image(); const image = new Image();
image.src = "/images/broken.png"; image.src = "/images/broken.png";
image.onload = () => resolve(image); image.onload = () => resolve(image);
image.onerror = reject;
}); });
} }
imageSourceTypes = [
{ name: 'HTMLImageElement', factory: makeImage },
{ name: 'HTMLVideoElement', factory: makeVideo },
{ name: 'HTMLCanvasElement', factory: makeCanvas },
{ name: 'OffscreenCanvas', factory: makeOffscreenCanvas },
{ name: 'ImageData', factory: makeImageData },
{ name: 'ImageBitmap', factory: makeImageBitmap },
{ name: 'Blob', factory: makeBlob },
];
testCases = [ testCases = [
{ {
description: 'createImageBitmap with a <sourceType> source and sw set to 0', description: 'createImageBitmap with a <sourceType> source and sw set to ' +
'0 rejects with a RangeError.',
promiseTestFunction: promiseTestFunction:
(source, t) => { (source, t) => {
return promise_rejects(t, new RangeError(), return promise_rejects(t, new RangeError(),
@ -55,7 +119,8 @@ testCases = [
} }
}, },
{ {
description: 'createImageBitmap with a <sourceType> source and sh set to 0', description: 'createImageBitmap with a <sourceType> source and sh set to ' +
'0 rejects with a RangeError.',
promiseTestFunction: promiseTestFunction:
(source, t) => { (source, t) => {
return promise_rejects(t, new RangeError(), return promise_rejects(t, new RangeError(),
@ -65,11 +130,10 @@ testCases = [
{ {
// This case is not explicitly documented in the specification for // This case is not explicitly documented in the specification for
// createImageBitmap, but it is expected that internal failures cause // createImageBitmap, but it is expected that internal failures cause
// InvalidStateError.
// //
// Note: https://bugs.chromium.org/p/chromium/issues/detail?id=799025
description: 'createImageBitmap with a <sourceType> source and oversized ' + description: 'createImageBitmap with a <sourceType> source and oversized ' +
'(unallocatable) crop region', '(unallocatable) crop region rejects with an InvalidStateError ' +
'DOMException.',
promiseTestFunction: promiseTestFunction:
(source, t) => { (source, t) => {
return promise_rejects(t, new DOMException('', 'InvalidStateError'), return promise_rejects(t, new DOMException('', 'InvalidStateError'),
@ -93,61 +157,55 @@ imageSourceTypes.forEach(imageSourceType => {
promise_test( t => { promise_test( t => {
return promise_rejects(t, new TypeError(), createImageBitmap(undefined)); return promise_rejects(t, new TypeError(), createImageBitmap(undefined));
}, "createImageBitmap with undefined image source."); }, "createImageBitmap with undefined image source rejects with a TypeError.");
promise_test( t => { promise_test( t => {
return promise_rejects(t, new TypeError(), createImageBitmap(null)); return promise_rejects(t, new TypeError(), createImageBitmap(null));
}, "createImageBitmap with null image source."); }, "createImageBitmap with null image source rejects with a TypeError.");
promise_test( t => { promise_test( t => {
return promise_rejects(t, "InvalidStateError", return promise_rejects(t, "InvalidStateError",
createImageBitmap(new Image())); createImageBitmap(new Image()));
}, "createImageBitmap with empty image source."); }, "createImageBitmap with empty image source rejects with a InvalidStateError.");
promise_test( t => { promise_test( t => {
return promise_rejects(t, "InvalidStateError", return promise_rejects(t, "InvalidStateError",
createImageBitmap(document.createElement('video'))); createImageBitmap(document.createElement('video')));
}, "createImageBitmap with empty video source."); }, "createImageBitmap with empty video source rejects with a InvalidStateError.");
promise_test( t => { promise_test( t => {
return makeOversizedCanvas().then(canvas => { return makeOversizedCanvas().then(canvas => {
return promise_rejects(t, "InvalidStateError", return promise_rejects(t, "InvalidStateError",
createImageBitmap(canvas)); createImageBitmap(canvas));
}); });
}, "createImageBitmap with an oversized canvas source."); }, "createImageBitmap with an oversized canvas source rejects with a RangeError.");
promise_test( t => { promise_test( t => {
return makeOversizedOffscreenCanvas().then(offscreenCanvas => { return makeOversizedOffscreenCanvas().then(offscreenCanvas => {
return promise_rejects(t, "InvalidStateError", return promise_rejects(t, "InvalidStateError",
createImageBitmap(offscreenCanvas)); createImageBitmap(offscreenCanvas));
}); });
}, "createImageBitmap with an invalid OffscreenCanvas source."); }, "createImageBitmap with an invalid OffscreenCanvas source rejects with a RangeError.");
promise_test( t => { promise_test( t => {
return makeInvalidBlob().then(blob => { return makeInvalidBlob().then(blob => {
return promise_rejects(t, "InvalidStateError", return promise_rejects(t, "InvalidStateError",
createImageBitmap(blob)); createImageBitmap(blob));
}); });
}, "createImageBitmap with an undecodable blob source."); }, "createImageBitmap with an undecodable blob source rejects with an InvalidStateError.");
promise_test( t => { promise_test( t => {
return makeBrokenImage().then(image => { return makeBrokenImage().then(image => {
return promise_rejects(t, "InvalidStateError", return promise_rejects(t, "InvalidStateError",
createImageBitmap(image)); createImageBitmap(image));
}); });
}, "createImageBitmap with a broken image source."); }, "createImageBitmap with a broken image source rejects with an InvalidStateError.");
promise_test( t => { promise_test( t => {
return makeAvailableButBrokenImage().then(image => { return makeAvailableButBrokenImage().then(image => {
return promise_rejects(t, "InvalidStateError", return promise_rejects(t, "InvalidStateError",
createImageBitmap(image)); createImageBitmap(image));
}); });
}, "createImageBitmap with an available but undecodable image source."); }, "createImageBitmap with an available but undecodable image source rejects with an InvalidStateError.");
promise_test( t => {
return makeImageBitmap().then(bitmap => {
bitmap.close()
return promise_rejects(t, "InvalidStateError", createImageBitmap(bitmap));
});
}, "createImageBitmap with a closed ImageBitmap.");
</script> </script>

Просмотреть файл

@ -0,0 +1 @@
var test_result = 'test1_OK';

Просмотреть файл

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test file</title>
<style>
body {
margin: 0;
}
.block {
height: 5000px;
}
</style>
<script>
window.test_result = 'test3_OK';
</script>
</head>
<body>
<a id="block1"></a>
<div class="block"></div>
<a id="block2"></a>
<div class="block"></div>
</body>
</html>

Просмотреть файл

@ -0,0 +1,122 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Blob and File reference URL Test(1)</title>
<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#convenienceAPI">
<link rel=author title="Breezewish" href="mailto:me@breeswish.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<form name="upload">
<input type="file" id="fileChooser">
</form>
<div>
<p>Test steps:</p>
<ol>
<li>Download the <a href="support/file_test1.js">file</a>.</li>
<li>Select the file in the file inputbox to run the test.</li>
</ol>
</div>
<div id="log"></div>
<script>
var fileChooser = document.querySelector('#fileChooser');
setup({explicit_done: true});
setup({explicit_timeout: true});
//Run the test when user selects a file
on_event(fileChooser, 'change', function() {
var testCount = 10000;
test(function() {
var list = [], file = fileChooser.files[0];
for (var i = 0; i <= testCount; i++) {
list.push(window.URL.createObjectURL(file));
}
list.sort();
for (var i = 0; i < testCount; i++) {
assert_not_equals(list[i], list[i+1], 'generated Blob URL should be unique');
}
}, 'Check whether generated Blob/File URL is unique (Notice: only generate for ' + testCount + ' times)');
async_test(function(t) {
var url = URL.createObjectURL(fileChooser.files[0]);
var expected_file_content = "var test_result = 'test1_OK';";
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onreadystatechange = t.step_func(function() {
switch (xhr.readyState) {
case xhr.DONE:
assert_equals(xhr.status, 200, 'status code should be 200');
assert_equals(xhr.responseText, expected_file_content);
t.done();
return;
}
});
xhr.send();
}, 'Check whether Blob/File URL could be used in XHR requests and could get expected data');
async_test(function(t) {
var url = URL.createObjectURL(fileChooser.files[0]);
var expected_run_result = "test1_OK";
//expected file content:
// var test_result = 'test1_OK';
var e = document.createElement('script');
e.setAttribute('type', 'text/javascript');
e.setAttribute('src', url);
e.onload = t.step_func_done(function() {
assert_equals(test_result, expected_run_result);
});
document.body.appendChild(e);
}, 'Check whether Blob/File URL could be used in tags src like <script>');
async_test(function(t) {
var url = URL.createObjectURL(fileChooser.files[0]);
URL.revokeObjectURL(url);
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onreadystatechange = t.step_func(function() {
switch (xhr.readyState) {
case xhr.DONE:
assert_equals(xhr.status, 500, 'status code should be 500 if Blob URI is revoked.');
t.done();
return;
}
});
xhr.send();
}, 'Check whether revokeObjectURL works well');
done();
});
</script>
</body>
</html>

Просмотреть файл

@ -0,0 +1,71 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Blob and File reference URL Test(3)</title>
<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#convenienceAPI">
<link rel=author title="Breezewish" href="mailto:me@breeswish.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<form name="upload">
<input type="file" id="fileChooser">
</form>
<div>
<p>Test steps:</p>
<ol>
<li>Download the <a href="support/file_test3.html">file</a>.</li>
<li>Select the file in the file inputbox and the test will start.</li>
</ol>
</div>
<div id="log"></div>
<script>
var fileChooser = document.querySelector('#fileChooser');
setup({explicit_done: true});
setup({explicit_timeout: true});
on_event(fileChooser, 'change', function() {
async_test(function(t) {
var url = URL.createObjectURL(fileChooser.files[0]);
var e = document.createElement('iframe');
e.setAttribute('src', url);
e.setAttribute('style', 'display:none;');
document.body.appendChild(e);
e.contentWindow.document.body.onload = t.step_func_done(function() {
assert_equals(e.contentWindow.test_result, 'test3_OK');
});
}, 'Check whether the iframe content could be accessed when using Blob/File URL in the same origin.');
async_test(function(t) {
var url = URL.createObjectURL(fileChooser.files[0]);
url += '#block2';
var e = document.createElement('iframe');
e.setAttribute('src', url);
document.body.appendChild(e);
e.contentWindow.document.body.onload = t.step_func_done(function() {
assert_equals(e.contentWindow.scrollY, 5000);
});
}, 'Check whether the Blob/File URL fragment is implemented.');
done();
});
</script>
</body>
</html>

Просмотреть файл

@ -1,42 +0,0 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>FileReader NotReadableError Test</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://w3c.github.io/FileAPI/#dfn-error-codes">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<form name="upload">
<input type="file" id="fileChooser"><br><input type="button" id="start" value="start">
</form>
<div>
<p>Test steps:</p>
<ol>
<li>Download the <a href="support/file_test1.txt">file</a>.</li>
<li>Select the file in the file inputbox.</li>
<li>Delete the file's readable permission.</li>
<li>Click the 'start' button.</li>
</ol>
</div>
<script>
const fileChooser = document.querySelector('#fileChooser');
setup({explicit_done: true});
setup({explicit_timeout: true});
on_event(document.querySelector('#start'), 'click', () => {
async_test(t => {
const reader = new FileReader();
reader.readAsArrayBuffer(fileChooser.files[0]);
reader.onloadend = t.step_func_done(event => {
assert_equals(event.target.readyState, FileReader.DONE);
assert_equals(reader.error.name, "NotReadableError");
});
}, 'FileReader.error should be NotReadableError if the file is unreadable');
done();
});
</script>

Просмотреть файл

@ -1,40 +0,0 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>FileReader SecurityError Test</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://w3c.github.io/FileAPI/#dfn-error-codes">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<form name="upload">
<input type="file" id="fileChooser"><br><input type="button" id="start" value="start">
</form>
<div>
<p>Test steps:</p>
<ol>
<li>Select a system sensitive file (e.g. files in /usr/bin, password files,
and other native operating system executables) in the file inputbox.</li>
<li>Click the 'start' button.</li>
</ol>
</div>
<script>
const fileChooser = document.querySelector('#fileChooser');
setup({explicit_done: true});
setup({explicit_timeout: true});
on_event(document.querySelector('#start'), 'click', () => {
async_test(t => {
const reader = new FileReader();
reader.readAsArrayBuffer(fileChooser.files[0]);
reader.onloadend = t.step_func_done(event => {
assert_equals(event.target.readyState, FileReader.DONE);
assert_equals(reader.error.name, "SecurityError");
});
}, 'FileReader.error should be SECURITY_ERROR if the file is a system sensitive file');
done();
});
</script>

Просмотреть файл

@ -0,0 +1,41 @@
<!doctype html>
<title>Revoking blob URL used with Request/fetch</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
promise_test(function(t) {
const blob = new Blob(["test"]);
const url = URL.createObjectURL(blob);
const request = new Request(url);
// Revoke the object URL. Request should take a reference to the blob as
// soon as it receives it in open(), so the request succeeds even though we
// revoke the URL before calling fetch().
URL.revokeObjectURL(url);
return fetch(request).then(response => response.text()).then(text => {
assert_equals(text, 'test');
});
}, "Revoke blob URL after creating Request, will fetch");
promise_test(function(t) {
const blob = new Blob(["test"]);
const url = URL.createObjectURL(blob);
return fetch(url).then(response => response.text()).then(text => {
assert_equals(text, 'test');
});
// Revoke the object URL. fetch should have already resolved the blob URL.
URL.revokeObjectURL(url);
}, "Revoke blob URL after fetch, will fetch");
promise_test(t => {
const blob = new Blob(["test"]);
const url = URL.createObjectURL(blob);
URL.revokeObjectURL(url);
const request = new Request(url);
return promise_rejects(t, new TypeError, fetch(request));
}, "Revoke blob URL before creating Request, network error (after fetch)")
</script>

Просмотреть файл

@ -0,0 +1,38 @@
<!doctype html>
<title>Revoking blob URL used with XMLHttpRequest</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
async_test(function(t) {
var blob = new Blob(["test"]);
var url = URL.createObjectURL(blob);
var xhr = new XMLHttpRequest();
xhr.open("GET", url);
// Revoke the object URL. XHR should take a reference to the blob as soon as
// it receives it in open(), so the request succeeds even though we revoke the
// URL before calling send().
URL.revokeObjectURL(url);
xhr.send();
xhr.onload = t.step_func_done(function() {
assert_equals(xhr.response, "test");
})
xhr.onerror = t.step_func(function() {
assert_unreached("Got unexpected error event");
})
}, "Revoke blob URL after open(), will fetch");
async_test(t => {
const blob = new Blob(["test"]),
blobURL = URL.createObjectURL(blob),
client = new XMLHttpRequest
URL.revokeObjectURL(blobURL)
client.open("GET", blobURL)
client.onload = t.step_func(() => assert_unreached("Got unexpected load event"))
client.onerror = t.step_func_done()
client.send()
}, "Revoke blob URL before open(), network error (after send())")
</script>

Просмотреть файл

@ -47,7 +47,7 @@ test_first_argument(["bits", new Blob(["bits"]), new Blob(), new Uint8Array([0x5
test_first_argument([12], 2, "Number in fileBits"); test_first_argument([12], 2, "Number in fileBits");
test_first_argument([[1,2,3]], 5, "Array in fileBits"); test_first_argument([[1,2,3]], 5, "Array in fileBits");
test_first_argument([{}], 15, "Object in fileBits"); // "[object Object]" test_first_argument([{}], 15, "Object in fileBits"); // "[object Object]"
test_first_argument([document.body], 24, "HTMLBodyElement in fileBits"); // "[object HTMLBodyElement]" test_first_argument([document], 21, "HTMLDocument in fileBits"); // "[object HTMLDocument]"
test_first_argument([to_string_obj], 8, "Object with toString in fileBits"); test_first_argument([to_string_obj], 8, "Object with toString in fileBits");
test_first_argument({[Symbol.iterator]() { test_first_argument({[Symbol.iterator]() {
let i = 0; let i = 0;
@ -88,7 +88,7 @@ test_second_argument("dummy/foo", "dummy:foo", "Using special character in fileN
test_second_argument(null, "null", "Using null fileName"); test_second_argument(null, "null", "Using null fileName");
test_second_argument(1, "1", "Using number fileName"); test_second_argument(1, "1", "Using number fileName");
test_second_argument('', '', "Using empty string fileName"); test_second_argument('', '', "Using empty string fileName");
test_second_argument(document.body, '[object HTMLBodyElement]', "Using object fileName"); test_second_argument(document, '[object HTMLDocument]', "Using object fileName");
// testing the third argument // testing the third argument
[ [

Просмотреть файл

@ -0,0 +1,66 @@
<!doctype html>
<meta charset="utf-8">
<title>FileAPI Test: Creating Blob URL with Blob</title>
<link rel="author" title="Victor Costan" href="mailto:pwnall@chromium.org">
<link rel="help" href="https://w3c.github.io/FileAPI/#originOfBlobURL">
<link rel="help" href="https://html.spec.whatwg.org/multipage/browsers.html#concept-origin">
<link rel="help" href="https://url.spec.whatwg.org/#url-parsing">
<link rel="help" href="https://fetch.spec.whatwg.org/#main-fetch">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
iframe { width: 10px; height: 10px; }
</style>
<iframe id="unconstrained-iframe"></iframe>
<iframe id="sandboxed-iframe" sandbox="allow-scripts"></iframe>
<script id="iframe-srcdoc" language="text/html">
<!doctype html>
<script>
'use strict';
window.onload = () => {
const blob = new Blob(['Hello world!']);
const blobUrl = URL.createObjectURL(blob);
fetch(blobUrl).then(response => response.text()).then(text => {
window.parent.postMessage({ blobUrl, text }, '*');
});
};
// The script tag is closed in readBlobFromUrl().
</script>
<script>
// Carries out the test of minting a Blob URL in an iframe, and reading it back.
//
// Returns a promise resolved with an object with properties blobUrl and text
// (the text read back from the Blob URL).
function readBlobFromUrl(t, iframeSelector) {
return new Promise((resolve, reject) => {
window.onmessage = t.step_func((message) => { resolve(message.data); });
const frame = document.querySelector(iframeSelector);
const html = document.querySelector('#iframe-srcdoc').textContent +
'<' + '/script>';
frame.setAttribute('srcdoc', html);
});
}
promise_test(t => readBlobFromUrl(t, '#unconstrained-iframe').then(data => {
assert_true(data.blobUrl.startsWith('blob:'),
"The Blob's URL should use the blob: scheme");
assert_equals(data.text, 'Hello world!',
"The result of reading the Blob's URL should be the Blob's contents");
}), 'reading a Blob URL in an unconstrained iframe');
promise_test(t => readBlobFromUrl(t, '#sandboxed-iframe').then(data => {
assert_true(data.blobUrl.startsWith('blob:'),
"The Blob's URL should use the blob: scheme");
assert_equals(data.text, 'Hello world!',
"The result of reading the Blob's URL should be the Blob's contents");
}), 'reading a Blob URL in a sandboxed iframe without the same-origin flag');
</script>

Просмотреть файл

@ -1,61 +0,0 @@
<!doctype html>
<meta charset="utf-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<script>
async_test(t => {
const blob_contents = 'test blob contents';
const blob = new Blob([blob_contents]);
const url = URL.createObjectURL(blob);
const frame = document.createElement('iframe');
frame.setAttribute('style', 'display:none;');
frame.src = 'resources/revoke-helper.html';
document.body.appendChild(frame);
frame.onload = t.step_func(e => {
frame.contentWindow.postMessage({url: url}, '*');
});
self.addEventListener('message', t.step_func(e => {
if (e.source !== frame.contentWindow) return;
assert_equals(e.data, 'revoked');
promise_rejects(t, new TypeError, fetch(url)).then(t.step_func_done());
}));
}, 'It is possible to revoke same-origin blob URLs from different frames.');
async_test(t => {
const blob_contents = 'test blob contents';
const blob = new Blob([blob_contents]);
const url = URL.createObjectURL(blob);
const worker = new Worker('resources/revoke-helper.js');
worker.onmessage = t.step_func(e => {
assert_equals(e.data, 'revoked');
promise_rejects(t, new TypeError, fetch(url)).then(t.step_func_done());
});
worker.postMessage({url: url});
}, 'It is possible to revoke same-origin blob URLs from a different worker global.');
async_test(t => {
const blob_contents = 'test blob contents';
const blob = new Blob([blob_contents]);
const url = URL.createObjectURL(blob);
const frame = document.createElement('iframe');
frame.setAttribute('style', 'display:none;');
frame.src = '//{{domains[www1]}}:{{location[port]}}/FileAPI/url/resources/revoke-helper.html';
document.body.appendChild(frame);
frame.onload = t.step_func(e => {
frame.contentWindow.postMessage({url: url}, '*');
});
self.addEventListener('message', t.step_func(e => {
if (e.source !== frame.contentWindow) return;
assert_equals(e.data, 'revoked');
fetch(url).then(response => response.text()).then(t.step_func_done(text => {
assert_equals(text, blob_contents);
}), t.unreached_func('Unexpected promise rejection'));
}));
}, 'It is not possible to revoke cross-origin blob URLs.');
</script>

Просмотреть файл

@ -5,6 +5,14 @@
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<body> <body>
<script> <script>
test(t => {
const blob = new Blob(["Test Blob"]);
const url = URL.createObjectURL(blob);
assert_equals(new URL(url).origin, location.origin);
assert_true(url.includes(location.origin));
assert_true(url.startsWith('blob:{{location[scheme]}}://'));
}, 'Verify origin of Blob URI matches our origin');
async_test(t => { async_test(t => {
const frame = document.createElement('iframe'); const frame = document.createElement('iframe');
self.addEventListener('message', t.step_func(e => { self.addEventListener('message', t.step_func(e => {

Просмотреть файл

@ -1,7 +0,0 @@
<!doctype html>
<script>
self.addEventListener('message', e => {
let url = URL.createObjectURL(e.data.blob);
e.source.postMessage({url: url}, '*');
});
</script>

Просмотреть файл

@ -1,4 +0,0 @@
self.addEventListener('message', e => {
let url = URL.createObjectURL(e.data.blob);
self.postMessage({url: url});
});

Просмотреть файл

@ -1,71 +0,0 @@
// This method generates a number of tests verifying fetching of blob URLs,
// allowing the same tests to be used both with fetch() and XMLHttpRequest.
//
// |fetch_method| is only used in test names, and should describe the
// (javascript) method being used by the other two arguments (i.e. 'fetch' or 'XHR').
//
// |fetch_should_succeed| is a callback that is called with the Test and a URL.
// Fetching the URL is expected to succeed. The callback should return a promise
// resolved with whatever contents were fetched.
//
// |fetch_should_fail| similarly is a callback that is called with the Test, a URL
// to fetch, and optionally a method to use to do the fetch. If no method is
// specified the callback should use the 'GET' method. Fetching of these URLs is
// expected to fail, and the callback should return a promise that resolves iff
// fetching did indeed fail.
function fetch_tests(fetch_method, fetch_should_succeed, fetch_should_fail) {
const blob_contents = 'test blob contents';
const blob = new Blob([blob_contents]);
promise_test(t => {
const url = URL.createObjectURL(blob);
return fetch_should_succeed(t, url).then(text => {
assert_equals(text, blob_contents);
});
}, 'Blob URLs can be used in ' + fetch_method);
promise_test(t => {
const url = URL.createObjectURL(blob);
return fetch_should_succeed(t, url + '#fragment').then(text => {
assert_equals(text, blob_contents);
});
}, fetch_method + ' with a fragment should succeed');
promise_test(t => {
const url = URL.createObjectURL(blob);
URL.revokeObjectURL(url);
return fetch_should_fail(t, url);
}, fetch_method + ' of a revoked URL should fail');
promise_test(t => {
const url = URL.createObjectURL(blob);
URL.revokeObjectURL(url + '#fragment');
return fetch_should_succeed(t, url).then(text => {
assert_equals(text, blob_contents);
});
}, 'Only exact matches should revoke URLs, using ' + fetch_method);
promise_test(t => {
const url = URL.createObjectURL(blob);
return fetch_should_fail(t, url + '?querystring');
}, 'Appending a query string should cause ' + fetch_method + ' to fail');
promise_test(t => {
const url = URL.createObjectURL(blob);
return fetch_should_fail(t, url + '/path');
}, 'Appending a path should cause ' + fetch_method + ' to fail');
for (const method of ['HEAD', 'POST', 'DELETE', 'OPTIONS', 'PUT', 'CUSTOM']) {
const url = URL.createObjectURL(blob);
promise_test(t => {
return fetch_should_fail(t, url, method);
}, fetch_method + ' with method "' + method + '" should fail');
}
}

Просмотреть файл

@ -1,7 +0,0 @@
<!doctype html>
<script>
self.addEventListener('message', e => {
URL.revokeObjectURL(e.data.url);
e.source.postMessage('revoked', '*');
});
</script>

Просмотреть файл

@ -1,4 +0,0 @@
self.addEventListener('message', e => {
URL.revokeObjectURL(e.data.url);
self.postMessage('revoked');
});

Просмотреть файл

@ -1,31 +0,0 @@
<!doctype html>
<meta charset="utf-8">
<title>FileAPI Test: Verify behavior of Blob URL in unique origins</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<iframe id="sandboxed-iframe" sandbox="allow-scripts"></iframe>
<script>
const iframe_scripts = [
'resources/fetch-tests.js',
'url-format.any.js',
'url-with-xhr.any.js',
'url-with-fetch.any.js',
'url-with-tags.window.js',
];
let html = '<!doctype html>\n<meta charset="utf-8">\n<body>\n';
html = html + '<script src="/resources/testharness.js"></' + 'script>\n';
html = html + '<script>setup({"explicit_timeout": true});</' + 'script>\n';
for (const script of iframe_scripts)
html = html + '<script src="' + script + '"></' + 'script>\n';
const frame = document.querySelector('#sandboxed-iframe');
frame.setAttribute('srcdoc', html);
frame.setAttribute('style', 'display:none;');
fetch_tests_from_window(frame.contentWindow);
</script>

Просмотреть файл

@ -1,63 +0,0 @@
const blob = new Blob(['test']);
const file = new File(['test'], 'name');
test(() => {
const url_count = 5000;
let list = [];
for (let i = 0; i < url_count; ++i)
list.push(URL.createObjectURL(blob));
list.sort();
for (let i = 1; i < list.length; ++i)
assert_not_equals(list[i], list[i-1], 'generated Blob URLs should be unique');
}, 'Generated Blob URLs are unique');
test(() => {
const url = URL.createObjectURL(blob);
assert_equals(typeof url, 'string');
assert_true(url.startsWith('blob:'));
}, 'Blob URL starts with "blob:"');
test(() => {
const url = URL.createObjectURL(file);
assert_equals(typeof url, 'string');
assert_true(url.startsWith('blob:'));
}, 'Blob URL starts with "blob:" for Files');
test(() => {
const url = URL.createObjectURL(blob);
assert_equals(new URL(url).origin, location.origin);
if (location.origin !== 'null') {
assert_true(url.includes(location.origin));
assert_true(url.startsWith('blob:' + location.protocol));
}
}, 'Origin of Blob URL matches our origin');
test(() => {
const url = URL.createObjectURL(blob);
const url_record = new URL(url);
assert_equals(url_record.protocol, 'blob:');
assert_equals(url_record.origin, location.origin);
assert_equals(url_record.host, '', 'host should be an empty string');
assert_equals(url_record.port, '', 'port should be an empty string');
const uuid_path_re = /\/[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
assert_true(uuid_path_re.test(url_record.pathname), 'Path must end with a valid UUID');
if (location.origin !== 'null') {
const nested_url = new URL(url_record.pathname);
assert_equals(nested_url.origin, location.origin);
assert_equals(nested_url.pathname.search(uuid_path_re), 0, 'Path must be a valid UUID');
assert_true(url.includes(location.origin));
assert_true(url.startsWith('blob:' + location.protocol));
}
}, 'Blob URL parses correctly');
test(() => {
const url = URL.createObjectURL(file);
assert_equals(new URL(url).origin, location.origin);
if (location.origin !== 'null') {
assert_true(url.includes(location.origin));
assert_true(url.startsWith('blob:' + location.protocol));
}
}, 'Origin of Blob URL matches our origin for Files');

Просмотреть файл

@ -1,50 +0,0 @@
async_test(t => {
const run_result = 'test_script_OK';
const blob_contents = 'window.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.test_result, run_result);
});
document.body.appendChild(e);
}, 'Blob URLs can be used in <script> tags');
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);
frame.onload = t.step_func_done(() => {
assert_equals(frame.contentWindow.test_result, run_result);
});
}, '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' +
'<a id="block1"></a><div class="block"></div>\n' +
'<a id="block2"></a><div class="block"></div>';
const blob = new Blob([blob_contents], {type: 'text/html'});
const url = URL.createObjectURL(blob);
const frame = document.createElement('iframe');
frame.setAttribute('src', url + '#block2');
document.body.appendChild(frame);
frame.onload = t.step_func_done(() => {
assert_equals(frame.contentWindow.scrollY, 5000);
});
}, 'Blob URL fragment is implemented.');

Просмотреть файл

@ -1,56 +0,0 @@
<!doctype html>
<meta charset="utf-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<script>
promise_test(t => {
const blob_contents = 'test blob contents';
const blob = new Blob([blob_contents]);
const worker = new Worker('resources/create-helper.js');
let url;
return new Promise(resolve => {
worker.onmessage = e => resolve(e.data);
worker.postMessage({blob: blob});
}).then(data => {
url = data.url;
let result = fetch(url);
worker.terminate();
return result;
}).then(response => response.text()).then(text => {
assert_equals(text, blob_contents);
return new Promise(resolve => t.step_timeout(resolve, 100));
}).then(() => promise_rejects(t, new TypeError, fetch(url)));
}, 'Terminating worker revokes its URLs');
promise_test(t => {
const blob_contents = 'test blob contents';
const blob = new Blob([blob_contents]);
const frame = document.createElement('iframe');
frame.setAttribute('style', 'display:none;');
frame.src = 'resources/create-helper.html';
document.body.appendChild(frame);
let url;
return new Promise(resolve => {
frame.onload = t.step_func(e => {
resolve(e);
});
}).then(e => {
frame.contentWindow.postMessage({blob: blob}, '*');
return new Promise(resolve => {
self.addEventListener('message', t.step_func(e => {
if (e.source === frame.contentWindow) resolve(e);
}));
});
}).then(e => {
url = e.data.url;
let fetch_result = fetch(url);
document.body.removeChild(frame);
return fetch_result;
}).then(response => response.text()).then(text => {
assert_equals(text, blob_contents);
return new Promise(resolve => t.step_timeout(resolve, 100));
}).then(() => promise_rejects(t, new TypeError, fetch(url)));
}, 'Removing an iframe revokes its URLs');
</script>

Просмотреть файл

@ -1,53 +0,0 @@
// META: script=resources/fetch-tests.js
function fetch_should_succeed(test, request) {
return fetch(request).then(response => response.text());
}
function fetch_should_fail(test, url, method = 'GET') {
return promise_rejects(test, new TypeError, fetch(url, {method: method}));
}
fetch_tests('fetch', fetch_should_succeed, fetch_should_fail);
promise_test(t => {
const blob_contents = 'test blob contents';
const blob_type = 'image/png';
const blob = new Blob([blob_contents], {type: blob_type});
const url = URL.createObjectURL(blob);
return fetch(url).then(response => {
assert_equals(response.headers.get('Content-Type'), blob_type);
});
}, 'fetch should return Content-Type from Blob');
promise_test(t => {
const blob_contents = 'test blob contents';
const blob = new Blob([blob_contents]);
const url = URL.createObjectURL(blob);
const request = new Request(url);
// Revoke the object URL. Request should take a reference to the blob as
// soon as it receives it in open(), so the request succeeds even though we
// revoke the URL before calling fetch().
URL.revokeObjectURL(url);
return fetch_should_succeed(t, request).then(text => {
assert_equals(text, blob_contents);
});
}, 'Revoke blob URL after creating Request, will fetch');
promise_test(function(t) {
const blob_contents = 'test blob contents';
const blob = new Blob([blob_contents]);
const url = URL.createObjectURL(blob);
const result = fetch_should_succeed(t, url).then(text => {
assert_equals(text, blob_contents);
});
// Revoke the object URL. fetch should have already resolved the blob URL.
URL.revokeObjectURL(url);
return result;
}, 'Revoke blob URL after calling fetch, fetch should succeed');

Просмотреть файл

@ -1,68 +0,0 @@
// META: script=resources/fetch-tests.js
function xhr_should_succeed(test, url) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.onload = test.step_func(() => {
assert_equals(xhr.status, 200);
assert_equals(xhr.statusText, 'OK');
resolve(xhr.response);
});
xhr.onerror = () => reject('Got unexpected error event');
xhr.send();
});
}
function xhr_should_fail(test, url, method = 'GET') {
const xhr = new XMLHttpRequest();
xhr.open(method, url);
const result1 = new Promise((resolve, reject) => {
xhr.onload = () => reject('Got unexpected load event');
xhr.onerror = resolve;
});
const result2 = new Promise(resolve => {
xhr.onreadystatechange = test.step_func(() => {
if (xhr.readyState !== xhr.DONE) return;
assert_equals(xhr.status, 0);
resolve();
});
});
xhr.send();
return Promise.all([result1, result2]);
}
fetch_tests('XHR', xhr_should_succeed, xhr_should_fail);
async_test(t => {
const blob_contents = 'test blob contents';
const blob_type = 'image/png';
const blob = new Blob([blob_contents], {type: blob_type});
const url = URL.createObjectURL(blob);
const xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.onloadend = t.step_func_done(() => {
assert_equals(xhr.getResponseHeader('Content-Type'), blob_type);
});
xhr.send();
}, 'XHR should return Content-Type from Blob');
async_test(t => {
const blob_contents = 'test blob contents';
const blob = new Blob([blob_contents]);
const url = URL.createObjectURL(blob);
const xhr = new XMLHttpRequest();
xhr.open('GET', url);
// Revoke the object URL. XHR should take a reference to the blob as soon as
// it receives it in open(), so the request succeeds even though we revoke the
// URL before calling send().
URL.revokeObjectURL(url);
xhr.onload = t.step_func_done(() => {
assert_equals(xhr.response, blob_contents);
});
xhr.onerror = t.unreached_func('Got unexpected error event');
xhr.send();
}, 'Revoke blob URL after open(), will fetch');

Просмотреть файл

@ -0,0 +1,20 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>FileAPI Test: Creating Blob URL with Blob</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="JunChen Xia" href="mailto:xjconlyme@gmail.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
var blob = new Blob(["Test Blob"]);
test(function() {
var testBlob = window.URL.createObjectURL(blob);
assert_equals(typeof testBlob, "string", "Blob URI is typeof string");
assert_equals(testBlob.indexOf("blob"), 0, "Blob URI starts with 'blob'");
}, "Check if the Blob URI starts with 'blob' using createObjectURL()");
</script>

Просмотреть файл

@ -0,0 +1,29 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>FileAPI Test: Creating Blob URL via XMLHttpRequest</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="JunChen Xia" href="mailto:xjconlyme@gmail.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
async_test(function () {
var http = new XMLHttpRequest();
http.open("GET", "/images/blue96x96.png", true);
http.responseType = "blob";
http.onloadend = this.step_func(function(evt) {
var blobURI = window.URL.createObjectURL(http.response);
assert_true(http.response instanceof Blob, "XMLHttpRequest returns instanceof Blob");
assert_equals(typeof blobURI, "string", "Blob URI is typeof string");
assert_equals(blobURI.indexOf("blob"), 0, "Blob URI starts with 'blob'");
assert_equals(http.status, 200, "The status is 200");
assert_equals(http.statusText, "OK", "The status text is OK when XMLHttpRequest returns correct blob");
assert_equals(http.getResponseHeader("Content-Type"), "image/png", "The content type is image/png when set the respnose blob");
this.done();
});
http.send();
});
</script>

Просмотреть файл

@ -0,0 +1,40 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>IDL check of WebCrypto</title>
<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#crypto-interface">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/WebIDLParser.js></script>
<script src=/resources/idlharness.js></script>
</head>
<body>
<h1 class="instructions">Description</h1>
<p class="instructions">This test verifies that the implementations of the WebCrypto API match with its WebIDL definition.</p>
<div id='log'></div>
<script>
var file_input;
setup(function() {
var idl_array = new IdlArray();
var request = new XMLHttpRequest();
request.open("GET", "WebCryptoAPI.idl");
request.send();
request.onload = function() {
var idls = request.responseText;
idl_array.add_idls(idls);
idl_array.add_objects({"Crypto":["crypto"], "SubtleCrypto":["crypto.subtle"]});
idl_array.test();
done();
};
}, {explicit_done: true});
</script>

Просмотреть файл

@ -24,7 +24,7 @@ setup(function() {
var idl_array = new IdlArray(); var idl_array = new IdlArray();
var request = new XMLHttpRequest(); var request = new XMLHttpRequest();
request.open("GET", "../interfaces/WebCryptoAPI.idl"); request.open("GET", "WebCryptoAPI.idl");
request.send(); request.send();
request.onload = function() { request.onload = function() {
var idls = request.responseText; var idls = request.responseText;

Просмотреть файл

@ -2,7 +2,7 @@ importScripts("/resources/testharness.js");
importScripts("/resources/WebIDLParser.js", "/resources/idlharness.js"); importScripts("/resources/WebIDLParser.js", "/resources/idlharness.js");
var request = new XMLHttpRequest(); var request = new XMLHttpRequest();
request.open("GET", "../interfaces/WebCryptoAPI.idl"); request.open("GET", "WebCryptoAPI.idl");
request.send(); request.send();
request.onload = function() { request.onload = function() {
var idl_array = new IdlArray(); var idl_array = new IdlArray();

Просмотреть файл

@ -33,37 +33,37 @@
// The redirect response passes the access check. // The redirect response passes the access check.
async_test(t => { async_test(t => {
runTest(t, "/xhr/resources/access-control-basic-allow-star.py", runTest(t, "/XMLHttpRequest/resources/access-control-basic-allow-star.py",
withoutCredentials, succeeds) withoutCredentials, succeeds)
}, "Request without credentials is redirected to a cross-origin response with Access-Control-Allow-Origin=* (with star)"); }, "Request without credentials is redirected to a cross-origin response with Access-Control-Allow-Origin=* (with star)");
// The redirect response fails the access check because credentials were sent. // The redirect response fails the access check because credentials were sent.
async_test(t => { async_test(t => {
runTest(t, "/xhr/resources/access-control-basic-allow-star.py", runTest(t, "/XMLHttpRequest/resources/access-control-basic-allow-star.py",
withCredentials, fails) withCredentials, fails)
}, "Request with credentials is redirected to a cross-origin response with Access-Control-Allow-Origin=* (with star)"); }, "Request with credentials is redirected to a cross-origin response with Access-Control-Allow-Origin=* (with star)");
// The redirect response passes the access check. // The redirect response passes the access check.
async_test(t => { async_test(t => {
runTest(t, "/xhr/resources/access-control-basic-allow.py", runTest(t, "/XMLHttpRequest/resources/access-control-basic-allow.py",
withoutCredentials, succeeds) withoutCredentials, succeeds)
}, "Request without credentials is redirected to a cross-origin response with a specific Access-Control-Allow-Origin"); }, "Request without credentials is redirected to a cross-origin response with a specific Access-Control-Allow-Origin");
// The redirect response passes the access check. // The redirect response passes the access check.
async_test(t => { async_test(t => {
runTest(t, "/xhr/resources/access-control-basic-allow.py", runTest(t, "/XMLHttpRequest/resources/access-control-basic-allow.py",
withCredentials, succeeds) withCredentials, succeeds)
}, "Request with credentials is redirected to a cross-origin response with a specific Access-Control-Allow-Origin"); }, "Request with credentials is redirected to a cross-origin response with a specific Access-Control-Allow-Origin");
// forbidding credentials. The redirect response passes the access check. // forbidding credentials. The redirect response passes the access check.
async_test(t => { async_test(t => {
runTest(t, "/xhr/resources/access-control-basic-allow-no-credentials.py", runTest(t, "/XMLHttpRequest/resources/access-control-basic-allow-no-credentials.py",
withoutCredentials, succeeds) withoutCredentials, succeeds)
}, "Request without credentials is redirected to a cross-origin response with a specific Access-Control-Allow-Origin (no credentials)"); }, "Request without credentials is redirected to a cross-origin response with a specific Access-Control-Allow-Origin (no credentials)");
// forbidding credentials. The redirect response fails the access check. // forbidding credentials. The redirect response fails the access check.
async_test(t => { async_test(t => {
runTest(t, "/xhr/resources/access-control-basic-allow-no-credentials.py", runTest(t, "/XMLHttpRequest/resources/access-control-basic-allow-no-credentials.py",
withCredentials, fails) withCredentials, fails)
}, "Request with credentials is redirected to a cross-origin response with a specific Access-Control-Allow-Origin (no credentials)"); }, "Request with credentials is redirected to a cross-origin response with a specific Access-Control-Allow-Origin (no credentials)");
</script> </script>

Просмотреть файл

@ -11,7 +11,7 @@
function runTest(test, destination, parameters, customHeader, local, expectSuccess) { function runTest(test, destination, parameters, customHeader, local, expectSuccess) {
const xhr = new XMLHttpRequest(); const xhr = new XMLHttpRequest();
const url = (local ? get_host_info().HTTP_ORIGIN : get_host_info().HTTP_REMOTE_ORIGIN) + const url = (local ? get_host_info().HTTP_ORIGIN : get_host_info().HTTP_REMOTE_ORIGIN) +
"/xhr/resources/redirect-cors.py?location=" + destination + "&" + parameters; "/XMLHttpRequest/resources/redirect-cors.py?location=" + destination + "&" + parameters;
xhr.open("GET", url, true); xhr.open("GET", url, true);
@ -41,21 +41,21 @@
// The redirect response fails the access check because the redirect lacks a CORS header. // The redirect response fails the access check because the redirect lacks a CORS header.
async_test(t => { async_test(t => {
runTest(t, get_host_info().HTTP_REMOTE_ORIGIN + runTest(t, get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-allow-star.py", "", "/XMLHttpRequest/resources/access-control-basic-allow-star.py", "",
withoutCustomHeader, remote, fails) withoutCustomHeader, remote, fails)
}, "Request is redirected without CORS headers to a response with Access-Control-Allow-Origin=*"); }, "Request is redirected without CORS headers to a response with Access-Control-Allow-Origin=*");
// The redirect response passes the access check. // The redirect response passes the access check.
async_test(t => { async_test(t => {
runTest(t, get_host_info().HTTP_REMOTE_ORIGIN + runTest(t, get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-allow-star.py", "allow_origin=true", "/XMLHttpRequest/resources/access-control-basic-allow-star.py", "allow_origin=true",
withoutCustomHeader, remote, succeeds) withoutCustomHeader, remote, succeeds)
}, "Request is redirected to a response with Access-Control-Allow-Origin=*"); }, "Request is redirected to a response with Access-Control-Allow-Origin=*");
// The redirect response fails the access check because user info was sent. // The redirect response fails the access check because user info was sent.
async_test(t => { async_test(t => {
runTest(t, get_host_info().HTTP_REMOTE_ORIGIN.replace("http://", "http://username:password@") + runTest(t, get_host_info().HTTP_REMOTE_ORIGIN.replace("http://", "http://username:password@") +
"/xhr/resources/access-control-basic-allow-star.py", "allow_origin=true", "/XMLHttpRequest/resources/access-control-basic-allow-star.py", "allow_origin=true",
withoutCustomHeader, remote, fails) withoutCustomHeader, remote, fails)
}, "Request with user info is redirected to a response with Access-Control-Allow-Origin=*"); }, "Request with user info is redirected to a response with Access-Control-Allow-Origin=*");
@ -67,21 +67,21 @@
// The preflighted redirect response fails the access check because of preflighting. // The preflighted redirect response fails the access check because of preflighting.
async_test(t => { async_test(t => {
runTest(t, get_host_info().HTTP_REMOTE_ORIGIN + runTest(t, get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-allow-star.py", "/XMLHttpRequest/resources/access-control-basic-allow-star.py",
"allow_origin=true&redirect_preflight=true", withCustomHeader, remote, fails) "allow_origin=true&redirect_preflight=true", withCustomHeader, remote, fails)
}, "Preflighted request is redirected to a response with Access-Control-Allow-Origin=*"); }, "Preflighted request is redirected to a response with Access-Control-Allow-Origin=*");
// The preflighted redirect response fails the access check after successful preflighting. // The preflighted redirect response fails the access check after successful preflighting.
async_test(t => { async_test(t => {
runTest(t, get_host_info().HTTP_REMOTE_ORIGIN + runTest(t, get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-allow-star.py", "/XMLHttpRequest/resources/access-control-basic-allow-star.py",
"allow_origin=true&allow_header=x-test&redirect_preflight=true", "allow_origin=true&allow_header=x-test&redirect_preflight=true",
withCustomHeader, remote, fails) withCustomHeader, remote, fails)
}, "Preflighted request is redirected to a response with Access-Control-Allow-Origin=* and header allowed"); }, "Preflighted request is redirected to a response with Access-Control-Allow-Origin=* and header allowed");
// The same-origin redirect response passes the access check. // The same-origin redirect response passes the access check.
async_test(t => { async_test(t => {
runTest(t, get_host_info().HTTP_ORIGIN + "/xhr/resources/pass.txt", runTest(t, get_host_info().HTTP_ORIGIN + "/XMLHttpRequest/resources/pass.txt",
"", withCustomHeader, local, succeeds) "", withCustomHeader, local, succeeds)
}, "Request is redirected to a same-origin resource file"); }, "Request is redirected to a same-origin resource file");
</script> </script>

Просмотреть файл

@ -29,31 +29,31 @@
} }
test(t => { test(t => {
runSync(t, "resources/redirect-cors.py?location=" + get_host_info().HTTP_REMOTE_ORIGIN + runSync(t, "resources/redirect-cors.py?location=" + get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-allow.py") "/XMLHttpRequest/resources/access-control-basic-allow.py")
}, "Local sync redirect to remote origin"); }, "Local sync redirect to remote origin");
async_test(t => { async_test(t => {
runAsync(t, "resources/redirect-cors.py?location=" + get_host_info().HTTP_REMOTE_ORIGIN + runAsync(t, "resources/redirect-cors.py?location=" + get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-allow.py") "/XMLHttpRequest/resources/access-control-basic-allow.py")
}, "Local async redirect to remote origin"); }, "Local async redirect to remote origin");
test(t => { test(t => {
runSync(t, get_host_info().HTTP_REMOTE_ORIGIN + runSync(t, get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/redirect-cors.py?location=" + get_host_info().HTTP_ORIGIN + "/XMLHttpRequest/resources/redirect-cors.py?location=" + get_host_info().HTTP_ORIGIN +
"/xhr/resources/access-control-basic-allow.py&allow_origin=true") "/XMLHttpRequest/resources/access-control-basic-allow.py&allow_origin=true")
}, "Remote sync redirect to local origin"); }, "Remote sync redirect to local origin");
async_test(t => { async_test(t => {
runAsync(t, get_host_info().HTTP_REMOTE_ORIGIN + runAsync(t, get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/redirect-cors.py?location=" + get_host_info().HTTP_ORIGIN + "/XMLHttpRequest/resources/redirect-cors.py?location=" + get_host_info().HTTP_ORIGIN +
"/xhr/resources/access-control-basic-allow.py&allow_origin=true") "/XMLHttpRequest/resources/access-control-basic-allow.py&allow_origin=true")
}, "Remote async redirect to local origin"); }, "Remote async redirect to local origin");
test(t => { test(t => {
runSync(t, get_host_info().HTTP_REMOTE_ORIGIN + runSync(t, get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/redirect-cors.py?location=" + get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/redirect-cors.py?location=" + get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-allow.py&allow_origin=true") "/XMLHttpRequest/resources/access-control-basic-allow.py&allow_origin=true")
}, "Remote sync redirect to same remote origin"); }, "Remote sync redirect to same remote origin");
async_test(t => { async_test(t => {
runAsync(t, get_host_info().HTTP_REMOTE_ORIGIN + runAsync(t, get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/redirect-cors.py?location=" + get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/redirect-cors.py?location=" + get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-allow.py&allow_origin=true") "/XMLHttpRequest/resources/access-control-basic-allow.py&allow_origin=true")
}, "Remote async redirect to same remote origin"); }, "Remote async redirect to same remote origin");
</script> </script>
</body> </body>

Просмотреть файл

@ -8,7 +8,7 @@
</head> </head>
<body> <body>
<script type="text/javascript"> <script type="text/javascript">
const url = get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-origin-header.py"; const url = get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-origin-header.py";
async_test(function(test) { async_test(function(test) {
window.addEventListener("message", test.step_func(function(evt) { window.addEventListener("message", test.step_func(function(evt) {
if (evt.data == "ready") { if (evt.data == "ready") {

Просмотреть файл

@ -10,7 +10,7 @@
async_test(function(test) { async_test(function(test) {
const xhr = new XMLHttpRequest; const xhr = new XMLHttpRequest;
xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-origin-header.py", false); xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-origin-header.py", false);
xhr.send(); xhr.send();
assert_equals(xhr.responseText, "PASS: Cross-domain access allowed.\n" + assert_equals(xhr.responseText, "PASS: Cross-domain access allowed.\n" +

Просмотреть файл

@ -21,7 +21,7 @@
xhr.onerror = test.unreached_func("FAIL: Network error."); xhr.onerror = test.unreached_func("FAIL: Network error.");
xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-allow.py", true); "/XMLHttpRequest/resources/access-control-basic-allow.py", true);
xhr.send(); xhr.send();
}, "Basic async cross-origin XHR request"); }, "Basic async cross-origin XHR request");
</script> </script>

Просмотреть файл

@ -18,7 +18,7 @@
xhr.onerror = test.unreached_func("Unexpected error."); xhr.onerror = test.unreached_func("Unexpected error.");
xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-put-allow.py"); "/XMLHttpRequest/resources/access-control-basic-put-allow.py");
xhr.setRequestHeader("Content-Type", "text/plain; charset=UTF-8"); xhr.setRequestHeader("Content-Type", "text/plain; charset=UTF-8");
xhr.send("PASS: PUT data received"); xhr.send("PASS: PUT data received");
}, "Allow async PUT request"); }, "Allow async PUT request");

Просмотреть файл

@ -11,7 +11,7 @@
test(function() { test(function() {
const xhr = new XMLHttpRequest; const xhr = new XMLHttpRequest;
xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-put-allow.py", false); xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-put-allow.py", false);
xhr.setRequestHeader("Content-Type", "text/plain; charset=UTF-8"); xhr.setRequestHeader("Content-Type", "text/plain; charset=UTF-8");

Просмотреть файл

@ -20,7 +20,7 @@
firstRequest(); firstRequest();
}); });
xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/reset-token.py?token=" + uuid, true); xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/reset-token.py?token=" + uuid, true);
xhr.send(); xhr.send();
function firstRequest() { function firstRequest() {
@ -28,7 +28,7 @@
assert_equals(xhr.responseText, "PASS: First PUT request."); assert_equals(xhr.responseText, "PASS: First PUT request.");
secondRequest(); secondRequest();
}); });
xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-preflight-cache-invalidation.py?token=" + uuid, true); xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py?token=" + uuid, true);
xhr.send(); xhr.send();
} }
@ -38,7 +38,7 @@
test.done(); test.done();
}); });
// Send a header not included in the inital cache. // Send a header not included in the inital cache.
xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-preflight-cache-invalidation.py?token=" + uuid, true); xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py?token=" + uuid, true);
xhr.setRequestHeader("x-test", "headerValue"); xhr.setRequestHeader("x-test", "headerValue");
xhr.send(); xhr.send();
} }

Просмотреть файл

@ -20,7 +20,7 @@
firstRequest(); firstRequest();
}); });
xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/reset-token.py?token=" + uuid, true); xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/reset-token.py?token=" + uuid, true);
xhr.send(); xhr.send();
function firstRequest() { function firstRequest() {
@ -28,7 +28,7 @@
assert_equals(xhr.responseText, "PASS: First PUT request."); assert_equals(xhr.responseText, "PASS: First PUT request.");
secondRequest(); secondRequest();
}); });
xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-preflight-cache-invalidation.py?token=" + uuid, true); xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py?token=" + uuid, true);
xhr.send(); xhr.send();
} }
@ -38,7 +38,7 @@
test.done(); test.done();
}); });
// Send a header not included in the inital cache. // Send a header not included in the inital cache.
xhr.open("XMETHOD", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-preflight-cache-invalidation.py?token=" + uuid, true); xhr.open("XMETHOD", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py?token=" + uuid, true);
xhr.send(); xhr.send();
} }
}, "Preflight cache should be invalidated by changed method"); }, "Preflight cache should be invalidated by changed method");

Просмотреть файл

@ -20,7 +20,7 @@
firstRequest(); firstRequest();
}); });
xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/reset-token.py?token=" + uuid, true); xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/reset-token.py?token=" + uuid, true);
xhr.send(); xhr.send();
function firstRequest() { function firstRequest() {
@ -28,7 +28,7 @@
assert_equals(xhr.responseText, "PASS: First PUT request."); assert_equals(xhr.responseText, "PASS: First PUT request.");
step_timeout(secondRequest, 3000); // 3 seconds step_timeout(secondRequest, 3000); // 3 seconds
}); });
xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-preflight-cache-timeout.py?token=" + uuid, true); xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-preflight-cache-timeout.py?token=" + uuid, true);
xhr.send(); xhr.send();
} }
@ -37,7 +37,7 @@
assert_equals(xhr.responseText, "PASS: Second OPTIONS request was sent."); assert_equals(xhr.responseText, "PASS: Second OPTIONS request was sent.");
test.done(); test.done();
}); });
xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-preflight-cache-timeout.py?token=" + uuid, true); xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-preflight-cache-timeout.py?token=" + uuid, true);
xhr.send(); xhr.send();
} }
}, "Preflight cache should be invalidated on timeout"); }, "Preflight cache should be invalidated on timeout");

Просмотреть файл

@ -20,7 +20,7 @@
firstRequest(); firstRequest();
}); });
xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/reset-token.py?token=" + uuid, true); xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/reset-token.py?token=" + uuid, true);
xhr.send(); xhr.send();
function firstRequest() { function firstRequest() {
@ -28,7 +28,7 @@
assert_equals(xhr.responseText, "PASS: First PUT request."); assert_equals(xhr.responseText, "PASS: First PUT request.");
secondRequest(); secondRequest();
}); });
xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-preflight-cache.py?token=" + uuid, true); xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-preflight-cache.py?token=" + uuid, true);
xhr.send(); xhr.send();
} }
@ -36,7 +36,7 @@
xhr.onload = test.step_func_done(function() { xhr.onload = test.step_func_done(function() {
assert_equals(xhr.responseText, "PASS: Second PUT request. Preflight worked."); assert_equals(xhr.responseText, "PASS: Second PUT request. Preflight worked.");
}); });
xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-preflight-cache.py?token=" + uuid, true); xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-preflight-cache.py?token=" + uuid, true);
xhr.send(); xhr.send();
} }
}, "Preflight cache should allow second request"); }, "Preflight cache should allow second request");

Просмотреть файл

@ -11,7 +11,7 @@
const xhr = new XMLHttpRequest; const xhr = new XMLHttpRequest;
test(function(test) { test(function(test) {
xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-allow-star.py", false); xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-allow-star.py", false);
xhr.send(); xhr.send();

Просмотреть файл

@ -11,7 +11,7 @@
test(function() { test(function() {
const xhr = new XMLHttpRequest; const xhr = new XMLHttpRequest;
xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-allow.py", false); xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-allow.py", false);
xhr.send(); xhr.send();

Просмотреть файл

@ -11,7 +11,7 @@
test(function() { test(function() {
const xhr = new XMLHttpRequest; const xhr = new XMLHttpRequest;
xhr.open("POST", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-cors-safelisted-request-headers.py", false); xhr.open("POST", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py", false);
xhr.setRequestHeader("Accept", "*"); xhr.setRequestHeader("Accept", "*");
xhr.setRequestHeader("Accept-Language", "ru"); xhr.setRequestHeader("Accept-Language", "ru");

Просмотреть файл

@ -12,7 +12,7 @@
const xhr = new XMLHttpRequest; const xhr = new XMLHttpRequest;
xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-whitelist-response-headers.py", false); "/XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py", false);
xhr.send(); xhr.send();
assert_not_equals(xhr.getResponseHeader("cache-control"), null); assert_not_equals(xhr.getResponseHeader("cache-control"), null);

Просмотреть файл

@ -8,7 +8,7 @@
</head> </head>
<body> <body>
<script type="text/javascript"> <script type="text/javascript">
const path = "/xhr/resources/access-control-basic-denied.py"; const path = "/XMLHttpRequest/resources/access-control-basic-denied.py";
test(function() { test(function() {
const xhr = new XMLHttpRequest; const xhr = new XMLHttpRequest;

Просмотреть файл

@ -12,7 +12,7 @@
const xhr = new XMLHttpRequest; const xhr = new XMLHttpRequest;
xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-options-not-supported.py", false); "/XMLHttpRequest/resources/access-control-basic-options-not-supported.py", false);
// Non-CORS-safelisted header // Non-CORS-safelisted header
xhr.setRequestHeader("x-test", "foobar"); xhr.setRequestHeader("x-test", "foobar");

Просмотреть файл

@ -12,14 +12,14 @@
const xhr = new XMLHttpRequest; const xhr = new XMLHttpRequest;
xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-put-allow.py", false); "/XMLHttpRequest/resources/access-control-basic-put-allow.py", false);
xhr.setRequestHeader("Content-Type", "text/plain"); xhr.setRequestHeader("Content-Type", "text/plain");
xhr.send("PASS: PUT data received"); xhr.send("PASS: PUT data received");
assert_equals(xhr.responseText, "PASS: Cross-domain access allowed.\nPASS: PUT data received"); assert_equals(xhr.responseText, "PASS: Cross-domain access allowed.\nPASS: PUT data received");
xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-put-allow.py", false); "/XMLHttpRequest/resources/access-control-basic-put-allow.py", false);
xhr.setRequestHeader("Content-Type", "application/xml"); xhr.setRequestHeader("Content-Type", "application/xml");
try { try {

Просмотреть файл

@ -11,7 +11,7 @@
async_test(function(test) { async_test(function(test) {
const xhr = new XMLHttpRequest; const xhr = new XMLHttpRequest;
xhr.open("POST", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/access-control-basic-options-not-supported.py"); xhr.open("POST", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-options-not-supported.py");
xhr.onerror = test.unreached_func("Network error."); xhr.onerror = test.unreached_func("Network error.");

Просмотреть файл

@ -12,7 +12,7 @@
const xhr = new XMLHttpRequest; const xhr = new XMLHttpRequest;
xhr.open("POST", get_host_info().HTTP_ORIGIN + xhr.open("POST", get_host_info().HTTP_ORIGIN +
"/xhr/resources/access-control-basic-options-not-supported.py", false); "/XMLHttpRequest/resources/access-control-basic-options-not-supported.py", false);
xhr.setRequestHeader("Content-Type", "application/xml"); xhr.setRequestHeader("Content-Type", "application/xml");
@ -25,7 +25,7 @@
const xhr = new XMLHttpRequest; const xhr = new XMLHttpRequest;
xhr.open("POST", get_host_info().HTTP_REMOTE_ORIGIN + xhr.open("POST", get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-options-not-supported.py", false); "/XMLHttpRequest/resources/access-control-basic-options-not-supported.py", false);
xhr.setRequestHeader("Content-Type", "application/xml"); xhr.setRequestHeader("Content-Type", "application/xml");

Просмотреть файл

@ -23,7 +23,7 @@
xhr.onload = test.unreached_func("Request succeeded unexpectedly"); xhr.onload = test.unreached_func("Request succeeded unexpectedly");
xhr.open("FOO", get_host_info().HTTP_REMOTE_ORIGIN + xhr.open("FOO", get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-basic-denied.py"); "/XMLHttpRequest/resources/access-control-basic-denied.py");
xhr.send(); xhr.send();
}); });
</script> </script>

Просмотреть файл

@ -11,7 +11,7 @@
<script type="text/javascript"> <script type="text/javascript">
const uuid = token(); const uuid = token();
const url = get_host_info().HTTP_REMOTE_ORIGIN + const url = get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-preflight-denied.py?token=" + uuid; "/XMLHttpRequest/resources/access-control-preflight-denied.py?token=" + uuid;
async_test((test) => { async_test((test) => {
let xhr = new XMLHttpRequest; let xhr = new XMLHttpRequest;

Просмотреть файл

@ -11,7 +11,7 @@
<script type="text/javascript"> <script type="text/javascript">
const uuid = token(); const uuid = token();
const url = get_host_info().HTTP_REMOTE_ORIGIN + const url = get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-preflight-denied.py?token=" + uuid; "/XMLHttpRequest/resources/access-control-preflight-denied.py?token=" + uuid;
async_test((test) => { async_test((test) => {
let xhr = new XMLHttpRequest; let xhr = new XMLHttpRequest;

Просмотреть файл

@ -11,7 +11,7 @@
<script type="text/javascript"> <script type="text/javascript">
const uuid = token(); const uuid = token();
const url = get_host_info().HTTP_REMOTE_ORIGIN + const url = get_host_info().HTTP_REMOTE_ORIGIN +
"/xhr/resources/access-control-preflight-denied.py?token=" + uuid; "/XMLHttpRequest/resources/access-control-preflight-denied.py?token=" + uuid;
async_test((test) => { async_test((test) => {
let xhr = new XMLHttpRequest; let xhr = new XMLHttpRequest;

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше