Update web-platform-tests test suite
authoryouenn.fablet@crf.canon.fr <youenn.fablet@crf.canon.fr@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Jan 2016 09:28:20 +0000 (09:28 +0000)
committeryouenn.fablet@crf.canon.fr <youenn.fablet@crf.canon.fr@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Jan 2016 09:28:20 +0000 (09:28 +0000)
https://bugs.webkit.org/show_bug.cgi?id=151984

Reviewed by Daniel Bates.

LayoutTests/imported/w3c:

Bumping WPT test revision from dd553279c3 to 5932fd48d519a83b4cca6ed69778547a4fdfc5ae.
New revision includes test improvements, test renaming to ensure WebKit test expectations do not clash and XHR test clean-up.

* resources/ImportExpectations: Updated to not include new tests. Improved ordering.
* resources/TestRepositories: Updated revision.
* resources/web-platform-tests-modules.json: Updated revision.
* web-platform-tests/README.md:
* web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials-expected.txt:
* web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.js:
* web-platform-tests/XMLHttpRequest/interfaces-expected.txt:
* web-platform-tests/XMLHttpRequest/open-url-worker-simple.htm:
* web-platform-tests/XMLHttpRequest/resources/empty-div-utf8-html.py: Added.
(main):
* web-platform-tests/XMLHttpRequest/resources/img-utf8-html.py: Added.
(main):
* web-platform-tests/XMLHttpRequest/resources/w3c-import.log:
* web-platform-tests/XMLHttpRequest/send-content-type-charset-expected.txt:
* web-platform-tests/XMLHttpRequest/send-content-type-charset.htm:
* web-platform-tests/XMLHttpRequest/send-content-type-string-expected.txt:
* web-platform-tests/XMLHttpRequest/send-content-type-string.htm:
* web-platform-tests/XMLHttpRequest/send-entity-body-document-expected.txt:
* web-platform-tests/XMLHttpRequest/send-entity-body-document.htm:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-aborted.html:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-abortedonmain.html:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-overrides.html:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-overridesexpires.html:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-simple.html:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-synconmain.html:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-twice.html:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-aborted.html:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-overrides.html:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-overridesexpires.html:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-simple.html:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-synconworker.html:
* web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-twice.html:
* web-platform-tests/dom/common.js:
(myExtractContents):
(myInsertNode):
* web-platform-tests/dom/interfaces-expected.txt:
* web-platform-tests/dom/lists/DOMTokenList-stringifier-expected.txt:
* web-platform-tests/dom/lists/DOMTokenList-stringifier.html:
* web-platform-tests/dom/nodes/Document-Element-getElementsByTagName.js:
(test_getElementsByTagName):
* web-platform-tests/dom/nodes/Document-createElement-namespace-expected.txt:
* web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.html: Added.
* web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.svg: Added.
* web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xhtml: Added.
* web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xml: Added.
* web-platform-tests/dom/nodes/Document-createElement-namespace.html:
* web-platform-tests/dom/nodes/Document-getElementsByTagName-expected.txt:
* web-platform-tests/dom/nodes/DocumentType-literal-xhtml-expected.txt: Added.
* web-platform-tests/dom/nodes/DocumentType-literal-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.xhtml.
* web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-xhtml-expected.txt: Added.
* web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.xhtml.
* web-platform-tests/dom/nodes/Element-childElementCount-nochild-xhtml-expected.txt: Added.
* web-platform-tests/dom/nodes/Element-childElementCount-nochild-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.xhtml.
* web-platform-tests/dom/nodes/Element-children-expected.txt:
* web-platform-tests/dom/nodes/Element-children.html:
* web-platform-tests/dom/nodes/Element-classlist-expected.txt:
* web-platform-tests/dom/nodes/Element-classlist.html:
* web-platform-tests/dom/nodes/Element-firstElementChild-xhtml-expected.txt: Added.
* web-platform-tests/dom/nodes/Element-firstElementChild-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.xhtml.
* web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-expected.txt: Added.
* web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-iframe-expected.txt: Added.
* web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-iframe.xml: Added.
* web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess.html: Added.
* web-platform-tests/dom/nodes/Element-getElementsByTagName-expected.txt:
* web-platform-tests/dom/nodes/Element-matches-expected.txt:
* web-platform-tests/dom/nodes/Element-nextElementSibling-xhtml-expected.txt: Added.
* web-platform-tests/dom/nodes/Element-nextElementSibling-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.xhtml.
* web-platform-tests/dom/nodes/Element-previousElementSibling-xhtml-expected.txt: Added.
* web-platform-tests/dom/nodes/Element-previousElementSibling-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.xhtml.
* web-platform-tests/dom/nodes/MutationObserver-childList-expected.txt:
* web-platform-tests/dom/nodes/MutationObserver-childList.html:
* web-platform-tests/dom/nodes/MutationObserver-document-expected.txt:
* web-platform-tests/dom/nodes/MutationObserver-document.html:
* web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt: Removed.
* web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml: Removed.
* web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt:
* web-platform-tests/dom/nodes/Node-isEqualNode-iframe1-expected.txt: Added.
* web-platform-tests/dom/nodes/Node-isEqualNode-iframe1.xml: Added.
* web-platform-tests/dom/nodes/Node-isEqualNode-iframe2-expected.txt: Added.
* web-platform-tests/dom/nodes/Node-isEqualNode-iframe2.xml: Added.
* web-platform-tests/dom/nodes/Node-isEqualNode.xhtml:
* web-platform-tests/dom/nodes/Node-lookupNamespaceURI-expected.txt:
* web-platform-tests/dom/nodes/Node-lookupNamespaceURI.html:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml-expected.txt.
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml.xht.
* web-platform-tests/dom/nodes/attributes-expected.txt:
* web-platform-tests/dom/nodes/attributes.html:
* web-platform-tests/dom/nodes/getElementsByClassName-10.xml:
* web-platform-tests/dom/nodes/getElementsByClassName-11.xml:
* web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.xht: Removed.
* web-platform-tests/dom/nodes/selectors.js:
* web-platform-tests/dom/nodes/w3c-import.log:
* web-platform-tests/dom/ranges/Range-deleteContents-expected.txt:
* web-platform-tests/dom/ranges/Range-deleteContents.html:
* web-platform-tests/dom/ranges/Range-extractContents-expected.txt:
* web-platform-tests/dom/ranges/Range-insertNode-expected.txt:
* web-platform-tests/dom/ranges/Range-intersectsNode-expected.txt:
* web-platform-tests/dom/ranges/Range-intersectsNode.html:
* web-platform-tests/dom/ranges/Range-mutations.html:
* web-platform-tests/dom/ranges/Range-surroundContents-expected.txt:
* web-platform-tests/dom/ranges/Range-surroundContents.html:
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-case-xhtml-expected.txt: Added.
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-case-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-case.xhtml.
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-id-xhtml-expected.txt: Added.
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-id-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-id.xhtml.
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace-xhtml-expected.txt: Added.
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace.xhtml.
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-expected.txt:
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-xhtml-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-expected.txt.
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements.xhtml.
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements.html:
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-null-undef-xhtml-expected.txt: Added.
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-null-undef-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-null-undef.xhtml.
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-param-xhtml-expected.txt: Added.
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-param-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-param.xhtml.
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/w3c-import.log:
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-03-expected.txt:
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-03.html:
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-09-expected.txt:
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-09.html:
* web-platform-tests/html/dom/documents/dom-tree-accessors/nameditem-06-expected.txt:
* web-platform-tests/html/dom/documents/dom-tree-accessors/nameditem-06.html:
* web-platform-tests/html/dom/documents/resource-metadata-management/document-lastModified-01.html:
* web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/010-expected.txt:
* web-platform-tests/html/dom/elements-embedded.js:
* web-platform-tests/html/dom/elements-text.js:
* web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-ref-expected.html: Added.
* web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-ref.html: Added.
* web-platform-tests/html/dom/elements/global-attributes/dir_auto-textarea-script-N-between-Rs-ref-expected.html: Added.
* web-platform-tests/html/dom/elements/global-attributes/dir_auto-textarea-script-N-between-Rs-ref.html: Added.
* web-platform-tests/html/dom/elements/global-attributes/w3c-import.log:
* web-platform-tests/html/dom/interfaces-expected.txt:
* web-platform-tests/html/dom/interfaces.html:
* web-platform-tests/html/dom/reflection.js:
(ReflectionTests.doReflects):
* web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/resources/delayed-broken-video.py: Removed.
* web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/resources/w3c-import.log: Removed.
* web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/w3c-import.log: Removed.
* web-platform-tests/html/semantics/embedded-content/media-elements/location-of-the-media-resource/w3c-import.log: Removed.
* web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/w3c-import.log: Removed.
* web-platform-tests/html/semantics/embedded-content/media-elements/seeking/w3c-import.log: Removed.
* web-platform-tests/html/semantics/embedded-content/media-elements/synchronising-multiple-media-elements/media-controllers/w3c-import.log: Removed.
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log: Removed.
* web-platform-tests/html/semantics/embedded-content/the-img-element/Image-constructor.html:
* web-platform-tests/html/semantics/embedded-content/the-img-element/current-pixel-density/basic-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-img-element/current-pixel-density/basic.html:
* web-platform-tests/html/semantics/forms/constraints/form-validation-checkValidity-expected.txt:
* web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt:
* web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing-expected.txt:
* web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html:
* web-platform-tests/html/semantics/forms/constraints/support/validator.js:
(validator.set_conditions):
(validator.set_dirty): Deleted.
(validator.pre_check): Deleted.
* web-platform-tests/html/semantics/forms/textfieldselection/selection.html:
* web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete-expected.txt:
* web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete.html:
* web-platform-tests/html/semantics/forms/the-label-element/label-attributes-expected.txt:
* web-platform-tests/html/semantics/forms/the-label-element/label-attributes.html:
* web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt:
* web-platform-tests/html/semantics/forms/the-label-element/labelable-elements.html:
* web-platform-tests/html/semantics/forms/the-option-element/option-text-recurse-expected.txt:
* web-platform-tests/html/semantics/forms/the-option-element/option-text-recurse.html:
* web-platform-tests/html/semantics/forms/the-select-element/common-HTMLOptionsCollection-namedItem-expected.txt:
* web-platform-tests/html/semantics/forms/the-select-element/common-HTMLOptionsCollection-namedItem.html:
* web-platform-tests/html/semantics/scripting-1/the-script-element/w3c-import.log:
* web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-descendant-frameset.html:
* web-platform-tests/html/semantics/selectors/pseudo-classes/disabled-expected.txt:
* web-platform-tests/html/semantics/selectors/pseudo-classes/disabled.html:
* web-platform-tests/html/semantics/tabular-data/attributes-common-to-td-and-th-elements/cellIndex-expected.txt:
* web-platform-tests/html/semantics/tabular-data/attributes-common-to-td-and-th-elements/cellIndex.html:
* web-platform-tests/html/semantics/tabular-data/html-table-section-element.js: Added.
(testRowsAttribute):
* web-platform-tests/html/semantics/tabular-data/the-tbody-element/deleteRow-expected.txt:
* web-platform-tests/html/semantics/tabular-data/the-tbody-element/deleteRow.html:
* web-platform-tests/html/semantics/tabular-data/the-tbody-element/insertRow-expected.txt:
* web-platform-tests/html/semantics/tabular-data/the-tbody-element/insertRow.html:
* web-platform-tests/html/semantics/tabular-data/the-tr-element/deleteCell-expected.txt:
* web-platform-tests/html/semantics/tabular-data/the-tr-element/deleteCell.html:
* web-platform-tests/html/semantics/tabular-data/w3c-import.log: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/styling/w3c-import.log.
* web-platform-tests/lint:
* web-platform-tests/lint.whitelist:
* web-platform-tests/media/2048x1360-random.jpg: Added.
* web-platform-tests/media/w3c-import.log: Added.

LayoutTests:

* TestExpectations: updated expectations for newly failing tests.

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

170 files changed:
LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/resources/ImportExpectations
LayoutTests/imported/w3c/resources/TestRepositories
LayoutTests/imported/w3c/resources/web-platform-tests-modules.json
LayoutTests/imported/w3c/web-platform-tests/README.md
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials-expected.txt
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.js
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/open-url-worker-simple.htm
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/empty-div-utf8-html.py [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/img-utf8-html.py [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-content-type-charset-expected.txt
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-content-type-charset.htm
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-content-type-string-expected.txt
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-content-type-string.htm
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-expected.txt
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document.htm
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-aborted.html
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-abortedonmain.html
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-overrides.html
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-overridesexpires.html
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-simple.html
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-synconmain.html
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-twice.html
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-aborted.html
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-overrides.html
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-overridesexpires.html
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-simple.html
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-synconworker.html
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-twice.html
LayoutTests/imported/w3c/web-platform-tests/dom/common.js
LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-stringifier-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-stringifier.html
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-Element-getElementsByTagName.js
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-namespace-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-namespace.html
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal-xhtml-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal-xhtml.xhtml [moved from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.xhtml with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-xhtml-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-xhtml.xhtml [moved from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.xhtml with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild-xhtml-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild-xhtml.xhtml [moved from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.xhtml with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-children-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-children.html
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist.html
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-xhtml-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-xhtml.xhtml [moved from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.xhtml with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-iframe.xml [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling-xhtml-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling-xhtml.xhtml [moved from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.xhtml with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling-xhtml-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling-xhtml.xhtml [moved from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.xhtml with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-childList.html
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-document-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-document.html
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml [deleted file]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-iframe1.xml [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-iframe2.xml [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupNamespaceURI-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupNamespaceURI.html
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt [moved from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml-expected.txt with 99% similarity]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht.xht [moved from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml.xht with 98% similarity]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.html
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-10.xml
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-11.xml
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.xht [deleted file]
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/selectors.js
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-deleteContents-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-deleteContents.html
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-insertNode-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode.html
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-mutations.html
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-surroundContents-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-surroundContents.html
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-case-xhtml-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-case-xhtml.xhtml [moved from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-case.xhtml with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-id-xhtml-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-id-xhtml.xhtml [moved from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-id.xhtml with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace-xhtml-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace-xhtml.xhtml [moved from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace.xhtml with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-xhtml-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-xhtml.xhtml [moved from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements.xhtml with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements.html
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-null-undef-xhtml-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-null-undef-xhtml.xhtml [moved from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-null-undef.xhtml with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-param-xhtml-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-param-xhtml.xhtml [moved from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-param.xhtml with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-03-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-03.html
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-09-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-09.html
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/nameditem-06-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/nameditem-06.html
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/resource-metadata-management/document-lastModified-01.html
LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/010-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-embedded.js
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-text.js
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-ref-expected.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-ref.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements/global-attributes/dir_auto-textarea-script-N-between-Rs-ref-expected.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements/global-attributes/dir_auto-textarea-script-N-between-Rs-ref.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements/global-attributes/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces.html
LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection.js
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/resources/delayed-broken-video.py [deleted file]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/resources/w3c-import.log [deleted file]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/w3c-import.log [deleted file]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/location-of-the-media-resource/w3c-import.log [deleted file]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/w3c-import.log [deleted file]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/seeking/w3c-import.log [deleted file]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/synchronising-multiple-media-elements/media-controllers/w3c-import.log [deleted file]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log [deleted file]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/Image-constructor.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/current-pixel-density/basic-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/current-pixel-density/basic.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-checkValidity-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/support/validator.js
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/label-attributes-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/label-attributes.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-option-element/option-text-recurse-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-option-element/option-text-recurse.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-select-element/common-HTMLOptionsCollection-namedItem-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-select-element/common-HTMLOptionsCollection-namedItem.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-descendant-frameset.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/selectors/pseudo-classes/disabled-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/selectors/pseudo-classes/disabled.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/attributes-common-to-td-and-th-elements/cellIndex-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/attributes-common-to-td-and-th-elements/cellIndex.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/html-table-section-element.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-tbody-element/deleteRow-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-tbody-element/deleteRow.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-tbody-element/insertRow-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-tbody-element/insertRow.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-tr-element/deleteCell-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-tr-element/deleteCell.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/w3c-import.log [moved from LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/styling/w3c-import.log with 85% similarity]
LayoutTests/imported/w3c/web-platform-tests/lint
LayoutTests/imported/w3c/web-platform-tests/lint.whitelist
LayoutTests/imported/w3c/web-platform-tests/media/2048x1360-random.jpg [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/media/w3c-import.log [new file with mode: 0644]

index 2d9afb9..cbd5cb7 100644 (file)
@@ -1,3 +1,12 @@
+2016-01-05  Youenn Fablet  <youenn.fablet@crf.canon.fr>
+
+        Update web-platform-tests test suite
+        https://bugs.webkit.org/show_bug.cgi?id=151984
+
+        Reviewed by Daniel Bates.
+
+        * TestExpectations: updated expectations for newly failing tests.
+
 2016-01-04  Devin Rousso  <dcrousso+webkit@gmail.com>
 
         Web Inspector: add context menu items to switch CSS color property value syntax between RGB, HSL, etc
index 4f60c6a..5ccba1d 100644 (file)
@@ -236,6 +236,9 @@ webkit.org/b/136878 js/promises-tests/promises-tests-2-3-3.html [ Slow ]
 # Resource files not in resources folder
 imported/w3c/web-platform-tests/common/blank.html [ Skip ]
 imported/w3c/web-platform-tests/dom/nodes/Document-createElement-namespace-tests [ Skip ]
+imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-iframe.xml [ Skip ]
+imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-iframe1.xml [ Skip ]
+imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-iframe2.xml [ Skip ]
 imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-iframe.html [ Skip ]
 imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-content.html [ Skip ]
 imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-content.xht [ Skip ]
@@ -276,6 +279,11 @@ webkit.org/b/148546 [ Debug ] imported/w3c/web-platform-tests/dom/ranges/Range-s
 webkit.org/b/148736 [ Debug ] imported/w3c/web-platform-tests/html/dom/interfaces.html [ Skip ]
 webkit.org/b/148822 [ Debug ] imported/w3c/web-platform-tests/html/semantics/interfaces.html [ Skip ]
 
+# WPT tests that fail after doing full test repository reimport and need further investigation
+imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document.htm [ Pass Failure ]
+imported/w3c/web-platform-tests/dom/nodes/MutationObserver-childList.html [ Timeout ]
+imported/w3c/web-platform-tests/dom/nodes/Document-createElement-namespace.html [ Pass Failure ]
+
 # W3C XMLHttpRequest tests
 imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-aborted.html [ Slow ]
 imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-abortedonmain.html [ Slow ]
index c827080..f10f676 100644 (file)
@@ -1,3 +1,199 @@
+2016-01-05  Youenn Fablet  <youenn.fablet@crf.canon.fr>
+
+        Update web-platform-tests test suite
+        https://bugs.webkit.org/show_bug.cgi?id=151984
+
+        Reviewed by Daniel Bates.
+
+        Bumping WPT test revision from dd553279c3 to 5932fd48d519a83b4cca6ed69778547a4fdfc5ae.
+        New revision includes test improvements, test renaming to ensure WebKit test expectations do not clash and XHR test clean-up.
+
+        * resources/ImportExpectations: Updated to not include new tests. Improved ordering.
+        * resources/TestRepositories: Updated revision.
+        * resources/web-platform-tests-modules.json: Updated revision.
+        * web-platform-tests/README.md:
+        * web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials-expected.txt:
+        * web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.js:
+        * web-platform-tests/XMLHttpRequest/interfaces-expected.txt:
+        * web-platform-tests/XMLHttpRequest/open-url-worker-simple.htm:
+        * web-platform-tests/XMLHttpRequest/resources/empty-div-utf8-html.py: Added.
+        (main):
+        * web-platform-tests/XMLHttpRequest/resources/img-utf8-html.py: Added.
+        (main):
+        * web-platform-tests/XMLHttpRequest/resources/w3c-import.log:
+        * web-platform-tests/XMLHttpRequest/send-content-type-charset-expected.txt:
+        * web-platform-tests/XMLHttpRequest/send-content-type-charset.htm:
+        * web-platform-tests/XMLHttpRequest/send-content-type-string-expected.txt:
+        * web-platform-tests/XMLHttpRequest/send-content-type-string.htm:
+        * web-platform-tests/XMLHttpRequest/send-entity-body-document-expected.txt:
+        * web-platform-tests/XMLHttpRequest/send-entity-body-document.htm:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-aborted.html:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-abortedonmain.html:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-overrides.html:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-overridesexpires.html:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-simple.html:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-synconmain.html:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-twice.html:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-aborted.html:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-overrides.html:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-overridesexpires.html:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-simple.html:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-synconworker.html:
+        * web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-twice.html:
+        * web-platform-tests/dom/common.js:
+        (myExtractContents):
+        (myInsertNode):
+        * web-platform-tests/dom/interfaces-expected.txt:
+        * web-platform-tests/dom/lists/DOMTokenList-stringifier-expected.txt:
+        * web-platform-tests/dom/lists/DOMTokenList-stringifier.html:
+        * web-platform-tests/dom/nodes/Document-Element-getElementsByTagName.js:
+        (test_getElementsByTagName):
+        * web-platform-tests/dom/nodes/Document-createElement-namespace-expected.txt:
+        * web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.html: Added.
+        * web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.svg: Added.
+        * web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xhtml: Added.
+        * web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xml: Added.
+        * web-platform-tests/dom/nodes/Document-createElement-namespace.html:
+        * web-platform-tests/dom/nodes/Document-getElementsByTagName-expected.txt:
+        * web-platform-tests/dom/nodes/DocumentType-literal-xhtml-expected.txt: Added.
+        * web-platform-tests/dom/nodes/DocumentType-literal-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.xhtml.
+        * web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-xhtml-expected.txt: Added.
+        * web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.xhtml.
+        * web-platform-tests/dom/nodes/Element-childElementCount-nochild-xhtml-expected.txt: Added.
+        * web-platform-tests/dom/nodes/Element-childElementCount-nochild-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.xhtml.
+        * web-platform-tests/dom/nodes/Element-children-expected.txt:
+        * web-platform-tests/dom/nodes/Element-children.html:
+        * web-platform-tests/dom/nodes/Element-classlist-expected.txt:
+        * web-platform-tests/dom/nodes/Element-classlist.html:
+        * web-platform-tests/dom/nodes/Element-firstElementChild-xhtml-expected.txt: Added.
+        * web-platform-tests/dom/nodes/Element-firstElementChild-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.xhtml.
+        * web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-expected.txt: Added.
+        * web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-iframe-expected.txt: Added.
+        * web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-iframe.xml: Added.
+        * web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess.html: Added.
+        * web-platform-tests/dom/nodes/Element-getElementsByTagName-expected.txt:
+        * web-platform-tests/dom/nodes/Element-matches-expected.txt:
+        * web-platform-tests/dom/nodes/Element-nextElementSibling-xhtml-expected.txt: Added.
+        * web-platform-tests/dom/nodes/Element-nextElementSibling-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.xhtml.
+        * web-platform-tests/dom/nodes/Element-previousElementSibling-xhtml-expected.txt: Added.
+        * web-platform-tests/dom/nodes/Element-previousElementSibling-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.xhtml.
+        * web-platform-tests/dom/nodes/MutationObserver-childList-expected.txt:
+        * web-platform-tests/dom/nodes/MutationObserver-childList.html:
+        * web-platform-tests/dom/nodes/MutationObserver-document-expected.txt:
+        * web-platform-tests/dom/nodes/MutationObserver-document.html:
+        * web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt: Removed.
+        * web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml: Removed.
+        * web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt:
+        * web-platform-tests/dom/nodes/Node-isEqualNode-iframe1-expected.txt: Added.
+        * web-platform-tests/dom/nodes/Node-isEqualNode-iframe1.xml: Added.
+        * web-platform-tests/dom/nodes/Node-isEqualNode-iframe2-expected.txt: Added.
+        * web-platform-tests/dom/nodes/Node-isEqualNode-iframe2.xml: Added.
+        * web-platform-tests/dom/nodes/Node-isEqualNode.xhtml:
+        * web-platform-tests/dom/nodes/Node-lookupNamespaceURI-expected.txt:
+        * web-platform-tests/dom/nodes/Node-lookupNamespaceURI.html:
+        * web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt:
+        * web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml-expected.txt.
+        * web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml.xht.
+        * web-platform-tests/dom/nodes/attributes-expected.txt:
+        * web-platform-tests/dom/nodes/attributes.html:
+        * web-platform-tests/dom/nodes/getElementsByClassName-10.xml:
+        * web-platform-tests/dom/nodes/getElementsByClassName-11.xml:
+        * web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.xht: Removed.
+        * web-platform-tests/dom/nodes/selectors.js:
+        * web-platform-tests/dom/nodes/w3c-import.log:
+        * web-platform-tests/dom/ranges/Range-deleteContents-expected.txt:
+        * web-platform-tests/dom/ranges/Range-deleteContents.html:
+        * web-platform-tests/dom/ranges/Range-extractContents-expected.txt:
+        * web-platform-tests/dom/ranges/Range-insertNode-expected.txt:
+        * web-platform-tests/dom/ranges/Range-intersectsNode-expected.txt:
+        * web-platform-tests/dom/ranges/Range-intersectsNode.html:
+        * web-platform-tests/dom/ranges/Range-mutations.html:
+        * web-platform-tests/dom/ranges/Range-surroundContents-expected.txt:
+        * web-platform-tests/dom/ranges/Range-surroundContents.html:
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-case-xhtml-expected.txt: Added.
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-case-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-case.xhtml.
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-id-xhtml-expected.txt: Added.
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-id-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-id.xhtml.
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace-xhtml-expected.txt: Added.
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace.xhtml.
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-expected.txt:
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-xhtml-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-expected.txt.
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements.xhtml.
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements.html:
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-null-undef-xhtml-expected.txt: Added.
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-null-undef-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-null-undef.xhtml.
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-param-xhtml-expected.txt: Added.
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-param-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-param.xhtml.
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/w3c-import.log:
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-03-expected.txt:
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-03.html:
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-09-expected.txt:
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-09.html:
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/nameditem-06-expected.txt:
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/nameditem-06.html:
+        * web-platform-tests/html/dom/documents/resource-metadata-management/document-lastModified-01.html:
+        * web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/010-expected.txt:
+        * web-platform-tests/html/dom/elements-embedded.js:
+        * web-platform-tests/html/dom/elements-text.js:
+        * web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-ref-expected.html: Added.
+        * web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-ref.html: Added.
+        * web-platform-tests/html/dom/elements/global-attributes/dir_auto-textarea-script-N-between-Rs-ref-expected.html: Added.
+        * web-platform-tests/html/dom/elements/global-attributes/dir_auto-textarea-script-N-between-Rs-ref.html: Added.
+        * web-platform-tests/html/dom/elements/global-attributes/w3c-import.log:
+        * web-platform-tests/html/dom/interfaces-expected.txt:
+        * web-platform-tests/html/dom/interfaces.html:
+        * web-platform-tests/html/dom/reflection.js:
+        (ReflectionTests.doReflects):
+        * web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/resources/delayed-broken-video.py: Removed.
+        * web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/resources/w3c-import.log: Removed.
+        * web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/w3c-import.log: Removed.
+        * web-platform-tests/html/semantics/embedded-content/media-elements/location-of-the-media-resource/w3c-import.log: Removed.
+        * web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/w3c-import.log: Removed.
+        * web-platform-tests/html/semantics/embedded-content/media-elements/seeking/w3c-import.log: Removed.
+        * web-platform-tests/html/semantics/embedded-content/media-elements/synchronising-multiple-media-elements/media-controllers/w3c-import.log: Removed.
+        * web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log: Removed.
+        * web-platform-tests/html/semantics/embedded-content/the-img-element/Image-constructor.html:
+        * web-platform-tests/html/semantics/embedded-content/the-img-element/current-pixel-density/basic-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/the-img-element/current-pixel-density/basic.html:
+        * web-platform-tests/html/semantics/forms/constraints/form-validation-checkValidity-expected.txt:
+        * web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt:
+        * web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing-expected.txt:
+        * web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html:
+        * web-platform-tests/html/semantics/forms/constraints/support/validator.js:
+        (validator.set_conditions):
+        (validator.set_dirty): Deleted.
+        (validator.pre_check): Deleted.
+        * web-platform-tests/html/semantics/forms/textfieldselection/selection.html:
+        * web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete.html:
+        * web-platform-tests/html/semantics/forms/the-label-element/label-attributes-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-label-element/label-attributes.html:
+        * web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-label-element/labelable-elements.html:
+        * web-platform-tests/html/semantics/forms/the-option-element/option-text-recurse-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-option-element/option-text-recurse.html:
+        * web-platform-tests/html/semantics/forms/the-select-element/common-HTMLOptionsCollection-namedItem-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-select-element/common-HTMLOptionsCollection-namedItem.html:
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/w3c-import.log:
+        * web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-descendant-frameset.html:
+        * web-platform-tests/html/semantics/selectors/pseudo-classes/disabled-expected.txt:
+        * web-platform-tests/html/semantics/selectors/pseudo-classes/disabled.html:
+        * web-platform-tests/html/semantics/tabular-data/attributes-common-to-td-and-th-elements/cellIndex-expected.txt:
+        * web-platform-tests/html/semantics/tabular-data/attributes-common-to-td-and-th-elements/cellIndex.html:
+        * web-platform-tests/html/semantics/tabular-data/html-table-section-element.js: Added.
+        (testRowsAttribute):
+        * web-platform-tests/html/semantics/tabular-data/the-tbody-element/deleteRow-expected.txt:
+        * web-platform-tests/html/semantics/tabular-data/the-tbody-element/deleteRow.html:
+        * web-platform-tests/html/semantics/tabular-data/the-tbody-element/insertRow-expected.txt:
+        * web-platform-tests/html/semantics/tabular-data/the-tbody-element/insertRow.html:
+        * web-platform-tests/html/semantics/tabular-data/the-tr-element/deleteCell-expected.txt:
+        * web-platform-tests/html/semantics/tabular-data/the-tr-element/deleteCell.html:
+        * web-platform-tests/html/semantics/tabular-data/w3c-import.log: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/styling/w3c-import.log.
+        * web-platform-tests/lint:
+        * web-platform-tests/lint.whitelist:
+        * web-platform-tests/media/2048x1360-random.jpg: Added.
+        * web-platform-tests/media/w3c-import.log: Added.
+
 2015-12-23  Xabier Rodriguez Calvar  <calvaris@igalia.com>
 
         [Streams API] In RS during enqueuing error should be reported only if readable
index c5e312d..7fefd67 100644 (file)
@@ -73,7 +73,21 @@ web-platform-tests/battery-status [ Skip ]
 web-platform-tests/content-security-policy [ Skip ]
 web-platform-tests/cors [ Skip ]
 web-platform-tests/custom-elements [ Skip ]
+web-platform-tests/cssom-view [ Skip ]
 #web-platform-tests/dom [ Pass ]
+web-platform-tests/dom/collections/domstringmap-supported-property-names.html [ Skip ]
+web-platform-tests/dom/collections/namednodemap-supported-property-names.html [ Skip ]
+web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-svg.svg [ Skip ]
+web-platform-tests/dom/nodes/Element-nextElementSibling-svg.svg [ Skip ]
+web-platform-tests/dom/nodes/Element-lastElementChild-svg.svg [ Skip ]
+web-platform-tests/dom/nodes/Element-firstElementChild-svg.svg [ Skip ]
+web-platform-tests/dom/nodes/Element-childElement-null-svg.svg [ Skip ]
+web-platform-tests/dom/nodes/Element-childElementCount-nochild-svg.svg [ Skip ]
+web-platform-tests/dom/nodes/Element-childElementCount-svg.svg [ Skip ]
+web-platform-tests/dom/nodes/Element-siblingElement-null-svg.svg [ Skip ]
+web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-svg.svg [ Skip ]
+web-platform-tests/dom/nodes/Element-firstElementChild-namespace-svg.svg [ Skip ]
+web-platform-tests/dom/nodes/Element-previousElementSibling-svg.svg [ Skip ]
 web-platform-tests/dom/events/Event-dispatch-propagation-stopped.html [ Skip ]
 web-platform-tests/dom/nodes/Document-createProcessingInstruction.xhtml [ Skip ]
 web-platform-tests/dom/nodes/Document-getElementsByTagName.xhtml [ Skip ]
@@ -99,6 +113,7 @@ web-platform-tests/dom/nodes/Element-siblingElement-null.xhtml [ Skip ]
 web-platform-tests/dom/nodes/Node-contains.xml [ Skip ]
 web-platform-tests/dom/nodes/Node-nodeName.xhtml [ Skip ]
 web-platform-tests/dom/nodes/ParentNode-querySelector-All.xht [ Skip ]
+web-platform-tests/dom/ranges/Range-constructor.html [ Skip ]
 web-platform-tests/dom/traversal/unfinished [ Skip ]
 #web-platform-tests/domparsing [ Pass ]
 web-platform-tests/domparsing/DOMParser-parseFromString-xml.html [ Skip ]
@@ -115,6 +130,7 @@ web-platform-tests/hr-time [ Skip ]
 #web-platform-tests/html [ Pass ]
 web-platform-tests/html/browsers [ Skip ]
 web-platform-tests/html/dom/documents/dom-tree-accessors/Document.currentScript.sub.html [ Skip ]
+web-platform-tests/html/dom/dynamic-markup-insertion/document-writeln/document.writeln-03.html [ Skip ]
 web-platform-tests/html/dom/reflection-embedded.html [ Skip ]
 web-platform-tests/html/dom/reflection-forms.html [ Skip ]
 web-platform-tests/html/dom/reflection-grouping.html [ Skip ]
@@ -130,7 +146,7 @@ web-platform-tests/html/iana [ Skip ]
 web-platform-tests/html/infrastructure [ Skip ]
 web-platform-tests/html/obsolete [ Skip ]
 web-platform-tests/html/rendering [ Skip ]
-
+web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/ [ Skip ]
 web-platform-tests/html/semantics/document-metadata/styling/LinkStyle.html [ Skip ]
 web-platform-tests/html/semantics/embedded-content/media-elements/error-codes [ Skip ]
 web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource [ Skip ]
@@ -156,8 +172,12 @@ web-platform-tests/html/semantics/embedded-content/the-area-element/area_nohref.
 web-platform-tests/html/semantics/embedded-content/the-area-element/test-area.xhtml [ Skip ]
 web-platform-tests/html/semantics/embedded-content/the-img-element/relevant-mutations.html [ Skip ]
 web-platform-tests/html/semantics/embedded-content/the-object-element/object-events.html [ Skip ]
+web-platform-tests/html/semantics/forms/form-submission-0/url-encoded.html [ Skip ]
 web-platform-tests/html/semantics/forms/textfieldselection/select-event.html [ Skip ]
 web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html [ Skip ]
+web-platform-tests/html/semantics/forms/the-input-element/maxlength.html [ Skip ]
+web-platform-tests/html/semantics/forms/the-option-element/option-selected.html [ Skip ]
+web-platform-tests/html/semantics/forms/the-select-element/select-ask-for-reset.html [ Skip ]
 web-platform-tests/html/semantics/interactive-elements/the-details-element/toggleEvent.html [ Skip ]
 web-platform-tests/html/semantics/scripting-1/the-script-element/async_001.htm [ Skip ]
 web-platform-tests/html/semantics/scripting-1/the-script-element/async_002.htm [ Skip ]
@@ -172,6 +192,10 @@ web-platform-tests/html/semantics/scripting-1/the-script-element/async_010.htm [
 web-platform-tests/html/semantics/scripting-1/the-script-element/async_011.htm [ Skip ]
 web-platform-tests/html/semantics/scripting-1/the-script-element/script-for-event.xhtml [ Skip ]
 web-platform-tests/html/semantics/scripting-1/the-script-element/script-text.xhtml [ Skip ]
+web-platform-tests/html/semantics/tabular-data/the-tbody-element/rows.html [ Skip ]
+web-platform-tests/html/semantics/tabular-data/the-tfoot-element [ Skip ]
+web-platform-tests/html/semantics/tabular-data/the-thead-element [ Skip ]
+web-platform-tests/html/semantics/tabular-data/the-tr-element/cells.html [ Skip ]
 web-platform-tests/html/syntax [ Skip ]
 web-platform-tests/html/tools [ Skip ]
 web-platform-tests/html/webappapis [ Skip ]
@@ -180,8 +204,8 @@ web-platform-tests/html-longdesc [ Skip ]
 web-platform-tests/html-media-capture [ Skip ]
 web-platform-tests/http [ Skip ]
 web-platform-tests/infrastructure [ Skip ]
+web-platform-tests/innerText [ Skip ]
 web-platform-tests/js [ Skip ]
-web-platform-tests/media [ Skip ]
 web-platform-tests/media-source [ Skip ]
 web-platform-tests/mediacapture-streams [ Skip ]
 web-platform-tests/microdata [ Skip ]
@@ -206,6 +230,7 @@ web-platform-tests/service-workers [ Skip ]
 web-platform-tests/shadow-dom [ Skip ]
 web-platform-tests/subresource-integrity [ Skip ]
 web-platform-tests/svg [ Skip ]
+web-platform-tests/testharness_runner.html [ Skip ]
 web-platform-tests/touch-events [ Skip ]
 web-platform-tests/typedarrays [ Skip ]
 web-platform-tests/uievents [ Skip ]
@@ -222,5 +247,3 @@ web-platform-tests/websockets [ Skip ]
 web-platform-tests/webstorage [ Skip ]
 web-platform-tests/webvtt [ Skip ]
 web-platform-tests/workers [ Skip ]
-
-web-platform-tests/testharness_runner.html [ Skip ]
index 36fb66a..e87cf13 100644 (file)
@@ -15,7 +15,7 @@
     {
         "name": "web-platform-tests",
         "url": "https://github.com/w3c/web-platform-tests.git", 
-        "revision": "dd553279c3",
+        "revision": "5932fd48d519a83b4cca6ed69778547a4fdfc5ae",
         "paths_to_skip": [
             "conformance-checkers",
             "docs",
index c18ce72..dc6d413 100644 (file)
@@ -4,24 +4,24 @@
         "path": [
             "."
         ], 
-        "url": "https://github.com/w3c/testharness.js/archive/7756b113373ec09f7159c68c4ba7eb8f0ad7c964.tar.gz",
-        "url_subpath": "testharness.js-7756b113373ec09f7159c68c4ba7eb8f0ad7c964"
+        "url": "https://github.com/w3c/testharness.js/archive/698441212391d5177b2f1806d97c7fd15cc46715.tar.gz",
+        "url_subpath": "testharness.js-698441212391d5177b2f1806d97c7fd15cc46715"
     }, 
     {
         "name": "webidl2",
         "path": [
             "resources"
         ],
-        "url": "https://github.com/darobin/webidl2.js/archive/997fb214e02980ef4c27137553857ae6da533590.tar.gz",
-        "url_subpath": "webidl2.js-997fb214e02980ef4c27137553857ae6da533590"
+        "url": "https://github.com/darobin/webidl2.js/archive/bd216bcd5596d60734450adc938155deab1e1a80.tar.gz",
+        "url_subpath": "webidl2.js-bd216bcd5596d60734450adc938155deab1e1a80"
     },
     {
         "name": "tools", 
         "path": [
             "."
         ], 
-        "url": "https://github.com/w3c/wpt-tools/archive/92f14770d10d44027a1c27b72958578ddc381ce3.tar.gz", 
-        "url_subpath": "wpt-tools-92f14770d10d44027a1c27b72958578ddc381ce3"
+        "url": "https://github.com/w3c/wpt-tools/archive/80bc792988aff1422f43b9e1d5909673eca960a2.tar.gz", 
+        "url_subpath": "wpt-tools-80bc792988aff1422f43b9e1d5909673eca960a2"
     },
     {
         "name": "html5lib", 
@@ -52,7 +52,7 @@
         "path": [
             "tools"
         ], 
-        "url": "https://github.com/w3c/wptserve/archive/b6b082fb70c592c6164c76aa167ae4dc284ebb69.tar.gz", 
-        "url_subpath": "wptserve-b6b082fb70c592c6164c76aa167ae4dc284ebb69"
+        "url": "https://github.com/w3c/wptserve/archive/b12d799c0be4fab1055df9a1e4dd5e45646b46ea.tar.gz", 
+        "url_subpath": "wptserve-b12d799c0be4fab1055df9a1e4dd5e45646b46ea"
     }
 ]
index 8157a4a..cac36bc 100644 (file)
@@ -2,8 +2,10 @@ The Web Platform Tests Project [![IRC chat](https://goo.gl/6nCIks)](http://irc.w
 ==============================
 
 The Web Platform Tests Project is a W3C-coordinated attempt to build a
-cross-browser testsuite for the Web-platform stack. Writing tests in a
-way that allows them to be run in all browsers gives browser projects
+cross-browser testsuite for the Web-platform stack.  However, for mainly
+historic reasons, the CSS WG testsuite is in a separate repository,
+[csswg-test](https://github.com/w3c/csswg-test). Writing tests in a way
+that allows them to be run in all browsers gives browser projects
 confidence that they are shipping software that is compatible with other
 implementations, and that later implementations will be compatible with
 their implementations. This in turn gives Web authors/developers
index 414ade6..4ce437b 100644 (file)
@@ -5,5 +5,5 @@ FAIL setting on synchronous XHR assert_throws: function "function () {
         client.withCredentials = true
       }" did not throw
 PASS setting withCredentials when not in UNSENT, OPENED state (asynchronous) 
-FAIL setting withCredentials when in DONE state (synchronous) assert_throws: function "function () { client.withCredentials = true }" did not throw
+PASS setting withCredentials when in DONE state (synchronous) 
 
index 5120d45..b9b4d65 100644 (file)
@@ -43,6 +43,7 @@ function test_withCredentials(worker) {
   test(function() {
     var client = new XMLHttpRequest()
     client.open("GET", "resources/delay.py?ms=1000", false)
+    client.send();
     assert_throws("InvalidStateError", function() { client.withCredentials = true })
   }, "setting withCredentials when in DONE state (synchronous)")
 }
index 3540c77..cf37cb7 100644 (file)
@@ -17,6 +17,7 @@ XMLHttpRequest IDL tests
 
 FAIL XMLHttpRequestEventTarget interface: existence and properties of interface object assert_own_property: self does not have own property "XMLHttpRequestEventTarget" expected property "XMLHttpRequestEventTarget" missing
 FAIL XMLHttpRequestEventTarget interface object length assert_own_property: self does not have own property "XMLHttpRequestEventTarget" expected property "XMLHttpRequestEventTarget" missing
+FAIL XMLHttpRequestEventTarget interface object name assert_own_property: self does not have own property "XMLHttpRequestEventTarget" expected property "XMLHttpRequestEventTarget" missing
 FAIL XMLHttpRequestEventTarget interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XMLHttpRequestEventTarget" expected property "XMLHttpRequestEventTarget" missing
 FAIL XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XMLHttpRequestEventTarget" expected property "XMLHttpRequestEventTarget" missing
 FAIL XMLHttpRequestEventTarget interface: attribute onloadstart assert_own_property: self does not have own property "XMLHttpRequestEventTarget" expected property "XMLHttpRequestEventTarget" missing
@@ -28,6 +29,7 @@ FAIL XMLHttpRequestEventTarget interface: attribute ontimeout assert_own_propert
 FAIL XMLHttpRequestEventTarget interface: attribute onloadend assert_own_property: self does not have own property "XMLHttpRequestEventTarget" expected property "XMLHttpRequestEventTarget" missing
 FAIL XMLHttpRequestUpload interface: existence and properties of interface object assert_equals: class string of XMLHttpRequestUpload expected "[object Function]" but got "[object XMLHttpRequestUploadConstructor]"
 PASS XMLHttpRequestUpload interface object length 
+PASS XMLHttpRequestUpload interface object name 
 FAIL XMLHttpRequestUpload interface: existence and properties of interface prototype object assert_own_property: should inherit from XMLHttpRequestEventTarget, but self has no such property expected property "XMLHttpRequestEventTarget" missing
 FAIL XMLHttpRequestUpload interface: existence and properties of interface prototype object's "constructor" property assert_true: XMLHttpRequestUpload.prototype.constructor is not writable expected true got false
 PASS XMLHttpRequestUpload must be primary interface of (new XMLHttpRequest()).upload 
@@ -51,6 +53,7 @@ PASS EventTarget interface: (new XMLHttpRequest()).upload must inherit property
 PASS EventTarget interface: calling dispatchEvent(Event) on (new XMLHttpRequest()).upload with too few arguments must throw TypeError 
 FAIL XMLHttpRequest interface: existence and properties of interface object assert_equals: class string of XMLHttpRequest expected "[object Function]" but got "[object XMLHttpRequestConstructor]"
 PASS XMLHttpRequest interface object length 
+PASS XMLHttpRequest interface object name 
 FAIL XMLHttpRequest interface: existence and properties of interface prototype object assert_own_property: should inherit from XMLHttpRequestEventTarget, but self has no such property expected property "XMLHttpRequestEventTarget" missing
 FAIL XMLHttpRequest interface: existence and properties of interface prototype object's "constructor" property assert_true: XMLHttpRequest.prototype.constructor is not writable expected true got false
 FAIL XMLHttpRequest interface: attribute onreadystatechange assert_throws: getting property on prototype object must throw TypeError function "function () {
@@ -155,6 +158,7 @@ PASS EventTarget interface: new XMLHttpRequest() must inherit property "dispatch
 PASS EventTarget interface: calling dispatchEvent(Event) on new XMLHttpRequest() with too few arguments must throw TypeError 
 FAIL FormData interface: existence and properties of interface object assert_equals: class string of FormData expected "[object Function]" but got "[object FormDataConstructor]"
 PASS FormData interface object length 
+PASS FormData interface object name 
 PASS FormData interface: existence and properties of interface prototype object 
 FAIL FormData interface: existence and properties of interface prototype object's "constructor" property assert_true: FormData.prototype.constructor is not writable expected true got false
 FAIL FormData interface: operation append(USVString,Blob,USVString) assert_equals: property has wrong .length expected 2 but got 0
@@ -211,6 +215,7 @@ FAIL FormData interface: new FormData(form) must inherit property "set" with the
 FAIL FormData interface: calling set(USVString,USVString) on new FormData(form) with too few arguments must throw TypeError assert_inherits: property "set" not found in prototype chain
 FAIL ProgressEvent interface: existence and properties of interface object assert_equals: class string of ProgressEvent expected "[object Function]" but got "[object ProgressEventConstructor]"
 PASS ProgressEvent interface object length 
+PASS ProgressEvent interface object name 
 PASS ProgressEvent interface: existence and properties of interface prototype object 
 FAIL ProgressEvent interface: existence and properties of interface prototype object's "constructor" property assert_true: ProgressEvent.prototype.constructor is not writable expected true got false
 FAIL ProgressEvent interface: attribute lengthComputable assert_throws: getting property on prototype object must throw TypeError function "function () {
index f0613c1..a77ef6f 100644 (file)
@@ -3,7 +3,6 @@
 <head>
     <meta charset="utf-8" />
     <title>XMLHttpRequest: relative URLs in worker scripts resolved by script URL</title>
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-open()-method" data-tested-assertations="following::OL[1]/LI[3] following::OL[1]/LI[3]/ol[1]/li[1]" />
diff --git a/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/empty-div-utf8-html.py b/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/empty-div-utf8-html.py
new file mode 100644 (file)
index 0000000..26d54b9
--- /dev/null
@@ -0,0 +1,5 @@
+def main(request, response):
+    headers = [("Content-type", "text/html;charset=utf-8")]
+    content = "<!DOCTYPE html><div></div>"
+
+    return headers, content
diff --git a/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/img-utf8-html.py b/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/img-utf8-html.py
new file mode 100644 (file)
index 0000000..085867f
--- /dev/null
@@ -0,0 +1,5 @@
+def main(request, response):
+    headers = [("Content-type", "text/html;charset=utf-8")]
+    content = "<img>foo"
+
+    return headers, content
index db5ad69..91b08eb 100644 (file)
@@ -24,11 +24,13 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/corsenabled.py
 /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/delay.py
 /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/echo-method.py
+/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/empty-div-utf8-html.py
 /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/folder.txt
 /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/form.py
 /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/gzip.py
 /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/headers.py
 /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/image.gif
+/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/img-utf8-html.py
 /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/img.jpg
 /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/infinite-redirects.py
 /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/init.htm
index 177ecbf..dbba02d 100644 (file)
@@ -6,7 +6,7 @@ FAIL Correct text/plain MIME with charset assert_equals: expected "text/plain;ch
 PASS If no charset= param is given, implementation should not add one - unknown MIME 
 PASS If no charset= param is given, implementation should not add one - known MIME 
 FAIL charset given but wrong, fix it (unknown MIME, bogus charset) assert_equals: expected "text/x-thepiano;charset=UTF-8" but got "text/x-thepiano;charset= UTF-8"
-PASS charset given but wrong, fix it (known MIME, bogus charset) 
+FAIL charset given but wrong, fix it (known MIME, bogus charset) assert_equals: expected "text/plain;charset=utf-8;charset=UTF-8" but got "text/plain;charset=UTF-8;charset=UTF-8"
 PASS charset given but wrong, fix it (known MIME, actual charset) 
 PASS If multiple charset parameters are given, all should be rewritten 
 PASS No content type set, give MIME and charset 
index 4fb6713..9e93279 100644 (file)
@@ -58,9 +58,9 @@
         "text/x-thepiano;charset=UTF-8",
         "charset given but wrong, fix it (unknown MIME, bogus charset)"
       )
-      request( /**/
+      request(
         "text/plain;charset=utf-8;charset=waddup",
-        "text/plain;charset=UTF-8;charset=UTF-8",
+        "text/plain;charset=utf-8;charset=UTF-8",
         "charset given but wrong, fix it (known MIME, bogus charset)"
       )
       request(
index fd1c9a3..7ed9ab0 100644 (file)
@@ -5,6 +5,6 @@ CONSOLE MESSAGE: line 24: Blocked a frame with origin "http://localhost:8800" fr
   
 
 PASS XMLHttpRequest: send() - Content-Type 
-FAIL XMLHttpRequest: send() - Content-Type 1 assert_equals: expected "application/xml;charset=windows-1252" but got "NO"
-FAIL XMLHttpRequest: send() - Content-Type 2 assert_equals: expected "text/html;charset=windows-1252" but got "NO"
+FAIL XMLHttpRequest: send() - Content-Type 1 assert_equals: expected "application/xml;charset=UTF-8" but got "NO"
+FAIL XMLHttpRequest: send() - Content-Type 2 assert_equals: expected "text/html;charset=UTF-8" but got "NO"
 
index 61cb4c0..0391ed8 100644 (file)
@@ -20,7 +20,7 @@
       request("TEST", "text/plain;charset=UTF-8")
       function init(fr) { request(fr.contentDocument, fr.getAttribute("data-t")) }
     </script>
-    <iframe src='data:text/xml;charset=windows-1252,<%FF/>' onload="init(this)" data-t="application/xml;charset=windows-1252"></iframe>
-    <iframe src='data:text/html;charset=windows-1252,%FF' onload="init(this)" data-t="text/html;charset=windows-1252"></iframe>
+    <iframe src='data:text/xml;charset=windows-1252,<%FF/>' onload="init(this)" data-t="application/xml;charset=UTF-8"></iframe>
+    <iframe src='data:text/html;charset=windows-1252,%FF' onload="init(this)" data-t="text/html;charset=UTF-8"></iframe>
   </body>
 </html>
index 34233e4..96ac13c 100644 (file)
@@ -1,8 +1,10 @@
-      
+         
 
-FAIL XMLHttpRequest: send() - Document Can't find variable: number
-FAIL XMLHttpRequest: send() - Document 1 Can't find variable: number
-FAIL XMLHttpRequest: send() - Document 2 Can't find variable: number
-FAIL XMLHttpRequest: send() - Document 3 Can't find variable: number
-FAIL XMLHttpRequest: send() - Document 4 Can't find variable: number
+PASS XML document, windows-1252 
+PASS HTML document, invalid UTF-8 
+PASS HTML document, shift-jis 
+PASS img tag 
+PASS plain text file 
+PASS image file 
+PASS empty div 
 
index 1556d95..660a4da 100644 (file)
       { contentType: 'text/html;charset=UTF-8', responseText : '<body>\uFFFD<\/body>' }, /*invalid character code in document turns into FFFD*/
       { contentType: 'text/html;charset=UTF-8', responseText : '<body>\u30C6\u30b9\u30c8<\/body>' } /* correctly serialized Shift-JIS */,
       { contentType: 'text/html;charset=UTF-8', responseText: 'top' }, /* There's some markup included, but it's not really relevant for this test suite, so we do an indexOf() test */
-      { contentType: 'text/html;charset=UTF-8' }
+      { contentType: 'text/html;charset=UTF-8' },
+      { contentType: 'text/html;charset=UTF-8', responseText: '<img>foo' },
+      { contentType: 'text/html;charset=UTF-8', responseText: '<!DOCTYPE html><html><head></head><body><div></div></body></html>' }
      ]
 
 
-      function request(input, isHTML, title) {
+      function request(input, number, title) {
         test(function() {
           var client = new XMLHttpRequest()
           client.open("POST", "resources/content.py?response_charset_label=UTF-8", false)
           // The indexOf() assertation will overlook some stuff, i.e. XML prologues that shouldn't be there (looking at you, Presto).
           // However, arguably these things have little to do with the XHR functionality we're testing.
           if(exp.responseText){ // This test does not want to assert anything about what markup a standalone IMG should be wrapped in. Hence the GIF test lacks a responseText expectation.
-            assert_true(client.responseText.indexOf(exp.responseText) != -1);
+            assert_true(client.responseText.indexOf(exp.responseText) != -1,
+                        JSON.stringify(exp.responseText) + " not in " +
+                        JSON.stringify(client.responseText));
           }
           assert_equals(client.responseXML, null)
         }, title)
       }
-      function init(fr, number, title) { request(fr.contentDocument, number) }
+      function init(fr, number, title) { request(fr.contentDocument, number, title) }
     </script>
     <!-- 
         This test also tests how documents in various encodings are serialized.
@@ -50,6 +54,8 @@
     <iframe src='resources/shift-jis-html.py' onload="init(this, 2, 'HTML document, shift-jis')"></iframe>
     <iframe src='folder.txt' onload="init(this, 3, 'plain text file')"></iframe>
     <iframe src='resources/image.gif' onload="init(this, 4, 'image file')"></iframe>
+    <iframe src='resources/img-utf8-html.py' onload="init(this, 5, 'img tag')"></iframe>
+    <iframe src='resources/empty-div-utf8-html.py' onload="init(this, 6, 'empty div')"></iframe>
 
   </body>
 </html>
index cf63948..0af6d9c 100644 (file)
@@ -11,7 +11,6 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#event-xhr-timeout" data-tested-assertations="../.." />
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <meta name=timeout content=long>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
index 9ce5444..70cba49 100644 (file)
@@ -7,7 +7,6 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#abort-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#event-xhr-abort" data-tested-assertations="../.." />
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol/li[9]"/>
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <meta name=timeout content=long>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
index 6366e31..61a32bb 100644 (file)
@@ -7,7 +7,6 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-ontimeout" data-tested-assertations="../.."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <meta name=timeout content=long>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
index e479a30..d29cbbb 100644 (file)
@@ -8,7 +8,6 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <meta name=timeout content=long>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
index e7cf089..982cf55 100644 (file)
@@ -8,7 +8,6 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <meta name=timeout content=long>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
index ce2537c..79430a9 100644 (file)
@@ -5,7 +5,6 @@
     <title>XHR2 Timeout Property Tests</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following::ol[1]/li[1]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-open()-method" data-tested-assertations="following::ol[1]/li[10]" />
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <meta name=timeout content=long>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
index f29bf98..1423fd5 100644 (file)
@@ -4,7 +4,6 @@
     <meta charset="utf-8" />
     <title>XHR2 Timeout Property Tests</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" />
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following::ol[1]/li[2]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-ontimeout" data-tested-assertations="../.."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
index e5dab5a..c3a4581 100644 (file)
@@ -11,7 +11,6 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#event-xhr-timeout" data-tested-assertations="../.." />
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <meta name=timeout content=long>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
index c5d37c1..bf77d85 100644 (file)
@@ -7,7 +7,6 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-ontimeout" data-tested-assertations="../.."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <meta name=timeout content=long>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
index c1e601d..180db52 100644 (file)
@@ -8,7 +8,6 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <meta name=timeout content=long>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
index 1113dfc..135691f 100644 (file)
@@ -8,7 +8,6 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <meta name=timeout content=long>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
index f9c2d3c..423dcc9 100644 (file)
@@ -8,7 +8,6 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <meta name=timeout content=long>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
index fdf3646..7e7107d 100644 (file)
@@ -8,7 +8,6 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
-    <link rel="stylesheet" href="/resources/testharness.css" />
     <meta name=timeout content=long>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
index 1f0bc70..70367b2 100644 (file)
@@ -571,14 +571,6 @@ function indexOf(node) {
  * a spec bug.
  */
 function myExtractContents(range) {
-    // "If the context object's detached flag is set, raise an
-    // INVALID_STATE_ERR exception and abort these steps."
-    try {
-        range.collapsed;
-    } catch (e) {
-        return "INVALID_STATE_ERR";
-    }
-
     // "Let frag be a new DocumentFragment whose ownerDocument is the same as
     // the ownerDocument of the context object's start node."
     var ownerDoc = range.startContainer.nodeType == Node.DOCUMENT_NODE
@@ -601,10 +593,11 @@ function myExtractContents(range) {
     var originalEndNode = range.endContainer;
     var originalEndOffset = range.endOffset;
 
-    // "If original start node and original end node are the same, and they are
-    // a Text or Comment node:"
+    // "If original start node is original end node, and they are a Text,
+    // ProcessingInstruction, or Comment node:"
     if (range.startContainer == range.endContainer
     && (range.startContainer.nodeType == Node.TEXT_NODE
+    || range.startContainer.nodeType == Node.PROCESSING_INSTRUCTION_NODE
     || range.startContainer.nodeType == Node.COMMENT_NODE)) {
         // "Let clone be the result of calling cloneNode(false) on original
         // start node."
@@ -716,9 +709,11 @@ function myExtractContents(range) {
         newOffset = 1 + indexOf(referenceNode);
     }
 
-    // "If first partially contained child is a Text or Comment node:"
+    // "If first partially contained child is a Text, ProcessingInstruction, or
+    // Comment node:"
     if (firstPartiallyContainedChild
     && (firstPartiallyContainedChild.nodeType == Node.TEXT_NODE
+    || firstPartiallyContainedChild.nodeType == Node.PROCESSING_INSTRUCTION_NODE
     || firstPartiallyContainedChild.nodeType == Node.COMMENT_NODE)) {
         // "Let clone be the result of calling cloneNode(false) on original
         // start node."
@@ -773,9 +768,11 @@ function myExtractContents(range) {
         frag.appendChild(containedChildren[i]);
     }
 
-    // "If last partially contained child is a Text or Comment node:"
+    // "If last partially contained child is a Text, ProcessingInstruction, or
+    // Comment node:"
     if (lastPartiallyContainedChild
     && (lastPartiallyContainedChild.nodeType == Node.TEXT_NODE
+    || lastPartiallyContainedChild.nodeType == Node.PROCESSING_INSTRUCTION_NODE
     || lastPartiallyContainedChild.nodeType == Node.COMMENT_NODE)) {
         // "Let clone be the result of calling cloneNode(false) on original
         // end node."
@@ -831,13 +828,14 @@ function myExtractContents(range) {
  * instance "HIERARCHY_REQUEST_ERR".
  */
 function myInsertNode(range, node) {
-    // "If range's start node is either a ProcessingInstruction or Comment
-    // node, or a Text node whose parent is null, throw an
+    // "If range's start node is a ProcessingInstruction or Comment node, or is
+    // a Text node whose parent is null, or is node, throw an
     // "HierarchyRequestError" exception and terminate these steps."
     if (range.startContainer.nodeType == Node.PROCESSING_INSTRUCTION_NODE
             || range.startContainer.nodeType == Node.COMMENT_NODE
             || (range.startContainer.nodeType == Node.TEXT_NODE
-                && !range.startContainer.parentNode)) {
+                && !range.startContainer.parentNode)
+            || range.startContainer == node) {
                     return "HIERARCHY_REQUEST_ERR";
     }
 
index 30c063a..e508533 100644 (file)
@@ -106,6 +106,7 @@ DOM IDL tests
 
 FAIL Event interface: existence and properties of interface object assert_equals: class string of Event expected "[object Function]" but got "[object EventConstructor]"
 PASS Event interface object length 
+PASS Event interface object name 
 PASS Event interface: existence and properties of interface prototype object 
 FAIL Event interface: existence and properties of interface prototype object's "constructor" property assert_true: Event.prototype.constructor is not writable expected true got false
 FAIL Event interface: attribute type assert_throws: getting property on prototype object must throw TypeError function "function () {
@@ -190,6 +191,7 @@ FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new Event(
 }" did not throw
 FAIL CustomEvent interface: existence and properties of interface object assert_equals: class string of CustomEvent expected "[object Function]" but got "[object CustomEventConstructor]"
 PASS CustomEvent interface object length 
+PASS CustomEvent interface object name 
 PASS CustomEvent interface: existence and properties of interface prototype object 
 FAIL CustomEvent interface: existence and properties of interface prototype object's "constructor" property assert_true: CustomEvent.prototype.constructor is not writable expected true got false
 FAIL CustomEvent interface: attribute detail assert_true: The prototype object must have a property "detail" expected true got false
@@ -223,6 +225,7 @@ FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new Custom
 }" did not throw
 FAIL EventTarget interface: existence and properties of interface object assert_equals: class string of EventTarget expected "[object Function]" but got "[object EventTargetConstructor]"
 PASS EventTarget interface object length 
+PASS EventTarget interface object name 
 PASS EventTarget interface: existence and properties of interface prototype object 
 FAIL EventTarget interface: existence and properties of interface prototype object's "constructor" property assert_true: EventTarget.prototype.constructor is not writable expected true got false
 PASS EventTarget interface: operation addEventListener(DOMString,EventListener,boolean) 
@@ -234,6 +237,7 @@ PASS EventListener interface: existence and properties of interface prototype ob
 PASS EventListener interface: operation handleEvent(Event) 
 FAIL NodeList interface: existence and properties of interface object assert_equals: class string of NodeList expected "[object Function]" but got "[object NodeListConstructor]"
 PASS NodeList interface object length 
+PASS NodeList interface object name 
 PASS NodeList interface: existence and properties of interface prototype object 
 FAIL NodeList interface: existence and properties of interface prototype object's "constructor" property assert_own_property: NodeList.prototype does not have own property "constructor" expected property "constructor" missing
 PASS NodeList interface: operation item(unsigned long) 
@@ -245,6 +249,7 @@ PASS NodeList interface: calling item(unsigned long) on document.querySelectorAl
 FAIL NodeList interface: document.querySelectorAll("script") must inherit property "length" with the proper type (1) assert_inherits: property "length" found on object expected in prototype chain
 FAIL HTMLCollection interface: existence and properties of interface object assert_equals: class string of HTMLCollection expected "[object Function]" but got "[object HTMLCollectionConstructor]"
 PASS HTMLCollection interface object length 
+PASS HTMLCollection interface object name 
 PASS HTMLCollection interface: existence and properties of interface prototype object 
 FAIL HTMLCollection interface: existence and properties of interface prototype object's "constructor" property assert_own_property: HTMLCollection.prototype does not have own property "constructor" expected property "constructor" missing
 FAIL HTMLCollection interface: attribute length assert_true: The prototype object must have a property "length" expected true got false
@@ -263,6 +268,7 @@ FAIL HTMLCollection interface: calling namedItem(DOMString) on document.body.chi
 }" did not throw
 FAIL MutationObserver interface: existence and properties of interface object assert_equals: class string of MutationObserver expected "[object Function]" but got "[object MutationObserverConstructor]"
 PASS MutationObserver interface object length 
+PASS MutationObserver interface object name 
 PASS MutationObserver interface: existence and properties of interface prototype object 
 FAIL MutationObserver interface: existence and properties of interface prototype object's "constructor" property assert_true: MutationObserver.prototype.constructor is not writable expected true got false
 PASS MutationObserver interface: operation observe(Node,MutationObserverInit) 
@@ -270,6 +276,7 @@ PASS MutationObserver interface: operation disconnect()
 PASS MutationObserver interface: operation takeRecords() 
 FAIL MutationRecord interface: existence and properties of interface object assert_equals: class string of MutationRecord expected "[object Function]" but got "[object MutationRecordConstructor]"
 PASS MutationRecord interface object length 
+PASS MutationRecord interface object name 
 PASS MutationRecord interface: existence and properties of interface prototype object 
 FAIL MutationRecord interface: existence and properties of interface prototype object's "constructor" property assert_true: MutationRecord.prototype.constructor is not writable expected true got false
 FAIL MutationRecord interface: attribute type assert_throws: getting property on prototype object must throw TypeError function "function () {
@@ -301,6 +308,7 @@ FAIL MutationRecord interface: attribute oldValue assert_throws: getting propert
 }" did not throw
 FAIL Node interface: existence and properties of interface object assert_equals: class string of Node expected "[object Function]" but got "[object NodeConstructor]"
 PASS Node interface object length 
+PASS Node interface object name 
 FAIL Node interface: existence and properties of interface prototype object assert_equals: prototype of Node.prototype is not EventTarget.prototype expected object "[object EventTargetPrototype]" but got object "[object Object]"
 FAIL Node interface: existence and properties of interface prototype object's "constructor" property assert_true: Node.prototype.constructor is not writable expected true got false
 PASS Node interface: constant ELEMENT_NODE on interface object 
@@ -393,6 +401,7 @@ PASS Node interface: operation replaceChild(Node,Node)
 PASS Node interface: operation removeChild(Node) 
 FAIL Document interface: existence and properties of interface object assert_equals: class string of Document expected "[object Function]" but got "[object DocumentConstructor]"
 PASS Document interface object length 
+PASS Document interface object name 
 PASS Document interface: existence and properties of interface prototype object 
 FAIL Document interface: existence and properties of interface prototype object's "constructor" property assert_true: Document.prototype.constructor is not writable expected true got false
 FAIL Document interface: attribute implementation assert_throws: getting property on prototype object must throw TypeError function "function () {
@@ -466,6 +475,7 @@ PASS Document interface: operation querySelector(DOMString)
 PASS Document interface: operation querySelectorAll(DOMString) 
 FAIL XMLDocument interface: existence and properties of interface object assert_equals: class string of XMLDocument expected "[object Function]" but got "[object DocumentConstructor]"
 PASS XMLDocument interface object length 
+FAIL XMLDocument interface object name assert_equals: wrong value for XMLDocument.name expected "XMLDocument" but got "Document"
 FAIL XMLDocument interface: existence and properties of interface prototype object assert_equals: prototype of XMLDocument.prototype is not Document.prototype expected Node object of unknown type but got Node object of unknown type
 FAIL XMLDocument interface: existence and properties of interface prototype object's "constructor" property assert_true: XMLDocument.prototype.constructor is not writable expected true got false
 PASS XMLDocument must be primary interface of xmlDoc 
@@ -638,6 +648,7 @@ PASS EventTarget interface: xmlDoc must inherit property "dispatchEvent" with th
 PASS EventTarget interface: calling dispatchEvent(Event) on xmlDoc with too few arguments must throw TypeError 
 FAIL DOMImplementation interface: existence and properties of interface object assert_equals: class string of DOMImplementation expected "[object Function]" but got "[object DOMImplementationConstructor]"
 PASS DOMImplementation interface object length 
+PASS DOMImplementation interface object name 
 PASS DOMImplementation interface: existence and properties of interface prototype object 
 FAIL DOMImplementation interface: existence and properties of interface prototype object's "constructor" property assert_true: DOMImplementation.prototype.constructor is not writable expected true got false
 FAIL DOMImplementation interface: operation createDocumentType(DOMString,DOMString,DOMString) assert_equals: property has wrong .length expected 3 but got 0
@@ -659,6 +670,7 @@ PASS DOMImplementation interface: calling createHTMLDocument(DOMString) on docum
 PASS DOMImplementation interface: document.implementation must inherit property "hasFeature" with the proper type (3) 
 FAIL DocumentFragment interface: existence and properties of interface object assert_equals: class string of DocumentFragment expected "[object Function]" but got "[object DocumentFragmentConstructor]"
 PASS DocumentFragment interface object length 
+PASS DocumentFragment interface object name 
 PASS DocumentFragment interface: existence and properties of interface prototype object 
 FAIL DocumentFragment interface: existence and properties of interface prototype object's "constructor" property assert_true: DocumentFragment.prototype.constructor is not writable expected true got false
 FAIL DocumentFragment interface: operation getElementById(DOMString) assert_equals: property has wrong .length expected 1 but got 0
@@ -783,6 +795,7 @@ PASS EventTarget interface: document.createDocumentFragment() must inherit prope
 PASS EventTarget interface: calling dispatchEvent(Event) on document.createDocumentFragment() with too few arguments must throw TypeError 
 FAIL DocumentType interface: existence and properties of interface object assert_equals: class string of DocumentType expected "[object Function]" but got "[object DocumentTypeConstructor]"
 PASS DocumentType interface object length 
+PASS DocumentType interface object name 
 PASS DocumentType interface: existence and properties of interface prototype object 
 FAIL DocumentType interface: existence and properties of interface prototype object's "constructor" property assert_true: DocumentType.prototype.constructor is not writable expected true got false
 FAIL DocumentType interface: attribute name assert_throws: getting property on prototype object must throw TypeError function "function () {
@@ -891,6 +904,7 @@ PASS EventTarget interface: document.doctype must inherit property "dispatchEven
 PASS EventTarget interface: calling dispatchEvent(Event) on document.doctype with too few arguments must throw TypeError 
 FAIL Element interface: existence and properties of interface object assert_equals: class string of Element expected "[object Function]" but got "[object ElementConstructor]"
 PASS Element interface object length 
+PASS Element interface object name 
 PASS Element interface: existence and properties of interface prototype object 
 FAIL Element interface: existence and properties of interface prototype object's "constructor" property assert_true: Element.prototype.constructor is not writable expected true got false
 FAIL Element interface: attribute namespaceURI assert_throws: getting property on prototype object must throw TypeError function "function () {
@@ -1145,6 +1159,7 @@ PASS EventTarget interface: element must inherit property "dispatchEvent" with t
 PASS EventTarget interface: calling dispatchEvent(Event) on element with too few arguments must throw TypeError 
 FAIL NamedNodeMap interface: existence and properties of interface object assert_equals: class string of NamedNodeMap expected "[object Function]" but got "[object NamedNodeMapConstructor]"
 PASS NamedNodeMap interface object length 
+PASS NamedNodeMap interface object name 
 PASS NamedNodeMap interface: existence and properties of interface prototype object 
 FAIL NamedNodeMap interface: existence and properties of interface prototype object's "constructor" property assert_own_property: NamedNodeMap.prototype does not have own property "constructor" expected property "constructor" missing
 FAIL NamedNodeMap interface: attribute length assert_true: The prototype object must have a property "length" expected true got false
@@ -1157,6 +1172,7 @@ FAIL NamedNodeMap interface: operation removeNamedItem(DOMString) assert_equals:
 FAIL NamedNodeMap interface: operation removeNamedItemNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
 FAIL Attr interface: existence and properties of interface object assert_equals: class string of Attr expected "[object Function]" but got "[object AttrConstructor]"
 PASS Attr interface object length 
+PASS Attr interface object name 
 FAIL Attr interface: existence and properties of interface prototype object assert_equals: prototype of Attr.prototype is not Object.prototype expected object "[object Object]" but got Node object of unknown type
 FAIL Attr interface: existence and properties of interface prototype object's "constructor" property assert_true: Attr.prototype.constructor is not writable expected true got false
 FAIL Attr interface: attribute namespaceURI assert_throws: getting property on prototype object must throw TypeError function "function () {
@@ -1199,6 +1215,7 @@ PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit p
 PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "specified" with the proper type (8) 
 FAIL CharacterData interface: existence and properties of interface object assert_equals: class string of CharacterData expected "[object Function]" but got "[object CharacterDataConstructor]"
 PASS CharacterData interface object length 
+PASS CharacterData interface object name 
 PASS CharacterData interface: existence and properties of interface prototype object 
 FAIL CharacterData interface: existence and properties of interface prototype object's "constructor" property assert_true: CharacterData.prototype.constructor is not writable expected true got false
 FAIL CharacterData interface: attribute data assert_throws: getting property on prototype object must throw TypeError function "function () {
@@ -1224,6 +1241,7 @@ PASS CharacterData interface: operation replaceWith([object Object],[object Obje
 PASS CharacterData interface: operation remove() 
 FAIL Text interface: existence and properties of interface object assert_equals: class string of Text expected "[object Function]" but got "[object TextConstructor]"
 PASS Text interface object length 
+PASS Text interface object name 
 PASS Text interface: existence and properties of interface prototype object 
 FAIL Text interface: existence and properties of interface prototype object's "constructor" property assert_true: Text.prototype.constructor is not writable expected true got false
 PASS Text interface: operation splitText(unsigned long) 
@@ -1337,6 +1355,7 @@ PASS EventTarget interface: document.createTextNode("abc") must inherit property
 PASS EventTarget interface: calling dispatchEvent(Event) on document.createTextNode("abc") with too few arguments must throw TypeError 
 FAIL ProcessingInstruction interface: existence and properties of interface object assert_equals: class string of ProcessingInstruction expected "[object Function]" but got "[object ProcessingInstructionConstructor]"
 PASS ProcessingInstruction interface object length 
+PASS ProcessingInstruction interface object name 
 PASS ProcessingInstruction interface: existence and properties of interface prototype object 
 FAIL ProcessingInstruction interface: existence and properties of interface prototype object's "constructor" property assert_true: ProcessingInstruction.prototype.constructor is not writable expected true got false
 FAIL ProcessingInstruction interface: attribute target assert_throws: getting property on prototype object must throw TypeError function "function () {
@@ -1447,6 +1466,7 @@ PASS EventTarget interface: xmlDoc.createProcessingInstruction("abc", "def") mus
 PASS EventTarget interface: calling dispatchEvent(Event) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError 
 FAIL Comment interface: existence and properties of interface object assert_equals: class string of Comment expected "[object Function]" but got "[object CommentConstructor]"
 PASS Comment interface object length 
+PASS Comment interface object name 
 PASS Comment interface: existence and properties of interface prototype object 
 FAIL Comment interface: existence and properties of interface prototype object's "constructor" property assert_true: Comment.prototype.constructor is not writable expected true got false
 PASS Comment must be primary interface of document.createComment("abc") 
@@ -1553,6 +1573,7 @@ PASS EventTarget interface: document.createComment("abc") must inherit property
 PASS EventTarget interface: calling dispatchEvent(Event) on document.createComment("abc") with too few arguments must throw TypeError 
 FAIL Range interface: existence and properties of interface object assert_equals: class string of Range expected "[object Function]" but got "[object RangeConstructor]"
 PASS Range interface object length 
+PASS Range interface object name 
 PASS Range interface: existence and properties of interface prototype object 
 FAIL Range interface: existence and properties of interface prototype object's "constructor" property assert_true: Range.prototype.constructor is not writable expected true got false
 FAIL Range interface: attribute startContainer assert_throws: getting property on prototype object must throw TypeError function "function () {
@@ -1714,6 +1735,7 @@ PASS Range interface: detachedRange must inherit property "intersectsNode" with
 PASS Range interface: calling intersectsNode(Node) on detachedRange with too few arguments must throw TypeError 
 FAIL NodeIterator interface: existence and properties of interface object assert_equals: class string of NodeIterator expected "[object Function]" but got "[object NodeIteratorConstructor]"
 PASS NodeIterator interface object length 
+PASS NodeIterator interface object name 
 PASS NodeIterator interface: existence and properties of interface prototype object 
 FAIL NodeIterator interface: existence and properties of interface prototype object's "constructor" property assert_true: NodeIterator.prototype.constructor is not writable expected true got false
 FAIL NodeIterator interface: attribute root assert_throws: getting property on prototype object must throw TypeError function "function () {
@@ -1746,6 +1768,7 @@ PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilt
 PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "detach" with the proper type (7) 
 FAIL TreeWalker interface: existence and properties of interface object assert_equals: class string of TreeWalker expected "[object Function]" but got "[object TreeWalkerConstructor]"
 PASS TreeWalker interface object length 
+PASS TreeWalker interface object name 
 PASS TreeWalker interface: existence and properties of interface prototype object 
 FAIL TreeWalker interface: existence and properties of interface prototype object's "constructor" property assert_true: TreeWalker.prototype.constructor is not writable expected true got false
 FAIL TreeWalker interface: attribute root assert_throws: getting property on prototype object must throw TypeError function "function () {
@@ -1781,6 +1804,7 @@ PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.S
 PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "previousNode" with the proper type (9) 
 PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "nextNode" with the proper type (10) 
 PASS NodeFilter interface: existence and properties of interface object 
+PASS NodeFilter interface object name 
 PASS NodeFilter interface: existence and properties of interface prototype object 
 PASS NodeFilter interface: existence and properties of interface prototype object's "constructor" property 
 PASS NodeFilter interface: constant FILTER_ACCEPT on interface object 
@@ -1818,6 +1842,7 @@ PASS NodeFilter interface: constant SHOW_NOTATION on interface prototype object
 PASS NodeFilter interface: operation acceptNode(Node) 
 FAIL DOMTokenList interface: existence and properties of interface object assert_equals: class string of DOMTokenList expected "[object Function]" but got "[object DOMTokenListConstructor]"
 PASS DOMTokenList interface object length 
+PASS DOMTokenList interface object name 
 PASS DOMTokenList interface: existence and properties of interface prototype object 
 FAIL DOMTokenList interface: existence and properties of interface prototype object's "constructor" property assert_own_property: DOMTokenList.prototype does not have own property "constructor" expected property "constructor" missing
 FAIL DOMTokenList interface: attribute length assert_true: The prototype object must have a property "length" expected true got false
@@ -1842,6 +1867,7 @@ PASS DOMTokenList interface: document.body.classList must inherit property "togg
 PASS DOMTokenList interface: calling toggle(DOMString,boolean) on document.body.classList with too few arguments must throw TypeError 
 FAIL DOMSettableTokenList interface: existence and properties of interface object assert_equals: class string of DOMSettableTokenList expected "[object Function]" but got "[object DOMSettableTokenListConstructor]"
 PASS DOMSettableTokenList interface object length 
+PASS DOMSettableTokenList interface object name 
 PASS DOMSettableTokenList interface: existence and properties of interface prototype object 
 FAIL DOMSettableTokenList interface: existence and properties of interface prototype object's "constructor" property assert_own_property: DOMSettableTokenList.prototype does not have own property "constructor" expected property "constructor" missing
 FAIL DOMSettableTokenList interface: attribute value assert_true: The prototype object must have a property "value" expected true got false
index d5ff161..b125388 100644 (file)
@@ -6,18 +6,20 @@
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <div id=log></div>
-<span class="   a  a b"></span>
+<span class="   a  a b "></span>
 <script>
 test(function() {
+  assert_equals(String(document.createElement("span").classList), "",
+                "String(classList) should return the empty list for an undefined class attribute");
   var span = document.querySelector("span");
-  assert_equals(span.getAttribute("class"), "   a  a b",
+  assert_equals(span.getAttribute("class"), "   a  a b ",
                 "getAttribute should return the literal value");
-  assert_equals(span.className, "   a  a b",
+  assert_equals(span.className, "   a  a b ",
                 "className should return the literal value");
-  assert_equals(String(span.classList), "a b",
-                "String(classList) should compress whitespace");
-  assert_equals(span.classList.toString(), "a b",
-                "classList.toString() should compress whitespace");
+  assert_equals(String(span.classList), "   a  a b ",
+                "String(classList) should return the literal value");
+  assert_equals(span.classList.toString(), "   a  a b ",
+                "classList.toString() should return the literal value");
   assert_class_string(span.classList, "DOMTokenList");
 });
 </script>
index 7402bbe..cc2b736 100644 (file)
@@ -50,19 +50,44 @@ function test_getElementsByTagName(context, element) {
   }, "Should be able to set expando shadowing a proto prop (namedItem)")
 
   test(function() {
-    var t = element.appendChild(document.createElement("pre"));
-    t.id = "x";
-    this.add_cleanup(function() {element.removeChild(t)});
+    var t1 = element.appendChild(document.createElement("pre"));
+    t1.id = "x";
+    var t2 = element.appendChild(document.createElement("pre"));
+    t2.setAttribute("name", "y");
+    var t3 = element.appendChild(document.createElementNS("", "pre"));
+    t3.setAttribute("id", "z");
+    var t4 = element.appendChild(document.createElementNS("", "pre"));
+    t4.setAttribute("name", "w");
+    this.add_cleanup(function() {
+      element.removeChild(t1)
+      element.removeChild(t2)
+      element.removeChild(t3)
+      element.removeChild(t4)
+    });
 
     var list = context.getElementsByTagName('pre');
     var pre = list[0];
     assert_equals(pre.id, "x");
-    assert_equals(list['x'], pre);
 
-    assert_true('x' in list, "'x' in list");
-    assert_true(list.hasOwnProperty('x'), "list.hasOwnProperty('x')");
+    var exposedNames = { 'x': 0, 'y': 1, 'z': 2 };
+    for (var exposedName in exposedNames) {
+      assert_equals(list[exposedName], list[exposedNames[exposedName]]);
+      assert_equals(list[exposedName], list.namedItem(exposedName));
+      assert_true(exposedName in list, "'" + exposedName + "' in list");
+      assert_true(list.hasOwnProperty(exposedName),
+                  "list.hasOwnProperty('" + exposedName + "')");
+    }
+
+    var unexposedNames = ["w"];
+    for (var unexposedName of unexposedNames) {
+      assert_false(unexposedName in list);
+      assert_false(list.hasOwnProperty(unexposedName));
+      assert_equals(list[unexposedName], undefined);
+      assert_equals(list.namedItem(unexposedName), null);
+    }
 
-    assert_array_equals(Object.getOwnPropertyNames(list).sort(), ["0", "x"]);
+    assert_array_equals(Object.getOwnPropertyNames(list).sort(),
+                        ["0", "1", "2", "3", "x", "y", "z"]);
 
     var desc = Object.getOwnPropertyDescriptor(list, '0');
     assert_equals(typeof desc, "object", "descriptor should be an object");
index 00641f6..2e05f40 100644 (file)
@@ -1,48 +1,48 @@
 
 PASS Created element's namespace in current document 
 PASS Created element's namespace in created HTML document 
-PASS Created element's namespace in created XML document 
+FAIL Created element's namespace in created XML document assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
 FAIL Created element's namespace in created XHTML document assert_equals: Wrong MIME type -- incorrect server config? expected "application/xml" but got "application/xhtml+xml"
 FAIL Created element's namespace in created SVG document assert_equals: Wrong MIME type -- incorrect server config? expected "application/xml" but got "image/svg+xml"
-PASS Created element's namespace in created MathML document 
-FAIL Created element's namespace in empty.html assert_equals: Wrong MIME type -- incorrect server config? expected "text/html" but got "application/json"
-FAIL Created element's namespace in empty.xhtml assert_equals: Wrong MIME type -- incorrect server config? expected "application/xhtml+xml" but got "application/json"
-FAIL Created element's namespace in empty.xml assert_equals: Wrong MIME type -- incorrect server config? expected "application/xml" but got "application/json"
-FAIL Created element's namespace in empty.svg assert_equals: Wrong MIME type -- incorrect server config? expected "image/svg+xml" but got "application/json"
+FAIL Created element's namespace in created MathML document assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
+PASS Created element's namespace in empty.html 
+PASS Created element's namespace in empty.xhtml 
+FAIL Created element's namespace in empty.xml assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
+FAIL Created element's namespace in empty.svg assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
 PASS Created element's namespace in minimal_html.html 
 PASS Created element's namespace in minimal_html.xhtml 
-PASS Created element's namespace in minimal_html.xml 
-PASS Created element's namespace in minimal_html.svg 
+FAIL Created element's namespace in minimal_html.xml assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
+FAIL Created element's namespace in minimal_html.svg assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
 PASS Created element's namespace in xhtml.html 
 PASS Created element's namespace in xhtml.xhtml 
-PASS Created element's namespace in xhtml.xml 
-PASS Created element's namespace in xhtml.svg 
+FAIL Created element's namespace in xhtml.xml assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
+FAIL Created element's namespace in xhtml.svg assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
 PASS Created element's namespace in svg.html 
 PASS Created element's namespace in svg.xhtml 
-PASS Created element's namespace in svg.xml 
-PASS Created element's namespace in svg.svg 
+FAIL Created element's namespace in svg.xml assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
+FAIL Created element's namespace in svg.svg assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
 PASS Created element's namespace in mathml.html 
 PASS Created element's namespace in mathml.xhtml 
-PASS Created element's namespace in mathml.xml 
-PASS Created element's namespace in mathml.svg 
+FAIL Created element's namespace in mathml.xml assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
+FAIL Created element's namespace in mathml.svg assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
 PASS Created element's namespace in bare_xhtml.html 
 PASS Created element's namespace in bare_xhtml.xhtml 
-PASS Created element's namespace in bare_xhtml.xml 
-PASS Created element's namespace in bare_xhtml.svg 
+FAIL Created element's namespace in bare_xhtml.xml assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
+FAIL Created element's namespace in bare_xhtml.svg assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
 PASS Created element's namespace in bare_svg.html 
 PASS Created element's namespace in bare_svg.xhtml 
-PASS Created element's namespace in bare_svg.xml 
-PASS Created element's namespace in bare_svg.svg 
+FAIL Created element's namespace in bare_svg.xml assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
+FAIL Created element's namespace in bare_svg.svg assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
 PASS Created element's namespace in bare_mathml.html 
 PASS Created element's namespace in bare_mathml.xhtml 
-PASS Created element's namespace in bare_mathml.xml 
-PASS Created element's namespace in bare_mathml.svg 
+FAIL Created element's namespace in bare_mathml.xml assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
+FAIL Created element's namespace in bare_mathml.svg assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
 PASS Created element's namespace in xhtml_ns_removed.html 
 PASS Created element's namespace in xhtml_ns_removed.xhtml 
-PASS Created element's namespace in xhtml_ns_removed.xml 
-PASS Created element's namespace in xhtml_ns_removed.svg 
+FAIL Created element's namespace in xhtml_ns_removed.xml assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
+FAIL Created element's namespace in xhtml_ns_removed.svg assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
 PASS Created element's namespace in xhtml_ns_changed.html 
 PASS Created element's namespace in xhtml_ns_changed.xhtml 
-PASS Created element's namespace in xhtml_ns_changed.xml 
-PASS Created element's namespace in xhtml_ns_changed.svg 
+FAIL Created element's namespace in xhtml_ns_changed.xml assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
+FAIL Created element's namespace in xhtml_ns_changed.svg assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
 
index b81bf8f..d0f68b2 100644 (file)
  */
 
 /**
- * Test that an element created using the Document object doc has the namespace
- * that would be expected for the given contentType.
+ * Test that an element created using the Document object doc has the HTML
+ * namespace.
  */
 function testDoc(doc, contentType) {
-  // WebKit doesn't support document.contentType, so they don't get this sanity
-  // check :(
   if (doc.contentType !== undefined) {
+    // Sanity check
     assert_equals(doc.contentType, contentType,
                   "Wrong MIME type -- incorrect server config?");
   }
 
-  var expectedNamespace = contentType == "text/html" ||
-                          contentType == "application/xhtml+xml"
-                          ? "http://www.w3.org/1999/xhtml" : null;
-
-  assert_equals(doc.createElement("x").namespaceURI, expectedNamespace);
+  assert_equals(doc.createElement("x").namespaceURI, "http://www.w3.org/1999/xhtml");
 }
 
 // First test various objects we create in JS
index 902d92d..5b9e691 100644 (file)
@@ -8,7 +8,7 @@ FAIL Shouldn't be able to set unsigned properties on a HTMLCollection (strict mo
     }" did not throw
 PASS Should be able to set expando shadowing a proto prop (item) 
 PASS Should be able to set expando shadowing a proto prop (namedItem) 
-FAIL hasOwnProperty, getOwnPropertyDescriptor, getOwnPropertyNames assert_array_equals: lengths differ, expected 2 got 4
+FAIL hasOwnProperty, getOwnPropertyDescriptor, getOwnPropertyNames assert_false: expected false got true
 PASS HTML element with uppercase tagName never matches in HTML Documents 
 PASS Element in non-HTML namespace, no prefix, lowercase name 
 PASS Element in non-HTML namespace, no prefix, uppercase name 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal-xhtml-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal-xhtml-expected.txt
new file mode 100644 (file)
index 0000000..601bfb3
--- /dev/null
@@ -0,0 +1,3 @@
+
+PASS DocumentType literals 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-xhtml-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-xhtml-expected.txt
new file mode 100644 (file)
index 0000000..7d2d33f
--- /dev/null
@@ -0,0 +1,7 @@
+Test of Dynamic Adding of Elements
+
+The result of this test is logged above.
+
+
+PASS Dynamic Adding of Elements 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild-xhtml-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild-xhtml-expected.txt
new file mode 100644 (file)
index 0000000..385606c
--- /dev/null
@@ -0,0 +1,7 @@
+Test of childElementCount with No Child Element Nodes
+
+Test.
+
+
+PASS childElementCount without Child Element Nodes 
+
index 6423e4d..bc21593 100644 (file)
@@ -1,5 +1,5 @@
 
 
 PASS HTMLCollection edge cases 
-FAIL HTMLCollection edge cases 1 assert_array_equals: lengths differ, expected 3 got 4
+FAIL HTMLCollection edge cases 1 assert_array_equals: lengths differ, expected 6 got 7
 
index b3ce08c..c0210f9 100644 (file)
@@ -3,14 +3,27 @@
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <div id="log"></div>
-<div id="test"><img><img id=foo><img id=foo></div>
+<div id="test"><img><img id=foo><img id=foo><img name="bar"></div>
 <script>
+setup(function() {
+  // Add some non-HTML elements in there to test what happens with those.
+  var container = document.getElementById("test");
+  var child = document.createElementNS("", "img");
+  child.setAttribute("id", "baz");
+  container.appendChild(child);
+
+  child = document.createElementNS("", "img");
+  child.setAttribute("name", "qux");
+  container.appendChild(child);
+});
+
 test(function() {
   var container = document.getElementById("test");
   var result = container.children.item("foo");
   assert_true(result instanceof Element, "Expected an Element.");
   assert_false(result.hasAttribute("id"), "Expected the IDless Element.")
 })
+
 test(function() {
   var container = document.getElementById("test");
   var list = container.children;
@@ -20,8 +33,26 @@ test(function() {
       result.push(p);
     }
   }
-  assert_array_equals(result, ['0', '1', '2']);
+  assert_array_equals(result, ['0', '1', '2', '3', '4', '5']);
   result = Object.getOwnPropertyNames(list);
-  assert_array_equals(result, ['0', '1', '2', 'foo']);
+  assert_array_equals(result, ['0', '1', '2', '3', '4', '5', 'foo', 'bar', 'baz']);
+
+  // Mapping of exposed names to their indices in the list.
+  var exposedNames = { 'foo': 1, 'bar': 3, 'baz': 4 };
+  for (var exposedName in exposedNames) {
+    assert_true(exposedName in list);
+    assert_true(list.hasOwnProperty(exposedName));
+    assert_equals(list[exposedName], list.namedItem(exposedName));
+    assert_equals(list[exposedName], list.item(exposedNames[exposedName]));
+    assert_true(list[exposedName] instanceof Element);
+  }
+
+  var unexposedNames = ['qux'];
+  for (var unexposedName of unexposedNames) {
+    assert_false(unexposedName in list);
+    assert_false(list.hasOwnProperty(unexposedName));
+    assert_equals(list[unexposedName], undefined);
+    assert_equals(list.namedItem(unexposedName), null);
+  }
 });
 </script>
index 1dadc7f..1f5a7f3 100644 (file)
@@ -13,7 +13,7 @@ PASS classList.item() must return null for negative index
 PASS classList[index] must be undefined for out-of-range index 
 PASS classList[index] must be undefined for negative index 
 PASS className should contain initial markup whitespace 
-PASS empty classList should return the empty string since the ordered set parser skip the whitespaces 
+FAIL classList should contain initial markup whitespace assert_equals: implicit expected " " but got ""
 PASS .contains(empty_string) must throw a SYNTAX_ERR 
 PASS .add(empty_string) must throw a SYNTAX_ERR 
 PASS .remove(empty_string) must throw a SYNTAX_ERR 
index e8ef26f..8c87030 100644 (file)
@@ -62,9 +62,9 @@ test(function () {
   assert_equals( elem.className, ' ' );
 }, 'className should contain initial markup whitespace');
 test(function () {
-  assert_equals( elem.classList + '', '', 'implicit' );
-  assert_equals( elem.classList.toString(), '', 'explicit' );
-}, 'empty classList should return the empty string since the ordered set parser skip the whitespaces');
+  assert_equals( elem.classList + '', ' ', 'implicit' );
+  assert_equals( elem.classList.toString(), ' ', 'explicit' );
+}, 'classList should contain initial markup whitespace');
 test(function () {
   assert_throws( 'SYNTAX_ERR', function () { elem.classList.contains(''); } );
 }, '.contains(empty_string) must throw a SYNTAX_ERR');
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-xhtml-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-xhtml-expected.txt
new file mode 100644 (file)
index 0000000..5068202
--- /dev/null
@@ -0,0 +1,7 @@
+Test of firstElementChild
+
+The result of this test is logged above.
+
+
+PASS firstElementChild 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-expected.txt
new file mode 100644 (file)
index 0000000..e73cdce
--- /dev/null
@@ -0,0 +1,4 @@
+
+
+PASS Untitled 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-iframe.xml b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-iframe.xml
new file mode 100644 (file)
index 0000000..f3f286e
--- /dev/null
@@ -0,0 +1 @@
+<root/>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess.html b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess.html
new file mode 100644 (file)
index 0000000..cc118d4
--- /dev/null
@@ -0,0 +1,50 @@
+<!doctype html>
+<meta charset=utf-8>
+<title></title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<iframe src="Element-getElementsByTagName-change-document-HTMLNess-iframe.xml"></iframe>
+<script>
+  onload = function() {
+    var parent = document.createElement("div");
+    var child1 = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
+    child1.textContent = "xhtml:a";
+    var child2 = document.createElementNS("http://www.w3.org/1999/xhtml", "A");
+    child2.textContent = "xhtml:A";
+    var child3 = document.createElementNS("", "a");
+    child3.textContent = "a";
+    var child4 = document.createElementNS("", "A");
+    child4.textContent = "A";
+
+    parent.appendChild(child1);
+    parent.appendChild(child2);
+    parent.appendChild(child3);
+    parent.appendChild(child4);
+
+    var list = parent.getElementsByTagName("A");
+    assert_array_equals(list, [child1, child4],
+      "In an HTML document, should lowercase the tagname passed in for HTML " +
+      "elements only");
+
+    frames[0].document.documentElement.appendChild(parent);
+    assert_array_equals(list, [child1, child4],
+      "After changing document, should still be lowercasing for HTML");
+
+    assert_array_equals(parent.getElementsByTagName("A"),
+                        [child2, child4],
+      "New list with same root and argument should not be lowercasing now");
+
+    // Now reinsert all those nodes into the parent, to blow away caches.
+    parent.appendChild(child1);
+    parent.appendChild(child2);
+    parent.appendChild(child3);
+    parent.appendChild(child4);
+    assert_array_equals(list, [child1, child4],
+      "After blowing away caches, should still have the same list");
+
+    assert_array_equals(parent.getElementsByTagName("A"),
+                        [child2, child4],
+      "New list with same root and argument should still not be lowercasing");
+    done();
+  }
+</script>
index ba561ad..3142de0 100644 (file)
@@ -8,7 +8,7 @@ FAIL Shouldn't be able to set unsigned properties on a HTMLCollection (strict mo
     }" did not throw
 PASS Should be able to set expando shadowing a proto prop (item) 
 PASS Should be able to set expando shadowing a proto prop (namedItem) 
-FAIL hasOwnProperty, getOwnPropertyDescriptor, getOwnPropertyNames assert_array_equals: lengths differ, expected 2 got 4
+FAIL hasOwnProperty, getOwnPropertyDescriptor, getOwnPropertyNames assert_array_equals: lengths differ, expected 7 got 9
 PASS HTML element with uppercase tagName never matches in HTML Documents 
 PASS Element in non-HTML namespace, no prefix, lowercase name 
 PASS Element in non-HTML namespace, no prefix, uppercase name 
index 9214b01..dc443fd 100644 (file)
@@ -183,9 +183,9 @@ PASS In-document Element.matches: :not pseudo-class selector, matching  (with no
 PASS In-document Element.matches: Class selector, matching element with specified class (with no refNodes): .class-p 
 PASS In-document Element.matches: Class selector, chained, matching only elements with all specified classes (with no refNodes): #class .apple.orange.banana 
 PASS In-document Element.matches: Class Selector, chained, with type selector (with no refNodes): div.apple.banana.orange 
-PASS In-document Element.matches: Class selector, matching element with class value using non-ASCII characters (with no refNodes): .台北Táiběi 
+PASS In-document Element.matches: Class selector, matching element with class value using non-ASCII characters (1) (with no refNodes): .台北Táiběi 
 PASS In-document Element.matches: Class selector, matching multiple elements with class value using non-ASCII characters (with no refNodes): .台北 
-PASS In-document Element.matches: Class selector, chained, matching element with multiple class values using non-ASCII characters (with no refNodes): .台北Táiběi.台北 
+PASS In-document Element.matches: Class selector, chained, matching element with multiple class values using non-ASCII characters (1) (with no refNodes): .台北Táiběi.台北 
 PASS In-document Element.matches: Class selector, matching element with class with escaped character (with no refNodes): .foo\:bar 
 PASS In-document Element.matches: Class selector, matching element with class with escaped character (with no refNodes): .test\.foo\[5\]bar 
 PASS In-document Element.matches: ID selector, matching element with specified id (with no refNodes): #id #id-div1 
@@ -193,9 +193,9 @@ PASS In-document Element.matches: ID selector, chained, matching element with sp
 PASS In-document Element.matches: ID selector, chained, matching element with specified id (with no refNodes): #id-div1, #id-div2 
 PASS In-document Element.matches: ID Selector, chained, with type selector (with no refNodes): div#id-div1, div#id-div2 
 PASS In-document Element.matches: ID selector, matching multiple elements with duplicate id (with no refNodes): #id-li-duplicate 
-PASS In-document Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北Táiběi 
-PASS In-document Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北 
-PASS In-document Element.matches: ID selector, matching id values using non-ASCII characters (with no refNodes): #台北Táiběi, #台北 
+PASS In-document Element.matches: ID selector, matching id value using non-ASCII characters (1) (with no refNodes): #台北Táiběi 
+PASS In-document Element.matches: ID selector, matching id value using non-ASCII characters (2) (with no refNodes): #台北 
+PASS In-document Element.matches: ID selector, matching id values using non-ASCII characters (1) (with no refNodes): #台北Táiběi, #台北 
 PASS In-document Element.matches: Descendant combinator, matching element that is a descendant of an element with id (with no refNodes): #descendant div 
 PASS In-document Element.matches: Descendant combinator, matching element with id that is a descendant of an element (with no refNodes): body #descendant-div1 
 PASS In-document Element.matches: Descendant combinator, matching element with id that is a descendant of an element (with no refNodes): div #descendant-div1 
@@ -343,9 +343,9 @@ PASS Detached Element.matches: :not pseudo-class selector, matching  (with no re
 PASS Detached Element.matches: Class selector, matching element with specified class (with no refNodes): .class-p 
 PASS Detached Element.matches: Class selector, chained, matching only elements with all specified classes (with no refNodes): #class .apple.orange.banana 
 PASS Detached Element.matches: Class Selector, chained, with type selector (with no refNodes): div.apple.banana.orange 
-PASS Detached Element.matches: Class selector, matching element with class value using non-ASCII characters (with no refNodes): .台北Táiběi 
+PASS Detached Element.matches: Class selector, matching element with class value using non-ASCII characters (1) (with no refNodes): .台北Táiběi 
 PASS Detached Element.matches: Class selector, matching multiple elements with class value using non-ASCII characters (with no refNodes): .台北 
-PASS Detached Element.matches: Class selector, chained, matching element with multiple class values using non-ASCII characters (with no refNodes): .台北Táiběi.台北 
+PASS Detached Element.matches: Class selector, chained, matching element with multiple class values using non-ASCII characters (1) (with no refNodes): .台北Táiběi.台北 
 PASS Detached Element.matches: Class selector, matching element with class with escaped character (with no refNodes): .foo\:bar 
 PASS Detached Element.matches: Class selector, matching element with class with escaped character (with no refNodes): .test\.foo\[5\]bar 
 PASS Detached Element.matches: ID selector, matching element with specified id (with no refNodes): #id #id-div1 
@@ -353,9 +353,9 @@ PASS Detached Element.matches: ID selector, chained, matching element with speci
 PASS Detached Element.matches: ID selector, chained, matching element with specified id (with no refNodes): #id-div1, #id-div2 
 PASS Detached Element.matches: ID Selector, chained, with type selector (with no refNodes): div#id-div1, div#id-div2 
 PASS Detached Element.matches: ID selector, matching multiple elements with duplicate id (with no refNodes): #id-li-duplicate 
-PASS Detached Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北Táiběi 
-PASS Detached Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北 
-PASS Detached Element.matches: ID selector, matching id values using non-ASCII characters (with no refNodes): #台北Táiběi, #台北 
+PASS Detached Element.matches: ID selector, matching id value using non-ASCII characters (1) (with no refNodes): #台北Táiběi 
+PASS Detached Element.matches: ID selector, matching id value using non-ASCII characters (2) (with no refNodes): #台北 
+PASS Detached Element.matches: ID selector, matching id values using non-ASCII characters (1) (with no refNodes): #台北Táiběi, #台北 
 PASS Detached Element.matches: Descendant combinator, matching element that is a descendant of an element with id (with no refNodes): #descendant div 
 PASS Detached Element.matches: Descendant combinator, matching element with id that is a descendant of an element (with no refNodes): div #descendant-div1 
 PASS Detached Element.matches: Descendant combinator, matching element with id that is a descendant of an element with id (with no refNodes): #descendant #descendant-div2 
@@ -502,9 +502,9 @@ PASS Fragment Element.matches: :not pseudo-class selector, matching  (with no re
 PASS Fragment Element.matches: Class selector, matching element with specified class (with no refNodes): .class-p 
 PASS Fragment Element.matches: Class selector, chained, matching only elements with all specified classes (with no refNodes): #class .apple.orange.banana 
 PASS Fragment Element.matches: Class Selector, chained, with type selector (with no refNodes): div.apple.banana.orange 
-PASS Fragment Element.matches: Class selector, matching element with class value using non-ASCII characters (with no refNodes): .台北Táiběi 
+PASS Fragment Element.matches: Class selector, matching element with class value using non-ASCII characters (1) (with no refNodes): .台北Táiběi 
 PASS Fragment Element.matches: Class selector, matching multiple elements with class value using non-ASCII characters (with no refNodes): .台北 
-PASS Fragment Element.matches: Class selector, chained, matching element with multiple class values using non-ASCII characters (with no refNodes): .台北Táiběi.台北 
+PASS Fragment Element.matches: Class selector, chained, matching element with multiple class values using non-ASCII characters (1) (with no refNodes): .台北Táiběi.台北 
 PASS Fragment Element.matches: Class selector, matching element with class with escaped character (with no refNodes): .foo\:bar 
 PASS Fragment Element.matches: Class selector, matching element with class with escaped character (with no refNodes): .test\.foo\[5\]bar 
 PASS Fragment Element.matches: ID selector, matching element with specified id (with no refNodes): #id #id-div1 
@@ -512,9 +512,9 @@ PASS Fragment Element.matches: ID selector, chained, matching element with speci
 PASS Fragment Element.matches: ID selector, chained, matching element with specified id (with no refNodes): #id-div1, #id-div2 
 PASS Fragment Element.matches: ID Selector, chained, with type selector (with no refNodes): div#id-div1, div#id-div2 
 PASS Fragment Element.matches: ID selector, matching multiple elements with duplicate id (with no refNodes): #id-li-duplicate 
-PASS Fragment Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北Táiběi 
-PASS Fragment Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北 
-PASS Fragment Element.matches: ID selector, matching id values using non-ASCII characters (with no refNodes): #台北Táiběi, #台北 
+PASS Fragment Element.matches: ID selector, matching id value using non-ASCII characters (1) (with no refNodes): #台北Táiběi 
+PASS Fragment Element.matches: ID selector, matching id value using non-ASCII characters (2) (with no refNodes): #台北 
+PASS Fragment Element.matches: ID selector, matching id values using non-ASCII characters (1) (with no refNodes): #台北Táiběi, #台北 
 PASS Fragment Element.matches: Descendant combinator, matching element that is a descendant of an element with id (with no refNodes): #descendant div 
 PASS Fragment Element.matches: Descendant combinator, matching element with id that is a descendant of an element (with no refNodes): div #descendant-div1 
 PASS Fragment Element.matches: Descendant combinator, matching element with id that is a descendant of an element with id (with no refNodes): #descendant #descendant-div2 
@@ -663,9 +663,9 @@ PASS In-document Element.matches: :not pseudo-class selector, matching (1) (with
 PASS In-document Element.matches: Class selector, matching element with specified class (1) (with no refNodes): .class-p 
 PASS In-document Element.matches: Class selector, chained, matching only elements with all specified classes (1) (with no refNodes): #class .apple.orange.banana 
 PASS In-document Element.matches: Class Selector, chained, with type selector (1) (with no refNodes): div.apple.banana.orange 
-FAIL In-document Element.matches: Class selector, matching element with class value using non-ASCII characters (with no refNodes): .台北Táiběi assert_true: The element #class-span1 should match the selector. expected true got false
+PASS In-document Element.matches: Class selector, matching element with class value using non-ASCII characters (2) (with no refNodes): .台北Táiběi 
 PASS In-document Element.matches: Class selector, matching multiple elements with class value using non-ASCII characters (1) (with no refNodes): .台北 
-FAIL In-document Element.matches: Class selector, chained, matching element with multiple class values using non-ASCII characters (with no refNodes): .台北Táiběi.台北 assert_true: The element #class-span1 should match the selector. expected true got false
+PASS In-document Element.matches: Class selector, chained, matching element with multiple class values using non-ASCII characters (2) (with no refNodes): .台北Táiběi.台北 
 PASS In-document Element.matches: Class selector, matching element with class with escaped character (1) (with no refNodes): .foo\:bar 
 PASS In-document Element.matches: Class selector, matching element with class with escaped character (1) (with no refNodes): .test\.foo\[5\]bar 
 PASS In-document Element.matches: ID selector, matching element with specified id (1) (with no refNodes): #id #id-div1 
@@ -673,9 +673,9 @@ PASS In-document Element.matches: ID selector, chained, matching element with sp
 PASS In-document Element.matches: ID selector, chained, matching element with specified id (1) (with no refNodes): #id-div1, #id-div2 
 PASS In-document Element.matches: ID Selector, chained, with type selector (1) (with no refNodes): div#id-div1, div#id-div2 
 PASS In-document Element.matches: ID selector, matching multiple elements with duplicate id (1) (with no refNodes): #id-li-duplicate 
-FAIL In-document Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北Táiběi null is not an object (evaluating 'element.matches')
-PASS In-document Element.matches: ID selector, matching id value using non-ASCII characters (1) (with no refNodes): #台北 
-FAIL In-document Element.matches: ID selector, matching id values using non-ASCII characters (with no refNodes): #台北Táiběi, #台北 null is not an object (evaluating 'element.matches')
+PASS In-document Element.matches: ID selector, matching id value using non-ASCII characters (3) (with no refNodes): #台北Táiběi 
+PASS In-document Element.matches: ID selector, matching id value using non-ASCII characters (4) (with no refNodes): #台北 
+PASS In-document Element.matches: ID selector, matching id values using non-ASCII characters (2) (with no refNodes): #台北Táiběi, #台北 
 PASS In-document Element.matches: Descendant combinator, matching element that is a descendant of an element with id (1) (with no refNodes): #descendant div 
 PASS In-document Element.matches: Descendant combinator, matching element with id that is a descendant of an element (1) (with no refNodes): body #descendant-div1 
 PASS In-document Element.matches: Descendant combinator, matching element with id that is a descendant of an element (1) (with no refNodes): div #descendant-div1 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling-xhtml-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling-xhtml-expected.txt
new file mode 100644 (file)
index 0000000..7bec7ad
--- /dev/null
@@ -0,0 +1,7 @@
+Test of nextElementSibling
+
+The result of this test is unknown.
+
+
+PASS nextElementSibling 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling-xhtml-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling-xhtml-expected.txt
new file mode 100644 (file)
index 0000000..d525aa1
--- /dev/null
@@ -0,0 +1,7 @@
+Test of previousElementSibling
+
+The result of this test is unknown.
+
+
+PASS previousElementSibling 
+
index c95b168..e4c674e 100644 (file)
@@ -47,6 +47,7 @@
 <p id='n50'><span>text content</span></p>
 <p id='n51'><span>text content</span></p>
 <p id='n52'><span>NO </span><span>CHANGED</span></p>
+<p id='n53'><span>text content</span></p>
 
 <p id='n60'><span>text content</span></p>
 
                   function() { n52.replaceChild(n52.lastChild, n52.firstChild); },
                   "childList Node.replaceChild: internal replacement mutation");
 
+  var n53 = document.getElementById('n53');
+  runMutationTest(n53,
+                  {"childList":true},
+                  [{type: "childList",
+                    removedNodes: [n53.firstChild]},
+                   {type: "childList",
+                    addedNodes: [n53.firstChild]}],
+                  function() { n53.replaceChild(n53.firstChild, n53.firstChild); },
+                  "childList Node.replaceChild: self internal replacement mutation");
+
   var n60 = document.getElementById('n60');
   runMutationTest(n60,
                   {"childList":true},
index 59301f7..4e3d257 100644 (file)
@@ -3,6 +3,7 @@ MutationObservers: document mutations
 
 PASS setup test 
 PASS parser insertion mutations 
-PASS parser script insertion mutation 
+FAIL parser script insertion mutation assert_equals: target node must match expected Element node <p id="n00"><script id="inserted_script">document.body.ap... but got Element node <body><h1>MutationObservers: document mutations</h1>
+<div...
 PASS removal of parent during parsing 
 
index 2ab8126..4662b23 100644 (file)
           checkRecords(document, sequence,
                        [{type: "childList",
                          addedNodes: function () {
+                           return [ document.getElementById("inserted_script") ];
+                         },
+                         target: function () {
+                          return document.getElementById("n00");
+                         }},
+                        {type: "childList",
+                         addedNodes: function () {
                            return [ document.getElementById("inserted_element") ];
                          },
                          previousSibling: function () {
                            return document.getElementById("s002");
                          },
-                         target: document.body},
-                        {type: "childList",
-                         addedNodes: function () {
-                           return [ document.getElementById("inserted_script") ];
-                         },
-                         target: function () {
-                          return document.getElementById("n00");
-                         }}
+                         target: document.body}
                         ]);
         });
     }
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt
deleted file mode 100644 (file)
index 48a1435..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
- Link text
-
-FAIL Should throw TypeError if the arguments are wrong. assert_throws: function "function () {
-    document.contains();
-  }" did not throw
-PASS contains(null) should be false 
-PASS document.contains 
-PASS contains with a button 
-PASS contains with a text node 
-PASS contains with a processing instruction 
-FAIL contains with a document fragment NotSupportedError: DOM Exception 9
-PASS contaibs with another document 
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml
deleted file mode 100644 (file)
index b95b7ff..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Node.nodeName</title>
-<link rel="author" title="Olli Pettay" href="mailto:Olli@Pettay.fi"/>
-<link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com"/>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-</head>
-<body>
-<div id="log"/>
-<div id="test">
-  <input type="button" id="testbutton"/>
-  <a id="link">Link text</a>
-</div>
-<script>
-<![CDATA[
-test(function() {
-  assert_throws(new TypeError(), function() {
-    document.contains();
-  });
-  assert_throws(new TypeError(), function() {
-    document.contains(9);
-  });
-}, "Should throw TypeError if the arguments are wrong.");
-
-test(function() {
-  assert_equals(document.contains(null), false, "Document shouldn't contain null.");
-}, "contains(null) should be false");
-
-test(function() {
-  assert_equals(document.contains(document), true, "Document should contain itself!");
-  assert_equals(document.contains(document.createElement("foo")), false, "Document shouldn't contain element which is't in the document");
-  assert_equals(document.contains(document.createTextNode("foo")), false, "Document shouldn't contain text node which is't in the document");
-}, "document.contains");
-
-test(function() {
-  var tb = document.getElementById("testbutton");
-  assert_equals(tb.contains(tb), true, "Element should contain itself.")
-  assert_equals(document.contains(tb), true, "Document should contain element in it!");
-  assert_equals(document.documentElement.contains(tb), true, "Element should contain element in it!");
-}, "contains with a button");
-
-test(function() {
-  var link = document.getElementById("link");
-  var text = link.firstChild;
-  assert_equals(document.contains(text), true, "Document should contain a text node in it.");
-  assert_equals(link.contains(text), true, "Element should contain a text node in it.");
-  assert_equals(text.contains(text), true, "Text node should contain itself.");
-  assert_equals(text.contains(link), false, "text node shouldn't contain its parent.");
-}, "contains with a text node");
-
-test(function() {
-  var pi = document.createProcessingInstruction("adf", "asd");
-  assert_equals(pi.contains(document), false, "Processing instruction shouldn't contain document");
-  assert_equals(document.contains(pi), false, "Document shouldn't contain newly created processing instruction");
-  document.documentElement.appendChild(pi);
-  document.contains(pi, true, "Document should contain processing instruction");
-}, "contains with a processing instruction");
-
-test(function() {
-  if ("createContextualFragment" in document.createRange()) {
-    var df = document.createRange().createContextualFragment("<div>foo</div>");
-    assert_equals(df.contains(df.firstChild), true, "Document fragment should contain its child");
-    assert_equals(df.contains(df.firstChild.firstChild), true,
-       "Document fragment should contain its descendant");
-    assert_equals(df.contains(df), true, "Document fragment should contain itself.");
-  }
-}, "contains with a document fragment");
-
-test(function() {
-  var d = document.implementation.createHTMLDocument("");
-  assert_equals(document.contains(d), false,
-     "Document shouldn't contain another document.");
-  assert_equals(document.contains(d.createElement("div")), false,
-     "Document shouldn't contain an element from another document.");
-  assert_equals(document.contains(d.documentElement), false,
-     "Document shouldn't contain an element from another document.");
-}, "contaibs with another document");
-]]>
-</script>
-</body>
-</html>
index b0dd4f3..f7d7e0f 100644 (file)
@@ -1,7 +1,3 @@
-CONSOLE MESSAGE: line 1380: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "null".  The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
-
-CONSOLE MESSAGE: line 1380: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "null".  The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
-
  
 
 PASS Node.isEqualNode 
@@ -17,5 +13,5 @@ PASS isEqualNode should return false if elements have different namespace
 PASS isEqualNode should return false if elements have different prefix 
 PASS isEqualNode should return false if elements have different local name 
 PASS isEqualNode should return true when the attributes have different prefixes 
-FAIL isEqualNode should return true when only the internal subsets of DocumentTypes differ. null is not an object (evaluating 'doc1.doctype')
+PASS isEqualNode should return true when only the internal subsets of DocumentTypes differ. 
 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-iframe1.xml b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-iframe1.xml
new file mode 100644 (file)
index 0000000..8077e73
--- /dev/null
@@ -0,0 +1 @@
+<!DOCTYPE foo [ <!ELEMENT foo (#PCDATA)> ]><foo/>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-iframe2.xml b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-iframe2.xml
new file mode 100644 (file)
index 0000000..eacc9d1
--- /dev/null
@@ -0,0 +1 @@
+<!DOCTYPE foo [ <!ELEMENT foo EMPTY> ]><foo/>
index 4742347..3170643 100644 (file)
@@ -78,7 +78,7 @@ function iframeLoaded() {
   }
 }
 </script>
-<iframe id="subset1" onload="iframeLoaded()" src="data:application/xml,&lt;!DOCTYPE foo [ &lt;!ELEMENT foo (%23PCDATA)> ]>&lt;foo/>" />
-<iframe id="subset2" onload="iframeLoaded()" src="data:application/xml,&lt;!DOCTYPE foo [ &lt;!ELEMENT foo EMPTY> ]>&lt;foo/>" />
+<iframe id="subset1" onload="iframeLoaded()" src="Node-isEqualNode-iframe1.xml" />
+<iframe id="subset2" onload="iframeLoaded()" src="Node-isEqualNode-iframe2.xml" />
 </body>
 </html>
index 65f3c9d..2141fac 100644 (file)
@@ -1,40 +1,37 @@
 LookupNamespaceURI and IsDefaultNamespace
 
 
-PASS DocumentFragment should have null namespace 
-PASS DocumentFragment should have null namespace 
-PASS DocumentFragment should have null namespace 
-PASS DocumentFragment should have null namespace 
-FAIL DocumentFragment is in default namespace assert_equals: expected true but got false
-FAIL DocumentFragment is in default namespace assert_equals: expected true but got false
-PASS DocumentFragment is in default namespace 
-PASS DocumentFragment is in default namespace 
-PASS Element should have null namespace 
-PASS Element should have null namespace 
+PASS DocumentFragment should have null namespace, prefix null 
+PASS DocumentFragment should have null namespace, prefix "" 
+PASS DocumentFragment should have null namespace, prefix "foo" 
+PASS DocumentFragment should have null namespace, prefix "xmlns" 
+FAIL DocumentFragment is in default namespace, prefix null assert_equals: expected true but got false
+FAIL DocumentFragment is in default namespace, prefix "" assert_equals: expected true but got false
+PASS DocumentFragment is in default namespace, prefix "foo" 
+PASS DocumentFragment is in default namespace, prefix "xmlns" 
+PASS Element should have null namespace, prefix null 
+PASS Element should have null namespace, prefix "" 
 PASS Element should not have namespace matching prefix with namespaceURI value 
 PASS Element should not have XMLNS namespace 
 PASS Element has namespace URI matching prefix 
-FAIL Empty namespace is not default assert_equals: expected true but got false
-FAIL Empty namespace is not default assert_equals: expected true but got false
+FAIL Empty namespace is not default, prefix null assert_equals: expected true but got false
+FAIL Empty namespace is not default, prefix "" assert_equals: expected true but got false
 PASS fooNamespace is not default 
 PASS xmlns namespace is not default 
-PASS Element should have baz namespace 
-FAIL Element should have baz namespace assert_equals: expected (string) "bazURI" but got (object) null
-PASS Element has namespace URI matching prefix 
+PASS Element should have baz namespace, prefix null 
+FAIL Element should have baz namespace, prefix "" assert_equals: expected (string) "bazURI" but got (object) null
 PASS Element does not has namespace with xlmns prefix 
 PASS Element has bar namespace 
-PASS Empty namespace is not default 
-PASS Empty namespace is not default 
-PASS fooNamespace is not default 
-PASS xmlns namespace is not default 
+PASS Empty namespace is not default on fooElem, prefix null 
+PASS Empty namespace is not default on fooElem, prefix "" 
 PASS bar namespace is not default 
 PASS baz namespace is default 
 PASS Comment should inherit baz namespace 
 FAIL Comment should inherit  baz namespace assert_equals: expected (string) "bazURI" but got (object) null
 PASS Comment should inherit namespace URI matching prefix 
 PASS Comment should inherit bar namespace 
-PASS For comment, empty namespace is not default 
-PASS For comment, empty namespace is not default 
+PASS For comment, empty namespace is not default, prefix null 
+PASS For comment, empty namespace is not default, prefix "" 
 PASS For comment, fooNamespace is not default 
 PASS For comment, xmlns namespace is not default 
 PASS For comment, inherited bar namespace is not default 
@@ -43,19 +40,19 @@ PASS Child element should inherit baz namespace
 FAIL Child element should have null namespace assert_equals: expected (string) "childNamespace" but got (object) null
 PASS Child element should not have XMLNS namespace 
 PASS Child element has namespace URI matching prefix 
-PASS Empty namespace is not default for child 
-PASS Empty namespace is not default for child 
+PASS Empty namespace is not default for child, prefix null 
+PASS Empty namespace is not default for child, prefix "" 
 PASS fooNamespace is not default for child 
 PASS xmlns namespace is not default for child 
 PASS bar namespace is not default for child 
 PASS baz namespace is default for child 
 PASS childNamespace is default for child 
-PASS Document should have xhtml namespace 
-FAIL Document should have xhtml namespace assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
+PASS Document should have xhtml namespace, prefix null 
+FAIL Document should have xhtml namespace, prefix "" assert_equals: expected (string) "http://www.w3.org/1999/xhtml" but got (object) null
 PASS Document has no namespace URI matching prefix 
 PASS Document has bar namespace 
-PASS For document, Empty namespace is not default 
-PASS For document, Empty namespace is not default 
+PASS For document, empty namespace is not default, prefix null 
+PASS For document, empty namespace is not default, prefix "" 
 PASS For document, fooNamespace is not default 
 PASS For document, xmlns namespace is not default 
 PASS For document, bar namespace is not default 
index 1b8c46d..45b6c0f 100644 (file)
@@ -23,43 +23,40 @@ function isDefaultNamespace(node, namespace, expected, name) {
 
 
 var frag = document.createDocumentFragment();
-lookupNamespaceURI(frag, null, null, 'DocumentFragment should have null namespace');
-lookupNamespaceURI(frag, '', null, 'DocumentFragment should have null namespace');
-lookupNamespaceURI(frag, 'foo', null, 'DocumentFragment should have null namespace');
-lookupNamespaceURI(frag, 'xmlns', null, 'DocumentFragment should have null namespace');
-isDefaultNamespace(frag, null, true, 'DocumentFragment is in default namespace');
-isDefaultNamespace(frag, '', true, 'DocumentFragment is in default namespace');
-isDefaultNamespace(frag, 'foo', false, 'DocumentFragment is in default namespace');
-isDefaultNamespace(frag, 'xmlns', false, 'DocumentFragment is in default namespace');
+lookupNamespaceURI(frag, null, null, 'DocumentFragment should have null namespace, prefix null');
+lookupNamespaceURI(frag, '', null, 'DocumentFragment should have null namespace, prefix ""');
+lookupNamespaceURI(frag, 'foo', null, 'DocumentFragment should have null namespace, prefix "foo"');
+lookupNamespaceURI(frag, 'xmlns', null, 'DocumentFragment should have null namespace, prefix "xmlns"');
+isDefaultNamespace(frag, null, true, 'DocumentFragment is in default namespace, prefix null');
+isDefaultNamespace(frag, '', true, 'DocumentFragment is in default namespace, prefix ""');
+isDefaultNamespace(frag, 'foo', false, 'DocumentFragment is in default namespace, prefix "foo"');
+isDefaultNamespace(frag, 'xmlns', false, 'DocumentFragment is in default namespace, prefix "xmlns"');
 
 
 
 var fooElem = document.createElementNS('fooNamespace', 'prefix:elem');
 fooElem.setAttribute('bar', 'value');
 
-lookupNamespaceURI(fooElem, null, null, 'Element should have null namespace');
-lookupNamespaceURI(fooElem, '', null, 'Element should have null namespace');
+lookupNamespaceURI(fooElem, null, null, 'Element should have null namespace, prefix null');
+lookupNamespaceURI(fooElem, '', null, 'Element should have null namespace, prefix ""');
 lookupNamespaceURI(fooElem, 'fooNamespace', null, 'Element should not have namespace matching prefix with namespaceURI value');
 lookupNamespaceURI(fooElem, 'xmlns', null, 'Element should not have XMLNS namespace');
 lookupNamespaceURI(fooElem, 'prefix', 'fooNamespace', 'Element has namespace URI matching prefix');
-isDefaultNamespace(fooElem, null, true, 'Empty namespace is not default');
-isDefaultNamespace(fooElem, '', true, 'Empty namespace is not default');
+isDefaultNamespace(fooElem, null, true, 'Empty namespace is not default, prefix null');
+isDefaultNamespace(fooElem, '', true, 'Empty namespace is not default, prefix ""');
 isDefaultNamespace(fooElem, 'fooNamespace', false, 'fooNamespace is not default');
 isDefaultNamespace(fooElem, 'http://www.w3.org/2000/xmlns/', false, 'xmlns namespace is not default');
 
 fooElem.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:bar', 'barURI');
 fooElem.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'bazURI');
 
-lookupNamespaceURI(fooElem, null, 'bazURI', 'Element should have baz namespace');
-lookupNamespaceURI(fooElem, '', 'bazURI', 'Element should have baz namespace');
-lookupNamespaceURI(fooElem, 'prefix', 'fooNamespace', 'Element has namespace URI matching prefix');
+lookupNamespaceURI(fooElem, null, 'bazURI', 'Element should have baz namespace, prefix null');
+lookupNamespaceURI(fooElem, '', 'bazURI', 'Element should have baz namespace, prefix ""');
 lookupNamespaceURI(fooElem, 'xmlns', null, 'Element does not has namespace with xlmns prefix');
 lookupNamespaceURI(fooElem, 'bar', 'barURI', 'Element has bar namespace');
 
-isDefaultNamespace(fooElem, null, false, 'Empty namespace is not default');
-isDefaultNamespace(fooElem, '', false, 'Empty namespace is not default');
-isDefaultNamespace(fooElem, 'fooNamespace', false, 'fooNamespace is not default');
-isDefaultNamespace(fooElem, 'http://www.w3.org/2000/xmlns/', false, 'xmlns namespace is not default');
+isDefaultNamespace(fooElem, null, false, 'Empty namespace is not default on fooElem, prefix null');
+isDefaultNamespace(fooElem, '', false, 'Empty namespace is not default on fooElem, prefix ""');
 isDefaultNamespace(fooElem, 'barURI', false, 'bar namespace is not default');
 isDefaultNamespace(fooElem, 'bazURI', true, 'baz namespace is default');
 
@@ -71,8 +68,8 @@ lookupNamespaceURI(comment, '', 'bazURI', 'Comment should inherit  baz namespace
 lookupNamespaceURI(comment, 'prefix', 'fooNamespace', 'Comment should inherit namespace URI matching prefix');
 lookupNamespaceURI(comment, 'bar', 'barURI', 'Comment should inherit bar namespace');
 
-isDefaultNamespace(comment, null, false, 'For comment, empty namespace is not default');
-isDefaultNamespace(comment, '', false, 'For comment, empty namespace is not default');
+isDefaultNamespace(comment, null, false, 'For comment, empty namespace is not default, prefix null');
+isDefaultNamespace(comment, '', false, 'For comment, empty namespace is not default, prefix ""');
 isDefaultNamespace(comment, 'fooNamespace', false, 'For comment, fooNamespace is not default');
 isDefaultNamespace(comment, 'http://www.w3.org/2000/xmlns/', false, 'For comment, xmlns namespace is not default');
 isDefaultNamespace(comment, 'barURI', false, 'For comment, inherited bar namespace is not default');
@@ -86,8 +83,8 @@ lookupNamespaceURI(fooChild, '', 'childNamespace', 'Child element should have nu
 lookupNamespaceURI(fooChild, 'xmlns', null, 'Child element should not have XMLNS namespace');
 lookupNamespaceURI(fooChild, 'prefix', 'fooNamespace', 'Child element has namespace URI matching prefix');
 
-isDefaultNamespace(fooChild, null, false, 'Empty namespace is not default for child');
-isDefaultNamespace(fooChild, '', false, 'Empty namespace is not default for child');
+isDefaultNamespace(fooChild, null, false, 'Empty namespace is not default for child, prefix null');
+isDefaultNamespace(fooChild, '', false, 'Empty namespace is not default for child, prefix ""');
 isDefaultNamespace(fooChild, 'fooNamespace', false, 'fooNamespace is not default for child');
 isDefaultNamespace(fooChild, 'http://www.w3.org/2000/xmlns/', false, 'xmlns namespace is not default for child');
 isDefaultNamespace(fooChild, 'barURI', false, 'bar namespace is not default for child');
@@ -97,13 +94,13 @@ isDefaultNamespace(fooChild, 'childNamespace', true, 'childNamespace is default
 document.documentElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:bar', 'barURI');
 document.documentElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'bazURI');
 
-lookupNamespaceURI(document, null, 'http://www.w3.org/1999/xhtml', 'Document should have xhtml namespace');
-lookupNamespaceURI(document, '', 'http://www.w3.org/1999/xhtml', 'Document should have xhtml namespace');
+lookupNamespaceURI(document, null, 'http://www.w3.org/1999/xhtml', 'Document should have xhtml namespace, prefix null');
+lookupNamespaceURI(document, '', 'http://www.w3.org/1999/xhtml', 'Document should have xhtml namespace, prefix ""');
 lookupNamespaceURI(document, 'prefix', null, 'Document has no namespace URI matching prefix');
 lookupNamespaceURI(document, 'bar', 'barURI', 'Document has bar namespace');
 
-isDefaultNamespace(document, null, false, 'For document, Empty namespace is not default');
-isDefaultNamespace(document, '', false, 'For document, Empty namespace is not default');
+isDefaultNamespace(document, null, false, 'For document, empty namespace is not default, prefix null');
+isDefaultNamespace(document, '', false, 'For document, empty namespace is not default, prefix ""');
 isDefaultNamespace(document, 'fooNamespace', false, 'For document, fooNamespace is not default');
 isDefaultNamespace(document, 'http://www.w3.org/2000/xmlns/', false, 'For document, xmlns namespace is not default');
 isDefaultNamespace(document, 'barURI', false, 'For document, bar namespace is not default');
index 7f45644..c750448 100644 (file)
@@ -599,12 +599,12 @@ PASS Document.querySelectorAll: Class selector, chained, matching only elements
 PASS Document.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
 PASS Document.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
 PASS Document.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
-PASS Document.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
-PASS Document.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Document.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
+PASS Document.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
 PASS Document.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
 PASS Document.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
-PASS Document.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
-PASS Document.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Document.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
+PASS Document.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
 PASS Document.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS Document.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS Document.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
@@ -623,12 +623,12 @@ PASS Document.querySelectorAll: ID selector, not matching non-existent ancestor:
 PASS Document.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
 PASS Document.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
 PASS Document.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
-PASS Document.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS Document.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS Document.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
-PASS Document.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
-PASS Document.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
-PASS Document.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Document.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS Document.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS Document.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS Document.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS Document.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
+PASS Document.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
 PASS Document.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS Document.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS Document.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
@@ -1017,12 +1017,12 @@ PASS Detached Element.querySelectorAll: Class selector, chained, matching only e
 PASS Detached Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
 PASS Detached Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
 PASS Detached Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
-PASS Detached Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
-PASS Detached Element.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Detached Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
+PASS Detached Element.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
 PASS Detached Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
 PASS Detached Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
-PASS Detached Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
-PASS Detached Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Detached Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
+PASS Detached Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
 PASS Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS Detached Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
@@ -1041,12 +1041,12 @@ PASS Detached Element.querySelectorAll: ID selector, not matching non-existent a
 PASS Detached Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
 PASS Detached Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
 PASS Detached Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
-PASS Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS Detached Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
-PASS Detached Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
-PASS Detached Element.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
-PASS Detached Element.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS Detached Element.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS Detached Element.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS Detached Element.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
+PASS Detached Element.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
 PASS Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS Detached Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
@@ -1433,12 +1433,12 @@ PASS Fragment.querySelectorAll: Class selector, chained, matching only elements
 PASS Fragment.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
 PASS Fragment.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
 PASS Fragment.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
-PASS Fragment.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
-PASS Fragment.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Fragment.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
+PASS Fragment.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
 PASS Fragment.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
 PASS Fragment.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
-PASS Fragment.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
-PASS Fragment.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Fragment.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
+PASS Fragment.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
 PASS Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS Fragment.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
@@ -1457,12 +1457,12 @@ PASS Fragment.querySelectorAll: ID selector, not matching non-existent ancestor:
 PASS Fragment.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
 PASS Fragment.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
 PASS Fragment.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
-PASS Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS Fragment.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
-PASS Fragment.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
-PASS Fragment.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
-PASS Fragment.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS Fragment.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS Fragment.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS Fragment.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
+PASS Fragment.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
 PASS Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS Fragment.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
@@ -1849,12 +1849,12 @@ PASS In-document Element.querySelectorAll: Class selector, chained, matching onl
 PASS In-document Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
 PASS In-document Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
 PASS In-document Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
-PASS In-document Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
-PASS In-document Element.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS In-document Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
+PASS In-document Element.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
 PASS In-document Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
 PASS In-document Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
-PASS In-document Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
-PASS In-document Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS In-document Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
+PASS In-document Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
 PASS In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS In-document Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
@@ -1873,12 +1873,12 @@ PASS In-document Element.querySelectorAll: ID selector, not matching non-existen
 PASS In-document Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
 PASS In-document Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
 PASS In-document Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
-PASS In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS In-document Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
-PASS In-document Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
-PASS In-document Element.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
-PASS In-document Element.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS In-document Element.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS In-document Element.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS In-document Element.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
+PASS In-document Element.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
 PASS In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS In-document Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
@@ -599,12 +599,12 @@ PASS Document.querySelectorAll: Class selector, chained, matching only elements
 PASS Document.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
 PASS Document.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
 PASS Document.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
-PASS Document.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
-PASS Document.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Document.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
+PASS Document.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
 PASS Document.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
 PASS Document.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
-PASS Document.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
-PASS Document.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Document.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
+PASS Document.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
 PASS Document.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS Document.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS Document.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
@@ -623,12 +623,12 @@ PASS Document.querySelectorAll: ID selector, not matching non-existent ancestor:
 PASS Document.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
 PASS Document.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
 PASS Document.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
-PASS Document.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS Document.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS Document.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
-PASS Document.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
-PASS Document.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
-PASS Document.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Document.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS Document.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS Document.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS Document.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS Document.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
+PASS Document.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
 PASS Document.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS Document.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS Document.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
@@ -1017,12 +1017,12 @@ PASS Detached Element.querySelectorAll: Class selector, chained, matching only e
 PASS Detached Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
 PASS Detached Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
 PASS Detached Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
-PASS Detached Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
-PASS Detached Element.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Detached Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
+PASS Detached Element.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
 PASS Detached Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
 PASS Detached Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
-PASS Detached Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
-PASS Detached Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Detached Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
+PASS Detached Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
 PASS Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS Detached Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
@@ -1041,12 +1041,12 @@ PASS Detached Element.querySelectorAll: ID selector, not matching non-existent a
 PASS Detached Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
 PASS Detached Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
 PASS Detached Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
-PASS Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS Detached Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
-PASS Detached Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
-PASS Detached Element.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
-PASS Detached Element.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS Detached Element.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS Detached Element.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS Detached Element.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
+PASS Detached Element.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
 PASS Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS Detached Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
@@ -1433,12 +1433,12 @@ PASS Fragment.querySelectorAll: Class selector, chained, matching only elements
 PASS Fragment.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
 PASS Fragment.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
 PASS Fragment.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
-PASS Fragment.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
-PASS Fragment.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Fragment.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
+PASS Fragment.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
 PASS Fragment.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
 PASS Fragment.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
-PASS Fragment.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
-PASS Fragment.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Fragment.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
+PASS Fragment.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
 PASS Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS Fragment.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
@@ -1457,12 +1457,12 @@ PASS Fragment.querySelectorAll: ID selector, not matching non-existent ancestor:
 PASS Fragment.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
 PASS Fragment.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
 PASS Fragment.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
-PASS Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS Fragment.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
-PASS Fragment.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
-PASS Fragment.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
-PASS Fragment.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS Fragment.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS Fragment.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS Fragment.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
+PASS Fragment.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
 PASS Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS Fragment.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
@@ -1849,12 +1849,12 @@ PASS In-document Element.querySelectorAll: Class selector, chained, matching onl
 PASS In-document Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
 PASS In-document Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
 PASS In-document Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
-PASS In-document Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
-PASS In-document Element.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS In-document Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
+PASS In-document Element.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi 
 PASS In-document Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
 PASS In-document Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
-PASS In-document Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
-PASS In-document Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS In-document Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
+PASS In-document Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 
 PASS In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS In-document Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
 PASS In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
@@ -1873,12 +1873,12 @@ PASS In-document Element.querySelectorAll: ID selector, not matching non-existen
 PASS In-document Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
 PASS In-document Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
 PASS In-document Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
-PASS In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS In-document Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
-PASS In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
-PASS In-document Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
-PASS In-document Element.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
-PASS In-document Element.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS In-document Element.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi 
+PASS In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS In-document Element.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 
+PASS In-document Element.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
+PASS In-document Element.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 
 PASS In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS In-document Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
 PASS In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
@@ -15,7 +15,7 @@
 async_test(function() {
   var frame = document.createElement("iframe");
   frame.onload = this.step_func_done(init);
-  frame.src = "resources/ParentNode-querySelector-All-content.xht#target";
+  frame.src = "ParentNode-querySelector-All-content.xht#target";
   document.body.appendChild(frame);
 })
 
index a19f269..d4bd45f 100644 (file)
@@ -36,4 +36,14 @@ PASS First set attribute is returned with mapped attribute set later
 PASS Non-HTML element with upper-case attribute 
 PASS Attribute with prefix in local name 
 PASS Attribute loses its owner when removed 
+PASS Basic functionality of getAttributeNode/getAttributeNodeNS 
+PASS Basic functionality of setAttributeNode 
+PASS Basic functionality of setAttributeNodeNS 
+PASS Basic functionality of removeAttributeNode 
+FAIL setAttributeNode on bound attribute should throw InUseAttributeError Test bug: unrecognized DOMException code "INUSE_ATTRIBUTE_ERR" passed to assert_throws()
+FAIL getAttributeNames tests el.getAttributeNames is not a function. (In 'el.getAttributeNames()', 'el.getAttributeNames' is undefined)
+FAIL Own property correctness with basic attributes assert_array_equals: lengths differ, expected 2 got 3
+FAIL Own property correctness with non-namespaced attribute before same-name namespaced one assert_array_equals: lengths differ, expected 3 got 4
+FAIL Own property correctness with namespaced attribute before same-name non-namespaced one assert_array_equals: lengths differ, expected 3 got 4
+FAIL Own property correctness with two namespaced attributes with the same name-with-prefix assert_array_equals: lengths differ, expected 3 got 4
 
index 34be42a..06752a9 100644 (file)
@@ -394,4 +394,169 @@ test(function() {
   el.removeAttribute("foo")
   assert_equals(attr.ownerElement, null)
 }, "Attribute loses its owner when removed")
+
+test(function() {
+  var el = document.createElement("div")
+  el.setAttribute("foo", "bar")
+  var attr = el.attributes[0]
+  var attrNode = el.getAttributeNode("foo");
+  var attrNodeNS = el.getAttributeNodeNS("", "foo");
+  assert_equals(attr, attrNode);
+  assert_equals(attr, attrNodeNS);
+  el.setAttributeNS("x", "foo2", "bar2");
+  var attr2 = el.attributes[1];
+  var attrNodeNS2 = el.getAttributeNodeNS("x", "foo2");
+  assert_equals(attr2, attrNodeNS2);
+}, "Basic functionality of getAttributeNode/getAttributeNodeNS")
+
+test(function() {
+  var el = document.createElement("div")
+  el.setAttribute("foo", "bar")
+  var attrNode = el.getAttributeNode("foo");
+  var attrNodeNS = el.getAttributeNodeNS("", "foo");
+  assert_equals(attrNode, attrNodeNS);
+  el.removeAttribute("foo");
+  var el2 = document.createElement("div");
+  el2.setAttributeNode(attrNode);
+  assert_equals(attrNode, el2.getAttributeNode("foo"));
+  assert_equals(attrNode, el2.attributes[0]);
+  assert_equals(attrNode.ownerElement, el2);
+  assert_equals(attrNode.value, "bar");
+
+   var el3 = document.createElement("div");
+   el2.removeAttribute("foo");
+   el3.setAttribute("foo", "baz");
+   el3.setAttributeNode(attrNode);
+   assert_equals(el3.getAttribute("foo"), "bar");
+}, "Basic functionality of setAttributeNode")
+
+test(function() {
+  var el = document.createElement("div")
+  el.setAttributeNS("x", "foo", "bar")
+  var attrNode = el.getAttributeNodeNS("x", "foo");
+  el.removeAttribute("foo");
+  var el2 = document.createElement("div");
+  el2.setAttributeNS("x", "foo", "baz");
+  el2.setAttributeNodeNS(attrNode);
+  assert_equals(el2.getAttributeNS("x", "foo"), "bar");
+}, "Basic functionality of setAttributeNodeNS")
+
+test(function() {
+  var el = document.createElement("div")
+  el.setAttribute("foo", "bar")
+  var attrNode = el.getAttributeNode("foo");
+  el.removeAttributeNode(attrNode);
+  var el2 = document.createElement("div");
+  el2.setAttributeNode(attrNode);
+  assert_equals(el2.attributes[0], attrNode);
+  assert_equals(el.attributes.length, 0);
+}, "Basic functionality of removeAttributeNode")
+
+test(function() {
+  var el = document.createElement("div")
+  el.setAttribute("foo", "bar")
+  var attrNode = el.getAttributeNode("foo");
+  var el2 = document.createElement("div");
+  assert_throws("INUSE_ATTRIBUTE_ERR", function(){el2.setAttributeNode(attrNode)});
+}, "setAttributeNode on bound attribute should throw InUseAttributeError")
+
+test(function() {
+  var el = document.createElement("div");
+  el.setAttribute("foo", "bar");
+  assert_equals(el.getAttributeNames().length, 1);
+  assert_equals(el.getAttributeNames()[0], el.attributes[0].name);
+  assert_equals(el.getAttributeNames()[0], "foo");
+
+  el.removeAttribute("foo");
+  assert_equals(el.getAttributeNames().length, 0);
+
+  el.setAttribute("foo", "bar");
+  el.setAttributeNS("", "FOO", "bar");
+  el.setAttributeNS("dummy1", "foo", "bar");
+  el.setAttributeNS("dummy2", "dummy:foo", "bar");
+  assert_equals(el.getAttributeNames().length, 4);
+  assert_equals(el.getAttributeNames()[0], "foo");
+  assert_equals(el.getAttributeNames()[1], "FOO");
+  assert_equals(el.getAttributeNames()[2], "foo");
+  assert_equals(el.getAttributeNames()[3], "dummy:foo");
+  assert_equals(el.getAttributeNames()[0], el.attributes[0].name);
+  assert_equals(el.getAttributeNames()[1], el.attributes[1].name);
+  assert_equals(el.getAttributeNames()[2], el.attributes[2].name);
+  assert_equals(el.getAttributeNames()[3], el.attributes[3].name);
+
+  el.removeAttributeNS("", "FOO");
+  assert_equals(el.getAttributeNames().length, 3);
+  assert_equals(el.getAttributeNames()[0], "foo");
+  assert_equals(el.getAttributeNames()[1], "foo");
+  assert_equals(el.getAttributeNames()[2], "dummy:foo");
+  assert_equals(el.getAttributeNames()[0], el.attributes[0].name);
+  assert_equals(el.getAttributeNames()[1], el.attributes[1].name);
+  assert_equals(el.getAttributeNames()[2], el.attributes[2].name);
+}, "getAttributeNames tests");
+
+function getEnumerableOwnProps1(obj) {
+  var arr = [];
+  for (var prop in obj) {
+    if (obj.hasOwnProperty(prop)) {
+      arr.push(prop);
+    }
+  }
+  return arr;
+}
+
+function getEnumerableOwnProps2(obj) {
+  return Object.getOwnPropertyNames(obj).filter(
+    (name) => Object.getOwnPropertyDescriptor(obj, name).enumerable)
+}
+
+test(function() {
+  var el = document.createElement("div");
+  el.setAttribute("a", "");
+  el.setAttribute("b", "");
+  assert_array_equals(getEnumerableOwnProps1(el.attributes),
+                      ["0", "1"])
+  assert_array_equals(getEnumerableOwnProps2(el.attributes),
+                      ["0", "1"])
+  assert_array_equals(Object.getOwnPropertyNames(el.attributes),
+                      ["0", "1", "a", "b"])
+}, "Own property correctness with basic attributes");
+
+test(function() {
+  var el = document.createElement("div");
+  el.setAttributeNS("", "a", "");
+  el.setAttribute("b", "");
+  el.setAttributeNS("foo", "a", "");
+  assert_array_equals(getEnumerableOwnProps1(el.attributes),
+                      ["0", "1", "2"])
+  assert_array_equals(getEnumerableOwnProps2(el.attributes),
+                      ["0", "1", "2"])
+  assert_array_equals(Object.getOwnPropertyNames(el.attributes),
+                      ["0", "1", "2", "a", "b"])
+}, "Own property correctness with non-namespaced attribute before same-name namespaced one");
+
+test(function() {
+  var el = document.createElement("div");
+  el.setAttributeNS("foo", "a", "");
+  el.setAttribute("b", "");
+  el.setAttributeNS("", "a", "");
+  assert_array_equals(getEnumerableOwnProps1(el.attributes),
+                      ["0", "1", "2"])
+  assert_array_equals(getEnumerableOwnProps2(el.attributes),
+                      ["0", "1", "2"])
+  assert_array_equals(Object.getOwnPropertyNames(el.attributes),
+                      ["0", "1", "2", "a", "b"])
+}, "Own property correctness with namespaced attribute before same-name non-namespaced one");
+
+test(function() {
+  var el = document.createElement("div");
+  el.setAttributeNS("foo", "a:b", "");
+  el.setAttributeNS("foo", "c:d", "");
+  el.setAttributeNS("bar", "a:b", "");
+  assert_array_equals(getEnumerableOwnProps1(el.attributes),
+                      ["0", "1", "2"])
+  assert_array_equals(getEnumerableOwnProps2(el.attributes),
+                      ["0", "1", "2"])
+  assert_array_equals(Object.getOwnPropertyNames(el.attributes),
+                      ["0", "1", "2", "a:b", "c:d"])
+}, "Own property correctness with two namespaced attributes with the same name-with-prefix");
 </script>
index 42bd6ad..b3e3122 100644 (file)
@@ -6,11 +6,13 @@
  </head>
  <body>
   <div id="log"/>
-  <x class="a"/>
-  <g:x class="a"/>
+  <div id="tests">
+    <x class="a"/>
+    <g:x class="a"/>
+  </div>
   <script>test(function() {
                  assert_array_equals(document.getElementsByClassName("a"),
-                                     document.getElementsByTagName("x"));
+                                     document.getElementById("tests").children);
                })
   </script>
  </body>
index 1d618dd..8593fa7 100644 (file)
@@ -6,16 +6,18 @@
  </head>
  <body>
   <div id="log" />
-  <x class="a"/>
-  <g:x class="a"/>
-  <x t:class="a" h:class="a" g:class="a"/>
-  <g:x t:class="a" h:class="a" g:class="a"/>
-  <t:x class="a" t:class="a" h:class="a" g:class="a"/>
+  <div id="tests">
+    <x class="a"/>
+    <g:x class="a"/>
+    <x t:class="a" h:class="a" g:class="a"/>
+    <g:x t:class="a" h:class="a" g:class="a"/>
+    <t:x class="a" t:class="a" h:class="a" g:class="a"/>
+  </div>
   <script>
    test(function() {
           var collection = document.getElementsByClassName("a");
-          var test = document.getElementsByTagName("x");
-          assert_array_equals(collection, [test[0], test[1]]);
+          var test = document.getElementById("tests").children;
+          assert_array_equals(collection, [test[0], test[1], test[4]]);
          })
   </script>
  </body>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.xht b/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.xht
deleted file mode 100644 (file)
index 14faa9b..0000000
+++ /dev/null
@@ -1,372 +0,0 @@
-<!DOCTYPE html>
-<html id="html" lang="en" xmlns="http://www.w3.org/1999/xhtml">
-<head id="head">
-  <title id="title">Selectors-API Test Suite: HTML with Selectors Level 2 using TestHarness: Test Document</title>
-
-  <!-- Links for :link and :visited pseudo-class test -->
-  <link id="pseudo-link-link1" href=""/>
-  <link id="pseudo-link-link2" href="http://example.org/"/>
-  <link id="pseudo-link-link3"/>
-</head>
-<body id="body">
-<div id="root">
-  <div id="target"></div>
-
-  <div id="universal">
-    <p id="universal-p1">Universal selector tests inside element with <code id="universal-code1">id="universal"</code>.</p>
-    <hr id="universal-hr1"/>
-    <pre id="universal-pre1">Some preformatted text with some <span id="universal-span1">embedded code</span></pre>
-    <p id="universal-p2">This is a normal link: <a id="universal-a1" href="http://www.w3.org/">W3C</a></p>
-    <address id="universal-address1">Some more nested elements <code id="universal-code2"><a href="#" id="universal-a2">code hyperlink</a></code></address>
-  </div>
-
-  <div id="attr-presence">
-    <div class="attr-presence-div1" id="attr-presence-div1" align="center"></div>
-    <div class="attr-presence-div2" id="attr-presence-div2" align=""></div>
-    <div class="attr-presence-div3" id="attr-presence-div3" valign="center"></div>
-    <div class="attr-presence-div4" id="attr-presence-div4" alignv="center"></div>
-    <p id="attr-presence-p1"><a  id="attr-presence-a1" tItLe=""></a><span id="attr-presence-span1" TITLE="attr-presence-span1"></span></p>
-    <pre id="attr-presence-pre1" data-attr-presence="pre1"></pre>
-    <blockquote id="attr-presence-blockquote1" data-attr-presence="blockquote1"></blockquote>
-    <ul id="attr-presence-ul1" data-中文=""></ul>
-
-    <select id="attr-presence-select1">
-      <option id="attr-presence-select1-option1">A</option>
-      <option id="attr-presence-select1-option2">B</option>
-      <option id="attr-presence-select1-option3">C</option>
-      <option id="attr-presence-select1-option4">D</option>
-    </select>
-    <select id="attr-presence-select2">
-      <option id="attr-presence-select2-option1">A</option>
-      <option id="attr-presence-select2-option2">B</option>
-      <option id="attr-presence-select2-option3">C</option>
-      <option id="attr-presence-select2-option4" selected="selected">D</option>
-    </select>
-    <select id="attr-presence-select3" multiple="multiple">
-      <option id="attr-presence-select3-option1">A</option>
-      <option id="attr-presence-select3-option2" selected="">B</option>
-      <option id="attr-presence-select3-option3" selected="selected">C</option>
-      <option id="attr-presence-select3-option4">D</option>
-    </select>
-  </div>
-
-  <div id="attr-value">
-    <div id="attr-value-div1" align="center"></div>
-      <div id="attr-value-div2" align=""></div>
-      <div id="attr-value-div3" data-attr-value="&#xE9;"></div>
-      <div id="attr-value-div4" data-attr-value_foo="&#xE9;"></div>
-
-    <form id="attr-value-form1">
-      <input id="attr-value-input1" type="text"/>
-      <input id="attr-value-input2" type="password"/>
-      <input id="attr-value-input3" type="hidden"/>
-      <input id="attr-value-input4" type="radio"/>
-      <input id="attr-value-input5" type="checkbox"/>
-      <input id="attr-value-input6" type="radio"/>
-      <input id="attr-value-input7" type="text"/>
-      <input id="attr-value-input8" type="hidden"/>
-      <input id="attr-value-input9" type="radio"/>
-    </form>
-
-    <div id="attr-value-div5" data-attr-value="中文"></div>
-  </div>
-
-  <div id="attr-whitespace">
-    <div id="attr-whitespace-div1" class="foo div1 bar"></div>
-      <div id="attr-whitespace-div2" class=""></div>
-      <div id="attr-whitespace-div3" class="foo div3 bar"></div>
-
-      <div id="attr-whitespace-div4" data-attr-whitespace="foo &#xE9; bar"></div>
-      <div id="attr-whitespace-div5" data-attr-whitespace_foo="&#xE9; foo"></div>
-
-    <a id="attr-whitespace-a1" rel="next bookmark"></a>
-    <a id="attr-whitespace-a2" rel="tag nofollow"></a>
-    <a id="attr-whitespace-a3" rel="tag bookmark"></a>
-    <a id="attr-whitespace-a4" rel="book mark"></a> <!-- Intentional space in "book mark" -->
-    <a id="attr-whitespace-a5" rel="nofollow"></a>
-    <a id="attr-whitespace-a6" rev="bookmark nofollow"></a>
-    <a id="attr-whitespace-a7" rel="prev next tag alternate nofollow author help icon noreferrer prefetch search stylesheet tag"></a>
-
-    <p id="attr-whitespace-p1" title="Chinese 中文 characters"></p>
-  </div>
-
-  <div id="attr-hyphen">
-    <div id="attr-hyphen-div1"></div>
-      <div id="attr-hyphen-div2" lang="fr"></div>
-      <div id="attr-hyphen-div3" lang="en-AU"></div>
-      <div id="attr-hyphen-div4" lang="es"></div>
-  </div>
-
-  <div id="attr-begins">
-    <a id="attr-begins-a1" href="http://www.example.org"></a>
-    <a id="attr-begins-a2" href="http://example.org/"></a>
-    <a id="attr-begins-a3" href="http://www.example.com/"></a>
-
-      <div id="attr-begins-div1" lang="fr"></div>
-      <div id="attr-begins-div2" lang="en-AU"></div>
-      <div id="attr-begins-div3" lang="es"></div>
-      <div id="attr-begins-div4" lang="en-US"></div>
-      <div id="attr-begins-div5" lang="en"></div>
-
-    <p id="attr-begins-p1" class=" apple"></p> <!-- Intentional space in class value " apple". -->
-  </div>
-
-  <div id="attr-ends">
-    <a id="attr-ends-a1" href="http://www.example.org"></a>
-    <a id="attr-ends-a2" href="http://example.org/"></a>
-    <a id="attr-ends-a3" href="http://www.example.org"></a>
-
-      <div id="attr-ends-div1" lang="fr"></div>
-      <div id="attr-ends-div2" lang="de-CH"></div>
-      <div id="attr-ends-div3" lang="es"></div>
-      <div id="attr-ends-div4" lang="fr-CH"></div>
-
-    <p id="attr-ends-p1" class="apple "></p> <!-- Intentional space in class value "apple ". -->
-  </div>
-
-  <div id="attr-contains">
-    <a id="attr-contains-a1" href="http://www.example.org"></a>
-    <a id="attr-contains-a2" href="http://example.org/"></a>
-    <a id="attr-contains-a3" href="http://www.example.com/"></a>
-
-      <div id="attr-contains-div1" lang="fr"></div>
-      <div id="attr-contains-div2" lang="en-AU"></div>
-      <div id="attr-contains-div3" lang="de-CH"></div>
-      <div id="attr-contains-div4" lang="es"></div>
-      <div id="attr-contains-div5" lang="fr-CH"></div>
-      <div id="attr-contains-div6" lang="en-US"></div>
-
-    <p id="attr-contains-p1" class=" apple banana orange "></p>
-  </div>
-
-  <div id="pseudo-nth">
-    <table id="pseudo-nth-table1">
-      <tr id="pseudo-nth-tr1"><td id="pseudo-nth-td1"></td><td id="pseudo-nth-td2"></td><td id="pseudo-nth-td3"></td><td id="pseudo-nth-td4"></td><td id="pseudo-nth--td5"></td><td id="pseudo-nth-td6"></td></tr>
-      <tr id="pseudo-nth-tr2"><td id="pseudo-nth-td7"></td><td id="pseudo-nth-td8"></td><td id="pseudo-nth-td9"></td><td id="pseudo-nth-td10"></td><td id="pseudo-nth-td11"></td><td id="pseudo-nth-td12"></td></tr>
-      <tr id="pseudo-nth-tr3"><td id="pseudo-nth-td13"></td><td id="pseudo-nth-td14"></td><td id="pseudo-nth-td15"></td><td id="pseudo-nth-td16"></td><td id="pseudo-nth-td17"></td><td id="pseudo-nth-td18"></td></tr>
-    </table>
-
-    <ol id="pseudo-nth-ol1">
-      <li id="pseudo-nth-li1"></li>
-      <li id="pseudo-nth-li2"></li>
-      <li id="pseudo-nth-li3"></li>
-      <li id="pseudo-nth-li4"></li>
-      <li id="pseudo-nth-li5"></li>
-      <li id="pseudo-nth-li6"></li>
-      <li id="pseudo-nth-li7"></li>
-      <li id="pseudo-nth-li8"></li>
-      <li id="pseudo-nth-li9"></li>
-      <li id="pseudo-nth-li10"></li>
-      <li id="pseudo-nth-li11"></li>
-      <li id="pseudo-nth-li12"></li>
-    </ol>
-
-    <p id="pseudo-nth-p1">
-      <span id="pseudo-nth-span1">span1</span>
-      <em id="pseudo-nth-em1">em1</em>
-      <!-- comment node-->
-      <em id="pseudo-nth-em2">em2</em>
-      <span id="pseudo-nth-span2">span2</span>
-      <strong id="pseudo-nth-strong1">strong1</strong>
-      <em id="pseudo-nth-em3">em3</em>
-      <span id="pseudo-nth-span3">span3</span>
-      <span id="pseudo-nth-span4">span4</span>
-      <strong id="pseudo-nth-strong2">strong2</strong>
-      <em id="pseudo-nth-em4">em4</em>
-    </p>
-  </div>
-
-  <div id="pseudo-first-child">
-    <div id="pseudo-first-child-div1"></div>
-    <div id="pseudo-first-child-div2"></div>
-    <div id="pseudo-first-child-div3"></div>
-
-    <p id="pseudo-first-child-p1"><span id="pseudo-first-child-span1"></span><span id="pseudo-first-child-span2"></span></p>
-    <p id="pseudo-first-child-p2"><span id="pseudo-first-child-span3"></span><span id="pseudo-first-child-span4"></span></p>
-    <p id="pseudo-first-child-p3"><span id="pseudo-first-child-span5"></span><span id="pseudo-first-child-span6"></span></p>
-  </div>
-
-  <div id="pseudo-last-child">
-    <p id="pseudo-last-child-p1"><span id="pseudo-last-child-span1"></span><span id="pseudo-last-child-span2"></span></p>
-    <p id="pseudo-last-child-p2"><span id="pseudo-last-child-span3"></span><span id="pseudo-last-child-span4"></span></p>
-    <p id="pseudo-last-child-p3"><span id="pseudo-last-child-span5"></span><span id="pseudo-last-child-span6"></span></p>
-
-    <div id="pseudo-last-child-div1"></div>
-    <div id="pseudo-last-child-div2"></div>
-    <div id="pseudo-last-child-div3"></div>
-  </div>
-
-  <div id="pseudo-only">
-    <p id="pseudo-only-p1">
-      <span id="pseudo-only-span1"></span>
-    </p>
-    <p id="pseudo-only-p2">
-      <span id="pseudo-only-span2"></span>
-      <span id="pseudo-only-span3"></span>
-    </p>
-    <p id="pseudo-only-p3">
-      <span id="pseudo-only-span4"></span>
-      <em id="pseudo-only-em1"></em>
-      <span id="pseudo-only-span5"></span>
-    </p>
-  </div>>
-
-  <div id="pseudo-empty">
-    <p id="pseudo-empty-p1"></p>
-    <p id="pseudo-empty-p2"><!-- comment node --></p>
-    <p id="pseudo-empty-p3"> </p>
-    <p id="pseudo-empty-p4">Text node</p>
-    <p id="pseudo-empty-p5"><span id="pseudo-empty-span1"></span></p>
-  </div>
-
-  <div id="pseudo-link">
-    <a id="pseudo-link-a1" href="">with href</a>
-    <a id="pseudo-link-a2" href="http://example.org/">with href</a>
-    <a id="pseudo-link-a3">without href</a>
-    <map name="pseudo-link-map1" id="pseudo-link-map1">
-      <area id="pseudo-link-area1" href=""/>
-      <area id="pseudo-link-area2"/>
-    </map>
-  </div>
-
-  <div id="pseudo-lang">
-    <div id="pseudo-lang-div1"></div>
-      <div id="pseudo-lang-div2" lang="fr"></div>
-      <div id="pseudo-lang-div3" lang="en-AU"></div>
-      <div id="pseudo-lang-div4" lang="es"></div>
-  </div>
-
-  <div id="pseudo-ui">
-    <input id="pseudo-ui-input1" type="text"/>
-    <input id="pseudo-ui-input2" type="password"/>
-    <input id="pseudo-ui-input3" type="radio"/>
-    <input id="pseudo-ui-input4" type="radio" checked="checked"/>
-    <input id="pseudo-ui-input5" type="checkbox"/>
-    <input id="pseudo-ui-input6" type="checkbox" checked="checked"/>
-    <input id="pseudo-ui-input7" type="submit"/>
-    <input id="pseudo-ui-input8" type="button"/>
-    <input id="pseudo-ui-input9" type="hidden"/>
-    <textarea id="pseudo-ui-textarea1"></textarea>
-    <button id="pseudo-ui-button1">Enabled</button>
-
-    <input id="pseudo-ui-input10" disabled="disabled" type="text"/>
-    <input id="pseudo-ui-input11" disabled="disabled" type="password"/>
-    <input id="pseudo-ui-input12" disabled="disabled" type="radio"/>
-    <input id="pseudo-ui-input13" disabled="disabled" type="radio" checked="checked"/>
-    <input id="pseudo-ui-input14" disabled="disabled" type="checkbox"/>
-    <input id="pseudo-ui-input15" disabled="disabled" type="checkbox" checked="checked"/>
-    <input id="pseudo-ui-input16" disabled="disabled" type="submit"/>
-    <input id="pseudo-ui-input17" disabled="disabled" type="button"/>
-    <input id="pseudo-ui-input18" disabled="disabled" type="hidden"/>
-    <textarea id="pseudo-ui-textarea2" disabled="disabled"></textarea>
-    <button id="pseudo-ui-button2" disabled="disabled">Disabled</button>
-  </div>
-
-  <div id="not">
-    <div id="not-div1"></div>
-    <div id="not-div2"></div>
-    <div id="not-div3"></div>
-
-    <p id="not-p1"><span id="not-span1"></span><em id="not-em1"></em></p>
-    <p id="not-p2"><span id="not-span2"></span><em id="not-em2"></em></p>
-    <p id="not-p3"><span id="not-span3"></span><em id="not-em3"></em></p>
-  </div>
-
-  <div id="pseudo-element">All pseudo-element tests</div>
-
-  <div id="class">
-    <p id="class-p1" class="foo class-p bar"></p>
-    <p id="class-p2" class="class-p foo bar"></p>
-    <p id="class-p3" class="foo bar class-p"></p>
-
-    <!-- All permutations of the classes should match -->
-    <div id="class-div1" class="apple orange banana"></div>
-    <div id="class-div2" class="apple banana orange"></div>
-    <p id="class-p4" class="orange apple banana"></p>
-    <div id="class-div3" class="orange banana apple"></div>
-    <p id="class-p6" class="banana apple orange"></p>
-    <div id="class-div4" class="banana orange apple"></div>
-    <div id="class-div5" class="apple orange"></div>
-    <div id="class-div6" class="apple banana"></div>
-    <div id="class-div7" class="orange banana"></div>
-
-    <span id="class-span1" class="台北Táiběi 台北"></span>
-    <span id="class-span2" class="台北"></span>
-
-    <span id="class-span3" class="foo:bar"></span>
-    <span id="class-span4" class="test.foo[5]bar"></span>
-  </div>
-
-  <div id="id">
-    <div id="id-div1"></div>
-    <div id="id-div2"></div>
-
-    <ul id="id-ul1">
-      <li id="id-li-duplicate"></li>
-      <li id="id-li-duplicate"></li>
-      <li id="id-li-duplicate"></li>
-      <li id="id-li-duplicate"></li>
-    </ul>
-
-    <span id="台北Táiběi"></span>
-    <span id="台北"></span>
-
-    <span id="#foo:bar"></span>
-    <span id="test.foo[5]bar"></span>
-  </div>
-
-  <div id="descendant">
-    <div id="descendant-div1" class="descendant-div1">
-      <div id="descendant-div2" class="descendant-div2">
-        <div id="descendant-div3" class="descendant-div3">
-        </div>
-      </div>
-    </div>
-    <div id="descendant-div4" class="descendant-div4"></div>
-  </div>
-
-  <div id="child">
-    <div id="child-div1" class="child-div1">
-      <div id="child-div2" class="child-div2">
-        <div id="child-div3" class="child-div3">
-        </div>
-      </div>
-    </div>
-    <div id="child-div4" class="child-div4"></div>
-  </div>
-
-  <div id="adjacent">
-    <div id="adjacent-div1" class="adjacent-div1"></div>
-    <div id="adjacent-div2" class="adjacent-div2">
-      <div id="adjacent-div3" class="adjacent-div3"></div>
-    </div>
-    <div id="adjacent-div4" class="adjacent-div4">
-      <p id="adjacent-p1" class="adjacent-p1"></p>
-      <div id="adjacent-div5" class="adjacent-div5"></div>
-    </div>
-    <div id="adjacent-div6" class="adjacent-div6"></div>
-    <p id="adjacent-p2" class="adjacent-p2"></p>
-    <p id="adjacent-p3" class="adjacent-p3"></p>
-  </div>
-
-  <div id="sibling">
-    <div id="sibling-div1" class="sibling-div"></div>
-    <div id="sibling-div2" class="sibling-div">
-      <div id="sibling-div3" class="sibling-div"></div>
-    </div>
-    <div id="sibling-div4" class="sibling-div">
-      <p id="sibling-p1" class="sibling-p"></p>
-      <div id="sibling-div5" class="sibling-div"></div>
-    </div>
-    <div id="sibling-div6" class="sibling-div"></div>
-    <p id="sibling-p2" class="sibling-p"></p>
-    <p id="sibling-p3" class="sibling-p"></p>
-  </div>
-
-  <div id="group">
-    <em id="group-em1"></em>
-    <strong id="group-strong1"></strong>
-  </div>
-</div>
-</body>
-</html>
index e0d68bd..c3e2d90 100644 (file)
@@ -266,10 +266,9 @@ var validSelectors = [
   {name: "Class selector, matching element with specified class",                                           selector: ".class-p",                expect: ["class-p1","class-p2", "class-p3"],                                              level: 1, testType: TEST_QSA | TEST_MATCH},
   {name: "Class selector, chained, matching only elements with all specified classes",                      selector: "#class .apple.orange.banana",    expect: ["class-div1", "class-div2", "class-p4", "class-div3", "class-p6", "class-div4"], level: 1, testType: TEST_QSA | TEST_MATCH},
   {name: "Class Selector, chained, with type selector",                                                     selector: "div.apple.banana.orange", expect: ["class-div1", "class-div2", "class-div3", "class-div4"],                         level: 1, testType: TEST_QSA | TEST_MATCH},
-  // Caution: If copying and pasting the folowing non-ASCII classes, ensure unicode normalisation is not performed in the process.
-  {name: "Class selector, matching element with class value using non-ASCII characters",                    selector: ".台北Táiběi",             expect: ["class-span1"],               level: 1, testType: TEST_QSA | TEST_MATCH},
-  {name: "Class selector, matching multiple elements with class value using non-ASCII characters",          selector: ".台北",                     expect: ["class-span1","class-span2"], level: 1, testType: TEST_QSA | TEST_MATCH},
-  {name: "Class selector, chained, matching element with multiple class values using non-ASCII characters", selector: ".台北Táiběi.台北",          expect: ["class-span1"],               level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: "Class selector, matching element with class value using non-ASCII characters (1)",                selector: ".\u53F0\u5317Ta\u0301ibe\u030Ci",             expect: ["class-span1"],               level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: "Class selector, matching multiple elements with class value using non-ASCII characters",          selector: ".\u53F0\u5317",                     expect: ["class-span1","class-span2"], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: "Class selector, chained, matching element with multiple class values using non-ASCII characters (1)", selector: ".\u53F0\u5317Ta\u0301ibe\u030Ci.\u53F0\u5317",          expect: ["class-span1"],               level: 1, testType: TEST_QSA | TEST_MATCH},
   {name: "Class selector, matching element with class with escaped character",                              selector: ".foo\\:bar",              expect: ["class-span3"],               level: 1, testType: TEST_QSA | TEST_MATCH},
   {name: "Class selector, matching element with class with escaped character",                              selector: ".test\\.foo\\[5\\]bar",   expect: ["class-span4"],               level: 1, testType: TEST_QSA | TEST_MATCH},
 
@@ -282,10 +281,9 @@ var validSelectors = [
   {name: "ID selector, not matching non-existent ancestor",           selector: "#none #id-div1",            expect: [] /*no matches*/,      level: 1, testType: TEST_QSA},
   {name: "ID selector, matching multiple elements with duplicate id", selector: "#id-li-duplicate",          expect: ["id-li-duplicate", "id-li-duplicate", "id-li-duplicate", "id-li-duplicate"], level: 1, testType: TEST_QSA | TEST_MATCH},
 
-  // Caution: If copying and pasting the folowing non-ASCII IDs, ensure unicode normalisation is not performed in the process.
-  {name: "ID selector, matching id value using non-ASCII characters",    selector: "#台北Táiběi",           expect: ["台北Táiběi"],       level: 1, testType: TEST_QSA | TEST_MATCH},
-  {name: "ID selector, matching id value using non-ASCII characters",    selector: "#台北",                   expect: ["台北"],               level: 1, testType: TEST_QSA | TEST_MATCH},
-  {name: "ID selector, matching id values using non-ASCII characters",   selector: "#台北Táiběi, #台北",      expect: ["台北Táiběi", "台北"], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: "ID selector, matching id value using non-ASCII characters (1)",    selector: "#\u53F0\u5317Ta\u0301ibe\u030Ci",           expect: ["\u53F0\u5317Ta\u0301ibe\u030Ci"],       level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: "ID selector, matching id value using non-ASCII characters (2)",    selector: "#\u53F0\u5317",                   expect: ["\u53F0\u5317"],               level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: "ID selector, matching id values using non-ASCII characters (1)", selector: "#\u53F0\u5317Ta\u0301ibe\u030Ci, #\u53F0\u5317",      expect: ["\u53F0\u5317Ta\u0301ibe\u030Ci", "\u53F0\u5317"], level: 1, testType: TEST_QSA | TEST_MATCH},
 
   // XXX runMatchesTest() in level2-lib.js can't handle this because obtaining the expected nodes requires escaping characters when generating the selector from 'expect' values
   {name: "ID selector, matching element with id with escaped character", selector: "#\\#foo\\:bar",         expect: ["#foo:bar"],         level: 1, testType: TEST_QSA},
@@ -631,10 +629,9 @@ var scopedSelectors = [
   {name: "Class selector, matching element with specified class (1)",                                           selector: ".class-p",                ctx: "", expect: ["class-p1","class-p2", "class-p3"],                                              level: 1, testType: TEST_FIND | TEST_MATCH},
   {name: "Class selector, chained, matching only elements with all specified classes (1)",                      selector: "#class .apple.orange.banana",    ctx: "", expect: ["class-div1", "class-div2", "class-p4", "class-div3", "class-p6", "class-div4"], level: 1, testType: TEST_FIND | TEST_MATCH},
   {name: "Class Selector, chained, with type selector (1)",                                                     selector: "div.apple.banana.orange", ctx: "", expect: ["class-div1", "class-div2", "class-div3", "class-div4"],                         level: 1, testType: TEST_FIND | TEST_MATCH},
-  // Caution: If copying and pasting the folowing non-ASCII classes, ensure unicode normalisation is not performed in the process.
-  {name: "Class selector, matching element with class value using non-ASCII characters",                    selector: ".台北Táiběi",             ctx: "", expect: ["class-span1"],               level: 1, testType: TEST_FIND | TEST_MATCH},
-  {name: "Class selector, matching multiple elements with class value using non-ASCII characters (1)",          selector: ".台北",                     ctx: "", expect: ["class-span1","class-span2"], level: 1, testType: TEST_FIND | TEST_MATCH},
-  {name: "Class selector, chained, matching element with multiple class values using non-ASCII characters", selector: ".台北Táiběi.台北",          ctx: "", expect: ["class-span1"],               level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: "Class selector, matching element with class value using non-ASCII characters (2)",                    selector: ".\u53F0\u5317Ta\u0301ibe\u030Ci",             ctx: "", expect: ["class-span1"],               level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: "Class selector, matching multiple elements with class value using non-ASCII characters (1)",          selector: ".\u53F0\u5317",                     ctx: "", expect: ["class-span1","class-span2"], level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: "Class selector, chained, matching element with multiple class values using non-ASCII characters (2)", selector: ".\u53F0\u5317Ta\u0301ibe\u030Ci.\u53F0\u5317",          ctx: "", expect: ["class-span1"],               level: 1, testType: TEST_FIND | TEST_MATCH},
   {name: "Class selector, matching element with class with escaped character (1)",                              selector: ".foo\\:bar",              ctx: "", expect: ["class-span3"],               level: 1, testType: TEST_FIND | TEST_MATCH},
   {name: "Class selector, matching element with class with escaped character (1)",                              selector: ".test\\.foo\\[5\\]bar",   ctx: "", expect: ["class-span4"],               level: 1, testType: TEST_FIND | TEST_MATCH},
 
@@ -647,10 +644,9 @@ var scopedSelectors = [
   {name: "ID selector, not matching non-existent ancestor",           selector: "#none #id-div1",            ctx: "", expect: [] /*no matches*/,      level: 1, testType: TEST_FIND},
   {name: "ID selector, matching multiple elements with duplicate id (1)", selector: "#id-li-duplicate",          ctx: "", expect: ["id-li-duplicate", "id-li-duplicate", "id-li-duplicate", "id-li-duplicate"], level: 1, testType: TEST_FIND | TEST_MATCH},
 
-  // Caution: If copying and pasting the folowing non-ASCII IDs, ensure unicode normalisation is not performed in the process.
-  {name: "ID selector, matching id value using non-ASCII characters",    selector: "#台北Táiběi",           ctx: "", expect: ["台北Táiběi"],       level: 1, testType: TEST_FIND | TEST_MATCH},
-  {name: "ID selector, matching id value using non-ASCII characters (1)",    selector: "#台北",                   ctx: "", expect: ["台北"],               level: 1, testType: TEST_FIND | TEST_MATCH},
-  {name: "ID selector, matching id values using non-ASCII characters",   selector: "#台北Táiběi, #台北",      ctx: "", expect: ["台北Táiběi", "台北"], level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: "ID selector, matching id value using non-ASCII characters (3)",    selector: "#\u53F0\u5317Ta\u0301ibe\u030Ci",           ctx: "", expect: ["\u53F0\u5317Ta\u0301ibe\u030Ci"],       level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: "ID selector, matching id value using non-ASCII characters (4)",    selector: "#\u53F0\u5317",                   ctx: "", expect: ["\u53F0\u5317"],               level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: "ID selector, matching id values using non-ASCII characters (2)",   selector: "#\u53F0\u5317Ta\u0301ibe\u030Ci, #\u53F0\u5317",      ctx: "", expect: ["\u53F0\u5317Ta\u0301ibe\u030Ci", "\u53F0\u5317"], level: 1, testType: TEST_FIND | TEST_MATCH},
 
   // XXX runMatchesTest() in level2-lib.js can't handle this because obtaining the expected nodes requires escaping characters when generating the selector from 'expect' values
   {name: "ID selector, matching element with id with escaped character", selector: "#\\#foo\\:bar",         ctx: "", expect: ["#foo:bar"],         level: 1, testType: TEST_FIND},
index dbed6af..695cce0 100644 (file)
@@ -49,44 +49,55 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.js
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.js
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction.js
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTextNode.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTreeWalker.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-doctype.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementById.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagNameNS.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-implementation.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-importNode.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.html
-/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-remove.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.html
-/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.xhtml
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.html
-/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.xhtml
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-children.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-closest.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-entity-xhtml.xhtml
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.html
-/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByClassName.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-iframe.xml
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagNameNS.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches.js
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.html
-/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.xhtml
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.html
-/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-remove.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-removeAttributeNS.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-tagName.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-attributes.html
@@ -104,9 +115,12 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-constants.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-insertBefore.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-iframe1.xml
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-iframe2.xml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupNamespaceURI.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupPrefix.xhtml
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeValue.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-normalize.html
@@ -121,6 +135,7 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-prepend.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-content.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-content.xht
+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht.xht
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All.js
 /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-1.xhtml
index bf5c7ca..03765c9 100644 (file)
@@ -76,8 +76,8 @@ PASS Resulting DOM for range 35 [detachedXmlComment, 2, detachedXmlComment, 6]
 PASS Resulting cursor position for range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
 PASS Resulting DOM for range 36 [docfrag, 0, docfrag, 0] 
 PASS Resulting cursor position for range 36 [docfrag, 0, docfrag, 0] 
-FAIL Resulting DOM for range 37 [processingInstruction, 0, processingInstruction, 4] assert_equals: Actual and expected mismatch for tree root.  First difference: differing nodeValue (nodeName = "somePI") expected "Did you know that \":syn sync fromstart\" is very useful when using vim to edit large amounts of JavaScript embedded in HTML?" but got "you know that \":syn sync fromstart\" is very useful when using vim to edit large amounts of JavaScript embedded in HTML?"
-FAIL Resulting cursor position for range 37 [processingInstruction, 0, processingInstruction, 4] assert_true: The resulting DOMs were not equal, so comparing positions makes no sense expected true got false
+PASS Resulting DOM for range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Resulting cursor position for range 37 [processingInstruction, 0, processingInstruction, 4] 
 PASS Resulting DOM for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
 PASS Resulting cursor position for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
 PASS Resulting DOM for range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
index c3eca6c..40dc400 100644 (file)
@@ -67,11 +67,13 @@ function myDeleteContents(range) {
   var originalEndOffset = range.endOffset;
 
   // "If original start node and original end node are the same, and they are
-  // a Text or Comment node, call deleteData(original start offset, original
-  // end offset − original start offset) on that node, and abort these
-  // steps."
+  // a Text, ProcessingInstruction, or Comment node, replace data with node
+  // original start node, offset original start offset, count original end
+  // offset minus original start offset, and data the empty string, and then
+  // terminate these steps"
   if (originalStartNode == originalEndNode
   && (range.startContainer.nodeType == Node.TEXT_NODE
+  || range.startContainer.nodeType == Node.PROCESSING_INSTRUCTION_NODE
   || range.startContainer.nodeType == Node.COMMENT_NODE)) {
     originalStartNode.deleteData(originalStartOffset, originalEndOffset - originalStartOffset);
     return;
@@ -120,10 +122,12 @@ function myDeleteContents(range) {
     newOffset = 1 + indexOf(referenceNode);
   }
 
-  // "If original start node is a Text or Comment node, run deleteData() on
-  // it, with original start offset as the first argument and (length of
-  // original start node − original start offset) as the second."
+  // "If original start node is a Text, ProcessingInstruction, or Comment node,
+  // replace data with node original start node, offset original start offset,
+  // count original start node's length minus original start offset, data the
+  // empty start"
   if (originalStartNode.nodeType == Node.TEXT_NODE
+  || originalStartNode.nodeType == Node.PROCESSING_INSTRUCTION_NODE
   || originalStartNode.nodeType == Node.COMMENT_NODE) {
     originalStartNode.deleteData(originalStartOffset, nodeLength(originalStartNode) - originalStartOffset);
   }
@@ -134,9 +138,11 @@ function myDeleteContents(range) {
     nodesToRemove[i].parentNode.removeChild(nodesToRemove[i]);
   }
 
-  // "If original end node is a Text or Comment node, run deleteData(0,
-  // original end offset) on it."
+  // "If original end node is a Text, ProcessingInstruction, or Comment node,
+  // replace data with node original end node, offset 0, count original end
+  // offset, and data the empty string."
   if (originalEndNode.nodeType == Node.TEXT_NODE
+  || originalEndNode.nodeType == Node.PROCESSING_INSTRUCTION_NODE
   || originalEndNode.nodeType == Node.COMMENT_NODE) {
     originalEndNode.deleteData(0, originalEndOffset);
   }
index 0d78193..303210b 100644 (file)
@@ -113,9 +113,9 @@ PASS Returned fragment for range 35 [detachedXmlComment, 2, detachedXmlComment,
 PASS Resulting DOM for range 36 [docfrag, 0, docfrag, 0] 
 PASS Resulting cursor position for range 36 [docfrag, 0, docfrag, 0] 
 PASS Returned fragment for range 36 [docfrag, 0, docfrag, 0] 
-FAIL Resulting DOM for range 37 [processingInstruction, 0, processingInstruction, 4] assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh...", got ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u..." [Actual and expected mismatch for tree root.  ] expected true got false
-FAIL Resulting cursor position for range 37 [processingInstruction, 0, processingInstruction, 4] assert_true: The resulting DOMs were not equal, so comparing positions makes no sense expected true got false
-FAIL Returned fragment for range 37 [processingInstruction, 0, processingInstruction, 4] assert_unreached: DOMs were not equal but we couldn't figure out why Reached unreachable code
+PASS Resulting DOM for range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Resulting cursor position for range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Returned fragment for range 37 [processingInstruction, 0, processingInstruction, 4] 
 PASS Resulting DOM for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
 PASS Resulting cursor position for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
 PASS Returned fragment for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
index 3b27f79..62f3b3d 100644 (file)
@@ -3,8 +3,11 @@ To debug test failures, add a query parameter "subtest" with the test id (like "
 
 PASS 0,0: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0] 
 PASS 0,0: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0] 
-PASS 0,1: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0].firstChild 
-PASS 0,1: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0].firstChild 
+FAIL 0,1: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0].firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 0,1: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0].firstChild assert_true: First differing node: expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
+", got Text node "" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 0,2: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[1].firstChild 
 PASS 0,2: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[1].firstChild 
 PASS 0,3: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara1 
@@ -47,8 +50,11 @@ PASS 0,21: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild,
 PASS 0,21: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignDoctype 
 PASS 1,0: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0] 
 PASS 1,0: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0] 
-PASS 1,1: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0].firstChild 
-PASS 1,1: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0].firstChild 
+FAIL 1,1: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0].firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 1,1: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0].firstChild assert_true: First differing node: expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
+", got Text node "" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 1,2: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[1].firstChild 
 PASS 1,2: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[1].firstChild 
 PASS 1,3: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara1 
@@ -91,8 +97,11 @@ PASS 1,21: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild,
 PASS 1,21: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignDoctype 
 PASS 2,0: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0] 
 PASS 2,0: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0] 
-PASS 2,1: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0].firstChild 
-PASS 2,1: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0].firstChild 
+FAIL 2,1: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0].firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 2,1: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0].firstChild assert_true: First differing node: expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
+", got Text node "Ä" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 2,2: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[1].firstChild 
 PASS 2,2: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[1].firstChild 
 PASS 2,3: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara1 
@@ -135,8 +144,11 @@ PASS 2,21: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild,
 PASS 2,21: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignDoctype 
 PASS 3,0: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0] 
 PASS 3,0: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0] 
-PASS 3,1: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0].firstChild 
-PASS 3,1: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0].firstChild 
+FAIL 3,1: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0].firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 3,1: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0].firstChild assert_true: First differing node: expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
+", got Text node "Ä" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 3,2: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[1].firstChild 
 PASS 3,2: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[1].firstChild 
 PASS 3,3: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara1 
@@ -181,8 +193,11 @@ PASS 4,0: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild,
 PASS 4,0: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0] 
 PASS 4,1: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild 
 PASS 4,1: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild 
-PASS 4,2: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild 
-PASS 4,2: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild 
+FAIL 4,2: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 4,2: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild assert_true: First differing node: expected Text node "Ijklmnop
+", got Text node "" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 4,3: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 
 PASS 4,3: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 
 PASS 4,4: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1.firstChild 
@@ -225,8 +240,11 @@ PASS 5,0: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild,
 PASS 5,0: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[0] 
 PASS 5,1: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[0].firstChild 
 PASS 5,1: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[0].firstChild 
-PASS 5,2: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[1].firstChild 
-PASS 5,2: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[1].firstChild 
+FAIL 5,2: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[1].firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 5,2: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[1].firstChild assert_true: First differing node: expected Text node "Ijklmnop
+", got Text node "Ij" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 5,3: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara1 
 PASS 5,3: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara1 
 PASS 5,4: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara1.firstChild 
@@ -277,8 +295,10 @@ PASS 6,4: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.fi
 PASS 6,4: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara1.firstChild 
 PASS 6,5: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1 
 PASS 6,5: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1 
-PASS 6,6: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1.firstChild 
-PASS 6,6: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1.firstChild 
+FAIL 6,6: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1.firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 6,6: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1.firstChild assert_true: First differing node: expected Text node "Opqrstuv", got Text node "" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 6,7: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node document 
 PASS 6,7: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node document 
 PASS 6,8: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedDiv 
@@ -321,8 +341,10 @@ PASS 7,4: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.fi
 PASS 7,4: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara1.firstChild 
 PASS 7,5: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1 
 PASS 7,5: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1 
-PASS 7,6: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1.firstChild 
-PASS 7,6: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1.firstChild 
+FAIL 7,6: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1.firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 7,6: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1.firstChild assert_true: First differing node: expected Text node "Opqrstuv", got Text node "Op" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 7,7: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node document 
 PASS 7,7: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node document 
 PASS 7,8: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedDiv 
@@ -361,8 +383,10 @@ PASS 8,2: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firs
 PASS 8,2: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[1].firstChild 
 PASS 8,3: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1 
 PASS 8,3: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1 
-PASS 8,4: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1.firstChild 
-PASS 8,4: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1.firstChild 
+FAIL 8,4: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1.firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 8,4: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1.firstChild assert_true: First differing node: expected Text node "Efghijkl", got Text node "" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 8,5: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1 
 PASS 8,5: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1 
 PASS 8,6: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1.firstChild 
@@ -405,8 +429,10 @@ PASS 9,2: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firs
 PASS 9,2: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[1].firstChild 
 PASS 9,3: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1 
 PASS 9,3: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1 
-PASS 9,4: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1.firstChild 
-PASS 9,4: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1.firstChild 
+FAIL 9,4: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1.firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 9,4: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1.firstChild assert_true: First differing node: expected Text node "Efghijkl", got Text node "Ef" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 9,5: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedPara1 
 PASS 9,5: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedPara1 
 PASS 9,6: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedPara1.firstChild 
@@ -795,8 +821,11 @@ PASS 17,21: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node f
 PASS 17,21: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignDoctype 
 PASS 18,0: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0] 
 PASS 18,0: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0] 
-PASS 18,1: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild 
-PASS 18,1: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild 
+FAIL 18,1: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 18,1: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild assert_true: First differing node: expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
+", got Text node "" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 18,2: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild 
 PASS 18,2: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild 
 PASS 18,3: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 
@@ -839,8 +868,11 @@ PASS 18,21: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild
 PASS 18,21: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignDoctype 
 PASS 19,0: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0] 
 PASS 19,0: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0] 
-PASS 19,1: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0].firstChild 
-PASS 19,1: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0].firstChild 
+FAIL 19,1: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0].firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 19,1: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0].firstChild assert_true: First differing node: expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
+", got Text node "" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 19,2: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[1].firstChild 
 PASS 19,2: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[1].firstChild 
 PASS 19,3: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara1 
@@ -883,8 +915,11 @@ PASS 19,21: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild
 PASS 19,21: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignDoctype 
 PASS 20,0: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node paras[0] 
 PASS 20,0: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node paras[0] 
-PASS 20,1: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node paras[0].firstChild 
-PASS 20,1: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node paras[0].firstChild 
+FAIL 20,1: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node paras[0].firstChild assert_throws: A HIERARCHY_REQUEST_ERR DOMException must be thrown in this case function "function () {
+                try {
+                    a..." did not throw
+FAIL 20,1: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node paras[0].firstChild assert_true: First differing node: expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
+", got Text node "Äb" [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 20,2: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node paras[1].firstChild 
 PASS 20,2: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node paras[1].firstChild 
 PASS 20,3: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara1 
index bd846f0..61fc3cf 100644 (file)
@@ -1,5 +1,4 @@
 
-PASS Node 0 paras[0], detached range 
 PASS Node 0 paras[0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 0 paras[0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 0 paras[0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -60,7 +59,6 @@ PASS Node 0 paras[0], range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 0 paras[0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 0 paras[0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 0 paras[0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 1 paras[0].firstChild, detached range 
 PASS Node 1 paras[0].firstChild, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 1 paras[0].firstChild, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 1 paras[0].firstChild, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -121,7 +119,6 @@ PASS Node 1 paras[0].firstChild, range 56 [detachedComment, 5, detachedComment,
 PASS Node 1 paras[0].firstChild, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 1 paras[0].firstChild, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 1 paras[0].firstChild, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 2 paras[1].firstChild, detached range 
 PASS Node 2 paras[1].firstChild, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 2 paras[1].firstChild, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 2 paras[1].firstChild, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -182,7 +179,6 @@ PASS Node 2 paras[1].firstChild, range 56 [detachedComment, 5, detachedComment,
 PASS Node 2 paras[1].firstChild, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 2 paras[1].firstChild, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 2 paras[1].firstChild, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 3 foreignPara1, detached range 
 PASS Node 3 foreignPara1, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 3 foreignPara1, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 3 foreignPara1, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -243,7 +239,6 @@ PASS Node 3 foreignPara1, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 3 foreignPara1, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 3 foreignPara1, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 3 foreignPara1, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 4 foreignPara1.firstChild, detached range 
 PASS Node 4 foreignPara1.firstChild, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 4 foreignPara1.firstChild, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 4 foreignPara1.firstChild, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -304,7 +299,6 @@ PASS Node 4 foreignPara1.firstChild, range 56 [detachedComment, 5, detachedComme
 PASS Node 4 foreignPara1.firstChild, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 4 foreignPara1.firstChild, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 4 foreignPara1.firstChild, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 5 detachedPara1, detached range 
 PASS Node 5 detachedPara1, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 5 detachedPara1, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 5 detachedPara1, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -365,7 +359,6 @@ PASS Node 5 detachedPara1, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 5 detachedPara1, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 5 detachedPara1, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 5 detachedPara1, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 6 detachedPara1.firstChild, detached range 
 PASS Node 6 detachedPara1.firstChild, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 6 detachedPara1.firstChild, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 6 detachedPara1.firstChild, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -426,7 +419,6 @@ PASS Node 6 detachedPara1.firstChild, range 56 [detachedComment, 5, detachedComm
 PASS Node 6 detachedPara1.firstChild, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 6 detachedPara1.firstChild, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 6 detachedPara1.firstChild, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 7 document, detached range 
 PASS Node 7 document, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 7 document, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 7 document, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -487,7 +479,6 @@ PASS Node 7 document, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 7 document, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 7 document, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 7 document, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 8 detachedDiv, detached range 
 PASS Node 8 detachedDiv, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 8 detachedDiv, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 8 detachedDiv, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -548,7 +539,6 @@ PASS Node 8 detachedDiv, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 8 detachedDiv, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 8 detachedDiv, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 8 detachedDiv, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 9 foreignDoc, detached range 
 PASS Node 9 foreignDoc, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 9 foreignDoc, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 9 foreignDoc, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -609,7 +599,6 @@ PASS Node 9 foreignDoc, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 9 foreignDoc, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 9 foreignDoc, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 9 foreignDoc, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 10 foreignPara2, detached range 
 PASS Node 10 foreignPara2, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 10 foreignPara2, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 10 foreignPara2, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -670,7 +659,6 @@ PASS Node 10 foreignPara2, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 10 foreignPara2, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 10 foreignPara2, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 10 foreignPara2, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 11 xmlDoc, detached range 
 PASS Node 11 xmlDoc, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 11 xmlDoc, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 11 xmlDoc, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -731,7 +719,6 @@ PASS Node 11 xmlDoc, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 11 xmlDoc, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 11 xmlDoc, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 11 xmlDoc, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 12 xmlElement, detached range 
 PASS Node 12 xmlElement, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 12 xmlElement, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 12 xmlElement, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -792,7 +779,6 @@ PASS Node 12 xmlElement, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 12 xmlElement, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 12 xmlElement, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 12 xmlElement, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 13 detachedTextNode, detached range 
 PASS Node 13 detachedTextNode, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 13 detachedTextNode, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 13 detachedTextNode, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -853,7 +839,6 @@ PASS Node 13 detachedTextNode, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 13 detachedTextNode, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 13 detachedTextNode, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 13 detachedTextNode, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 14 foreignTextNode, detached range 
 PASS Node 14 foreignTextNode, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 14 foreignTextNode, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 14 foreignTextNode, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -914,7 +899,6 @@ PASS Node 14 foreignTextNode, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 14 foreignTextNode, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 14 foreignTextNode, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 14 foreignTextNode, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 15 processingInstruction, detached range 
 PASS Node 15 processingInstruction, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 15 processingInstruction, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 15 processingInstruction, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -975,7 +959,6 @@ PASS Node 15 processingInstruction, range 56 [detachedComment, 5, detachedCommen
 PASS Node 15 processingInstruction, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 15 processingInstruction, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 15 processingInstruction, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 16 detachedProcessingInstruction, detached range 
 PASS Node 16 detachedProcessingInstruction, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 16 detachedProcessingInstruction, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 16 detachedProcessingInstruction, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1036,7 +1019,6 @@ PASS Node 16 detachedProcessingInstruction, range 56 [detachedComment, 5, detach
 PASS Node 16 detachedProcessingInstruction, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 16 detachedProcessingInstruction, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 16 detachedProcessingInstruction, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 17 comment, detached range 
 PASS Node 17 comment, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 17 comment, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 17 comment, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1097,7 +1079,6 @@ PASS Node 17 comment, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 17 comment, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 17 comment, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 17 comment, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 18 detachedComment, detached range 
 PASS Node 18 detachedComment, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 18 detachedComment, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 18 detachedComment, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1158,7 +1139,6 @@ PASS Node 18 detachedComment, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 18 detachedComment, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 18 detachedComment, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 18 detachedComment, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 19 docfrag, detached range 
 PASS Node 19 docfrag, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 19 docfrag, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 19 docfrag, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1219,7 +1199,6 @@ PASS Node 19 docfrag, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 19 docfrag, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 19 docfrag, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 19 docfrag, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 20 doctype, detached range 
 PASS Node 20 doctype, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 20 doctype, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 20 doctype, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1280,7 +1259,6 @@ PASS Node 20 doctype, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 20 doctype, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 20 doctype, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 20 doctype, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 21 foreignDoctype, detached range 
 PASS Node 21 foreignDoctype, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 21 foreignDoctype, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 21 foreignDoctype, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1341,7 +1319,6 @@ PASS Node 21 foreignDoctype, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 21 foreignDoctype, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 21 foreignDoctype, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 21 foreignDoctype, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 22 paras[1], detached range 
 PASS Node 22 paras[1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 22 paras[1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 22 paras[1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1402,7 +1379,6 @@ PASS Node 22 paras[1], range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 22 paras[1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 22 paras[1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 22 paras[1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 23 detachedPara2, detached range 
 PASS Node 23 detachedPara2, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 23 detachedPara2, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 23 detachedPara2, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1463,7 +1439,6 @@ PASS Node 23 detachedPara2, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 23 detachedPara2, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 23 detachedPara2, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 23 detachedPara2, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 24 detachedPara2.firstChild, detached range 
 PASS Node 24 detachedPara2.firstChild, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 24 detachedPara2.firstChild, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 24 detachedPara2.firstChild, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1524,7 +1499,6 @@ PASS Node 24 detachedPara2.firstChild, range 56 [detachedComment, 5, detachedCom
 PASS Node 24 detachedPara2.firstChild, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 24 detachedPara2.firstChild, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 24 detachedPara2.firstChild, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 25 testDiv, detached range 
 PASS Node 25 testDiv, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 25 testDiv, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 25 testDiv, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1585,7 +1559,6 @@ PASS Node 25 testDiv, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 25 testDiv, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 25 testDiv, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 25 testDiv, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 26 detachedXmlElement, detached range 
 PASS Node 26 detachedXmlElement, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 26 detachedXmlElement, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 26 detachedXmlElement, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1646,7 +1619,6 @@ PASS Node 26 detachedXmlElement, range 56 [detachedComment, 5, detachedComment,
 PASS Node 26 detachedXmlElement, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 26 detachedXmlElement, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 26 detachedXmlElement, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 27 detachedForeignTextNode, detached range 
 PASS Node 27 detachedForeignTextNode, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 27 detachedForeignTextNode, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 27 detachedForeignTextNode, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1707,7 +1679,6 @@ PASS Node 27 detachedForeignTextNode, range 56 [detachedComment, 5, detachedComm
 PASS Node 27 detachedForeignTextNode, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 27 detachedForeignTextNode, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 27 detachedForeignTextNode, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 28 xmlTextNode, detached range 
 PASS Node 28 xmlTextNode, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 28 xmlTextNode, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 28 xmlTextNode, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1768,7 +1739,6 @@ PASS Node 28 xmlTextNode, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 28 xmlTextNode, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 28 xmlTextNode, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 28 xmlTextNode, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 29 detachedXmlTextNode, detached range 
 PASS Node 29 detachedXmlTextNode, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 29 detachedXmlTextNode, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 29 detachedXmlTextNode, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1829,7 +1799,6 @@ PASS Node 29 detachedXmlTextNode, range 56 [detachedComment, 5, detachedComment,
 PASS Node 29 detachedXmlTextNode, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 29 detachedXmlTextNode, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 29 detachedXmlTextNode, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 30 xmlComment, detached range 
 PASS Node 30 xmlComment, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 30 xmlComment, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 30 xmlComment, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1890,7 +1859,6 @@ PASS Node 30 xmlComment, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 30 xmlComment, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 30 xmlComment, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 30 xmlComment, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 31 foreignComment, detached range 
 PASS Node 31 foreignComment, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 31 foreignComment, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 31 foreignComment, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -1951,7 +1919,6 @@ PASS Node 31 foreignComment, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 31 foreignComment, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 31 foreignComment, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 31 foreignComment, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 32 detachedForeignComment, detached range 
 PASS Node 32 detachedForeignComment, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 32 detachedForeignComment, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 32 detachedForeignComment, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -2012,7 +1979,6 @@ PASS Node 32 detachedForeignComment, range 56 [detachedComment, 5, detachedComme
 PASS Node 32 detachedForeignComment, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 32 detachedForeignComment, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 32 detachedForeignComment, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 33 detachedXmlComment, detached range 
 PASS Node 33 detachedXmlComment, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 33 detachedXmlComment, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 33 detachedXmlComment, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -2073,7 +2039,6 @@ PASS Node 33 detachedXmlComment, range 56 [detachedComment, 5, detachedComment,
 PASS Node 33 detachedXmlComment, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 33 detachedXmlComment, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 33 detachedXmlComment, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 34 foreignDocfrag, detached range 
 PASS Node 34 foreignDocfrag, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 34 foreignDocfrag, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 34 foreignDocfrag, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -2134,7 +2099,6 @@ PASS Node 34 foreignDocfrag, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 34 foreignDocfrag, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 34 foreignDocfrag, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 34 foreignDocfrag, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 35 xmlDocfrag, detached range 
 PASS Node 35 xmlDocfrag, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 35 xmlDocfrag, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 35 xmlDocfrag, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
@@ -2195,7 +2159,6 @@ PASS Node 35 xmlDocfrag, range 56 [detachedComment, 5, detachedComment, 5]
 PASS Node 35 xmlDocfrag, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
 PASS Node 35 xmlDocfrag, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
 PASS Node 35 xmlDocfrag, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
-PASS Node 36 xmlDoctype, detached range 
 PASS Node 36 xmlDoctype, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
 PASS Node 36 xmlDoctype, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
 PASS Node 36 xmlDoctype, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
index 3a0e163..97e10f6 100644 (file)
@@ -15,14 +15,6 @@ var testRangesCached = [];
 for (var i = 0; i < testNodes.length; i++) {
   var node = eval(testNodes[i]);
 
-  // "If the detached flag is set, throw an "InvalidStateError" exception and
-  // terminate these steps."
-  test(function() {
-    var range = document.createRange();
-    range.detach();
-    assert_equals(range.intersectsNode(node), node === document);
-  }, "Node " + i + " " + testNodes[i] + ", detached range");
-
   for (var j = 0; j < testRanges.length; j++) {
     test(function() {
       if (testRangesCached[j] === undefined) {
index aa740d4..ade44bb 100644 (file)
@@ -15,7 +15,6 @@
 //
 // TODO:
 //
-// * replaceWholeText() tests
 // * Lots and lots and lots more different types of ranges
 // * insertBefore() with DocumentFragments
 // * Fill out other insert/remove tests
index 0336c07..f7537ec 100644 (file)
@@ -7,10 +7,8 @@ FAIL 0,0: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild,
 FAIL 0,0: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0] assert_true: First differing node: expected Element node <p id="b" style="display:none">Ijklmnop
 </p>, got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 " [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 0,1: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0].firstChild assert_true: First differing node: expected Text node "", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 0,1: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0].firstChild assert_true: First differing node: expected Text node "", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 0,1: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0].firstChild 
+PASS 0,1: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0].firstChild 
 PASS 0,2: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[1].firstChild 
 PASS 0,2: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[1].firstChild 
 PASS 0,3: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara1 
@@ -57,9 +55,11 @@ FAIL 1,0: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild,
 FAIL 1,0: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0] assert_true: First differing node: expected Element node <p id="b" style="display:none">Ijklmnop
 </p>, got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 " [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 1,1: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0].firstChild assert_true: First differing node: expected Text node "", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL 1,1: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0].firstChild assert_true: First differing node: expected Text node "̈b̈c̈d̈ëf̈g̈ḧ
+", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 " [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 1,1: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0].firstChild assert_true: First differing node: expected Text node "", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL 1,1: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0].firstChild assert_true: First differing node: expected Text node "̈b̈c̈d̈ëf̈g̈ḧ
+", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 " [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 1,2: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[1].firstChild 
 PASS 1,2: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[1].firstChild 
@@ -107,9 +107,11 @@ FAIL 2,0: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild,
 FAIL 2,0: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0] assert_true: First differing node: expected Element node <p id="b" style="display:none">Ijklmnop
 </p>, got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 " [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 2,1: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0].firstChild assert_true: First differing node: expected Text node "Ä", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL 2,1: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0].firstChild assert_true: First differing node: expected Text node "Äëf̈g̈ḧ
+", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 " [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 2,1: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0].firstChild assert_true: First differing node: expected Text node "Ä", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL 2,1: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0].firstChild assert_true: First differing node: expected Text node "Äëf̈g̈ḧ
+", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 " [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 2,2: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[1].firstChild 
 PASS 2,2: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[1].firstChild 
@@ -157,9 +159,11 @@ FAIL 3,0: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild,
 FAIL 3,0: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0] assert_true: First differing node: expected Element node <p id="b" style="display:none">Ijklmnop
 </p>, got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 " [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 3,1: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0].firstChild assert_true: First differing node: expected Text node "Ä", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL 3,1: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0].firstChild assert_true: First differing node: expected Text node "Ä̈f̈g̈ḧ
+", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 " [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 3,1: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0].firstChild assert_true: First differing node: expected Text node "Ä", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL 3,1: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0].firstChild assert_true: First differing node: expected Text node "Ä̈f̈g̈ḧ
+", got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 " [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 3,2: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[1].firstChild 
 PASS 3,2: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[1].firstChild 
@@ -205,10 +209,8 @@ PASS 4,0: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild,
 PASS 4,0: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0] 
 PASS 4,1: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild 
 PASS 4,1: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild 
-FAIL 4,2: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild assert_true: First differing node: expected Text node "", got Text node "Ijklmnop
-" [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 4,2: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild assert_true: First differing node: expected Text node "", got Text node "Ijklmnop
-" [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 4,2: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild 
+PASS 4,2: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild 
 PASS 4,3: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 
 PASS 4,3: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 
 PASS 4,4: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1.firstChild 
@@ -305,8 +307,8 @@ PASS 6,4: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.fi
 PASS 6,4: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara1.firstChild 
 FAIL 6,5: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1 assert_true: First differing node: expected Element node <p>Wxyzabcd</p>, got Text node "Opqrstuv" [Actual and expected mismatch for range's tree root.  ] expected true got false
 FAIL 6,5: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1 assert_true: First differing node: expected Element node <p>Wxyzabcd</p>, got Text node "Opqrstuv" [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 6,6: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1.firstChild assert_true: First differing node: expected Text node "", got Text node "Opqrstuv" [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 6,6: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1.firstChild assert_true: First differing node: expected Text node "", got Text node "Opqrstuv" [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 6,6: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1.firstChild 
+PASS 6,6: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1.firstChild 
 PASS 6,7: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node document 
 PASS 6,7: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node document 
 FAIL 6,8: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedDiv assert_unreached: DOMs were not equal but we couldn't figure out why Reached unreachable code
@@ -389,8 +391,8 @@ PASS 8,2: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firs
 PASS 8,2: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[1].firstChild 
 FAIL 8,3: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1 assert_true: First differing node: expected Element node <p>Mnopqrst</p>, got Text node "Efghijkl" [Actual and expected mismatch for range's tree root.  ] expected true got false
 FAIL 8,3: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1 assert_true: First differing node: expected Element node <p>Mnopqrst</p>, got Text node "Efghijkl" [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 8,4: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1.firstChild assert_true: First differing node: expected Text node "", got Text node "Efghijkl" [Actual and expected mismatch for range's tree root.  ] expected true got false
-FAIL 8,4: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1.firstChild assert_true: First differing node: expected Text node "", got Text node "Efghijkl" [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 8,4: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1.firstChild 
+PASS 8,4: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1.firstChild 
 PASS 8,5: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1 
 PASS 8,5: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1 
 PASS 8,6: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1.firstChild 
@@ -1665,48 +1667,44 @@ PASS 36,20: resulting DOM for range [docfrag, 0, docfrag, 0], node doctype
 PASS 36,20: resulting range position for range [docfrag, 0, docfrag, 0], node doctype 
 PASS 36,21: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignDoctype 
 PASS 36,21: resulting range position for range [docfrag, 0, docfrag, 0], node foreignDoctype 
-FAIL 37,0: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node paras[0] assert_true: First differing node: expected Element node <p id="b" style="display:none">Ijklmnop
-</p>, got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" [Actual and expected mismatch for moved node's tree root.  ] expected true got false
-FAIL 37,0: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node paras[0] assert_true: First differing node: expected Element node <p id="b" style="display:none">Ijklmnop
-</p>, got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" [Actual and expected mismatch for moved node's tree root.  ] expected true got false
-PASS 37,1: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node paras[0].firstChild 
-FAIL 37,1: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node paras[0].firstChild assert_equals: Unexpected endOffset after surroundContents() expected 0 but got 4
-PASS 37,2: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node paras[1].firstChild 
-FAIL 37,2: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node paras[1].firstChild assert_equals: Unexpected endOffset after surroundContents() expected 0 but got 4
-FAIL 37,3: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1 assert_true: First differing node: expected Element node <p>Mnopqrst</p>, got Text node "Efghijkl" [Actual and expected mismatch for moved node's tree root.  ] expected true got false
-FAIL 37,3: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1 assert_true: First differing node: expected Element node <p>Mnopqrst</p>, got Text node "Efghijkl" [Actual and expected mismatch for moved node's tree root.  ] expected true got false
-PASS 37,4: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1.firstChild 
-FAIL 37,4: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1.firstChild assert_equals: Unexpected endOffset after surroundContents() expected 0 but got 4
-FAIL 37,5: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1 assert_true: First differing node: expected Element node <p>Wxyzabcd</p>, got Text node "Opqrstuv" [Actual and expected mismatch for moved node's tree root.  ] expected true got false
-FAIL 37,5: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1 assert_true: First differing node: expected Element node <p>Wxyzabcd</p>, got Text node "Opqrstuv" [Actual and expected mismatch for moved node's tree root.  ] expected true got false
-PASS 37,6: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1.firstChild 
-FAIL 37,6: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1.firstChild assert_equals: Unexpected endOffset after surroundContents() expected 0 but got 4
+FAIL 37,0: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node paras[0] assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,0: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node paras[0] assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,1: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node paras[0].firstChild assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,1: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node paras[0].firstChild assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,2: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node paras[1].firstChild assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,2: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node paras[1].firstChild assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,3: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1 assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,3: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1 assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,4: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1.firstChild assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,4: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1.firstChild assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,5: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1 assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,5: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1 assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,6: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1.firstChild assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,6: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1.firstChild assert_true: First differing node: expected ProcessingInstruction node with target "somePI" and data "you know that \":syn sync fromstart\" is very useful when u...", got ProcessingInstruction node with target "somePI" and data "Did you know that \":syn sync fromstart\" is very useful wh..." [Actual and expected mismatch for range's tree root.  ] expected true got false
 PASS 37,7: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node document 
 PASS 37,7: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node document 
-FAIL 37,8: resulting DOM for range [process