Bug 1124311 - Update web-platform-tests to revision 412773b71c81d7356636f698e86d7b544cf48fcb, a=testonly
authorJames Graham <james@hoppipolla.co.uk>
Wed, 21 Jan 2015 11:57:39 +0000
changeset 225482 e55e8a839c8dc78cc8c20b835041ac91f12c42bb
parent 225481 ad720dc5a67c8ef85d8086dfedbaa3bb4b51a54c
child 225483 0620532fade54663f3980bdcabb52201d3566ccb
push id28163
push userphilringnalda@gmail.com
push dateSat, 24 Jan 2015 16:27:39 +0000
treeherdermozilla-central@1cf171c1a177 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstestonly
bugs1124311
milestone38.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1124311 - Update web-platform-tests to revision 412773b71c81d7356636f698e86d7b544cf48fcb, a=testonly
testing/web-platform/meta/MANIFEST.json
testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_001.html
testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_002.html
testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_003.html
testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_004.html
testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_005.html
testing/web-platform/tests/FileAPI/Blob-XHR-revoke.html
testing/web-platform/tests/FileAPI/Blob-close.html
testing/web-platform/tests/FileAPI/Blob-constructor.html
testing/web-platform/tests/FileAPI/Blob-slice.html
testing/web-platform/tests/FileAPI/BlobURL/test1-manual.html
testing/web-platform/tests/FileAPI/BlobURL/test1_manual.html
testing/web-platform/tests/FileAPI/BlobURL/test2-manual.html
testing/web-platform/tests/FileAPI/BlobURL/test2_manual.html
testing/web-platform/tests/FileAPI/BlobURL/test3-manual.html
testing/web-platform/tests/FileAPI/BlobURL/test3_manual.html
testing/web-platform/tests/FileAPI/File-constructor.html
testing/web-platform/tests/FileAPI/FileReader-interface/.gitkeep
testing/web-platform/tests/FileAPI/FileReader-interface/filereader_abort.html
testing/web-platform/tests/FileAPI/FileReader-interface/filereader_error.html
testing/web-platform/tests/FileAPI/FileReader-interface/filereader_file-manual.html
testing/web-platform/tests/FileAPI/FileReader-interface/filereader_file_img-manual.html
testing/web-platform/tests/FileAPI/FileReader-interface/filereader_readAsArrayBuffer.html
testing/web-platform/tests/FileAPI/FileReader-interface/filereader_readAsDataURL.html
testing/web-platform/tests/FileAPI/FileReader-interface/filereader_readAsText.html
testing/web-platform/tests/FileAPI/FileReader-interface/filereader_readystate.html
testing/web-platform/tests/FileAPI/FileReader-interface/filereader_result.html
testing/web-platform/tests/FileAPI/FileReader-interface/support/blue-100x100.png
testing/web-platform/tests/FileAPI/FileReader/Determining-Encoding.html
testing/web-platform/tests/FileAPI/FileReader/test_errors-manual.html
testing/web-platform/tests/FileAPI/FileReader/test_errors_manual.html
testing/web-platform/tests/FileAPI/blob/Blob-XHR-revoke.html
testing/web-platform/tests/FileAPI/blob/Blob-close.html
testing/web-platform/tests/FileAPI/blob/Blob-constructor.html
testing/web-platform/tests/FileAPI/blob/Blob-slice.html
testing/web-platform/tests/FileAPI/file/File-constructor.html
testing/web-platform/tests/FileAPI/fileReader.html
testing/web-platform/tests/FileAPI/filelist-section/filelist_multiple_selected_files-manual.html
testing/web-platform/tests/FileAPI/reading-data-section/Determining-Encoding.html
testing/web-platform/tests/FileAPI/reading-data-section/FileReader-multiple-reads.html
testing/web-platform/tests/FileAPI/reading-data-section/filereader_abort.html
testing/web-platform/tests/FileAPI/reading-data-section/filereader_error.html
testing/web-platform/tests/FileAPI/reading-data-section/filereader_file-manual.html
testing/web-platform/tests/FileAPI/reading-data-section/filereader_file_img-manual.html
testing/web-platform/tests/FileAPI/reading-data-section/filereader_readAsArrayBuffer.html
testing/web-platform/tests/FileAPI/reading-data-section/filereader_readAsDataURL.html
testing/web-platform/tests/FileAPI/reading-data-section/filereader_readAsText.html
testing/web-platform/tests/FileAPI/reading-data-section/filereader_readystate.html
testing/web-platform/tests/FileAPI/reading-data-section/filereader_result.html
testing/web-platform/tests/FileAPI/reading-data-section/support/blue-100x100.png
testing/web-platform/tests/FileAPI/url/url_createobjecturl_blob.html
testing/web-platform/tests/FileAPI/url/url_createobjecturl_file-manual.html
testing/web-platform/tests/FileAPI/url/url_createobjecturl_file_img-manual.html
testing/web-platform/tests/FileAPI/url/url_xmlhttprequest.html
testing/web-platform/tests/FileAPI/url/url_xmlhttprequest_img-ref.html
testing/web-platform/tests/FileAPI/url/url_xmlhttprequest_img.html
testing/web-platform/tests/README.md
testing/web-platform/tests/WebCryptoAPI/test_getRandomValues.html
testing/web-platform/tests/WebIDL/invalid/idl/enum.widl
testing/web-platform/tests/WebIDL/invalid/idl/module.widl
testing/web-platform/tests/WebIDL/invalid/idl/nonnullableany.widl
testing/web-platform/tests/WebIDL/invalid/idl/nonnullableobjects.widl
testing/web-platform/tests/WebIDL/invalid/idl/raises.widl
testing/web-platform/tests/WebIDL/invalid/idl/scopedname.widl
testing/web-platform/tests/WebIDL/invalid/idl/sequenceAsAttribute.widl
testing/web-platform/tests/WebIDL/invalid/idl/special-omittable.widl
testing/web-platform/tests/WebIDL/invalid/idl/stringconstants.idl
testing/web-platform/tests/WebIDL/readme.txt
testing/web-platform/tests/WebIDL/tests/submissions/W3C/invalid/idl/enum.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/invalid/idl/module.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/invalid/idl/nonnullableany.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/invalid/idl/nonnullableobjects.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/invalid/idl/raises.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/invalid/idl/scopedname.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/invalid/idl/sequenceAsAttribute.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/invalid/idl/special-omittable.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/invalid/idl/stringconstants.idl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/readme.txt
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/allowany.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/array.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/attributes.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/callback.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/caller.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/constants.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/constructor.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/dictionary-inherits.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/dictionary.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/documentation-dos.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/documentation.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/enum.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/equivalent-decl.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/exception-inheritance.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/exception.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/getter-setter.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/identifier-qualified-names.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/implements.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/indexed-properties.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/inherits-getter.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/interface-inherits.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/iterator.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/namedconstructor.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/nointerfaceobject.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/nullable.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/nullableobjects.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/operation-optional-arg.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/overloading.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/overridebuiltins.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/partial-interface.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/primitives.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/prototyperoot.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/putforwards.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/reg-operations.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/replaceable.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/sequence.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/serializer.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/static.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/stringifier-attribute.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/stringifier-custom.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/stringifier.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/treatasnull.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/treatasundefined.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/typedef.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/typesuffixes.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/uniontype.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/idl/variadic-operations.widl
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/allowany.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/array.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/attributes.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/callback.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/caller.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/constants.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/constructor.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/dictionary-inherits.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/dictionary.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/documentation-dos.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/documentation.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/enum.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/equivalent-decl.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/exception-inheritance.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/exception.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/getter-setter.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/identifier-qualified-names.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/implements.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/indexed-properties.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/inherits-getter.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/interface-inherits.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/iterator.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/module.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/namedconstructor.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/namespaceobject.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/nointerfaceobject.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/nullable.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/nullableobjects.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/operation-optional-arg.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/overloading.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/overridebuiltins.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/partial-interface.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/primitives.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/prototyperoot.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/putforwards.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/reg-operations.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/replaceable.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/sequence.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/serializer.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/special-omittable.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/static.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/stringifier-attribute.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/stringifier-custom.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/stringifier.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/treatasnull.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/treatasundefined.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/typedef.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/typesuffixes.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/uniontype.widlprocxml
testing/web-platform/tests/WebIDL/tests/submissions/W3C/valid/xml/variadic-operations.widlprocxml
testing/web-platform/tests/WebIDL/valid/idl/allowany.widl
testing/web-platform/tests/WebIDL/valid/idl/array.widl
testing/web-platform/tests/WebIDL/valid/idl/attributes.widl
testing/web-platform/tests/WebIDL/valid/idl/callback.widl
testing/web-platform/tests/WebIDL/valid/idl/caller.widl
testing/web-platform/tests/WebIDL/valid/idl/constants.widl
testing/web-platform/tests/WebIDL/valid/idl/constructor.widl
testing/web-platform/tests/WebIDL/valid/idl/dictionary-inherits.widl
testing/web-platform/tests/WebIDL/valid/idl/dictionary.widl
testing/web-platform/tests/WebIDL/valid/idl/documentation-dos.widl
testing/web-platform/tests/WebIDL/valid/idl/documentation.widl
testing/web-platform/tests/WebIDL/valid/idl/enum.widl
testing/web-platform/tests/WebIDL/valid/idl/equivalent-decl.widl
testing/web-platform/tests/WebIDL/valid/idl/exception-inheritance.widl
testing/web-platform/tests/WebIDL/valid/idl/exception.widl
testing/web-platform/tests/WebIDL/valid/idl/getter-setter.widl
testing/web-platform/tests/WebIDL/valid/idl/identifier-qualified-names.widl
testing/web-platform/tests/WebIDL/valid/idl/implements.widl
testing/web-platform/tests/WebIDL/valid/idl/indexed-properties.widl
testing/web-platform/tests/WebIDL/valid/idl/inherits-getter.widl
testing/web-platform/tests/WebIDL/valid/idl/interface-inherits.widl
testing/web-platform/tests/WebIDL/valid/idl/iterator.widl
testing/web-platform/tests/WebIDL/valid/idl/namedconstructor.widl
testing/web-platform/tests/WebIDL/valid/idl/nointerfaceobject.widl
testing/web-platform/tests/WebIDL/valid/idl/nullable.widl
testing/web-platform/tests/WebIDL/valid/idl/nullableobjects.widl
testing/web-platform/tests/WebIDL/valid/idl/operation-optional-arg.widl
testing/web-platform/tests/WebIDL/valid/idl/overloading.widl
testing/web-platform/tests/WebIDL/valid/idl/overridebuiltins.widl
testing/web-platform/tests/WebIDL/valid/idl/partial-interface.widl
testing/web-platform/tests/WebIDL/valid/idl/primitives.widl
testing/web-platform/tests/WebIDL/valid/idl/prototyperoot.widl
testing/web-platform/tests/WebIDL/valid/idl/putforwards.widl
testing/web-platform/tests/WebIDL/valid/idl/reg-operations.widl
testing/web-platform/tests/WebIDL/valid/idl/replaceable.widl
testing/web-platform/tests/WebIDL/valid/idl/sequence.widl
testing/web-platform/tests/WebIDL/valid/idl/serializer.widl
testing/web-platform/tests/WebIDL/valid/idl/static.widl
testing/web-platform/tests/WebIDL/valid/idl/stringifier-attribute.widl
testing/web-platform/tests/WebIDL/valid/idl/stringifier-custom.widl
testing/web-platform/tests/WebIDL/valid/idl/stringifier.widl
testing/web-platform/tests/WebIDL/valid/idl/treatasnull.widl
testing/web-platform/tests/WebIDL/valid/idl/treatasundefined.widl
testing/web-platform/tests/WebIDL/valid/idl/typedef.widl
testing/web-platform/tests/WebIDL/valid/idl/typesuffixes.widl
testing/web-platform/tests/WebIDL/valid/idl/uniontype.widl
testing/web-platform/tests/WebIDL/valid/idl/variadic-operations.widl
testing/web-platform/tests/WebIDL/valid/xml/allowany.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/array.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/attributes.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/callback.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/caller.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/constants.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/constructor.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/dictionary-inherits.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/dictionary.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/documentation-dos.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/documentation.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/enum.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/equivalent-decl.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/exception-inheritance.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/exception.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/getter-setter.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/identifier-qualified-names.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/implements.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/indexed-properties.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/inherits-getter.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/interface-inherits.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/iterator.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/module.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/namedconstructor.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/namespaceobject.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/nointerfaceobject.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/nullable.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/nullableobjects.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/operation-optional-arg.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/overloading.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/overridebuiltins.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/partial-interface.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/primitives.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/prototyperoot.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/putforwards.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/reg-operations.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/replaceable.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/sequence.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/serializer.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/special-omittable.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/static.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/stringifier-attribute.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/stringifier-custom.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/stringifier.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/treatasnull.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/treatasundefined.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/typedef.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/typesuffixes.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/uniontype.widlprocxml
testing/web-platform/tests/WebIDL/valid/xml/variadic-operations.widlprocxml
testing/web-platform/tests/XMLHttpRequest/XMLHttpRequest-withCredentials.html
testing/web-platform/tests/XMLHttpRequest/XMLHttpRequest-withCredentials.js
testing/web-platform/tests/XMLHttpRequest/XMLHttpRequest-withCredentials.worker.js
testing/web-platform/tests/XMLHttpRequest/withcredentials-set.htm
testing/web-platform/tests/XMLHttpRequest/withcredentials-wrong-state.htm
testing/web-platform/tests/conformance-checkers/html/elements/picture/build.py
testing/web-platform/tests/conformance-checkers/html/elements/picture/img-srcset-w-no-sizes-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/picture-isvalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/source-srcset-w-no-sizes-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/source-type-srcset-w-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-h-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-w-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-w-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-non-integer-w-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-plus-w-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-scientific-notation-w-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-w-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-uppercase-w-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-h-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-no-descriptor-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-h-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-w-novalid.html
testing/web-platform/tests/conformance-checkers/html/elements/picture/srcset-microsyntax-zero-w-novalid.html
testing/web-platform/tests/conformance-checkers/html/media-queries/generate.py
testing/web-platform/tests/conformance-checkers/html/mime-types/generate.py
testing/web-platform/tests/conformance-checkers/html/tools/ins-del-datetime.py
testing/web-platform/tests/conformance-checkers/html/tools/meta-extensions
testing/web-platform/tests/conformance-checkers/html/tools/meta-name.py
testing/web-platform/tests/conformance-checkers/html/tools/url.py
testing/web-platform/tests/conformance-checkers/tools/ins-del-datetime.py
testing/web-platform/tests/conformance-checkers/tools/meta-extensions
testing/web-platform/tests/conformance-checkers/tools/meta-name.py
testing/web-platform/tests/conformance-checkers/tools/picture.py
testing/web-platform/tests/conformance-checkers/tools/url.py
testing/web-platform/tests/dom/events/Event-propagation.html
testing/web-platform/tests/dom/interfaces.html
testing/web-platform/tests/dom/nodes/Document-contentType/resources/style.css
testing/web-platform/tests/dom/nodes/Document-createElement-namespace.html
testing/web-platform/tests/dom/nodes/Element-childElement-null.svg
testing/web-platform/tests/dom/nodes/Element-childElementCount.svg
testing/web-platform/tests/dom/nodes/Element-childElementCount.xhtml
testing/web-platform/tests/dom/nodes/Element-classlist.html
testing/web-platform/tests/dom/nodes/Element-matches.html
testing/web-platform/tests/dom/nodes/Element-matches.js
testing/web-platform/tests/dom/nodes/Element-previousElementSibling.svg
testing/web-platform/tests/dom/nodes/Element-previousElementSibling.xhtml
testing/web-platform/tests/dom/nodes/Element-siblingElement-null.svg
testing/web-platform/tests/dom/nodes/ParentNode-querySelector-All.js
testing/web-platform/tests/dom/ranges/Range-cloneContents.html
testing/web-platform/tests/dom/ranges/Range-cloneRange.html
testing/web-platform/tests/dom/ranges/Range-collapse.html
testing/web-platform/tests/dom/ranges/Range-commonAncestorContainer.html
testing/web-platform/tests/dom/ranges/Range-compareBoundaryPoints.html
testing/web-platform/tests/dom/ranges/Range-comparePoint.html
testing/web-platform/tests/dom/ranges/Range-deleteContents.html
testing/web-platform/tests/dom/ranges/Range-extractContents.html
testing/web-platform/tests/dom/ranges/Range-intersectsNode.html
testing/web-platform/tests/dom/ranges/Range-isPointInRange.html
testing/web-platform/tests/dom/ranges/Range-mutations.html
testing/web-platform/tests/dom/ranges/Range-set.html
testing/web-platform/tests/dom/ranges/Range-surroundContents.html
testing/web-platform/tests/dom/ranges/Range-test-iframe.html
testing/web-platform/tests/hr-time/basic.html
testing/web-platform/tests/hr-time/test_cross_frame_start.html
testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/disabled-elements-01.html
testing/web-platform/tests/images/blue96x96.png
testing/web-platform/tests/js/builtins/Object.prototype.freeze.html
testing/web-platform/tests/js/builtins/Object.prototype.preventExtensions.html
testing/web-platform/tests/js/builtins/Object.prototype.seal.html
testing/web-platform/tests/media-source/manifest.txt
testing/web-platform/tests/media-source/mediasource-addsourcebuffer.html
testing/web-platform/tests/media-source/mediasource-append-buffer.html
testing/web-platform/tests/media-source/mediasource-appendwindow.html
testing/web-platform/tests/media-source/mediasource-buffered.html
testing/web-platform/tests/media-source/mediasource-closed.html
testing/web-platform/tests/media-source/mediasource-duration-boundaryconditions.html
testing/web-platform/tests/media-source/mediasource-is-type-supported.html
testing/web-platform/tests/media-source/mediasource-remove.html
testing/web-platform/tests/media-source/mediasource-removesourcebuffer.html
testing/web-platform/tests/media-source/mediasource-sequencemode-append-buffer.html
testing/web-platform/tests/media-source/mediasource-timestamp-offset.html
testing/web-platform/tests/navigation-timing/resources/blank_page_meta_redirect.html
testing/web-platform/tests/navigation-timing/resources/blank_page_unload.html
testing/web-platform/tests/navigation-timing/test_document_open.html
testing/web-platform/tests/navigation-timing/test_navigate_within_document.html
testing/web-platform/tests/navigation-timing/test_navigation_attributes_exist.html
testing/web-platform/tests/navigation-timing/test_navigation_redirectCount_none.html
testing/web-platform/tests/navigation-timing/test_navigation_type_backforward.html
testing/web-platform/tests/navigation-timing/test_navigation_type_enums.html
testing/web-platform/tests/navigation-timing/test_navigation_type_reload.html
testing/web-platform/tests/navigation-timing/test_no_previous_document.html
testing/web-platform/tests/navigation-timing/test_performance_attributes_exist.html
testing/web-platform/tests/navigation-timing/test_performance_attributes_exist_in_object.html
testing/web-platform/tests/navigation-timing/test_readwrite.html
testing/web-platform/tests/navigation-timing/test_timing_attributes_exist.html
testing/web-platform/tests/navigation-timing/test_timing_attributes_order.html
testing/web-platform/tests/navigation-timing/test_timing_client_redirect.html
testing/web-platform/tests/navigation-timing/test_timing_reload.html
testing/web-platform/tests/navigation-timing/test_timing_server_redirect.html
testing/web-platform/tests/navigation-timing/test_unique_performance_objects.html
testing/web-platform/tests/page-visibility/idlharness.html
testing/web-platform/tests/page-visibility/resources/pagevistestharness.js
testing/web-platform/tests/page-visibility/test_minimize-manual.html
testing/web-platform/tests/page-visibility/test_tab_state_change-manual.html
testing/web-platform/tests/resources/webidl2/test/widlproc/src/os.h
testing/web-platform/tests/selectors-api/tests/submissions/Opera/Element-matches.html
testing/web-platform/tests/selectors-api/tests/submissions/Opera/Element-matches.js
testing/web-platform/tests/selectors-api/tests/submissions/Opera/ParentNode-find-findAll.html
testing/web-platform/tests/selectors-api/tests/submissions/Opera/ParentNode-find-findAll.js
testing/web-platform/tests/selectors-api/tests/submissions/Opera/ParentNode-query-queryAll.html
testing/web-platform/tests/selectors-api/tests/submissions/Opera/ParentNode-query-queryAll.js
testing/web-platform/tests/selectors-api/tests/submissions/Opera/level2-lib.js
testing/web-platform/tests/tools/scripts/lint.whitelist
testing/web-platform/tests/url/interfaces.html
testing/web-platform/tests/user-timing/idlharness.html
testing/web-platform/tests/user-timing/resources/webperftestharnessextension.js
testing/web-platform/tests/user-timing/test_user_timing_clear_marks.html
testing/web-platform/tests/user-timing/test_user_timing_clear_measures.html
testing/web-platform/tests/user-timing/test_user_timing_exists.html
testing/web-platform/tests/user-timing/test_user_timing_mark.html
testing/web-platform/tests/user-timing/test_user_timing_mark_and_measure_exception_when_invoke_without_parameter.html
testing/web-platform/tests/user-timing/test_user_timing_mark_exceptions.html
testing/web-platform/tests/user-timing/test_user_timing_mark_with_name_of_navigation_timing_optional_attribute.html
testing/web-platform/tests/user-timing/test_user_timing_measure.html
testing/web-platform/tests/user-timing/test_user_timing_measure_exceptions.html
testing/web-platform/tests/user-timing/test_user_timing_measure_navigation_timing.html
testing/web-platform/tests/vibration/silent-ignore.html
testing/web-platform/tests/webmessaging/support/compare.js
testing/web-platform/tests/webmessaging/with-ports/010.html
testing/web-platform/tests/webmessaging/without-ports/010.html
testing/web-platform/tests/webmessaging/without-ports/023.html
testing/web-platform/tests/webmessaging/without-ports/024.html
testing/web-platform/tests/webmessaging/without-ports/027.html
testing/web-platform/tests/webmessaging/without-ports/028.html
testing/web-platform/tests/websockets/Create-Secure-blocked-port.htm
testing/web-platform/tests/websockets/Create-Secure-valid-url-binaryType-blob.htm
testing/web-platform/tests/websockets/Create-Secure-valid-url-protocol-setCorrectly.htm
testing/web-platform/tests/websockets/Create-Secure-verify-url-set-non-default-port.htm
testing/web-platform/tests/websockets/Create-non-absolute-url.htm
testing/web-platform/tests/websockets/Create-nonAscii-protocol-string.htm
testing/web-platform/tests/websockets/Create-protocol-with-space.htm
testing/web-platform/tests/websockets/Create-protocols-repeated.htm
testing/web-platform/tests/websockets/Create-valid-url-array-protocols.htm
testing/web-platform/tests/websockets/Create-valid-url-protocol-empty.htm
testing/web-platform/tests/websockets/Create-valid-url-protocol.htm
testing/web-platform/tests/websockets/Create-wrong-scheme.htm
testing/web-platform/tests/websockets/Secure-Send-binary-arraybufferview-float32.htm
testing/web-platform/tests/websockets/Secure-Send-binary-arraybufferview-float64.htm
testing/web-platform/tests/websockets/Secure-Send-binary-arraybufferview-int32.htm
testing/web-platform/tests/websockets/Secure-Send-binary-arraybufferview-uint16-offset-length.htm
testing/web-platform/tests/websockets/Secure-Send-binary-arraybufferview-uint32-offset.htm
testing/web-platform/tests/websockets/Secure-Send-binary-arraybufferview-uint8-offset-length.htm
testing/web-platform/tests/websockets/Secure-Send-binary-arraybufferview-uint8-offset.htm
testing/web-platform/tests/websockets/Secure-Send-data.htm
testing/web-platform/tests/websockets/Send-binary-arraybufferview-int16-offset.htm
testing/web-platform/tests/websockets/Send-binary-arraybufferview-int8.htm
testing/web-platform/tests/websockets/binary/001.html
testing/web-platform/tests/websockets/binary/002.html
testing/web-platform/tests/websockets/binary/004.html
testing/web-platform/tests/websockets/binary/005.html
testing/web-platform/tests/websockets/closing-handshake/002.html
testing/web-platform/tests/websockets/closing-handshake/004.html
testing/web-platform/tests/websockets/constructor/018.html
testing/web-platform/tests/websockets/extended-payload-length.html
testing/web-platform/tests/websockets/handlers/protocol_wsh.py
testing/web-platform/tests/websockets/handlers/wrong_accept_key_wsh.py
testing/web-platform/tests/websockets/interfaces.html
testing/web-platform/tests/websockets/interfaces/WebSocket/events/016.html
testing/web-platform/tests/websockets/interfaces/WebSocket/events/017.html
testing/web-platform/tests/websockets/interfaces/WebSocket/events/018.html
testing/web-platform/tests/websockets/interfaces/WebSocket/readyState/004.html
testing/web-platform/tests/websockets/interfaces/WebSocket/url/005.html
testing/web-platform/tests/websockets/interfaces/WebSocket/url/006.html
testing/web-platform/tests/webstorage/iframe/local_change_item_iframe.html
testing/web-platform/tests/webstorage/iframe/local_security_iframe.html
testing/web-platform/tests/webstorage/iframe/local_set_item_clear_iframe.html
testing/web-platform/tests/webstorage/iframe/local_set_item_iframe.html
testing/web-platform/tests/webstorage/iframe/session_change_item_iframe.html
testing/web-platform/tests/webstorage/iframe/session_set_item_clear_iframe.html
testing/web-platform/tests/webstorage/iframe/session_set_item_iframe.html
testing/web-platform/tests/webstorage/storage_local_security.html
testing/web-platform/tests/workers/WorkerGlobalScope_EventTarget.htm
testing/web-platform/tests/workers/WorkerGlobalScope_XMLHttpRequest.htm
testing/web-platform/tests/workers/WorkerGlobalScope_addEventListener.htm
testing/web-platform/tests/workers/WorkerGlobalScope_nested_Worker.htm
testing/web-platform/tests/workers/WorkerGlobalScope_removeEventListener.htm
testing/web-platform/tests/workers/interfaces/DedicatedWorkerGlobalScope/EventTarget.worker.js
testing/web-platform/tests/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.html
testing/web-platform/tests/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.worker.js
testing/web-platform/tests/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/return-value.html
testing/web-platform/tests/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/return-value.worker.js
testing/web-platform/tests/workers/nested_worker.worker.js
testing/web-platform/tests/workers/support/EventListener.js
testing/web-platform/tests/workers/support/Timer.js
testing/web-platform/tests/workers/support/WorkerNested.js
testing/web-platform/tests/workers/support/XMLHttpRequest.js
testing/web-platform/tests/workers/support/XMLHttpRequest.txt
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -483,368 +483,377 @@
       },
       {
         "url": "/FileAPI/BlobURL/support/file_test1.js"
       },
       {
         "url": "/FileAPI/BlobURL/support/file_test2.txt"
       },
       {
-        "url": "/FileAPI/FileReader-interface/support/blue-100x100.png"
-      },
-      {
         "url": "/FileAPI/FileReader/support/file_test1.txt"
       },
       {
         "url": "/FileAPI/filelist-section/support/upload.txt"
       },
       {
         "url": "/FileAPI/filelist-section/support/upload.zip"
       },
       {
+        "url": "/FileAPI/reading-data-section/support/blue-100x100.png"
+      },
+      {
         "url": "/FileAPI/support/Blob.js"
       },
       {
         "url": "/FileAPI/support/upload.txt"
       },
       {
+        "url": "/FileAPI/url/url_xmlhttprequest_img-ref.html"
+      },
+      {
         "url": "/IndexedDB/README.md"
       },
       {
         "url": "/IndexedDB/idbworker.js"
       },
       {
         "url": "/IndexedDB/support.js"
       },
       {
         "url": "/WebCryptoAPI/README.md"
       },
       {
+        "url": "/WebIDL/invalid/idl/enum.widl"
+      },
+      {
+        "url": "/WebIDL/invalid/idl/module.widl"
+      },
+      {
+        "url": "/WebIDL/invalid/idl/nonnullableany.widl"
+      },
+      {
+        "url": "/WebIDL/invalid/idl/nonnullableobjects.widl"
+      },
+      {
+        "url": "/WebIDL/invalid/idl/raises.widl"
+      },
+      {
+        "url": "/WebIDL/invalid/idl/scopedname.widl"
+      },
+      {
+        "url": "/WebIDL/invalid/idl/scopedname.widl~"
+      },
+      {
+        "url": "/WebIDL/invalid/idl/sequenceAsAttribute.widl"
+      },
+      {
+        "url": "/WebIDL/invalid/idl/special-omittable.widl"
+      },
+      {
+        "url": "/WebIDL/invalid/idl/stringconstants.idl"
+      },
+      {
+        "url": "/WebIDL/readme.txt"
+      },
+      {
         "url": "/WebIDL/testable_assertions.txt"
       },
       {
-        "url": "/WebIDL/tests/submissions/W3C/invalid/idl/enum.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/invalid/idl/module.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/invalid/idl/nonnullableany.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/invalid/idl/nonnullableobjects.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/invalid/idl/raises.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/invalid/idl/scopedname.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/invalid/idl/sequenceAsAttribute.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/invalid/idl/special-omittable.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/invalid/idl/stringconstants.idl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/readme.txt"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/allowany.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/array.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/attributes.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/callback.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/caller.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/constants.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/constructor.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/dictionary-inherits.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/dictionary.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/documentation-dos.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/documentation.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/enum.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/equivalent-decl.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/exception-inheritance.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/exception.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/getter-setter.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/identifier-qualified-names.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/implements.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/indexed-properties.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/inherits-getter.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/interface-inherits.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/iterator.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/namedconstructor.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/nointerfaceobject.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/nullable.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/nullableobjects.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/operation-optional-arg.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/overloading.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/overridebuiltins.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/partial-interface.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/primitives.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/prototyperoot.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/putforwards.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/reg-operations.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/replaceable.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/sequence.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/serializer.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/static.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/stringifier-attribute.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/stringifier-custom.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/stringifier.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/treatasnull.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/treatasundefined.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/typedef.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/typesuffixes.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/uniontype.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/idl/variadic-operations.widl"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/allowany.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/array.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/attributes.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/callback.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/caller.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/constants.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/constructor.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/dictionary-inherits.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/dictionary.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/documentation-dos.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/documentation.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/enum.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/equivalent-decl.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/exception-inheritance.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/exception.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/getter-setter.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/identifier-qualified-names.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/implements.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/indexed-properties.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/inherits-getter.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/interface-inherits.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/iterator.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/module.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/namedconstructor.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/namespaceobject.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/nointerfaceobject.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/nullable.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/nullableobjects.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/operation-optional-arg.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/overloading.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/overridebuiltins.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/partial-interface.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/primitives.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/prototyperoot.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/putforwards.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/reg-operations.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/replaceable.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/sequence.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/serializer.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/special-omittable.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/static.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/stringifier-attribute.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/stringifier-custom.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/stringifier.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/treatasnull.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/treatasundefined.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/typedef.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/typesuffixes.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/uniontype.widlprocxml"
-      },
-      {
-        "url": "/WebIDL/tests/submissions/W3C/valid/xml/variadic-operations.widlprocxml"
+        "url": "/WebIDL/valid/idl/allowany.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/array.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/attributes.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/callback.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/caller.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/constants.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/constructor.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/dictionary-inherits.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/dictionary.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/documentation-dos.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/documentation.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/enum.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/equivalent-decl.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/exception-inheritance.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/exception.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/getter-setter.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/identifier-qualified-names.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/implements.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/indexed-properties.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/inherits-getter.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/interface-inherits.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/iterator.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/namedconstructor.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/nointerfaceobject.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/nullable.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/nullableobjects.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/operation-optional-arg.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/overloading.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/overridebuiltins.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/partial-interface.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/primitives.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/prototyperoot.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/putforwards.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/reg-operations.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/replaceable.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/sequence.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/serializer.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/static.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/stringifier-attribute.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/stringifier-custom.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/stringifier.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/treatasnull.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/treatasundefined.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/typedef.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/typesuffixes.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/uniontype.widl"
+      },
+      {
+        "url": "/WebIDL/valid/idl/variadic-operations.widl"
+      },
+      {
+        "url": "/WebIDL/valid/xml/allowany.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/array.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/attributes.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/callback.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/caller.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/constants.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/constructor.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/dictionary-inherits.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/dictionary.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/documentation-dos.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/documentation.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/enum.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/equivalent-decl.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/exception-inheritance.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/exception.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/getter-setter.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/identifier-qualified-names.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/implements.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/indexed-properties.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/inherits-getter.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/interface-inherits.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/iterator.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/module.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/namedconstructor.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/namespaceobject.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/nointerfaceobject.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/nullable.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/nullableobjects.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/operation-optional-arg.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/overloading.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/overridebuiltins.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/partial-interface.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/primitives.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/prototyperoot.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/putforwards.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/reg-operations.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/replaceable.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/sequence.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/serializer.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/special-omittable.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/static.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/stringifier-attribute.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/stringifier-custom.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/stringifier.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/treatasnull.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/treatasundefined.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/typedef.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/typesuffixes.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/uniontype.widlprocxml"
+      },
+      {
+        "url": "/WebIDL/valid/xml/variadic-operations.widlprocxml"
+      },
+      {
+        "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.js"
       },
       {
         "url": "/XMLHttpRequest/folder.txt"
       },
       {
         "url": "/XMLHttpRequest/readme.txt"
       },
       {
@@ -1353,16 +1362,19 @@
       },
       {
         "url": "/dom/nodes/Document-createEvent.js"
       },
       {
         "url": "/dom/nodes/Document-createProcessingInstruction.js"
       },
       {
+        "url": "/dom/nodes/Element-matches.js"
+      },
+      {
         "url": "/dom/nodes/Node-contains.xml"
       },
       {
         "url": "/dom/nodes/ParentNode-querySelector-All.js"
       },
       {
         "url": "/dom/nodes/attributes.js"
       },
@@ -2502,16 +2514,19 @@
       },
       {
         "url": "/images/blue-border.png"
       },
       {
         "url": "/images/blue.png"
       },
       {
+        "url": "/images/blue96x96.png"
+      },
+      {
         "url": "/images/broken.png"
       },
       {
         "url": "/images/canvas-line.png"
       },
       {
         "url": "/images/fail.gif"
       },
@@ -2910,23 +2925,17 @@
       },
       {
         "url": "/resource-timing/resources/webperftestharness.js"
       },
       {
         "url": "/resource-timing/test_resource_timing.js"
       },
       {
-        "url": "/selectors-api/tests/submissions/Opera/Element-matches.js"
-      },
-      {
-        "url": "/selectors-api/tests/submissions/Opera/ParentNode-find-findAll.js"
-      },
-      {
-        "url": "/selectors-api/tests/submissions/Opera/level2-lib.js"
+        "url": "/selectors-api/tests/submissions/Opera/ParentNode-query-queryAll.js"
       },
       {
         "url": "/service-workers/specgen.json"
       },
       {
         "url": "/shadow-dom/LICENSE"
       },
       {
@@ -3093,16 +3102,19 @@
       },
       {
         "url": "/webgl/common.js"
       },
       {
         "url": "/webmessaging/README.md"
       },
       {
+        "url": "/webmessaging/support/compare.js"
+      },
+      {
         "url": "/webmessaging/without-ports/025-1.js"
       },
       {
         "url": "/websockets/README.md"
       },
       {
         "url": "/websockets/constants.js"
       },
@@ -4266,19 +4278,16 @@
       },
       {
         "url": "/workers/semantics/encodings/002.html.headers"
       },
       {
         "url": "/workers/semantics/encodings/003-1.py"
       },
       {
-        "url": "/workers/semantics/interface-objects/001.worker.js"
-      },
-      {
         "url": "/workers/semantics/multiple-workers/004-2.js"
       },
       {
         "url": "/workers/semantics/multiple-workers/006-1.js"
       },
       {
         "url": "/workers/semantics/structured-clone/common.js"
       },
@@ -4302,19 +4311,16 @@
       },
       {
         "url": "/workers/semantics/xhr/support/006-1.js"
       },
       {
         "url": "/workers/support/ErrorEvent.js"
       },
       {
-        "url": "/workers/support/EventListener.js"
-      },
-      {
         "url": "/workers/support/ImportScripts.js"
       },
       {
         "url": "/workers/support/ImportScriptsNetworkErr.js"
       },
       {
         "url": "/workers/support/Timer.js"
       },
@@ -4329,31 +4335,22 @@
       },
       {
         "url": "/workers/support/WorkerLocation.js"
       },
       {
         "url": "/workers/support/WorkerNavigator.js"
       },
       {
-        "url": "/workers/support/WorkerNested.js"
-      },
-      {
         "url": "/workers/support/WorkerTerminate.js"
       },
       {
         "url": "/workers/support/WorkerText.txt"
       },
       {
-        "url": "/workers/support/XMLHttpRequest.js"
-      },
-      {
-        "url": "/workers/support/XMLHttpRequest.txt"
-      },
-      {
         "url": "/workers/workers.js"
       }
     ],
     "manual": [
       {
         "url": "/2dcontext/conformance-requirements/2d.coordinatespace-manual.html"
       },
       {
@@ -4376,31 +4373,49 @@
       },
       {
         "url": "/2dcontext/shadows/2d.shadow.blur.high-manual.html"
       },
       {
         "url": "/2dcontext/shadows/2d.shadow.blur.low-manual.html"
       },
       {
-        "url": "/FileAPI/FileReader-interface/filereader_file-manual.html"
-      },
-      {
-        "url": "/FileAPI/FileReader-interface/filereader_file_img-manual.html"
+        "url": "/FileAPI/BlobURL/test1-manual.html"
+      },
+      {
+        "url": "/FileAPI/BlobURL/test2-manual.html"
+      },
+      {
+        "url": "/FileAPI/BlobURL/test3-manual.html"
+      },
+      {
+        "url": "/FileAPI/FileReader/test_errors-manual.html"
       },
       {
         "url": "/FileAPI/filelist-section/filelist_multiple_selected_files-manual.html"
       },
       {
         "url": "/FileAPI/filelist-section/filelist_selected_file-manual.html"
       },
       {
         "url": "/FileAPI/idlharness-manual.html"
       },
       {
+        "url": "/FileAPI/reading-data-section/filereader_file-manual.html"
+      },
+      {
+        "url": "/FileAPI/reading-data-section/filereader_file_img-manual.html"
+      },
+      {
+        "url": "/FileAPI/url/url_createobjecturl_file-manual.html"
+      },
+      {
+        "url": "/FileAPI/url/url_createobjecturl_file_img-manual.html"
+      },
+      {
         "url": "/XMLHttpRequest/send-authentication-existing-session-manual.htm"
       },
       {
         "url": "/XMLHttpRequest/send-authentication-prompt-2-manual.htm"
       },
       {
         "url": "/XMLHttpRequest/send-authentication-prompt-manual.htm"
       },
@@ -5163,16 +5178,21 @@
       },
       {
         "ref_type": "==",
         "ref_url": "/2dcontext/transformations/canvas_transformations_scale_001-ref.htm",
         "url": "/2dcontext/transformations/canvas_transformations_scale_001.htm"
       },
       {
         "ref_type": "==",
+        "ref_url": "/FileAPI/url/url_xmlhttprequest_img-ref.html",
+        "url": "/FileAPI/url/url_xmlhttprequest_img.html"
+      },
+      {
+        "ref_type": "==",
         "ref_url": "/custom-elements/registering-custom-elements/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag-ref.html",
         "url": "/custom-elements/registering-custom-elements/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html"
       },
       {
         "ref_type": "==",
         "ref_url": "/custom-elements/registering-custom-elements/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag-ref.html",
         "url": "/custom-elements/registering-custom-elements/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html"
       },
@@ -9393,79 +9413,79 @@
       },
       {
         "url": "/DOMEvents/throwing-in-listener-and-window-error-event.html"
       },
       {
         "url": "/DOMEvents/throwing-in-listener-when-all-have-not-run-yet.html"
       },
       {
-        "url": "/FileAPI/Blob-XHR-revoke.html"
-      },
-      {
-        "url": "/FileAPI/Blob-close.html"
-      },
-      {
-        "url": "/FileAPI/Blob-constructor.html"
-      },
-      {
-        "url": "/FileAPI/Blob-slice.html"
-      },
-      {
-        "url": "/FileAPI/BlobURL/test1_manual.html"
-      },
-      {
-        "url": "/FileAPI/BlobURL/test2_manual.html"
-      },
-      {
-        "url": "/FileAPI/BlobURL/test3_manual.html"
-      },
-      {
-        "url": "/FileAPI/File-constructor.html"
-      },
-      {
-        "url": "/FileAPI/FileReader-interface/filereader_abort.html"
-      },
-      {
-        "url": "/FileAPI/FileReader-interface/filereader_error.html"
-      },
-      {
-        "url": "/FileAPI/FileReader-interface/filereader_readAsArrayBuffer.html"
-      },
-      {
-        "url": "/FileAPI/FileReader-interface/filereader_readAsDataURL.html"
-      },
-      {
-        "url": "/FileAPI/FileReader-interface/filereader_readAsText.html"
-      },
-      {
-        "url": "/FileAPI/FileReader-interface/filereader_readystate.html"
-      },
-      {
-        "url": "/FileAPI/FileReader-interface/filereader_result.html"
-      },
-      {
-        "url": "/FileAPI/FileReader/Determining-Encoding.html"
-      },
-      {
-        "url": "/FileAPI/FileReader/test_errors_manual.html"
-      },
-      {
         "url": "/FileAPI/FileReaderSync.worker"
       },
       {
+        "url": "/FileAPI/blob/Blob-XHR-revoke.html"
+      },
+      {
+        "url": "/FileAPI/blob/Blob-close.html"
+      },
+      {
+        "url": "/FileAPI/blob/Blob-constructor.html"
+      },
+      {
+        "url": "/FileAPI/blob/Blob-slice.html"
+      },
+      {
+        "url": "/FileAPI/file/File-constructor.html"
+      },
+      {
+        "url": "/FileAPI/fileReader.html"
+      },
+      {
         "url": "/FileAPI/filelist-section/filelist.html"
       },
       {
         "url": "/FileAPI/historical.html"
       },
       {
         "url": "/FileAPI/idlharness.html"
       },
       {
+        "url": "/FileAPI/reading-data-section/Determining-Encoding.html"
+      },
+      {
+        "url": "/FileAPI/reading-data-section/FileReader-multiple-reads.html"
+      },
+      {
+        "url": "/FileAPI/reading-data-section/filereader_abort.html"
+      },
+      {
+        "url": "/FileAPI/reading-data-section/filereader_error.html"
+      },
+      {
+        "url": "/FileAPI/reading-data-section/filereader_readAsArrayBuffer.html"
+      },
+      {
+        "url": "/FileAPI/reading-data-section/filereader_readAsDataURL.html"
+      },
+      {
+        "url": "/FileAPI/reading-data-section/filereader_readAsText.html"
+      },
+      {
+        "url": "/FileAPI/reading-data-section/filereader_readystate.html"
+      },
+      {
+        "url": "/FileAPI/reading-data-section/filereader_result.html"
+      },
+      {
+        "url": "/FileAPI/url/url_createobjecturl_blob.html"
+      },
+      {
+        "url": "/FileAPI/url/url_xmlhttprequest.html"
+      },
+      {
         "url": "/IndexedDB/abort-in-initial-upgradeneeded.html"
       },
       {
         "url": "/IndexedDB/close-in-upgradeneeded.html"
       },
       {
         "url": "/IndexedDB/cursor-overloads.htm"
       },
@@ -10194,16 +10214,22 @@
       },
       {
         "url": "/WebIDL/ecmascript-binding/es-exceptions/exceptions.html"
       },
       {
         "url": "/XMLHttpRequest/FormData-append.html"
       },
       {
+        "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.html"
+      },
+      {
+        "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.worker"
+      },
+      {
         "url": "/XMLHttpRequest/abort-after-receive.htm"
       },
       {
         "url": "/XMLHttpRequest/abort-after-send.htm"
       },
       {
         "url": "/XMLHttpRequest/abort-after-stop.htm"
       },
@@ -10653,22 +10679,16 @@
       },
       {
         "url": "/XMLHttpRequest/timeout-cors-async.htm"
       },
       {
         "url": "/XMLHttpRequest/timeout-sync.htm"
       },
       {
-        "url": "/XMLHttpRequest/withcredentials-set.htm"
-      },
-      {
-        "url": "/XMLHttpRequest/withcredentials-wrong-state.htm"
-      },
-      {
         "url": "/XMLHttpRequest/xmlhttprequest-basic.htm"
       },
       {
         "url": "/XMLHttpRequest/xmlhttprequest-eventtarget.htm"
       },
       {
         "url": "/XMLHttpRequest/xmlhttprequest-network-error-sync.htm"
       },
@@ -11337,16 +11357,19 @@
       },
       {
         "url": "/dom/nodes/Element-lastElementChild.svg"
       },
       {
         "url": "/dom/nodes/Element-lastElementChild.xhtml"
       },
       {
+        "url": "/dom/nodes/Element-matches.html"
+      },
+      {
         "url": "/dom/nodes/Element-nextElementSibling.html"
       },
       {
         "url": "/dom/nodes/Element-nextElementSibling.svg"
       },
       {
         "url": "/dom/nodes/Element-nextElementSibling.xhtml"
       },
@@ -13626,16 +13649,19 @@
       },
       {
         "url": "/html/semantics/embedded-content/the-video-element/video-tabindex.html"
       },
       {
         "url": "/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr.html"
       },
       {
+        "url": "/html/semantics/forms/attributes-common-to-form-controls/disabled-elements-01.html"
+      },
+      {
         "url": "/html/semantics/forms/attributes-common-to-form-controls/formAction_document_address.html"
       },
       {
         "url": "/html/semantics/forms/attributes-common-to-form-controls/formaction.html"
       },
       {
         "url": "/html/semantics/forms/constraints/form-validation-checkValidity.html"
       },
@@ -14415,22 +14441,31 @@
       },
       {
         "url": "/js/builtins/Math.max.html"
       },
       {
         "url": "/js/builtins/Math.min.html"
       },
       {
+        "url": "/js/builtins/Object.prototype.freeze.html"
+      },
+      {
         "url": "/js/builtins/Object.prototype.hasOwnProperty-order.html"
       },
       {
         "url": "/js/builtins/Object.prototype.hasOwnProperty-prototype-chain.html"
       },
       {
+        "url": "/js/builtins/Object.prototype.preventExtensions.html"
+      },
+      {
+        "url": "/js/builtins/Object.prototype.seal.html"
+      },
+      {
         "url": "/js/builtins/WeakMap.prototype-properties.html"
       },
       {
         "url": "/media-source/SourceBuffer-abort-readyState.html"
       },
       {
         "url": "/media-source/SourceBuffer-abort-removed.html"
       },
@@ -14505,16 +14540,19 @@
       },
       {
         "url": "/media-source/mediasource-config-change-webm-v-framerate.html"
       },
       {
         "url": "/media-source/mediasource-config-change-webm-v-framesize.html"
       },
       {
+        "url": "/media-source/mediasource-duration-boundaryconditions.html"
+      },
+      {
         "url": "/media-source/mediasource-duration.html"
       },
       {
         "url": "/media-source/mediasource-endofstream-invaliderror.html"
       },
       {
         "url": "/media-source/mediasource-getvideoplaybackquality.html"
       },
@@ -14532,28 +14570,37 @@
       },
       {
         "url": "/media-source/mediasource-redundant-seek.html"
       },
       {
         "url": "/media-source/mediasource-remove.html"
       },
       {
+        "url": "/media-source/mediasource-removesourcebuffer.html"
+      },
+      {
         "url": "/media-source/mediasource-seek-beyond-duration.html"
       },
       {
         "url": "/media-source/mediasource-seek-during-pending-seek.html"
       },
       {
+        "url": "/media-source/mediasource-sequencemode-append-buffer.html"
+      },
+      {
         "url": "/media-source/mediasource-sourcebuffer-mode.html"
       },
       {
         "url": "/media-source/mediasource-sourcebufferlist.html"
       },
       {
+        "url": "/media-source/mediasource-timestamp-offset.html"
+      },
+      {
         "url": "/mediacapture-streams/obtaining-local-multimedia-content/navigatorusermedia/api-present.html"
       },
       {
         "url": "/mediacapture-streams/obtaining-local-multimedia-content/navigatorusermedia/deny.html"
       },
       {
         "url": "/mediacapture-streams/obtaining-local-multimedia-content/navigatorusermedia/empty-option-param.html"
       },
@@ -15297,20 +15344,17 @@
       },
       {
         "url": "/quirks-mode/unitless-length.html"
       },
       {
         "url": "/resource-timing/test_resource_timing.html"
       },
       {
-        "url": "/selectors-api/tests/submissions/Opera/Element-matches.html"
-      },
-      {
-        "url": "/selectors-api/tests/submissions/Opera/ParentNode-find-findAll.html"
+        "url": "/selectors-api/tests/submissions/Opera/ParentNode-query-queryAll.html"
       },
       {
         "url": "/selectors/attribute-selectors/attribute-case/cssom.html"
       },
       {
         "url": "/selectors/attribute-selectors/attribute-case/semantics.html"
       },
       {
@@ -16890,40 +16934,25 @@
       },
       {
         "url": "/workers/WorkerGlobalScope_ErrorEvent_lineno.htm"
       },
       {
         "url": "/workers/WorkerGlobalScope_ErrorEvent_message.htm"
       },
       {
-        "url": "/workers/WorkerGlobalScope_EventTarget.htm"
-      },
-      {
-        "url": "/workers/WorkerGlobalScope_XMLHttpRequest.htm"
-      },
-      {
-        "url": "/workers/WorkerGlobalScope_addEventListener.htm"
-      },
-      {
         "url": "/workers/WorkerGlobalScope_close.htm"
       },
       {
         "url": "/workers/WorkerGlobalScope_importScripts.htm"
       },
       {
         "url": "/workers/WorkerGlobalScope_importScripts_NetworkErr.htm"
       },
       {
-        "url": "/workers/WorkerGlobalScope_nested_Worker.htm"
-      },
-      {
-        "url": "/workers/WorkerGlobalScope_removeEventListener.htm"
-      },
-      {
         "url": "/workers/WorkerGlobalScope_setInterval.htm"
       },
       {
         "url": "/workers/WorkerGlobalScope_setTimeout.htm"
       },
       {
         "url": "/workers/WorkerLocation.htm"
       },
@@ -17097,29 +17126,32 @@
       },
       {
         "url": "/workers/constructors/Worker/unresolvable-url.html"
       },
       {
         "url": "/workers/interfaces.worker"
       },
       {
-        "url": "/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.html"
+        "url": "/workers/interfaces/DedicatedWorkerGlobalScope/EventTarget.worker"
+      },
+      {
+        "url": "/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.worker"
       },
       {
         "url": "/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/event-ports-dedicated.html"
       },
       {
         "url": "/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/imagedata-cloned-canvas-in-array.html"
       },
       {
         "url": "/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/message-event.html"
       },
       {
-        "url": "/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/return-value.html"
+        "url": "/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/return-value.worker"
       },
       {
         "url": "/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/second-argument-null-in-array.html"
       },
       {
         "url": "/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/second-argument-null.html"
       },
       {
@@ -17253,16 +17285,19 @@
       },
       {
         "url": "/workers/interfaces/WorkerUtils/navigator/007.html"
       },
       {
         "url": "/workers/interfaces/WorkerUtils/navigator/language.html"
       },
       {
+        "url": "/workers/nested_worker.worker"
+      },
+      {
         "url": "/workers/postMessage_DataCloneErr.htm"
       },
       {
         "url": "/workers/postMessage_clone_port.htm"
       },
       {
         "url": "/workers/postMessage_clone_port_error.htm"
       },
@@ -17283,16 +17318,19 @@
       },
       {
         "url": "/workers/semantics/encodings/003.html"
       },
       {
         "url": "/workers/semantics/encodings/004.html"
       },
       {
+        "url": "/workers/semantics/interface-objects/001.worker"
+      },
+      {
         "url": "/workers/semantics/interface-objects/002.worker"
       },
       {
         "url": "/workers/semantics/interface-objects/003.html"
       },
       {
         "url": "/workers/semantics/interface-objects/004.html"
       },
@@ -17844,16 +17882,20 @@
         "url": "/websockets/cookies/005.html"
       },
       {
         "timeout": "long",
         "url": "/websockets/cookies/007.html"
       },
       {
         "timeout": "long",
+        "url": "/websockets/extended-payload-length.html"
+      },
+      {
+        "timeout": "long",
         "url": "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large.html"
       },
       {
         "timeout": "long",
         "url": "/websockets/interfaces/WebSocket/close/close-connecting.html"
       },
       {
         "timeout": "long",
@@ -17929,11 +17971,11 @@
         "path": "webdriver/user_input/clear_test.py"
       }
     ]
   },
   "local_changes": {
     "deleted": [],
     "items": {}
   },
-  "rev": "78bc2a28397159604ce41997e408fbb171e11f8f",
+  "rev": "412773b71c81d7356636f698e86d7b544cf48fcb",
   "url_base": "/"
 }
\ No newline at end of file
--- a/testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_001.html
+++ b/testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_001.html
@@ -11,17 +11,17 @@
     <h1>Description</h1>
     <p>This test uses drawFocusIfNeeded to draw a focus ring in the canvas, then compare the ImageData before and after the invocation of the method to check that the focus ring was actually drawn.</p>
     <div>
       <p>Before:</p>
       <canvas height=100 width=100 id='original'>
       </canvas>
       <p>After:</p>
       <canvas height=100 width=100 id=canvas>
-	<label><a href='http://www.w3.org' id='element'>Focus</a></label>
+        <label><a href='http://www.w3.org' id='element'>Focus</a></label>
       </canvas>
     </div>
     <script>
       test(function() {
           var canvas = document.getElementById('canvas');
           var context = canvas.getContext('2d');
           var element = document.getElementById('element');
           element.focus();
--- a/testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_002.html
+++ b/testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_002.html
@@ -11,17 +11,17 @@
     <h1>Description</h1>
     <p>This test uses drawFocusIfNeeded does nothing if the element is not in focus but comparing ImageData from before and after.</p>
     <div>
       <p>Before:</p>
       <canvas height=100 width=100 id='original'>
       </canvas>
       <p>After:</p>
       <canvas height=100 width=100 id=canvas>
-	<label><a href='http://www.w3.org' id='element'>Focus</a></label>
+        <label><a href='http://www.w3.org' id='element'>Focus</a></label>
       </canvas>
     </div>
     <script>
       test(function() {
           var canvas = document.getElementById('canvas');
           var context = canvas.getContext('2d');
           var element = document.getElementById('element');
           context.fillStyle = 'white';
--- a/testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_003.html
+++ b/testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_003.html
@@ -8,17 +8,17 @@
     <link rel="help" href="http://www.w3.org/TR/2dcontext/#dom-context-2d-drawFocusIfNeeded">
   </head>
   <body>
     <h1>Description</h1>
     <p>This test uses drawFocusIfNeeded does nothing if the element is not a descendant but comparing ImageData from before and after.</p>
     <div>
       <p>Before:</p>
       <canvas height=100 width=100 id='original'>
-	<label><a href='http://www.w3.org' id='element'>Focus</a></label>
+        <label><a href='http://www.w3.org' id='element'>Focus</a></label>
       </canvas>
       <p>After:</p>
       <canvas height=100 width=100 id=canvas>
       </canvas>
     </div>
     <script>
       test(function() {
           var canvas = document.getElementById('canvas');
--- a/testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_004.html
+++ b/testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_004.html
@@ -11,17 +11,17 @@
     <h1>Description</h1>
     <p>This test uses drawFocusIfNeeded to draw a complex path focus then compare ImageData from before and after.</p>
     <div>
       <p>Before:</p>
       <canvas height=100 width=100 id='original'>
       </canvas>
       <p>After:</p>
       <canvas height=100 width=100 id=canvas>
-	<label><a href='http://www.w3.org' id='element'>Focus</a></label>
+        <label><a href='http://www.w3.org' id='element'>Focus</a></label>
       </canvas>
     </div>
     <script>
       test(function() {
           var canvas = document.getElementById('canvas');
           var context = canvas.getContext('2d');
           var element = document.getElementById('element');
           element.focus();
--- a/testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_005.html
+++ b/testing/web-platform/tests/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_005.html
@@ -11,17 +11,17 @@
     <h1>Description</h1>
     <p>This test uses drawFocusIfNeeded to draw a complex path focus then compare ImageData from before and after.</p>
     <div>
       <p>Before:</p>
       <canvas height=100 width=100 id='original'>
       </canvas>
       <p>After:</p>
       <canvas height=100 width=100 id=canvas>
-	<p id='element' tabindex='1'>This is text.</p>
+        <p id='element' tabindex='1'>This is text.</p>
       </canvas>
     </div>
     <script>
     test(function() {
           var canvas = document.getElementById('canvas');
           var context = canvas.getContext('2d');
           var element = document.getElementById('element');
           element.focus();
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/Blob-XHR-revoke.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!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(function() {
-        assert_equals(xhr.response, "test");
-        t.done();
-    })
-    xhr.onerror = t.step_func(function() {
-        assert_unreached("Got unexpected error event");
-    })
-});
-</script>
\ No newline at end of file
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/Blob-close.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Blob.close</title>
-<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-close">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="support/Blob.js"></script>
-<div id="log"></div>
-<script>
-test(function() {
-  var blob = new Blob(["TEST"]);
-  var sliced = blob.slice();
-  blob.close();
-  test_blob(function() {
-    return blob;
-  }, {
-    expected: "",
-    type: "",
-    desc: "Blob should be empty."
-  });
-  test_blob(function() {
-    return sliced;
-  }, {
-    expected: "PASS",
-    type: "",
-    desc: "Slice should still have the data."
-  });
-});
-</script>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/Blob-constructor.html
+++ /dev/null
@@ -1,498 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Blob constructor</title>
-<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#constructorBlob">
-<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-union">
-<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-dictionary">
-<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-sequence">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="support/Blob.js"></script>
-<p><strong><a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=23683">Discussion</a>
-is ongoing that will affect a number of the following tests.</strong>
-<div id="log"></div>
-<!-- used by "platform object that supports indexed properties" tests -->
-<iframe style="display:none"></iframe>
-<script>
-test(function() {
-  assert_true("Blob" in window, "window should have a Blob property.");
-  assert_equals(Blob.length, 2, "Blob.length should be 2.");
-  assert_true(Blob instanceof Function, "Blob should be a function.");
-}, "Blob interface object");
-
-// Step 1.
-test(function() {
-  var blob = new Blob();
-  assert_true(blob instanceof Blob);
-  assert_equals(String(blob), '[object Blob]');
-  assert_equals(blob.size, 0);
-  assert_equals(blob.type, "");
-}, "no-argument Blob constructor");
-test(function() {
-  var blob = Blob();
-  assert_true(blob instanceof Blob);
-  assert_equals(blob.size, 0);
-  assert_equals(blob.type, "");
-}, "no-argument Blob constructor without 'new'");
-test(function() {
-  var blob = new Blob;
-  assert_true(blob instanceof Blob);
-  assert_equals(blob.size, 0);
-  assert_equals(blob.type, "");
-}, "no-argument Blob constructor without brackets");
-
-// blobParts argument (WebIDL).
-test(function() {
-  var args = [
-    null,
-    undefined,
-    true,
-    false,
-    0,
-    1,
-    1.5,
-    "FAIL",
-    new Date(),
-    new RegExp(),
-  ];
-  args.forEach(function(arg) {
-    assert_throws(new TypeError(), function() {
-      new Blob(arg);
-    }, "Should throw for argument " + format_value(arg) + ".");
-  });
-}, "Passing non-objects, Dates and RegExps for blobParts should throw a TypeError.");
-
-test_blob(function() {
-  return new Blob({});
-}, {
-  expected: "",
-  type: "",
-  desc: "A plain object should be treated as a sequence for the blobParts argument."
-});
-test_blob(function() {
-  return new Blob({ 0: "PASS", length: 1 });
-}, {
-  expected: "PASS",
-  type: "",
-  desc: "A plain object with a length property should be treated as a sequence for the blobParts argument."
-});
-test_blob(function() {
-  return new Blob(new String("xyz"));
-}, {
-  expected: "xyz",
-  type: "",
-  desc: "A String object should be treated as a sequence for the blobParts argument."
-});
-test_blob(function() {
-  return new Blob(new Uint8Array([1, 2, 3]));
-}, {
-  expected: "123",
-  type: "",
-  desc: "A Uint8Array object should be treated as a sequence for the blobParts argument."
-});
-
-var test_error = { name: "test" };
-
-test(function() {
-  var obj = {
-    get length() { throw test_error; }
-  };
-  assert_throws(test_error, function() {
-    new Blob(obj);
-  });
-}, "The length getter should be invoked and any exceptions should be propagated.");
-
-test_blob(function() {
-  var element = document.createElement("div");
-  element.appendChild(document.createElement("div"));
-  element.appendChild(document.createElement("p"));
-  var list = element.children;
-  Object.defineProperty(list, "length", {
-    get: function() { throw test_error; }
-  });
-  return new Blob(list);
-}, {
-  expected: "[object HTMLDivElement][object HTMLParagraphElement]",
-  type: "",
-  desc: "A platform object that supports indexed properties should be treated as a sequence for the blobParts argument (overwritten 'length'.)"
-});
-
-test(function() {
-  assert_throws(test_error, function() {
-    var obj = {
-      length: {
-        valueOf: null,
-        toString: function() { throw test_error; }
-      }
-    };
-    new Blob(obj);
-  });
-  assert_throws(test_error, function() {
-    var obj = {
-      length: { valueOf: function() { throw test_error; } }
-    };
-    new Blob(obj);
-  });
-}, "ToUint32 should be applied to the length and any exceptions should be propagated.");
-
-test(function() {
-  var received = [];
-  var obj = {
-    get length() {
-      received.push("length getter");
-      return {
-        valueOf: function() {
-          received.push("length valueOf");
-          return 3;
-        }
-      };
-    },
-    get 0() {
-      received.push("0 getter");
-      return {
-        toString: function() {
-          received.push("0 toString");
-          return "a";
-        }
-      };
-    },
-    get 1() {
-      received.push("1 getter");
-      throw test_error;
-    },
-    get 2() {
-      received.push("2 getter");
-      assert_unreached("Should not call the getter for 2 if the getter for 1 threw.");
-    }
-  };
-  assert_throws(test_error, function() {
-    new Blob(obj);
-  });
-  assert_array_equals(received, [
-    "length getter",
-    "length valueOf",
-    "0 getter",
-    "0 toString",
-    "1 getter"
-  ]);
-}, "Getters and value conversions should happen in order until an exception is thrown.");
-
-// XXX should add tests edge cases of ToUint32(length)
-
-test(function() {
-  assert_throws(test_error, function() {
-    new Blob([{ toString: function() { throw test_error; } }]);
-  }, "Throwing toString");
-  assert_throws(test_error, function() {
-    new Blob([{ toString: undefined, valueOf: function() { throw test_error; } }]);
-  }, "Throwing valueOf");
-  assert_throws(test_error, function() {
-    new Blob([{
-      toString: function() { throw test_error; },
-      valueOf: function() { assert_unreached("Should not call valueOf if toString is present."); }
-    }]);
-  }, "Throwing toString and valueOf");
-  assert_throws(new TypeError(), function() {
-    new Blob([{toString: null, valueOf: null}]);
-  }, "Null toString and valueOf");
-}, "ToString should be called on elements of the blobParts array and any exceptions should be propagated.");
-
-test_blob(function() {
-  var arr = [
-    { toString: function() { arr.pop(); return "PASS"; } },
-    { toString: function() { assert_unreached("Should have removed the second element of the array rather than called toString() on it."); } }
-  ];
-  return new Blob(arr);
-}, {
-  expected: "PASSundefined",
-  type: "",
-  desc: "Changes to the blobParts array should be reflected in the returned Blob (pop)."
-});
-
-test_blob(function() {
-  var arr = [
-    {
-      toString: function() {
-        if (arr.length === 3) {
-          return "SS";
-        }
-        arr.unshift({
-          toString: function() {
-            assert_unreached("Should only access index 0 once.");
-          }
-        });
-        return "PA";
-      }
-    },
-    {
-      toString: function() {
-        assert_unreached("Should not access the final element.");
-      }
-    }
-  ];
-  return new Blob(arr);
-}, {
-  expected: "PASS",
-  type: "",
-  desc: "Changes to the blobParts array should be reflected in the returned Blob (unshift)."
-});
-
-test_blob(function() {
-  // https://www.w3.org/Bugs/Public/show_bug.cgi?id=17652
-  return new Blob([
-    null,
-    undefined,
-    true,
-    false,
-    0,
-    1,
-    new String("stringobject"),
-    [],
-    ['x', 'y'],
-    {},
-    { 0: "FAIL", length: 1 },
-    { toString: function() { return "stringA"; } },
-    { toString: undefined, valueOf: function() { return "stringB"; } },
-    { valueOf: function() { assert_unreached("Should not call valueOf if toString is present on the prototype."); } }
-  ]);
-}, {
-  expected: "nullundefinedtruefalse01stringobjectx,y[object Object][object Object]stringAstringB[object Object]",
-  type: "",
-  desc: "ToString should be called on elements of the blobParts array."
-});
-
-test_blob(function() {
-  return new Blob([
-    new ArrayBuffer(8)
-  ]);
-}, {
-  expected: "\0\0\0\0\0\0\0\0",
-  type: "",
-  desc: "ArrayBuffer elements of the blobParts array should be supported."
-});
-
-test_blob(function() {
-  return new Blob([
-    new Uint8Array([0x50, 0x41, 0x53, 0x53]),
-    new Int8Array([0x50, 0x41, 0x53, 0x53]),
-    new Uint16Array([0x4150, 0x5353]),
-    new Int16Array([0x4150, 0x5353]),
-    new Uint32Array([0x53534150]),
-    new Int32Array([0x53534150]),
-    new Float32Array([0xD341500000])
-  ]);
-}, {
-  expected: "PASSPASSPASSPASSPASSPASSPASS",
-  type: "",
-  desc: "Passing typed arrays as elements of the blobParts array should work."
-});
-test_blob(function() {
-  return new Blob([
-    // 0x535 3415053534150
-    // 0x535 = 0b010100110101 -> Sign = +, Exponent = 1333 - 1023 = 310
-    // 0x13415053534150 * 2**(-52)
-    // ==> 0x13415053534150 * 2**258 = 2510297372767036725005267563121821874921913208671273727396467555337665343087229079989707079680
-    new Float64Array([2510297372767036725005267563121821874921913208671273727396467555337665343087229079989707079680])
-  ]);
-}, {
-  expected: "PASSPASS",
-  type: "",
-  desc: "Passing a Float64Array as element of the blobParts array should work."
-});
-
-test_blob(function() {
-  return new Blob(document.createElement("div"));
-}, {
-  expected: "",
-  type: "",
-  desc: "Passing an element as the blobParts array should work."
-});
-
-test_blob(function() {
-  return new Blob(window);
-}, {
-  expected: "[object Window]",
-  type: "",
-  desc: "Passing an platform object that supports indexed properties as the blobParts array should work (window)."
-});
-test_blob(function() {
-  window[0].toString = function() { return "foo"; };
-  return new Blob(window);
-}, {
-  expected: "foo",
-  type: "",
-  desc: "Passing an platform object that supports indexed properties as the blobParts array should work (window with custom toString)."
-});
-test_blob(function() {
-  var select = document.createElement("select");
-  select.appendChild(document.createElement("option"));
-  return new Blob(select);
-}, {
-  expected: "[object HTMLOptionElement]",
-  type: "",
-  desc: "Passing an platform object that supports indexed properties as the blobParts array should work (select)."
-});
-
-var t_ports = async_test("Passing a platform array object as the blobParts array should work (MessagePort[]).");
-t_ports.step(function() {
-    var channel = new MessageChannel();
-    channel.port2.onmessage = this.step_func(function(e) {
-        var b_ports = new Blob(e.ports);
-        assert_equals(b_ports.size, "[object MessagePort]".length);
-        this.done();
-    });
-    var channel2 = new MessageChannel();
-    channel.port1.postMessage('', [channel2.port1]);
-});
-
-test_blob(function() {
-  var elm = document.createElement("div");
-  elm.setAttribute("foo", "bar");
-  return new Blob(elm.attributes);
-}, {
-  expected: "[object Attr]",
-  type: "",
-  desc: "Passing a platform array object as the blobParts array should work (Attr[])."
-});
-
-test_blob(function() {
-  var blob = new Blob(['foo']);
-  return new Blob([blob, blob]);
-}, {
-  expected: "foofoo",
-  type: "",
-  desc: "Array with two blobs"
-});
-
-test_blob_binary(function() {
-  var view = new Uint8Array([0, 255, 0]);
-  return new Blob([view.buffer, view.buffer]);
-}, {
-  expected: [0, 255, 0, 0, 255, 0],
-  type: "",
-  desc: "Array with two buffers"
-});
-
-test_blob_binary(function() {
-  var view = new Uint8Array([0, 255, 0, 4]);
-  var blob = new Blob([view, view]);
-  assert_equals(blob.size, 8);
-  var view1 = new Uint16Array(view.buffer, 2);
-  return new Blob([view1, view.buffer, view1]);
-}, {
-  expected: [0, 4, 0, 255, 0, 4, 0, 4],
-  type: "",
-  desc: "Array with two bufferviews"
-});
-
-test_blob(function() {
-  var view = new Uint8Array([0]);
-  var blob = new Blob(["fo"]);
-  return new Blob([view.buffer, blob, "foo"]);
-}, {
-  expected: "\0fofoo",
-  type: "",
-  desc: "Array with mixed types"
-});
-
-// options argument
-test(function() {
-  new Blob([], { endings: "invalidEnumValue" });
-  new Blob([], { endings: null });
-  new Blob([], { endings: undefined });
-  new Blob([], { endings: 0 });
-  new Blob([], { get endings() { assert_unreached("Should not call getter"); } });
-}, "The 'endings' property should be ignored.");
-
-test(function() {
-  assert_throws(test_error, function() {
-    new Blob([], {
-      get type() { throw test_error; }
-    });
-  });
-  assert_throws(test_error, function() {
-    new Blob([], {
-      type: { toString: function() { throw test_error; } }
-    });
-  });
-}, "options properties should be accessed in lexicographic order.");
-
-test(function() {
-  assert_throws(test_error, function() {
-    new Blob(
-      [{ toString: function() { throw test_error } }],
-      {
-        get type() { assert_unreached("type getter should not be called."); }
-      }
-    );
-  });
-}, "Arguments should be evaluated from left to right.");
-
-[
-  null,
-  undefined,
-  {},
-  { unrecognized: true },
-  /regex/,
-  function() {}
-].forEach(function(arg, idx) {
-  test_blob(function() {
-    return new Blob([], arg);
-  }, {
-    expected: "",
-    type: "",
-    desc: "Passing " + format_value(arg) + " (index " + idx + ") for options should use the defaults."
-  });
-  test_blob(function() {
-    return new Blob(["\na\r\nb\n\rc\r"], arg);
-  }, {
-    expected: "\na\r\nb\n\rc\r",
-    type: "",
-    desc: "Passing " + format_value(arg) + " (index " + idx + ") for options should use the defaults (with newlines)."
-  });
-});
-
-test_blob(function() {
-  return new Blob(["\na\r\nb\n\rc\r"], { endings: "transparent" });
-}, {
-  expected: "\na\r\nb\n\rc\r",
-  type: "",
-  desc: "Newlines should not change when endings is 'transparent'."
-});
-test_blob(function() {
-  return new Blob(["\na\r\nb\n\rc\r"], { endings: "native" });
-}, {
-  expected: "\na\r\nb\n\rc\r",
-  type: "",
-  desc: "Newlines should not change when endings is 'native'."
-});
-
-var type_tests = [
-  // blobParts, type, expected type
-  [[], '', ''],
-  [[], 'a', 'a'],
-  [[], 'A', 'a'],
-  [[], 'text/html', 'text/html'],
-  [[], 'TEXT/HTML', 'text/html'],
-  [[], '\u00E5', ''],
-  [[], '\uD801\uDC7E', ''], // U+1047E
-  [[], ' image/gif ', ' image/gif '],
-  [[], '\timage/gif\t', ''],
-  [[], 'image/gif;\u007f', ''],
-  [[], '\u0130mage/gif', ''], // uppercase i with dot
-  [[], '\u0131mage/gif', ''], // lowercase dotless i
-  [[], 'image/gif\u0000', ''],
-  // check that type isn't changed based on sniffing
-  [[0x3C, 0x48, 0x54, 0x4D, 0x4C, 0x3E], 'unknown/unknown', 'unknown/unknown'], // "<HTML>"
-  [[0x00, 0xFF], 'text/plain', 'text/plain'],
-  [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], 'image/png', 'image/png'], // "GIF89a"
-];
-
-type_tests.forEach(function(t) {
-  test(function() {
-    var arr = new Uint8Array([t[0]]).buffer;
-    var b = new Blob([arr], {type:t[1]});
-    assert_equals(b.type, t[2]);
-  }, "Blob with type " + format_value(t[1]));
-});
-</script>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/Blob-slice.html
+++ /dev/null
@@ -1,214 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Blob slice</title>
-<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#slice-method-algo">
-<link rel=author title="Saurabh Anand" href="mailto:saurabhanandiit@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="support/Blob.js"></script>
-<div id="log"></div>
-<script>
-test_blob(function() {
-  var blobTemp = new Blob(["PASS"]);
-  return blobTemp.slice();
-}, {
-  expected: "PASS",
-  type: "",
-  desc: "no-argument Blob slice"
-});
-
-test(function() {
-  var blob1, blob2;
-
-  test_blob(function() {
-    return blob1 = new Blob(["squiggle"]);
-  }, {
-    expected: "squiggle",
-    type: "",
-    desc: "blob1."
-  });
-
-  test_blob(function() {
-    return blob2 = new Blob(["steak"], {type: "content/type"});
-  }, {
-    expected: "steak",
-    type: "content/type",
-    desc: "blob2."
-  });
-
-  var arrayBuffer = new ArrayBuffer(16);
-  var int8View = new Int8Array(arrayBuffer);
-  for (var i = 0; i < 16; i++) {
-    int8View[i] = i + 65;
-  }
-
-  var testData = [
-    [
-      ["PASSSTRING"],
-      [{start:  -6, contents: "STRING"},
-       {start: -12, contents: "PASSSTRING"},
-       {start:   4, contents: "STRING"},
-       {start:  12, contents: ""},
-       {start: 0, end:  -6, contents: "PASS"},
-       {start: 0, end: -12, contents: ""},
-       {start: 0, end:   4, contents: "PASS"},
-       {start: 0, end:  12, contents: "PASSSTRING"},
-       {start: 7, end:   4, contents: ""}]
-    ],
-
-    // Test 3 strings
-    [
-      ["foo", "bar", "baz"],
-      [{start:  0, end:  9, contents: "foobarbaz"},
-       {start:  0, end:  3, contents: "foo"},
-       {start:  3, end:  9, contents: "barbaz"},
-       {start:  6, end:  9, contents: "baz"},
-       {start:  6, end: 12, contents: "baz"},
-       {start:  0, end:  9, contents: "foobarbaz"},
-       {start:  0, end: 11, contents: "foobarbaz"},
-       {start: 10, end: 15, contents: ""}]
-    ],
-
-    // Test string, Blob, string
-    [
-      ["foo", blob1, "baz"],
-      [{start:  0, end:  3, contents: "foo"},
-       {start:  3, end: 11, contents: "squiggle"},
-       {start:  2, end:  4, contents: "os"},
-       {start: 10, end: 12, contents: "eb"}]
-    ],
-
-    // Test blob, string, blob
-    [
-      [blob1, "foo", blob1],
-      [{start:  0, end:  8, contents: "squiggle"},
-       {start:  7, end:  9, contents: "ef"},
-       {start: 10, end: 12, contents: "os"},
-       {start:  1, end:  4, contents: "qui"},
-       {start: 12, end: 15, contents: "qui"},
-       {start: 40, end: 60, contents: ""}]
-    ],
-
-    // Test blobs all the way down
-    [
-      [blob2, blob1, blob2],
-      [{start: 0,  end:  5, contents: "steak"},
-       {start: 5,  end: 13, contents: "squiggle"},
-       {start: 13, end: 18, contents: "steak"},
-       {start:  1, end:  3, contents: "te"},
-       {start:  6, end: 10, contents: "quig"}]
-    ],
-
-    // Test an ArrayBufferView
-    [
-      [int8View, blob1, "foo"],
-      [{start:  0, end:  8, contents: "ABCDEFGH"},
-       {start:  8, end: 18, contents: "IJKLMNOPsq"},
-       {start: 17, end: 20, contents: "qui"},
-       {start:  4, end: 12, contents: "EFGHIJKL"}]
-    ],
-
-    // Test a partial ArrayBufferView
-    [
-      [new Uint8Array(arrayBuffer, 3, 5), blob1, "foo"],
-      [{start:  0, end:  8, contents: "DEFGHsqu"},
-       {start:  8, end: 18, contents: "igglefoo"},
-       {start:  4, end: 12, contents: "Hsquiggl"}]
-    ],
-
-    // Test type coercion of a number
-    [
-      [3, int8View, "foo"],
-      [{start:  0, end:  8, contents: "3ABCDEFG"},
-       {start:  8, end: 18, contents: "HIJKLMNOPf"},
-       {start: 17, end: 21, contents: "foo"},
-       {start:  4, end: 12, contents: "DEFGHIJK"}]
-    ],
-
-    [
-      [(new Uint8Array([0, 255, 0])).buffer,
-       new Blob(['abcd']),
-       'efgh',
-       'ijklmnopqrstuvwxyz'],
-      [{start:  1, end:  4, contents: "\uFFFD\u0000a"},
-       {start:  4, end:  8, contents: "bcde"},
-       {start:  8, end: 12, contents: "fghi"},
-       {start:  1, end: 12, contents: "\uFFFD\u0000abcdefghi"}]
-    ]
-  ];
-
-  testData.forEach(function(data, i) {
-    var blobs = data[0];
-    var tests = data[1];
-    tests.forEach(function(expectations, j) {
-      test(function() {
-        var blob = new Blob(blobs);
-        assert_true(blob instanceof Blob);
-        assert_false(blob instanceof File);
-
-        test_blob(function() {
-          return expectations.end === undefined
-                 ? blob.slice(expectations.start)
-                 : blob.slice(expectations.start, expectations.end);
-        }, {
-          expected: expectations.contents,
-          type: "",
-          desc: "Slicing test: slice (" + i + "," + j + ")."
-        });
-      }, "Slicing test (" + i + "," + j + ").");
-    });
-  });
-}, "Slices");
-
-var invalidTypes = [
-  "\xFF",
-  "te(xt/plain",
-  "te)xt/plain",
-  "te<xt/plain",
-  "te>xt/plain",
-  "te@xt/plain",
-  "te,xt/plain",
-  "te;xt/plain",
-  "te:xt/plain",
-  "te\\xt/plain",
-  "te\"xt/plain",
-  "te/xt/plain",
-  "te[xt/plain",
-  "te]xt/plain",
-  "te?xt/plain",
-  "te=xt/plain",
-  "te{xt/plain",
-  "te}xt/plain",
-  "te\x20xt/plain",
-  "te\x09xt/plain",
-  "te\x00xt/plain",
-  "te\x1Fxt/plain",
-  "te\x7Fxt/plain"
-];
-invalidTypes.forEach(function(type) {
-  test_blob(function() {
-    var blob = new Blob(["PASS"]);
-    return blob.slice(0, 4, type);
-  }, {
-    expected: "PASS",
-    type: "",
-    desc: "Invalid contentType (" + format_value(type) + ")"
-  });
-});
-
-var validTypes = [
-  "TEXT/PLAIN",
-  "text/plain;charset = UTF-8",
-  "text/plain;charset=UTF-8"
-];
-validTypes.forEach(function(type) {
-  test_blob(function() {
-    var blob = new Blob(["PASS"]);
-    return blob.slice(0, 4, type);
-  }, {
-    expected: "PASS",
-    type: type.toLowerCase(),
-    desc: "Valid contentType (" + format_value(type) + ")"
-  });
-});
-</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/BlobURL/test1-manual.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://www.w3.org/TR/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>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/BlobURL/test1_manual.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>Blob and File reference URL Test(1)</title>
-    <link rel=help href="http://www.w3.org/TR/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>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/BlobURL/test2-manual.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>Blob and File reference URL Test(2)</title>
+    <link rel=help href="http://www.w3.org/TR/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"><br><input type="button" id="start" value="start">
+    </form>
+
+    <div>
+        <p>Test steps:</p>
+        <ol>
+            <li>Download the <a href="support/file_test2.txt">file</a>.</li>
+            <li>Select the file in the file inputbox.</li>
+            <li>Delete the file.</li>
+            <li>Click the 'start' button.</li>
+        </ol>
+    </div>
+
+    <div id="log"></div>
+
+    <script>
+
+        var fileChooser = document.querySelector('#fileChooser');
+
+        setup({explicit_done: true});
+        setup({explicit_timeout: true});
+
+        on_event(document.querySelector('#start'), 'click', function() {
+
+            async_test(function(t) {
+
+                var url = URL.createObjectURL(fileChooser.files[0]);
+
+                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.');
+                        t.done();
+                        return;
+                    }
+                });
+
+                xhr.send();
+
+            }, 'Check whether the browser response 500 in XHR if the selected file which File/Blob URL refered is not found');
+
+            done();
+
+        });
+
+    </script>
+</body>
+</html>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/BlobURL/test2_manual.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>Blob and File reference URL Test(2)</title>
-    <link rel=help href="http://www.w3.org/TR/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"><br><input type="button" id="start" value="start">
-    </form>
-
-    <div>
-        <p>Test steps:</p>
-        <ol>
-            <li>Download the <a href="support/file_test2.txt">file</a>.</li>
-            <li>Select the file in the file inputbox.</li>
-            <li>Delete the file.</li>
-            <li>Click the 'start' button.</li>
-        </ol>
-    </div>
-
-    <div id="log"></div>
-
-    <script>
-
-        var fileChooser = document.querySelector('#fileChooser');
-
-        setup({explicit_done: true});
-        setup({explicit_timeout: true});
-
-        on_event(document.querySelector('#start'), 'click', function() {
-
-            async_test(function(t) {
-
-                var url = URL.createObjectURL(fileChooser.files[0]);
-
-                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.');
-                        t.done();
-                        return;
-                    }
-                });
-
-                xhr.send();
-
-            }, 'Check whether the browser response 500 in XHR if the selected file which File/Blob URL refered is not found');
-
-            done();
-
-        });
-
-    </script>
-</body>
-</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/BlobURL/test3-manual.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://www.w3.org/TR/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>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/BlobURL/test3_manual.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>Blob and File reference URL Test(3)</title>
-    <link rel=help href="http://www.w3.org/TR/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>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/File-constructor.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>File constructor</title>
-<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-file">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id="log"></div>
-<script>
-test(function() {
-  assert_true("File" in window, "window should have a File property.");
-}, "File interface object exists");
-
-function test_first_argument(arg1, expectedSize, testName) {
-  test(function() {
-    var file = new File(arg1, "dummy");
-    assert_true(file instanceof File);
-    assert_equals(file.name, "dummy");
-    assert_equals(file.size, expectedSize);
-    assert_equals(file.type, "");
-    // assert_false(file.isClosed); XXX: File.isClosed doesn't seem to be implemented
-    assert_not_equals(file.lastModified, "");
-  }, testName);
-}
-
-test_first_argument(["bits"], 4, "DOMString fileBits");
-test_first_argument(["๐“ฝ๐“ฎ๐”๐“ฝ"], 16, "Unicode DOMString fileBits");
-test_first_argument([new Blob()], 0, "Empty Blob fileBits");
-test_first_argument([new Blob(["bits"])], 4, "Blob fileBits");
-test_first_argument([new ArrayBuffer(8)], 8, "ArrayBuffer fileBits");
-test_first_argument([new Uint8Array([0x50, 0x41, 0x53, 0x53])], 4, "Typed array fileBits");
-test_first_argument(["bits", new Blob(["bits"]), new Blob(), new Uint8Array([0x50, 0x41]),
-                     new Uint16Array([0x5353]), new Uint32Array([0x53534150])], 16, "Various fileBits");
-
-function test_second_argument(arg2, expectedFileName, testName) {
-  test(function() {
-    var file = new File(["bits"], arg2);
-    assert_true(file instanceof File);
-    assert_equals(file.name, expectedFileName);
-  }, testName);
-}
-
-test_second_argument("dummy", "dummy", "Using fileName");
-test_second_argument("dummy/foo", "dummy:foo", "Using special character in fileName");
-
-// testing the third argument
-test(function() {
-  var file = new File(["bits"], "dummy", { type: "text/plain"});
-  assert_true(file instanceof File);
-  assert_equals(file.type, "text/plain");
-}, "Using type on the File constructor");
-test(function() {
-  var file = new File(["bits"], "dummy", { type: "TEXT/PLAIN"});
-  assert_true(file instanceof File);
-  assert_equals(file.type, "text/plain");
-}, "Using uppercase characters in type");
-test(function() {
-  var file = new File(["bits"], "dummy", { type: "๐“ฝ๐“ฎ๐”๐“ฝ/๐”ญ๐”ฉ๐”ž๐”ฆ๐”ซ"});
-  assert_true(file instanceof File);
-  assert_equals(file.type, "");
-}, "Using illegal character for type");
-test(function() {
-  var file = new File(["bits"], "dummy", { lastModified: 42 });
-  assert_true(file instanceof File);
-  assert_equals(file.lastModified, 42);
-}, "Using lastModified");
-test(function() {
-  var file = new File(["bits"], "dummy", { name: "foo" });
-  assert_true(file instanceof File);
-  assert_equals(file.name, "dummy");
-}, "Misusing name");
-
-</script>
deleted file mode 100644
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/FileReader-interface/filereader_abort.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <title>FileAPI Test: filereader_abort</title>
-    <link rel="author" title="Intel" href="http://www.intel.com">
-    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#abort">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-  </head>
-  <body>
-    <div id="log"></div>
-
-    <script>
-    test(function() {
-      var readerNoRead = new FileReader();
-      readerNoRead.abort();
-      assert_equals(readerNoRead.readyState, readerNoRead.EMPTY);
-      assert_equals(readerNoRead.result, null);
-    }, "Aborting before read");
-
-    async_test(function() {
-      var blob = new Blob(["TEST THE ABORT METHOD"]);
-      var readerAbort = new FileReader();
-
-      readerAbort.onabort = this.step_func(function(evt) {
-        assert_equals(readerAbort.readyState, readerAbort.DONE);
-      });
-
-      readerAbort.onloadstart = this.step_func(function(evt) {
-        assert_equals(readerAbort.readyState, readerAbort.LOADING);
-        readerAbort.abort();
-      });
-
-      readerAbort.onloadend = this.step_func(function(evt) {
-        // https://www.w3.org/Bugs/Public/show_bug.cgi?id=24401
-        assert_equals(readerAbort.result, null);
-        assert_equals(readerAbort.readyState, readerAbort.DONE);
-        this.done();
-      });
-
-      readerAbort.readAsText(blob);
-    }, "Aborting after read");
-    </script>
-  </body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/FileReader-interface/filereader_error.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <title>FileAPI Test: filereader_error</title>
-    <link rel="author" title="Intel" href="http://www.intel.com">
-    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-domerror">
-    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#abort">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-  </head>
-  <body>
-    <div id="log"></div>
-
-    <script>
-    async_test(function() {
-      var blob = new Blob(["TEST THE ERROR ATTRIBUTE AND ERROR EVENT"]);
-      var reader = new FileReader();
-      assert_equals(reader.error, null, "The error is null when no error occurred");
-
-      reader.onload = this.step_func(function(evt) {
-        assert_unreached("Should not dispatch the load event");
-      });
-
-      reader.onloadend = this.step_func(function(evt) {
-        assert_equals(reader.result, null, "The result is null");
-        this.done();
-      });
-
-      reader.readAsText(blob);
-      reader.abort();
-    });
-    </script>
-  </body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/FileReader-interface/filereader_file-manual.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <title>FileAPI Test: filereader_file</title>
-    <link rel="author" title="Intel" href="http://www.intel.com">
-    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#FileReader-interface">
-    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#file">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-  </head>
-  <body>
-    <div>
-      <p>Test step:</p>
-      <ol>
-        <li>Download <a href="support/blue-100x100.png">blue-100x100.png</a> to local.</li>
-        <li>Select the local file (blue-100x100.png) to run the test.</li>
-      </ol>
-    </div>
-
-    <form name="uploadData">
-      <input type="file" id="fileChooser">
-    </form>
-
-    <div id="log"></div>
-    <script>
-      var fileInput = document.querySelector('#fileChooser');
-      var reader = new FileReader();
-
-      //readType: 1-> ArrayBuffer, 2-> Text, 3-> DataURL
-      var readType = 1;
-
-      setup({
-        explicit_done: true,
-        explicit_timeout: true,
-      });
-
-      on_event(fileInput, "change", function(evt) {
-        reader.readAsArrayBuffer(fileInput.files[0]);
-      });
-
-      on_event(reader, "load", function(evt) {
-        if (readType == 1) {
-          test(function() {
-            assert_true(reader.result instanceof ArrayBuffer, "The result is instanceof ArrayBuffer");
-          }, "Check if the readAsArrayBuffer works");
-
-          readType++;
-          reader.readAsText(fileInput.files[0]);
-        } else if (readType == 2) {
-          test(function() {
-            assert_equals(typeof reader.result, "string", "The result is typeof string");
-          }, "Check if the readAsText works");
-
-          readType++;
-          reader.readAsDataURL(fileInput.files[0]);
-        } else if (readType == 3) {
-          test(function() {
-            assert_equals(typeof reader.result, "string", "The result is typeof string");
-            assert_equals(reader.result.indexOf("data"), 0, "The result starts with 'data'");
-            assert_true(reader.result.indexOf("base64") > 0, "The result contains 'base64'");
-          }, "Check if the readAsDataURL works");
-
-          done();
-        }
-      });
-    </script>
-  </body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/FileReader-interface/filereader_file_img-manual.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <title>FileAPI Test: filereader_file_img</title>
-    <link rel="author" title="Intel" href="http://www.intel.com">
-    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#FileReader-interface">
-    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#file">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-  </head>
-  <body>
-    <div>
-      <p>Test step:</p>
-      <ol>
-        <li>Download <a href="support/blue-100x100.png">blue-100x100.png</a> to local.</li>
-        <li>Select the local file (blue-100x100.png) to run the test.</li>
-      </ol>
-    </div>
-
-    <form name="uploadData">
-      <input type="file" id="fileChooser">
-    </form>
-
-    <div id="log"></div>
-    <script>
-      var fileInput = document.querySelector('#fileChooser');
-      var reader = new FileReader();
-
-      setup({
-        explicit_done: true,
-        explicit_timeout: true,
-      });
-
-      fileInput.addEventListener("change", function(evt) {
-        reader.readAsDataURL(fileInput.files[0]);
-      }, false);
-
-      reader.addEventListener("loadend", function(evt) {
-        test(function () {
-          assert_true(reader.result.indexOf("iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAqklEQVR42u3RsREAMAgDMe+/M4E7ZkhBoeI9gJWkWpfaeToTECACAkRAgAgIEAEB4gQgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgQJwARECACAgQ/W4AQauujc8IdAoAAAAASUVORK5CYII=") != -1, "Encoded image")
-        }, "Check if readAsDataURL returns correct image");
-        done();
-      }, false);
-    </script>
-  </body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/FileReader-interface/filereader_readAsArrayBuffer.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <title>FileAPI Test: filereader_readAsArrayBuffer</title>
-    <link rel="author" title="Intel" href="http://www.intel.com">
-    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#readAsArrayBuffer">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-  </head>
-  <body>
-    <div id="log"></div>
-
-    <script>
-    async_test(function() {
-      var blob = new Blob(["TEST"]);
-      var reader = new FileReader();
-
-      reader.onload = this.step_func(function(evt) {
-        assert_equals(reader.result.byteLength, 4, "The byteLength is 4");
-        assert_true(reader.result instanceof ArrayBuffer, "The result is instanceof ArrayBuffer");
-        assert_equals(reader.readyState, reader.DONE);
-        this.done();
-      });
-
-      reader.onloadstart = this.step_func(function(evt) {
-        assert_equals(reader.readyState, reader.LOADING);
-      });
-
-      reader.onprogress = this.step_func(function(evt) {
-        assert_equals(reader.readyState, reader.LOADING);
-      });
-
-      reader.readAsArrayBuffer(blob);
-    });
-    </script>
-  </body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/FileReader-interface/filereader_readAsDataURL.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <title>FileAPI Test: filereader_readAsDataURL</title>
-    <link rel="author" title="Intel" href="http://www.intel.com">
-    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#readAsDataURL">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-  </head>
-  <body>
-    <div id="log"></div>
-
-    <script>
-    async_test(function() {
-      var blob = new Blob(["TEST"]);
-      var reader = new FileReader();
-
-      reader.onload = this.step_func(function(evt) {
-        assert_equals(typeof reader.result, "string", "The result is string");
-        assert_equals(reader.result.indexOf("data:"), 0, "The result attribute starts with 'data'");
-        assert_true(reader.result.indexOf("base64") > 0, "The result attribute contains 'base64'");
-        assert_equals(reader.readyState, reader.DONE);
-        this.done();
-      });
-
-      reader.onloadstart = this.step_func(function(evt) {
-        assert_equals(reader.readyState, reader.LOADING);
-      });
-
-      reader.onprogress = this.step_func(function(evt) {
-        assert_equals(reader.readyState, reader.LOADING);
-      });
-
-      reader.readAsDataURL(blob);
-    });
-    </script>
-  </body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/FileReader-interface/filereader_readAsText.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <title>FileAPI Test: filereader_readAsText</title>
-    <link rel="author" title="Intel" href="http://www.intel.com">
-    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#readAsDataText">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-  </head>
-  <body>
-    <div id="log"></div>
-
-    <script>
-    async_test(function() {
-      var blob = new Blob(["TEST"]);
-      var reader = new FileReader();
-
-      reader.onload = this.step_func(function(evt) {
-        assert_equals(typeof reader.result, "string", "The result is typeof string");
-        assert_equals(reader.result, "TEST", "The result is TEST");
-        this.done();
-      });
-
-      reader.onloadstart = this.step_func(function(evt) {
-        assert_equals(reader.readyState, reader.LOADING, "The readyState");
-      });
-
-      reader.onprogress = this.step_func(function(evt) {
-        assert_equals(reader.readyState, reader.LOADING);
-      });
-
-      reader.readAsText(blob);
-    }, "readAsText should correctly read UTF-8.");
-
-    async_test(function() {
-      var blob = new Blob(["TEST"]);
-      var reader = new FileReader();
-      var reader_UTF16 = new FileReader();
-      reader_UTF16.onload = this.step_func(function(evt) {
-        // "TEST" in UTF-8 is 0x54 0x45 0x53 0x54.
-        // Decoded as utf-16 (little-endian), we get 0x4554 0x5453.
-        assert_equals(reader_UTF16.readyState, reader.DONE, "The readyState");
-        assert_equals(reader_UTF16.result, "\u4554\u5453", "The result is not TEST");
-        this.done();
-      });
-      reader_UTF16.readAsText(blob, "UTF-16");
-    }, "readAsText should correctly read UTF-16.");
-    </script>
-  </body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/FileReader-interface/filereader_readystate.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <title>FileAPI Test: filereader_readystate</title>
-    <link rel="author" title="Intel" href="http://www.intel.com">
-    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#blobreader-state">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-  </head>
-  <body>
-    <div id="log"></div>
-
-    <script>
-    async_test(function() {
-      var blob = new Blob(["THIS TEST THE READYSTATE WHEN READ BLOB"]);
-      var reader = new FileReader();
-
-      assert_equals(reader.readyState, reader.EMPTY);
-
-      reader.onloadstart = this.step_func(function(evt) {
-        assert_equals(reader.readyState, reader.LOADING);
-      });
-
-      reader.onloadend = this.step_func(function(evt) {
-        assert_equals(reader.readyState, reader.DONE);
-        this.done();
-      });
-
-      reader.readAsDataURL(blob);
-    });
-    </script>
-  </body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/FileReader-interface/filereader_result.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <title>FileAPI Test: filereader_result</title>
-    <link rel="author" title="Intel" href="http://www.intel.com">
-    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#filedata-attr">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-  </head>
-  <body>
-    <div id="log"></div>
-
-    <script>
-    var blob;
-    setup(function() {
-      blob = new Blob(["This test the result attribute"]);
-    });
-
-    async_test(function() {
-      var readText = new FileReader();
-      assert_equals(readText.result, null);
-
-      readText.onloadend = this.step_func(function(evt) {
-        assert_equals(typeof readText.result, "string", "The result type is string");
-        assert_equals(readText.result, "This test the result attribute", "The result is correct");
-        this.done();
-      });
-
-      readText.readAsText(blob);
-    }, "readAsText");
-
-    async_test(function() {
-      var readDataURL = new FileReader();
-      assert_equals(readDataURL.result, null);
-
-      readDataURL.onloadend = this.step_func(function(evt) {
-        assert_equals(typeof readDataURL.result, "string", "The result type is string");
-        assert_true(readDataURL.result.indexOf("VGhpcyB0ZXN0IHRoZSByZXN1bHQgYXR0cmlidXRl") != -1, "return the right base64 string");
-        this.done();
-      });
-
-      readDataURL.readAsDataURL(blob);
-    }, "readAsDataURL");
-
-    async_test(function() {
-      var readArrayBuffer = new FileReader();
-      assert_equals(readArrayBuffer.result, null);
-
-      readArrayBuffer.onloadend = this.step_func(function(evt) {
-        assert_true(readArrayBuffer.result instanceof ArrayBuffer, "The result is instanceof ArrayBuffer");
-        this.done();
-      });
-
-      readArrayBuffer.readAsArrayBuffer(blob);
-    }, "readAsArrayBuffer");
-    </script>
-  </body>
-</html>
deleted file mode 100644
index 5748719ff22a34993eeb4de4d1fe7cfd27e92959..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/FileReader/Determining-Encoding.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>FileAPI Test: Blob Determining Encoding</title>
-<link ref="author" title="march1993" href="mailto:march511@gmail.com">
-<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#enctype">
-<link rel=help href="http://encoding.spec.whatwg.org/#decode">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id="log"></div>
-<script>
-var t = async_test("Blob Determing Encoding with encoding argument");
-t.step(function() {
-    // string 'hello'
-    var data = [0xFE,0xFF,0x00,0x68,0x00,0x65,0x00,0x6C,0x00,0x6C,0x00,0x6F];
-    var blob = new Blob([new Uint8Array(data)]);
-    var reader = new FileReader();
-
-    reader.onloadend = t.step_func_done (function(event) {
-        assert_equals(this.result, "hello", "The FileReader should read the ArrayBuffer through UTF-16BE.")
-    }, reader);
-
-    reader.readAsText(blob, "UTF-16BE");
-});
-
-var t = async_test("Blob Determing Encoding with type attribute");
-t.step(function() {
-    var data = [0xFE,0xFF,0x00,0x68,0x00,0x65,0x00,0x6C,0x00,0x6C,0x00,0x6F];
-    var blob = new Blob([new Uint8Array(data)], {type:"text/plain;charset=UTF-16BE"});
-    var reader = new FileReader();
-
-    reader.onloadend = t.step_func_done (function(event) {
-        assert_equals(this.result, "hello", "The FileReader should read the ArrayBuffer through UTF-16BE.")
-    }, reader);
-
-    reader.readAsText(blob);
-});
-
-
-var t = async_test("Blob Determing Encoding with UTF-8 BOM");
-t.step(function() {
-    var data = [0xEF,0xBB,0xBF,0x68,0x65,0x6C,0x6C,0xC3,0xB6];
-    var blob = new Blob([new Uint8Array(data)]);
-    var reader = new FileReader();
-
-    reader.onloadend = t.step_func_done (function(event) {
-        assert_equals(this.result, "hellรถ", "The FileReader should read the blob with UTF-8.");
-    }, reader);
-
-    reader.readAsText(blob);
-});
-
-var t = async_test("Blob Determing Encoding without anything implying charset.");
-t.step(function() {
-    var data = [0x68,0x65,0x6C,0x6C,0xC3,0xB6];
-    var blob = new Blob([new Uint8Array(data)]);
-    var reader = new FileReader();
-
-    reader.onloadend = t.step_func_done (function(event) {
-        assert_equals(this.result, "hellรถ", "The FileReader should read the blob by default with UTF-8.");
-    }, reader);
-
-    reader.readAsText(blob);
-});
-
-var t = async_test("Blob Determing Encoding with UTF-16BE BOM");
-t.step(function() {
-    var data = [0xFE,0xFF,0x00,0x68,0x00,0x65,0x00,0x6C,0x00,0x6C,0x00,0x6F];
-    var blob = new Blob([new Uint8Array(data)]);
-    var reader = new FileReader();
-
-    reader.onloadend = t.step_func_done (function(event) {
-        assert_equals(this.result, "hello", "The FileReader should read the ArrayBuffer through UTF-16BE.");
-    }, reader);
-
-    reader.readAsText(blob);
-});
-
-var t = async_test("Blob Determing Encoding with UTF-16LE BOM");
-t.step(function() {
-    var data = [0xFF,0xFE,0x68,0x00,0x65,0x00,0x6C,0x00,0x6C,0x00,0x6F,0x00];
-    var blob = new Blob([new Uint8Array(data)]);
-    var reader = new FileReader();
-
-    reader.onloadend = t.step_func_done (function(event) {
-        assert_equals(this.result, "hello", "The FileReader should read the ArrayBuffer through UTF-16LE.");
-    }, reader);
-
-    reader.readAsText(blob);
-});
-
-</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/FileReader/test_errors-manual.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>FileReader Errors Test</title>
+    <link rel=help href="http://www.w3.org/TR/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"><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.</li>
+            <li>Click the 'start' button.</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 reader = new FileReader();
+                reader.readAsArrayBuffer(fileChooser.files[0]);
+
+                reader.onloadend = t.step_func_done(function(event) {
+                    assert_equals(event.target.readyState, FileReader.DONE);
+                    assert_equals(reader.error, null);
+                });
+
+            }, 'FileReader.error should be null if there are no errors when reading');
+
+        });
+
+        on_event(document.querySelector('#start'), 'click', function() {
+
+            async_test(function(t) {
+
+                var reader = new FileReader();
+                reader.readAsArrayBuffer(fileChooser.files[0]);
+
+                reader.onloadend = t.step_func_done(function(event) {
+                    assert_equals(event.target.readyState, FileReader.DONE);
+                    assert_equals(reader.error.code, 8);
+                });
+
+            }, 'FileReader.error should be NOT_FOUND_ERR if the file is not found when reading');
+
+            done();
+
+        });
+
+    </script>
+</body>
+</html>
\ No newline at end of file
deleted file mode 100644
--- a/testing/web-platform/tests/FileAPI/FileReader/test_errors_manual.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>FileReader Errors Test</title>
-    <link rel=help href="http://www.w3.org/TR/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"><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.</li>
-            <li>Click the 'start' button.</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 reader = new FileReader();
-                reader.readAsArrayBuffer(fileChooser.files[0]);
-
-                reader.onloadend = t.step_func_done(function(event) {
-                    assert_equals(event.target.readyState, FileReader.DONE);
-                    assert_equals(reader.error, null);
-                });
-
-            }, 'FileReader.error should be null if there are no errors when reading');
-
-        });
-
-        on_event(document.querySelector('#start'), 'click', function() {
-
-            async_test(function(t) {
-
-                var reader = new FileReader();
-                reader.readAsArrayBuffer(fileChooser.files[0]);
-
-                reader.onloadend = t.step_func_done(function(event) {
-                    assert_equals(event.target.readyState, FileReader.DONE);
-                    assert_equals(reader.error.code, 8);
-                });
-
-            }, 'FileReader.error should be NOT_FOUND_ERR if the file is not found when reading');
-
-            done();
-
-        });
-
-    </script>
-</body>
-</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/blob/Blob-XHR-revoke.html
@@ -0,0 +1,28 @@
+<!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(function() {
+        assert_equals(xhr.response, "test");
+        t.done();
+    })
+    xhr.onerror = t.step_func(function() {
+        assert_unreached("Got unexpected error event");
+    })
+});
+</script>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/blob/Blob-close.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Blob.close</title>
+<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-close">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../support/Blob.js"></script>
+<div id="log"></div>
+<script>
+test(function() {
+  var blob = new Blob(["TEST"]);
+  var sliced = blob.slice();
+  blob.close();
+  test_blob(function() {
+    return blob;
+  }, {
+    expected: "",
+    type: "",
+    desc: "Blob should be empty."
+  });
+  test_blob(function() {
+    return sliced;
+  }, {
+    expected: "PASS",
+    type: "",
+    desc: "Slice should still have the data."
+  });
+});
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/blob/Blob-constructor.html
@@ -0,0 +1,498 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Blob constructor</title>
+<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#constructorBlob">
+<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-union">
+<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-dictionary">
+<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-sequence">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../support/Blob.js"></script>
+<p><strong><a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=23683">Discussion</a>
+is ongoing that will affect a number of the following tests.</strong>
+<div id="log"></div>
+<!-- used by "platform object that supports indexed properties" tests -->
+<iframe style="display:none"></iframe>
+<script>
+test(function() {
+  assert_true("Blob" in window, "window should have a Blob property.");
+  assert_equals(Blob.length, 2, "Blob.length should be 2.");
+  assert_true(Blob instanceof Function, "Blob should be a function.");
+}, "Blob interface object");
+
+// Step 1.
+test(function() {
+  var blob = new Blob();
+  assert_true(blob instanceof Blob);
+  assert_equals(String(blob), '[object Blob]');
+  assert_equals(blob.size, 0);
+  assert_equals(blob.type, "");
+}, "no-argument Blob constructor");
+test(function() {
+  var blob = Blob();
+  assert_true(blob instanceof Blob);
+  assert_equals(blob.size, 0);
+  assert_equals(blob.type, "");
+}, "no-argument Blob constructor without 'new'");
+test(function() {
+  var blob = new Blob;
+  assert_true(blob instanceof Blob);
+  assert_equals(blob.size, 0);
+  assert_equals(blob.type, "");
+}, "no-argument Blob constructor without brackets");
+
+// blobParts argument (WebIDL).
+test(function() {
+  var args = [
+    null,
+    undefined,
+    true,
+    false,
+    0,
+    1,
+    1.5,
+    "FAIL",
+    new Date(),
+    new RegExp(),
+  ];
+  args.forEach(function(arg) {
+    assert_throws(new TypeError(), function() {
+      new Blob(arg);
+    }, "Should throw for argument " + format_value(arg) + ".");
+  });
+}, "Passing non-objects, Dates and RegExps for blobParts should throw a TypeError.");
+
+test_blob(function() {
+  return new Blob({});
+}, {
+  expected: "",
+  type: "",
+  desc: "A plain object should be treated as a sequence for the blobParts argument."
+});
+test_blob(function() {
+  return new Blob({ 0: "PASS", length: 1 });
+}, {
+  expected: "PASS",
+  type: "",
+  desc: "A plain object with a length property should be treated as a sequence for the blobParts argument."
+});
+test_blob(function() {
+  return new Blob(new String("xyz"));
+}, {
+  expected: "xyz",
+  type: "",
+  desc: "A String object should be treated as a sequence for the blobParts argument."
+});
+test_blob(function() {
+  return new Blob(new Uint8Array([1, 2, 3]));
+}, {
+  expected: "123",
+  type: "",
+  desc: "A Uint8Array object should be treated as a sequence for the blobParts argument."
+});
+
+var test_error = { name: "test" };
+
+test(function() {
+  var obj = {
+    get length() { throw test_error; }
+  };
+  assert_throws(test_error, function() {
+    new Blob(obj);
+  });
+}, "The length getter should be invoked and any exceptions should be propagated.");
+
+test_blob(function() {
+  var element = document.createElement("div");
+  element.appendChild(document.createElement("div"));
+  element.appendChild(document.createElement("p"));
+  var list = element.children;
+  Object.defineProperty(list, "length", {
+    get: function() { throw test_error; }
+  });
+  return new Blob(list);
+}, {
+  expected: "[object HTMLDivElement][object HTMLParagraphElement]",
+  type: "",
+  desc: "A platform object that supports indexed properties should be treated as a sequence for the blobParts argument (overwritten 'length'.)"
+});
+
+test(function() {
+  assert_throws(test_error, function() {
+    var obj = {
+      length: {
+        valueOf: null,
+        toString: function() { throw test_error; }
+      }
+    };
+    new Blob(obj);
+  });
+  assert_throws(test_error, function() {
+    var obj = {
+      length: { valueOf: function() { throw test_error; } }
+    };
+    new Blob(obj);
+  });
+}, "ToUint32 should be applied to the length and any exceptions should be propagated.");
+
+test(function() {
+  var received = [];
+  var obj = {
+    get length() {
+      received.push("length getter");
+      return {
+        valueOf: function() {
+          received.push("length valueOf");
+          return 3;
+        }
+      };
+    },
+    get 0() {
+      received.push("0 getter");
+      return {
+        toString: function() {
+          received.push("0 toString");
+          return "a";
+        }
+      };
+    },
+    get 1() {
+      received.push("1 getter");
+      throw test_error;
+    },
+    get 2() {
+      received.push("2 getter");
+      assert_unreached("Should not call the getter for 2 if the getter for 1 threw.");
+    }
+  };
+  assert_throws(test_error, function() {
+    new Blob(obj);
+  });
+  assert_array_equals(received, [
+    "length getter",
+    "length valueOf",
+    "0 getter",
+    "0 toString",
+    "1 getter"
+  ]);
+}, "Getters and value conversions should happen in order until an exception is thrown.");
+
+// XXX should add tests edge cases of ToUint32(length)
+
+test(function() {
+  assert_throws(test_error, function() {
+    new Blob([{ toString: function() { throw test_error; } }]);
+  }, "Throwing toString");
+  assert_throws(test_error, function() {
+    new Blob([{ toString: undefined, valueOf: function() { throw test_error; } }]);
+  }, "Throwing valueOf");
+  assert_throws(test_error, function() {
+    new Blob([{
+      toString: function() { throw test_error; },
+      valueOf: function() { assert_unreached("Should not call valueOf if toString is present."); }
+    }]);
+  }, "Throwing toString and valueOf");
+  assert_throws(new TypeError(), function() {
+    new Blob([{toString: null, valueOf: null}]);
+  }, "Null toString and valueOf");
+}, "ToString should be called on elements of the blobParts array and any exceptions should be propagated.");
+
+test_blob(function() {
+  var arr = [
+    { toString: function() { arr.pop(); return "PASS"; } },
+    { toString: function() { assert_unreached("Should have removed the second element of the array rather than called toString() on it."); } }
+  ];
+  return new Blob(arr);
+}, {
+  expected: "PASSundefined",
+  type: "",
+  desc: "Changes to the blobParts array should be reflected in the returned Blob (pop)."
+});
+
+test_blob(function() {
+  var arr = [
+    {
+      toString: function() {
+        if (arr.length === 3) {
+          return "SS";
+        }
+        arr.unshift({
+          toString: function() {
+            assert_unreached("Should only access index 0 once.");
+          }
+        });
+        return "PA";
+      }
+    },
+    {
+      toString: function() {
+        assert_unreached("Should not access the final element.");
+      }
+    }
+  ];
+  return new Blob(arr);
+}, {
+  expected: "PASS",
+  type: "",
+  desc: "Changes to the blobParts array should be reflected in the returned Blob (unshift)."
+});
+
+test_blob(function() {
+  // https://www.w3.org/Bugs/Public/show_bug.cgi?id=17652
+  return new Blob([
+    null,
+    undefined,
+    true,
+    false,
+    0,
+    1,
+    new String("stringobject"),
+    [],
+    ['x', 'y'],
+    {},
+    { 0: "FAIL", length: 1 },
+    { toString: function() { return "stringA"; } },
+    { toString: undefined, valueOf: function() { return "stringB"; } },
+    { valueOf: function() { assert_unreached("Should not call valueOf if toString is present on the prototype."); } }
+  ]);
+}, {
+  expected: "nullundefinedtruefalse01stringobjectx,y[object Object][object Object]stringAstringB[object Object]",
+  type: "",
+  desc: "ToString should be called on elements of the blobParts array."
+});
+
+test_blob(function() {
+  return new Blob([
+    new ArrayBuffer(8)
+  ]);
+}, {
+  expected: "\0\0\0\0\0\0\0\0",
+  type: "",
+  desc: "ArrayBuffer elements of the blobParts array should be supported."
+});
+
+test_blob(function() {
+  return new Blob([
+    new Uint8Array([0x50, 0x41, 0x53, 0x53]),
+    new Int8Array([0x50, 0x41, 0x53, 0x53]),
+    new Uint16Array([0x4150, 0x5353]),
+    new Int16Array([0x4150, 0x5353]),
+    new Uint32Array([0x53534150]),
+    new Int32Array([0x53534150]),
+    new Float32Array([0xD341500000])
+  ]);
+}, {
+  expected: "PASSPASSPASSPASSPASSPASSPASS",
+  type: "",
+  desc: "Passing typed arrays as elements of the blobParts array should work."
+});
+test_blob(function() {
+  return new Blob([
+    // 0x535 3415053534150
+    // 0x535 = 0b010100110101 -> Sign = +, Exponent = 1333 - 1023 = 310
+    // 0x13415053534150 * 2**(-52)
+    // ==> 0x13415053534150 * 2**258 = 2510297372767036725005267563121821874921913208671273727396467555337665343087229079989707079680
+    new Float64Array([2510297372767036725005267563121821874921913208671273727396467555337665343087229079989707079680])
+  ]);
+}, {
+  expected: "PASSPASS",
+  type: "",
+  desc: "Passing a Float64Array as element of the blobParts array should work."
+});
+
+test_blob(function() {
+  return new Blob(document.createElement("div"));
+}, {
+  expected: "",
+  type: "",
+  desc: "Passing an element as the blobParts array should work."
+});
+
+test_blob(function() {
+  return new Blob(window);
+}, {
+  expected: "[object Window]",
+  type: "",
+  desc: "Passing an platform object that supports indexed properties as the blobParts array should work (window)."
+});
+test_blob(function() {
+  window[0].toString = function() { return "foo"; };
+  return new Blob(window);
+}, {
+  expected: "foo",
+  type: "",
+  desc: "Passing an platform object that supports indexed properties as the blobParts array should work (window with custom toString)."
+});
+test_blob(function() {
+  var select = document.createElement("select");
+  select.appendChild(document.createElement("option"));
+  return new Blob(select);
+}, {
+  expected: "[object HTMLOptionElement]",
+  type: "",
+  desc: "Passing an platform object that supports indexed properties as the blobParts array should work (select)."
+});
+
+var t_ports = async_test("Passing a platform array object as the blobParts array should work (MessagePort[]).");
+t_ports.step(function() {
+    var channel = new MessageChannel();
+    channel.port2.onmessage = this.step_func(function(e) {
+        var b_ports = new Blob(e.ports);
+        assert_equals(b_ports.size, "[object MessagePort]".length);
+        this.done();
+    });
+    var channel2 = new MessageChannel();
+    channel.port1.postMessage('', [channel2.port1]);
+});
+
+test_blob(function() {
+  var elm = document.createElement("div");
+  elm.setAttribute("foo", "bar");
+  return new Blob(elm.attributes);
+}, {
+  expected: "[object Attr]",
+  type: "",
+  desc: "Passing a platform array object as the blobParts array should work (Attr[])."
+});
+
+test_blob(function() {
+  var blob = new Blob(['foo']);
+  return new Blob([blob, blob]);
+}, {
+  expected: "foofoo",
+  type: "",
+  desc: "Array with two blobs"
+});
+
+test_blob_binary(function() {
+  var view = new Uint8Array([0, 255, 0]);
+  return new Blob([view.buffer, view.buffer]);
+}, {
+  expected: [0, 255, 0, 0, 255, 0],
+  type: "",
+  desc: "Array with two buffers"
+});
+
+test_blob_binary(function() {
+  var view = new Uint8Array([0, 255, 0, 4]);
+  var blob = new Blob([view, view]);
+  assert_equals(blob.size, 8);
+  var view1 = new Uint16Array(view.buffer, 2);
+  return new Blob([view1, view.buffer, view1]);
+}, {
+  expected: [0, 4, 0, 255, 0, 4, 0, 4],
+  type: "",
+  desc: "Array with two bufferviews"
+});
+
+test_blob(function() {
+  var view = new Uint8Array([0]);
+  var blob = new Blob(["fo"]);
+  return new Blob([view.buffer, blob, "foo"]);
+}, {
+  expected: "\0fofoo",
+  type: "",
+  desc: "Array with mixed types"
+});
+
+// options argument
+test(function() {
+  new Blob([], { endings: "invalidEnumValue" });
+  new Blob([], { endings: null });
+  new Blob([], { endings: undefined });
+  new Blob([], { endings: 0 });
+  new Blob([], { get endings() { assert_unreached("Should not call getter"); } });
+}, "The 'endings' property should be ignored.");
+
+test(function() {
+  assert_throws(test_error, function() {
+    new Blob([], {
+      get type() { throw test_error; }
+    });
+  });
+  assert_throws(test_error, function() {
+    new Blob([], {
+      type: { toString: function() { throw test_error; } }
+    });
+  });
+}, "options properties should be accessed in lexicographic order.");
+
+test(function() {
+  assert_throws(test_error, function() {
+    new Blob(
+      [{ toString: function() { throw test_error } }],
+      {
+        get type() { assert_unreached("type getter should not be called."); }
+      }
+    );
+  });
+}, "Arguments should be evaluated from left to right.");
+
+[
+  null,
+  undefined,
+  {},
+  { unrecognized: true },
+  /regex/,
+  function() {}
+].forEach(function(arg, idx) {
+  test_blob(function() {
+    return new Blob([], arg);
+  }, {
+    expected: "",
+    type: "",
+    desc: "Passing " + format_value(arg) + " (index " + idx + ") for options should use the defaults."
+  });
+  test_blob(function() {
+    return new Blob(["\na\r\nb\n\rc\r"], arg);
+  }, {
+    expected: "\na\r\nb\n\rc\r",
+    type: "",
+    desc: "Passing " + format_value(arg) + " (index " + idx + ") for options should use the defaults (with newlines)."
+  });
+});
+
+test_blob(function() {
+  return new Blob(["\na\r\nb\n\rc\r"], { endings: "transparent" });
+}, {
+  expected: "\na\r\nb\n\rc\r",
+  type: "",
+  desc: "Newlines should not change when endings is 'transparent'."
+});
+test_blob(function() {
+  return new Blob(["\na\r\nb\n\rc\r"], { endings: "native" });
+}, {
+  expected: "\na\r\nb\n\rc\r",
+  type: "",
+  desc: "Newlines should not change when endings is 'native'."
+});
+
+var type_tests = [
+  // blobParts, type, expected type
+  [[], '', ''],
+  [[], 'a', 'a'],
+  [[], 'A', 'a'],
+  [[], 'text/html', 'text/html'],
+  [[], 'TEXT/HTML', 'text/html'],
+  [[], '\u00E5', ''],
+  [[], '\uD801\uDC7E', ''], // U+1047E
+  [[], ' image/gif ', ' image/gif '],
+  [[], '\timage/gif\t', ''],
+  [[], 'image/gif;\u007f', ''],
+  [[], '\u0130mage/gif', ''], // uppercase i with dot
+  [[], '\u0131mage/gif', ''], // lowercase dotless i
+  [[], 'image/gif\u0000', ''],
+  // check that type isn't changed based on sniffing
+  [[0x3C, 0x48, 0x54, 0x4D, 0x4C, 0x3E], 'unknown/unknown', 'unknown/unknown'], // "<HTML>"
+  [[0x00, 0xFF], 'text/plain', 'text/plain'],
+  [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], 'image/png', 'image/png'], // "GIF89a"
+];
+
+type_tests.forEach(function(t) {
+  test(function() {
+    var arr = new Uint8Array([t[0]]).buffer;
+    var b = new Blob([arr], {type:t[1]});
+    assert_equals(b.type, t[2]);
+  }, "Blob with type " + format_value(t[1]));
+});
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/blob/Blob-slice.html
@@ -0,0 +1,214 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Blob slice</title>
+<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#slice-method-algo">
+<link rel=author title="Saurabh Anand" href="mailto:saurabhanandiit@gmail.com">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../support/Blob.js"></script>
+<div id="log"></div>
+<script>
+test_blob(function() {
+  var blobTemp = new Blob(["PASS"]);
+  return blobTemp.slice();
+}, {
+  expected: "PASS",
+  type: "",
+  desc: "no-argument Blob slice"
+});
+
+test(function() {
+  var blob1, blob2;
+
+  test_blob(function() {
+    return blob1 = new Blob(["squiggle"]);
+  }, {
+    expected: "squiggle",
+    type: "",
+    desc: "blob1."
+  });
+
+  test_blob(function() {
+    return blob2 = new Blob(["steak"], {type: "content/type"});
+  }, {
+    expected: "steak",
+    type: "content/type",
+    desc: "blob2."
+  });
+
+  var arrayBuffer = new ArrayBuffer(16);
+  var int8View = new Int8Array(arrayBuffer);
+  for (var i = 0; i < 16; i++) {
+    int8View[i] = i + 65;
+  }
+
+  var testData = [
+    [
+      ["PASSSTRING"],
+      [{start:  -6, contents: "STRING"},
+       {start: -12, contents: "PASSSTRING"},
+       {start:   4, contents: "STRING"},
+       {start:  12, contents: ""},
+       {start: 0, end:  -6, contents: "PASS"},
+       {start: 0, end: -12, contents: ""},
+       {start: 0, end:   4, contents: "PASS"},
+       {start: 0, end:  12, contents: "PASSSTRING"},
+       {start: 7, end:   4, contents: ""}]
+    ],
+
+    // Test 3 strings
+    [
+      ["foo", "bar", "baz"],
+      [{start:  0, end:  9, contents: "foobarbaz"},
+       {start:  0, end:  3, contents: "foo"},
+       {start:  3, end:  9, contents: "barbaz"},
+       {start:  6, end:  9, contents: "baz"},
+       {start:  6, end: 12, contents: "baz"},
+       {start:  0, end:  9, contents: "foobarbaz"},
+       {start:  0, end: 11, contents: "foobarbaz"},
+       {start: 10, end: 15, contents: ""}]
+    ],
+
+    // Test string, Blob, string
+    [
+      ["foo", blob1, "baz"],
+      [{start:  0, end:  3, contents: "foo"},
+       {start:  3, end: 11, contents: "squiggle"},
+       {start:  2, end:  4, contents: "os"},
+       {start: 10, end: 12, contents: "eb"}]
+    ],
+
+    // Test blob, string, blob
+    [
+      [blob1, "foo", blob1],
+      [{start:  0, end:  8, contents: "squiggle"},
+       {start:  7, end:  9, contents: "ef"},
+       {start: 10, end: 12, contents: "os"},
+       {start:  1, end:  4, contents: "qui"},
+       {start: 12, end: 15, contents: "qui"},
+       {start: 40, end: 60, contents: ""}]
+    ],
+
+    // Test blobs all the way down
+    [
+      [blob2, blob1, blob2],
+      [{start: 0,  end:  5, contents: "steak"},
+       {start: 5,  end: 13, contents: "squiggle"},
+       {start: 13, end: 18, contents: "steak"},
+       {start:  1, end:  3, contents: "te"},
+       {start:  6, end: 10, contents: "quig"}]
+    ],
+
+    // Test an ArrayBufferView
+    [
+      [int8View, blob1, "foo"],
+      [{start:  0, end:  8, contents: "ABCDEFGH"},
+       {start:  8, end: 18, contents: "IJKLMNOPsq"},
+       {start: 17, end: 20, contents: "qui"},
+       {start:  4, end: 12, contents: "EFGHIJKL"}]
+    ],
+
+    // Test a partial ArrayBufferView
+    [
+      [new Uint8Array(arrayBuffer, 3, 5), blob1, "foo"],
+      [{start:  0, end:  8, contents: "DEFGHsqu"},
+       {start:  8, end: 18, contents: "igglefoo"},
+       {start:  4, end: 12, contents: "Hsquiggl"}]
+    ],
+
+    // Test type coercion of a number
+    [
+      [3, int8View, "foo"],
+      [{start:  0, end:  8, contents: "3ABCDEFG"},
+       {start:  8, end: 18, contents: "HIJKLMNOPf"},
+       {start: 17, end: 21, contents: "foo"},
+       {start:  4, end: 12, contents: "DEFGHIJK"}]
+    ],
+
+    [
+      [(new Uint8Array([0, 255, 0])).buffer,
+       new Blob(['abcd']),
+       'efgh',
+       'ijklmnopqrstuvwxyz'],
+      [{start:  1, end:  4, contents: "\uFFFD\u0000a"},
+       {start:  4, end:  8, contents: "bcde"},
+       {start:  8, end: 12, contents: "fghi"},
+       {start:  1, end: 12, contents: "\uFFFD\u0000abcdefghi"}]
+    ]
+  ];
+
+  testData.forEach(function(data, i) {
+    var blobs = data[0];
+    var tests = data[1];
+    tests.forEach(function(expectations, j) {
+      test(function() {
+        var blob = new Blob(blobs);
+        assert_true(blob instanceof Blob);
+        assert_false(blob instanceof File);
+
+        test_blob(function() {
+          return expectations.end === undefined
+                 ? blob.slice(expectations.start)
+                 : blob.slice(expectations.start, expectations.end);
+        }, {
+          expected: expectations.contents,
+          type: "",
+          desc: "Slicing test: slice (" + i + "," + j + ")."
+        });
+      }, "Slicing test (" + i + "," + j + ").");
+    });
+  });
+}, "Slices");
+
+var invalidTypes = [
+  "\xFF",
+  "te(xt/plain",
+  "te)xt/plain",
+  "te<xt/plain",
+  "te>xt/plain",
+  "te@xt/plain",
+  "te,xt/plain",
+  "te;xt/plain",
+  "te:xt/plain",
+  "te\\xt/plain",
+  "te\"xt/plain",
+  "te/xt/plain",
+  "te[xt/plain",
+  "te]xt/plain",
+  "te?xt/plain",
+  "te=xt/plain",
+  "te{xt/plain",
+  "te}xt/plain",
+  "te\x20xt/plain",
+  "te\x09xt/plain",
+  "te\x00xt/plain",
+  "te\x1Fxt/plain",
+  "te\x7Fxt/plain"
+];
+invalidTypes.forEach(function(type) {
+  test_blob(function() {
+    var blob = new Blob(["PASS"]);
+    return blob.slice(0, 4, type);
+  }, {
+    expected: "PASS",
+    type: "",
+    desc: "Invalid contentType (" + format_value(type) + ")"
+  });
+});
+
+var validTypes = [
+  "TEXT/PLAIN",
+  "text/plain;charset = UTF-8",
+  "text/plain;charset=UTF-8"
+];
+validTypes.forEach(function(type) {
+  test_blob(function() {
+    var blob = new Blob(["PASS"]);
+    return blob.slice(0, 4, type);
+  }, {
+    expected: "PASS",
+    type: type.toLowerCase(),
+    desc: "Valid contentType (" + format_value(type) + ")"
+  });
+});
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/file/File-constructor.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>File constructor</title>
+<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-file">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+test(function() {
+  assert_true("File" in window, "window should have a File property.");
+}, "File interface object exists");
+
+function test_first_argument(arg1, expectedSize, testName) {
+  test(function() {
+    var file = new File(arg1, "dummy");
+    assert_true(file instanceof File);
+    assert_equals(file.name, "dummy");
+    assert_equals(file.size, expectedSize);
+    assert_equals(file.type, "");
+    // assert_false(file.isClosed); XXX: File.isClosed doesn't seem to be implemented
+    assert_not_equals(file.lastModified, "");
+  }, testName);
+}
+
+test_first_argument(["bits"], 4, "DOMString fileBits");
+test_first_argument(["๐“ฝ๐“ฎ๐”๐“ฝ"], 16, "Unicode DOMString fileBits");
+test_first_argument([new Blob()], 0, "Empty Blob fileBits");
+test_first_argument([new Blob(["bits"])], 4, "Blob fileBits");
+test_first_argument([new ArrayBuffer(8)], 8, "ArrayBuffer fileBits");
+test_first_argument([new Uint8Array([0x50, 0x41, 0x53, 0x53])], 4, "Typed array fileBits");
+test_first_argument(["bits", new Blob(["bits"]), new Blob(), new Uint8Array([0x50, 0x41]),
+                     new Uint16Array([0x5353]), new Uint32Array([0x53534150])], 16, "Various fileBits");
+
+function test_second_argument(arg2, expectedFileName, testName) {
+  test(function() {
+    var file = new File(["bits"], arg2);
+    assert_true(file instanceof File);
+    assert_equals(file.name, expectedFileName);
+  }, testName);
+}
+
+test_second_argument("dummy", "dummy", "Using fileName");
+test_second_argument("dummy/foo", "dummy:foo", "Using special character in fileName");
+
+// testing the third argument
+test(function() {
+  var file = new File(["bits"], "dummy", { type: "text/plain"});
+  assert_true(file instanceof File);
+  assert_equals(file.type, "text/plain");
+}, "Using type on the File constructor");
+test(function() {
+  var file = new File(["bits"], "dummy", { type: "TEXT/PLAIN"});
+  assert_true(file instanceof File);
+  assert_equals(file.type, "text/plain");
+}, "Using uppercase characters in type");
+test(function() {
+  var file = new File(["bits"], "dummy", { type: "๐“ฝ๐“ฎ๐”๐“ฝ/๐”ญ๐”ฉ๐”ž๐”ฆ๐”ซ"});
+  assert_true(file instanceof File);
+  assert_equals(file.type, "");
+}, "Using illegal character for type");
+test(function() {
+  var file = new File(["bits"], "dummy", { lastModified: 42 });
+  assert_true(file instanceof File);
+  assert_equals(file.lastModified, 42);
+}, "Using lastModified");
+test(function() {
+  var file = new File(["bits"], "dummy", { name: "foo" });
+  assert_true(file instanceof File);
+  assert_equals(file.name, "dummy");
+}, "Misusing name");
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/fileReader.html
@@ -0,0 +1,67 @@
+<!doctype html>
+<html>
+  <head>
+      <title>FileReader States</title>
+      <link rel=help href="http://www.w3.org/TR/FileAPI/#dfn-filereader">
+      <link rel=author title="Lenient" href="mailto:lenient315@gmail.com">
+      <script src="/resources/testharness.js"></script>
+      <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+        test(function() {
+             assert_true("FileReader" in window, "window should have a FileReader property.");
+        }, "FileReader interface object");
+
+        test(function(){
+            var fileReader = new FileReader();
+            assert_true(fileReader instanceof FileReader);
+        }, "no-argument FileReader constructor");
+
+        var t_abort = async_test("FileReader States -- abort");
+        t_abort.step(function(){
+            var fileReader = new FileReader();
+            assert_equals(fileReader.readyState, 0);
+            assert_equals(fileReader.readyState, FileReader.EMPTY);
+
+            var blob = new Blob();
+            fileReader.readAsArrayBuffer(blob);
+            assert_equals(fileReader.readyState, 1);
+            assert_equals(fileReader.readyState, FileReader.LOADING);
+
+            fileReader.onabort = this.step_func(function(e) {
+                assert_equals(fileReader.readyState, 2);
+                assert_equals(fileReader.readyState, FileReader.DONE);
+                t_abort.done();
+            });
+            fileReader.abort();
+            fileReader.onabort = this.unreached_func("abort event should fire sync")
+        });
+
+        var t_event = async_test("FileReader States -- events");
+        t_event.step(function(){
+            var fileReader = new FileReader();
+
+            var blob = new Blob();
+            fileReader.readAsArrayBuffer(blob);
+
+            fileReader.onloadstart = this.step_func(function(e) {
+                assert_equals(fileReader.readyState, 1);
+                assert_equals(fileReader.readyState, FileReader.LOADING);
+            });
+
+            fileReader.onprogress = this.step_func(function(e) {
+                assert_equals(fileReader.readyState, 1);
+                assert_equals(fileReader.readyState, FileReader.LOADING);
+            });
+
+            fileReader.onloadend = this.step_func(function(e) {
+                assert_equals(fileReader.readyState, 2);
+                assert_equals(fileReader.readyState, FileReader.DONE);
+                t_event.done();
+            });
+        });
+    </script>
+  </body>
+</html>
--- a/testing/web-platform/tests/FileAPI/filelist-section/filelist_multiple_selected_files-manual.html
+++ b/testing/web-platform/tests/FileAPI/filelist-section/filelist_multiple_selected_files-manual.html
@@ -5,17 +5,17 @@
     <title>FileAPI Test: filelist_multiple_selected_files</title>
     <link rel='author' title='Intel' href='http://www.intel.com'>
     <link rel='help' href='http://dev.w3.org/2006/webapi/FileAPI/#filelist-section'>
     <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-length">
     <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-item">
     <script src='/resources/testharness.js'></script>
     <script src='/resources/testharnessreport.js'></script>
   </head>
-  
+
   <body>
     <form name='uploadData'>
       <input type='file' id='fileChooser' multiple>
     </form>
     <div>
       <p>Test steps:</p>
       <ol>
         <li>Download <a href='support/upload.txt'>upload.txt</a>, <a href="support/upload.zip">upload.zip</a> to local.</li>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/reading-data-section/Determining-Encoding.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>FileAPI Test: Blob Determining Encoding</title>
+<link ref="author" title="march1993" href="mailto:march511@gmail.com">
+<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#enctype">
+<link rel=help href="http://encoding.spec.whatwg.org/#decode">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+var t = async_test("Blob Determing Encoding with encoding argument");
+t.step(function() {
+    // string 'hello'
+    var data = [0xFE,0xFF,0x00,0x68,0x00,0x65,0x00,0x6C,0x00,0x6C,0x00,0x6F];
+    var blob = new Blob([new Uint8Array(data)]);
+    var reader = new FileReader();
+
+    reader.onloadend = t.step_func_done (function(event) {
+        assert_equals(this.result, "hello", "The FileReader should read the ArrayBuffer through UTF-16BE.")
+    }, reader);
+
+    reader.readAsText(blob, "UTF-16BE");
+});
+
+var t = async_test("Blob Determing Encoding with type attribute");
+t.step(function() {
+    var data = [0xFE,0xFF,0x00,0x68,0x00,0x65,0x00,0x6C,0x00,0x6C,0x00,0x6F];
+    var blob = new Blob([new Uint8Array(data)], {type:"text/plain;charset=UTF-16BE"});
+    var reader = new FileReader();
+
+    reader.onloadend = t.step_func_done (function(event) {
+        assert_equals(this.result, "hello", "The FileReader should read the ArrayBuffer through UTF-16BE.")
+    }, reader);
+
+    reader.readAsText(blob);
+});
+
+
+var t = async_test("Blob Determing Encoding with UTF-8 BOM");
+t.step(function() {
+    var data = [0xEF,0xBB,0xBF,0x68,0x65,0x6C,0x6C,0xC3,0xB6];
+    var blob = new Blob([new Uint8Array(data)]);
+    var reader = new FileReader();
+
+    reader.onloadend = t.step_func_done (function(event) {
+        assert_equals(this.result, "hellรถ", "The FileReader should read the blob with UTF-8.");
+    }, reader);
+
+    reader.readAsText(blob);
+});
+
+var t = async_test("Blob Determing Encoding without anything implying charset.");
+t.step(function() {
+    var data = [0x68,0x65,0x6C,0x6C,0xC3,0xB6];
+    var blob = new Blob([new Uint8Array(data)]);
+    var reader = new FileReader();
+
+    reader.onloadend = t.step_func_done (function(event) {
+        assert_equals(this.result, "hellรถ", "The FileReader should read the blob by default with UTF-8.");
+    }, reader);
+
+    reader.readAsText(blob);
+});
+
+var t = async_test("Blob Determing Encoding with UTF-16BE BOM");
+t.step(function() {
+    var data = [0xFE,0xFF,0x00,0x68,0x00,0x65,0x00,0x6C,0x00,0x6C,0x00,0x6F];
+    var blob = new Blob([new Uint8Array(data)]);
+    var reader = new FileReader();
+
+    reader.onloadend = t.step_func_done (function(event) {
+        assert_equals(this.result, "hello", "The FileReader should read the ArrayBuffer through UTF-16BE.");
+    }, reader);
+
+    reader.readAsText(blob);
+});
+
+var t = async_test("Blob Determing Encoding with UTF-16LE BOM");
+t.step(function() {
+    var data = [0xFF,0xFE,0x68,0x00,0x65,0x00,0x6C,0x00,0x6C,0x00,0x6F,0x00];
+    var blob = new Blob([new Uint8Array(data)]);
+    var reader = new FileReader();
+
+    reader.onloadend = t.step_func_done (function(event) {
+        assert_equals(this.result, "hello", "The FileReader should read the ArrayBuffer through UTF-16LE.");
+    }, reader);
+
+    reader.readAsText(blob);
+});
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/reading-data-section/FileReader-multiple-reads.html
@@ -0,0 +1,73 @@
+๏ปฟ<!DOCTYPE html>
+<title>FileReader: starting new reads while one is in progress</title>
+<link rel="author" title="Yinkan Li" href="mailto:liyinkan.biz@gmail.com">
+<link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#MultipleReads">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+test(function() {
+  var blob_1 = new Blob(['TEST000000001'])
+  var blob_2 = new Blob(['TEST000000002'])
+  var reader = new FileReader();
+  reader.readAsText(blob_1)
+  assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
+  assert_throws("InvalidStateError", function () {
+    reader.readAsText(blob_2)
+  })
+}, 'test FileReader InvalidStateError exception for readAsText');
+
+test(function() {
+  var blob_1 = new Blob(['TEST000000001'])
+  var blob_2 = new Blob(['TEST000000002'])
+  var reader = new FileReader();
+  reader.readAsDataURL(blob_1)
+  assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
+  assert_throws("InvalidStateError", function () {
+    reader.readAsDataURL(blob_2)
+  })
+}, 'test FileReader InvalidStateError exception for readAsDataURL');
+
+test(function() {
+  var blob_1 = new Blob(['TEST000000001'])
+  var blob_2 = new Blob(['TEST000000002'])
+  var reader = new FileReader();
+  reader.readAsArrayBuffer(blob_1)
+  assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
+  assert_throws("InvalidStateError", function () {
+    reader.readAsArrayBuffer(blob_2)
+  })
+}, 'test FileReader InvalidStateError exception for readAsArrayBuffer');
+
+async_test(function() {
+  var blob_1 = new Blob(['TEST000000001'])
+  var blob_2 = new Blob(['TEST000000002'])
+  var reader = new FileReader();
+  var triggered = false;
+  reader.onloadstart = this.step_func_done(function() {
+    assert_false(triggered, "Only one loadstart event should be dispatched");
+    triggered = true;
+    assert_equals(reader.readyState, FileReader.LOADING,
+                  "readyState must be LOADING")
+    assert_throws("InvalidStateError", function () {
+      reader.readAsArrayBuffer(blob_2)
+    })
+  });
+  reader.readAsArrayBuffer(blob_1)
+  assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
+}, 'test FileReader InvalidStateError exception in onloadstart event for readAsArrayBuffer');
+
+async_test(function() {
+  var blob_1 = new Blob(['TEST000000001'])
+  var blob_2 = new Blob(['TEST000000002'])
+  var reader = new FileReader();
+  reader.onloadend = this.step_func_done(function() {
+    assert_equals(reader.readyState, FileReader.LOADING,
+                  "readyState must be LOADING")
+    reader.readAsArrayBuffer(blob_2)
+    assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
+  });
+  reader.readAsArrayBuffer(blob_1)
+  assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
+}, 'test FileReader no InvalidStateError exception in onloadstart event for readAsArrayBuffer');
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/reading-data-section/filereader_abort.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>FileAPI Test: filereader_abort</title>
+    <link rel="author" title="Intel" href="http://www.intel.com">
+    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#abort">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+
+    <script>
+    test(function() {
+      var readerNoRead = new FileReader();
+      readerNoRead.abort();
+      assert_equals(readerNoRead.readyState, readerNoRead.EMPTY);
+      assert_equals(readerNoRead.result, null);
+    }, "Aborting before read");
+
+    async_test(function() {
+      var blob = new Blob(["TEST THE ABORT METHOD"]);
+      var readerAbort = new FileReader();
+
+      readerAbort.onabort = this.step_func(function(evt) {
+        assert_equals(readerAbort.readyState, readerAbort.DONE);
+      });
+
+      readerAbort.onloadstart = this.step_func(function(evt) {
+        assert_equals(readerAbort.readyState, readerAbort.LOADING);
+        readerAbort.abort();
+      });
+
+      readerAbort.onloadend = this.step_func(function(evt) {
+        // https://www.w3.org/Bugs/Public/show_bug.cgi?id=24401
+        assert_equals(readerAbort.result, null);
+        assert_equals(readerAbort.readyState, readerAbort.DONE);
+        this.done();
+      });
+
+      readerAbort.readAsText(blob);
+    }, "Aborting after read");
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/reading-data-section/filereader_error.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>FileAPI Test: filereader_error</title>
+    <link rel="author" title="Intel" href="http://www.intel.com">
+    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-domerror">
+    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#abort">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+
+    <script>
+    async_test(function() {
+      var blob = new Blob(["TEST THE ERROR ATTRIBUTE AND ERROR EVENT"]);
+      var reader = new FileReader();
+      assert_equals(reader.error, null, "The error is null when no error occurred");
+
+      reader.onload = this.step_func(function(evt) {
+        assert_unreached("Should not dispatch the load event");
+      });
+
+      reader.onloadend = this.step_func(function(evt) {
+        assert_equals(reader.result, null, "The result is null");
+        this.done();
+      });
+
+      reader.readAsText(blob);
+      reader.abort();
+    });
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/reading-data-section/filereader_file-manual.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>FileAPI Test: filereader_file</title>
+    <link rel="author" title="Intel" href="http://www.intel.com">
+    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#FileReader-interface">
+    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#file">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div>
+      <p>Test step:</p>
+      <ol>
+        <li>Download <a href="support/blue-100x100.png">blue-100x100.png</a> to local.</li>
+        <li>Select the local file (blue-100x100.png) to run the test.</li>
+      </ol>
+    </div>
+
+    <form name="uploadData">
+      <input type="file" id="fileChooser">
+    </form>
+
+    <div id="log"></div>
+    <script>
+      var fileInput = document.querySelector('#fileChooser');
+      var reader = new FileReader();
+
+      //readType: 1-> ArrayBuffer, 2-> Text, 3-> DataURL
+      var readType = 1;
+
+      setup({
+        explicit_done: true,
+        explicit_timeout: true,
+      });
+
+      on_event(fileInput, "change", function(evt) {
+        reader.readAsArrayBuffer(fileInput.files[0]);
+      });
+
+      on_event(reader, "load", function(evt) {
+        if (readType == 1) {
+          test(function() {
+            assert_true(reader.result instanceof ArrayBuffer, "The result is instanceof ArrayBuffer");
+          }, "Check if the readAsArrayBuffer works");
+
+          readType++;
+          reader.readAsText(fileInput.files[0]);
+        } else if (readType == 2) {
+          test(function() {
+            assert_equals(typeof reader.result, "string", "The result is typeof string");
+          }, "Check if the readAsText works");
+
+          readType++;
+          reader.readAsDataURL(fileInput.files[0]);
+        } else if (readType == 3) {
+          test(function() {
+            assert_equals(typeof reader.result, "string", "The result is typeof string");
+            assert_equals(reader.result.indexOf("data"), 0, "The result starts with 'data'");
+            assert_true(reader.result.indexOf("base64") > 0, "The result contains 'base64'");
+          }, "Check if the readAsDataURL works");
+
+          done();
+        }
+      });
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/reading-data-section/filereader_file_img-manual.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>FileAPI Test: filereader_file_img</title>
+    <link rel="author" title="Intel" href="http://www.intel.com">
+    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#FileReader-interface">
+    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#file">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div>
+      <p>Test step:</p>
+      <ol>
+        <li>Download <a href="support/blue-100x100.png">blue-100x100.png</a> to local.</li>
+        <li>Select the local file (blue-100x100.png) to run the test.</li>
+      </ol>
+    </div>
+
+    <form name="uploadData">
+      <input type="file" id="fileChooser">
+    </form>
+
+    <div id="log"></div>
+    <script>
+      var fileInput = document.querySelector('#fileChooser');
+      var reader = new FileReader();
+
+      setup({
+        explicit_done: true,
+        explicit_timeout: true,
+      });
+
+      fileInput.addEventListener("change", function(evt) {
+        reader.readAsDataURL(fileInput.files[0]);
+      }, false);
+
+      reader.addEventListener("loadend", function(evt) {
+        test(function () {
+          assert_true(reader.result.indexOf("iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAqklEQVR42u3RsREAMAgDMe+/M4E7ZkhBoeI9gJWkWpfaeToTECACAkRAgAgIEAEB4gQgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgAgJEQIAICBABASIgQJwARECACAgQ/W4AQauujc8IdAoAAAAASUVORK5CYII=") != -1, "Encoded image")
+        }, "Check if readAsDataURL returns correct image");
+        done();
+      }, false);
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/reading-data-section/filereader_readAsArrayBuffer.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>FileAPI Test: filereader_readAsArrayBuffer</title>
+    <link rel="author" title="Intel" href="http://www.intel.com">
+    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#readAsArrayBuffer">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+
+    <script>
+    async_test(function() {
+      var blob = new Blob(["TEST"]);
+      var reader = new FileReader();
+
+      reader.onload = this.step_func(function(evt) {
+        assert_equals(reader.result.byteLength, 4, "The byteLength is 4");
+        assert_true(reader.result instanceof ArrayBuffer, "The result is instanceof ArrayBuffer");
+        assert_equals(reader.readyState, reader.DONE);
+        this.done();
+      });
+
+      reader.onloadstart = this.step_func(function(evt) {
+        assert_equals(reader.readyState, reader.LOADING);
+      });
+
+      reader.onprogress = this.step_func(function(evt) {
+        assert_equals(reader.readyState, reader.LOADING);
+      });
+
+      reader.readAsArrayBuffer(blob);
+    });
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/reading-data-section/filereader_readAsDataURL.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>FileAPI Test: filereader_readAsDataURL</title>
+    <link rel="author" title="Intel" href="http://www.intel.com">
+    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#readAsDataURL">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+
+    <script>
+    async_test(function() {
+      var blob = new Blob(["TEST"]);
+      var reader = new FileReader();
+
+      reader.onload = this.step_func(function(evt) {
+        assert_equals(typeof reader.result, "string", "The result is string");
+        assert_equals(reader.result.indexOf("data:"), 0, "The result attribute starts with 'data'");
+        assert_true(reader.result.indexOf("base64") > 0, "The result attribute contains 'base64'");
+        assert_equals(reader.readyState, reader.DONE);
+        this.done();
+      });
+
+      reader.onloadstart = this.step_func(function(evt) {
+        assert_equals(reader.readyState, reader.LOADING);
+      });
+
+      reader.onprogress = this.step_func(function(evt) {
+        assert_equals(reader.readyState, reader.LOADING);
+      });
+
+      reader.readAsDataURL(blob);
+    });
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/reading-data-section/filereader_readAsText.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>FileAPI Test: filereader_readAsText</title>
+    <link rel="author" title="Intel" href="http://www.intel.com">
+    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#readAsDataText">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+
+    <script>
+    async_test(function() {
+      var blob = new Blob(["TEST"]);
+      var reader = new FileReader();
+
+      reader.onload = this.step_func(function(evt) {
+        assert_equals(typeof reader.result, "string", "The result is typeof string");
+        assert_equals(reader.result, "TEST", "The result is TEST");
+        this.done();
+      });
+
+      reader.onloadstart = this.step_func(function(evt) {
+        assert_equals(reader.readyState, reader.LOADING, "The readyState");
+      });
+
+      reader.onprogress = this.step_func(function(evt) {
+        assert_equals(reader.readyState, reader.LOADING);
+      });
+
+      reader.readAsText(blob);
+    }, "readAsText should correctly read UTF-8.");
+
+    async_test(function() {
+      var blob = new Blob(["TEST"]);
+      var reader = new FileReader();
+      var reader_UTF16 = new FileReader();
+      reader_UTF16.onload = this.step_func(function(evt) {
+        // "TEST" in UTF-8 is 0x54 0x45 0x53 0x54.
+        // Decoded as utf-16 (little-endian), we get 0x4554 0x5453.
+        assert_equals(reader_UTF16.readyState, reader.DONE, "The readyState");
+        assert_equals(reader_UTF16.result, "\u4554\u5453", "The result is not TEST");
+        this.done();
+      });
+      reader_UTF16.readAsText(blob, "UTF-16");
+    }, "readAsText should correctly read UTF-16.");
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/reading-data-section/filereader_readystate.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>FileAPI Test: filereader_readystate</title>
+    <link rel="author" title="Intel" href="http://www.intel.com">
+    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#blobreader-state">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+
+    <script>
+    async_test(function() {
+      var blob = new Blob(["THIS TEST THE READYSTATE WHEN READ BLOB"]);
+      var reader = new FileReader();
+
+      assert_equals(reader.readyState, reader.EMPTY);
+
+      reader.onloadstart = this.step_func(function(evt) {
+        assert_equals(reader.readyState, reader.LOADING);
+      });
+
+      reader.onloadend = this.step_func(function(evt) {
+        assert_equals(reader.readyState, reader.DONE);
+        this.done();
+      });
+
+      reader.readAsDataURL(blob);
+    });
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/reading-data-section/filereader_result.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>FileAPI Test: filereader_result</title>
+    <link rel="author" title="Intel" href="http://www.intel.com">
+    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#filedata-attr">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+
+    <script>
+    var blob;
+    setup(function() {
+      blob = new Blob(["This test the result attribute"]);
+    });
+
+    async_test(function() {
+      var readText = new FileReader();
+      assert_equals(readText.result, null);
+
+      readText.onloadend = this.step_func(function(evt) {
+        assert_equals(typeof readText.result, "string", "The result type is string");
+        assert_equals(readText.result, "This test the result attribute", "The result is correct");
+        this.done();
+      });
+
+      readText.readAsText(blob);
+    }, "readAsText");
+
+    async_test(function() {
+      var readDataURL = new FileReader();
+      assert_equals(readDataURL.result, null);
+
+      readDataURL.onloadend = this.step_func(function(evt) {
+        assert_equals(typeof readDataURL.result, "string", "The result type is string");
+        assert_true(readDataURL.result.indexOf("VGhpcyB0ZXN0IHRoZSByZXN1bHQgYXR0cmlidXRl") != -1, "return the right base64 string");
+        this.done();
+      });
+
+      readDataURL.readAsDataURL(blob);
+    }, "readAsDataURL");
+
+    async_test(function() {
+      var readArrayBuffer = new FileReader();
+      assert_equals(readArrayBuffer.result, null);
+
+      readArrayBuffer.onloadend = this.step_func(function(evt) {
+        assert_true(readArrayBuffer.result instanceof ArrayBuffer, "The result is instanceof ArrayBuffer");
+        this.done();
+      });
+
+      readArrayBuffer.readAsArrayBuffer(blob);
+    }, "readAsArrayBuffer");
+    </script>
+  </body>
+</html>
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5748719ff22a34993eeb4de4d1fe7cfd27e92959
GIT binary patch
literal 227
zc%17D@N?(olHy`uVBq!ia0vp^DIm<j1|$m}O$`B3t2|vCLn>~)y|_`3!GMF=@cn+{
zM(Z>W$Ayn<8>TLantrR&N?1UFiOI#GfrCSUk?|1=5=V*VY==1v5YFE`2FKOwde3u|
QfV{)t>FVdQ&MBb@0LwxylmGw#
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/url/url_createobjecturl_blob.html
@@ -0,0 +1,26 @@
+<!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()");
+
+  test(function() {
+    var testBlob = window.URL.createFor(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 createFor()");
+</script>
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/url/url_createobjecturl_file-manual.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>FileAPI Test: Creating Blob URL with File</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>
+<meta name="timeout" content="long">
+
+<div>
+  <p>Test steps:</p>
+  <ol>
+    <li>Download <a href="/images/blue96x96.png">blue96x96.png</a> to local.</li>
+    <li>Select the local file (blue96x96.png) to run the test.</li>
+  </ol>
+</div>
+
+<form name="uploadData">
+  <input type="file" id="fileChooser">
+</form>
+
+<div id="log"></div>
+
+<script>
+  async_test(function(t) {
+    var fileInput = document.querySelector('#fileChooser');
+
+    fileInput.onchange = t.step_func(function(e) {
+      var blobURL, file = fileInput.files[0];
+
+      test(function() {
+        assert_true(file instanceof File, "FileList contains File");
+      }, "Check if FileList contains File");
+
+      test(function() {
+        blobURL = window.URL.createObjectURL(file);
+        assert_equals(typeof blobURL, "string", "Blob URL is type of string");
+        assert_equals(blobURL.indexOf("blob"), 0, "Blob URL's scheme is blob");
+      }, "Check if URL.createObjectURL(File) returns a Blob URL");
+
+      test(function() {
+        blobURL = window.URL.createFor(file);
+        assert_equals(typeof blobURL, "string", "Blob URL is type of string");
+        assert_equals(blobURL.indexOf("blob"), 0, "Blob URL's scheme is blob");
+      }, "Check if URL.createFor(File) returns a Blob URL");
+
+      t.done();
+    });
+  });
+</script>
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/url/url_createobjecturl_file_img-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>FileAPI Test: Creating Blob URL with File as image source</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="author" title="JunChen Xia" href="mailto:xjconlyme@gmail.com">
+
+<div>
+  <p>Test steps:</p>
+  <ol>
+    <li>Download <a href="/images/blue96x96.png">blue96x96.png</a> to local.</li>
+    <li>Select the local file (blue96x96.png) to run the test.</li>
+  </ol>
+  <p>Pass/fail criteria:</p>
+  <p>Test passes if there is a filled blue square.</p>
+
+  <p><input type="file" accept="image/*" id="fileChooser"></p>
+  <p><img id="displayImage"></img></p>
+</div>
+
+<script>
+  var fileInput = document.querySelector("#fileChooser");
+  var img = document.querySelector("#displayImage");
+
+  fileInput.addEventListener("change", function(evt) {
+    img.src = window.URL.createObjectURL(fileInput.files[0]);
+  }, false);
+</script>
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/FileAPI/url/url_xmlhttprequest.html
@@ -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();