From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- .../custom-elements/CustomElementRegistry.html | 580 +++++++++++++++++++++ .../custom-elements/HTMLElement-constructor.html | 84 +++ testing/web-platform/tests/custom-elements/OWNERS | 9 + .../tests/custom-elements/adopted-callback.html | 135 +++++ .../attribute-changed-callback.html | 223 ++++++++ .../tests/custom-elements/connected-callbacks.html | 88 ++++ .../custom-element-registry/define.html | 243 +++++++++ .../custom-elements/disconnected-callbacks.html | 93 ++++ .../custom-elements/htmlconstructor/newtarget.html | 124 +++++ .../tests/custom-elements/reaction-timing.html | 88 ++++ .../tests/custom-elements/reactions/Attr.html | 23 + .../tests/custom-elements/reactions/ChildNode.html | 35 ++ .../custom-elements/reactions/DOMTokenList.html | 217 ++++++++ .../tests/custom-elements/reactions/Document.html | 47 ++ .../tests/custom-elements/reactions/Element.html | 61 +++ .../custom-elements/reactions/NamedNodeMap.html | 39 ++ .../tests/custom-elements/reactions/Node.html | 49 ++ .../custom-elements/reactions/ParentNode.html | 27 + .../tests/custom-elements/reactions/Range.html | 49 ++ .../reactions/resources/reactions.js | 217 ++++++++ .../resources/custom-elements-helpers.js | 162 ++++++ .../resources/empty-html-document.html | 5 + ...tom-elements-type-allowed-chars-first-char.html | 58 +++ .../custom-elements-type-allowed-chars.html | 54 ++ .../v0/concepts/custom-elements-type-naming.html | 65 +++ .../new-registry-test.html | 39 ++ .../no-registry-test.html | 48 ++ .../share-registry-create-document.html | 51 ++ .../share-registry-import-document.html | 95 ++++ .../invoke-callbacks.html | 60 +++ .../attached-callback-move-element-test.html | 159 ++++++ .../types-of-callbacks/attached-callback-test.html | 117 +++++ ...ute-changed-callback-change-attribute-test.html | 229 ++++++++ ...ute-changed-callback-remove-attribute-test.html | 166 ++++++ ...ribute-changed-callback-set-attribute-test.html | 338 ++++++++++++ .../created-callback-element-prototype-test.html | 87 ++++ .../created-callback-invocation-order-test.html | 242 +++++++++ .../created-callback-invocation-test.html | 167 ++++++ .../detached-callback-move-element-test.html | 130 +++++ ...detached-callback-no-browsing-context-test.html | 147 ++++++ ...tached-callback-with-browsing-context-test.html | 85 +++ .../v0/instantiating/changing-is-attribute.html | 158 ++++++ .../custom-element-constructor-is-attribute.html | 49 ++ .../custom-element-constructor-local-name.html | 44 ++ .../custom-element-constructor-namespace.html | 43 ++ .../custom-element-constructor-node-document.html | 100 ++++ .../custom-element-constructor-prototype.html | 28 + .../v0/instantiating/custom-element-prototype.html | 30 ++ .../custom-element-type-is-attribute.html | 73 +++ ...m-element-type-local-name-and-is-attribute.html | 101 ++++ .../custom-element-type-local-name.html | 38 ++ ...ate-element-interface-type-is-a-local-name.html | 43 ++ ...element-interface-type-is-a-type-extension.html | 69 +++ .../create-element-is-attribute.html | 71 +++ .../create-element-namespace.html | 68 +++ .../create-element-type-extension-is-a-type.html | 47 ++ .../create-element-type-extension-unresolved.html | 49 ++ .../create-element-type-is-a-local-name.html | 38 ++ .../created-callback-create-element-ns.html | 72 +++ .../created-callback-create-element.html | 72 +++ .../non-configurable-constructor-property.html | 41 ++ .../prototype-is-interface-prototype-object.html | 44 ++ .../v0/instantiating/unchanged-attribute.html | 29 ++ ...n-construction-algorithm-default-namespace.html | 43 ++ ...onstruction-algorithm-duplicate-definition.html | 56 ++ ...nition-construction-algorithm-invalid-type.html | 22 + ...nstruction-algorithm-local-name-lowercased.html | 32 ++ ...nition-construction-algorithm-name-is-null.html | 40 ++ ...nstruction-algorithm-no-interface-for-name.html | 26 + ...ction-algorithm-svg-namespace-name-is-null.html | 36 ++ ...ition-construction-algorithm-svg-namespace.html | 26 + ...onstruction-algorithm-type-name-lowercased.html | 41 ++ ...element-registration-algorithm-no-registry.html | 39 ++ .../custom-element-name.html | 36 ++ .../custom-element-prototype.html | 27 + ...lement-pseudoclass-css-test-custom-tag-ref.html | 16 + ...ed-element-pseudoclass-css-test-custom-tag.html | 23 + ...doclass-css-test-registered-custom-tag-ref.html | 16 + ...pseudoclass-css-test-registered-custom-tag.html | 26 + ...ass-css-test-registered-type-extension-ref.html | 16 + ...doclass-css-test-registered-type-extension.html | 33 ++ ...nt-pseudoclass-css-test-type-extension-ref.html | 17 + ...lement-pseudoclass-css-test-type-extension.html | 23 + ...nt-pseudoclass-matching-query-selector-all.html | 190 +++++++ ...lement-pseudoclass-matching-query-selector.html | 161 ++++++ ...unresolved-elements-interface-html-element.html | 56 ++ ...ed-elements-interface-html-unknown-element.html | 53 ++ .../unresolved-elements-interface-svg-element.html | 47 ++ .../tests/custom-elements/v0/resources/blank.html | 9 + .../v0/resources/import-master-async.html | 10 + .../v0/resources/import-master.html | 10 + .../tests/custom-elements/v0/resources/import.html | 9 + .../register-and-create-custom-element.html | 19 + .../custom-elements/v0/resources/x-element.html | 10 + .../v0/resources/x-mathml-element.html | 12 + .../v0/resources/x-svg-element.html | 12 + .../tests/custom-elements/v0/testcommon.js | 286 ++++++++++ 97 files changed, 7720 insertions(+) create mode 100644 testing/web-platform/tests/custom-elements/CustomElementRegistry.html create mode 100644 testing/web-platform/tests/custom-elements/HTMLElement-constructor.html create mode 100644 testing/web-platform/tests/custom-elements/OWNERS create mode 100644 testing/web-platform/tests/custom-elements/adopted-callback.html create mode 100644 testing/web-platform/tests/custom-elements/attribute-changed-callback.html create mode 100644 testing/web-platform/tests/custom-elements/connected-callbacks.html create mode 100644 testing/web-platform/tests/custom-elements/custom-element-registry/define.html create mode 100644 testing/web-platform/tests/custom-elements/disconnected-callbacks.html create mode 100644 testing/web-platform/tests/custom-elements/htmlconstructor/newtarget.html create mode 100644 testing/web-platform/tests/custom-elements/reaction-timing.html create mode 100644 testing/web-platform/tests/custom-elements/reactions/Attr.html create mode 100644 testing/web-platform/tests/custom-elements/reactions/ChildNode.html create mode 100644 testing/web-platform/tests/custom-elements/reactions/DOMTokenList.html create mode 100644 testing/web-platform/tests/custom-elements/reactions/Document.html create mode 100644 testing/web-platform/tests/custom-elements/reactions/Element.html create mode 100644 testing/web-platform/tests/custom-elements/reactions/NamedNodeMap.html create mode 100644 testing/web-platform/tests/custom-elements/reactions/Node.html create mode 100644 testing/web-platform/tests/custom-elements/reactions/ParentNode.html create mode 100644 testing/web-platform/tests/custom-elements/reactions/Range.html create mode 100644 testing/web-platform/tests/custom-elements/reactions/resources/reactions.js create mode 100644 testing/web-platform/tests/custom-elements/resources/custom-elements-helpers.js create mode 100644 testing/web-platform/tests/custom-elements/resources/empty-html-document.html create mode 100644 testing/web-platform/tests/custom-elements/v0/concepts/custom-elements-type-allowed-chars-first-char.html create mode 100644 testing/web-platform/tests/custom-elements/v0/concepts/custom-elements-type-allowed-chars.html create mode 100644 testing/web-platform/tests/custom-elements/v0/concepts/custom-elements-type-naming.html create mode 100644 testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/new-registry-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/no-registry-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/share-registry-create-document.html create mode 100644 testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/share-registry-import-document.html create mode 100644 testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/enqueuing-and-invoking-callbacks/invoke-callbacks.html create mode 100644 testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-move-element-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-change-attribute-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-remove-attribute-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-set-attribute-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-element-prototype-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-order-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-move-element-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-no-browsing-context-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-with-browsing-context-test.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/changing-is-attribute.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-is-attribute.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-local-name.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-namespace.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-node-document.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-prototype.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-prototype.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-type-is-attribute.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-type-local-name-and-is-attribute.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-type-local-name.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-local-name.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-type-extension.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-is-attribute.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-namespace.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-is-a-type.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-unresolved.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-is-a-local-name.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element-ns.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/non-configurable-constructor-property.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/prototype-is-interface-prototype-object.html create mode 100644 testing/web-platform/tests/custom-elements/v0/instantiating/unchanged-attribute.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-default-namespace.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-duplicate-definition.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-invalid-type.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-local-name-lowercased.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-name-is-null.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-no-interface-for-name.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace-name-is-null.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-type-name-lowercased.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/element-registration-algorithm-no-registry.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-name.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-prototype.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag-ref.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag-ref.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension-ref.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension-ref.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector-all.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-elements-interface-html-element.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-elements-interface-html-unknown-element.html create mode 100644 testing/web-platform/tests/custom-elements/v0/registering/unresolved-elements-interface-svg-element.html create mode 100644 testing/web-platform/tests/custom-elements/v0/resources/blank.html create mode 100644 testing/web-platform/tests/custom-elements/v0/resources/import-master-async.html create mode 100644 testing/web-platform/tests/custom-elements/v0/resources/import-master.html create mode 100644 testing/web-platform/tests/custom-elements/v0/resources/import.html create mode 100644 testing/web-platform/tests/custom-elements/v0/resources/register-and-create-custom-element.html create mode 100644 testing/web-platform/tests/custom-elements/v0/resources/x-element.html create mode 100644 testing/web-platform/tests/custom-elements/v0/resources/x-mathml-element.html create mode 100644 testing/web-platform/tests/custom-elements/v0/resources/x-svg-element.html create mode 100644 testing/web-platform/tests/custom-elements/v0/testcommon.js (limited to 'testing/web-platform/tests/custom-elements') diff --git a/testing/web-platform/tests/custom-elements/CustomElementRegistry.html b/testing/web-platform/tests/custom-elements/CustomElementRegistry.html new file mode 100644 index 000000000..ecc7810e8 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/CustomElementRegistry.html @@ -0,0 +1,580 @@ + + + +Custom Elements: CustomElementRegistry interface + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/HTMLElement-constructor.html b/testing/web-platform/tests/custom-elements/HTMLElement-constructor.html new file mode 100644 index 000000000..1ed625f63 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/HTMLElement-constructor.html @@ -0,0 +1,84 @@ + + + +Custom Elements: HTMLElement must allow subclassing + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/OWNERS b/testing/web-platform/tests/custom-elements/OWNERS new file mode 100644 index 000000000..a8b25e79c --- /dev/null +++ b/testing/web-platform/tests/custom-elements/OWNERS @@ -0,0 +1,9 @@ +@alsemenov +@deepak-sa +@domenic +@dominiccooney +@hayatoito +@kojiishi +@rniwa +@sgrekhov +@takayoshikochi diff --git a/testing/web-platform/tests/custom-elements/adopted-callback.html b/testing/web-platform/tests/custom-elements/adopted-callback.html new file mode 100644 index 000000000..5c08a04a4 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/adopted-callback.html @@ -0,0 +1,135 @@ + + + +Custom Elements: adoptedCallback + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/attribute-changed-callback.html b/testing/web-platform/tests/custom-elements/attribute-changed-callback.html new file mode 100644 index 000000000..bd467912b --- /dev/null +++ b/testing/web-platform/tests/custom-elements/attribute-changed-callback.html @@ -0,0 +1,223 @@ + + + +Custom Elements: attributeChangedCallback + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/connected-callbacks.html b/testing/web-platform/tests/custom-elements/connected-callbacks.html new file mode 100644 index 000000000..d6e68262a --- /dev/null +++ b/testing/web-platform/tests/custom-elements/connected-callbacks.html @@ -0,0 +1,88 @@ + + + +Custom Elements: connectedCallback + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/custom-element-registry/define.html b/testing/web-platform/tests/custom-elements/custom-element-registry/define.html new file mode 100644 index 000000000..fedb68741 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/custom-element-registry/define.html @@ -0,0 +1,243 @@ + +Custom Elements: Element definition + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/disconnected-callbacks.html b/testing/web-platform/tests/custom-elements/disconnected-callbacks.html new file mode 100644 index 000000000..7f5a4d0f8 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/disconnected-callbacks.html @@ -0,0 +1,93 @@ + + + +Custom Elements: disconnectedCallback + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/htmlconstructor/newtarget.html b/testing/web-platform/tests/custom-elements/htmlconstructor/newtarget.html new file mode 100644 index 000000000..04b4c4986 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/htmlconstructor/newtarget.html @@ -0,0 +1,124 @@ + +Custom Elements: [HTMLConstructor] derives prototype from NewTarget + + + + + + + diff --git a/testing/web-platform/tests/custom-elements/reaction-timing.html b/testing/web-platform/tests/custom-elements/reaction-timing.html new file mode 100644 index 000000000..9e5bafbed --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reaction-timing.html @@ -0,0 +1,88 @@ + + + +Custom Elements: Custom element reactions must be invoked before returning to author scripts + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/reactions/Attr.html b/testing/web-platform/tests/custom-elements/reactions/Attr.html new file mode 100644 index 000000000..c9fa37f96 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reactions/Attr.html @@ -0,0 +1,23 @@ + + + +Custom Elements: CEReactions on Attr interface + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/reactions/ChildNode.html b/testing/web-platform/tests/custom-elements/reactions/ChildNode.html new file mode 100644 index 000000000..756f17229 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reactions/ChildNode.html @@ -0,0 +1,35 @@ + + + +Custom Elements: CEReactions on ChildNode interface + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/reactions/DOMTokenList.html b/testing/web-platform/tests/custom-elements/reactions/DOMTokenList.html new file mode 100644 index 000000000..38006d3e7 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reactions/DOMTokenList.html @@ -0,0 +1,217 @@ + + + +Custom Elements: CEReactions on DOMTokenList interface + + + + + + + + + + + + diff --git a/testing/web-platform/tests/custom-elements/reactions/Document.html b/testing/web-platform/tests/custom-elements/reactions/Document.html new file mode 100644 index 000000000..304ec9861 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reactions/Document.html @@ -0,0 +1,47 @@ + + + +Custom Elements: CEReactions on ParentNode interface + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/reactions/Element.html b/testing/web-platform/tests/custom-elements/reactions/Element.html new file mode 100644 index 000000000..ed627f44e --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reactions/Element.html @@ -0,0 +1,61 @@ + + + +Custom Elements: CEReactions on Node interface + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/reactions/NamedNodeMap.html b/testing/web-platform/tests/custom-elements/reactions/NamedNodeMap.html new file mode 100644 index 000000000..0ae83e9ab --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reactions/NamedNodeMap.html @@ -0,0 +1,39 @@ + + + +Custom Elements: CEReactions on NamedNodeMap interface + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/reactions/Node.html b/testing/web-platform/tests/custom-elements/reactions/Node.html new file mode 100644 index 000000000..94da3d020 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reactions/Node.html @@ -0,0 +1,49 @@ + + + +Custom Elements: CEReactions on Node interface + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/reactions/ParentNode.html b/testing/web-platform/tests/custom-elements/reactions/ParentNode.html new file mode 100644 index 000000000..b143b5a98 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reactions/ParentNode.html @@ -0,0 +1,27 @@ + + + +Custom Elements: CEReactions on ParentNode interface + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/reactions/Range.html b/testing/web-platform/tests/custom-elements/reactions/Range.html new file mode 100644 index 000000000..82382d520 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reactions/Range.html @@ -0,0 +1,49 @@ + + + +Custom Elements: CEReactions on Range interface + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/reactions/resources/reactions.js b/testing/web-platform/tests/custom-elements/reactions/resources/reactions.js new file mode 100644 index 000000000..c260dc4f3 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reactions/resources/reactions.js @@ -0,0 +1,217 @@ + +let testNumber = 1; + +function testNodeConnector(testFunction, name) { + let container = document.createElement('div'); + container.appendChild(document.createElement('div')); + document.body.appendChild(container); + + test(function () { + var element = define_new_custom_element(); + var instance = document.createElement(element.name); + assert_array_equals(element.takeLog().types(), ['constructed']); + testFunction(container, instance); + assert_array_equals(element.takeLog().types(), ['connected']); + }, name + ' must enqueue a connected reaction'); + + test(function () { + var element = define_new_custom_element(); + var instance = document.createElement(element.name); + assert_array_equals(element.takeLog().types(), ['constructed']); + var newDoc = document.implementation.createHTMLDocument(); + testFunction(container, instance); + assert_array_equals(element.takeLog().types(), ['connected']); + testFunction(newDoc.documentElement, instance); + assert_array_equals(element.takeLog().types(), ['disconnected', 'adopted', 'connected']); + }, name + ' must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document'); + + container.parentNode.removeChild(container); +} + +function testNodeDisconnector(testFunction, name) { + let container = document.createElement('div'); + container.appendChild(document.createElement('div')); + document.body.appendChild(container); + + test(function () { + var element = define_new_custom_element(); + var instance = document.createElement(element.name); + assert_array_equals(element.takeLog().types(), ['constructed']); + container.appendChild(instance); + assert_array_equals(element.takeLog().types(), ['connected']); + testFunction(instance); + assert_array_equals(element.takeLog().types(), ['disconnected']); + }, name + ' must enqueue a disconnected reaction'); + + container.parentNode.removeChild(container); +} + +function testCloner(testFunction, name) { + let container = document.createElement('div'); + container.appendChild(document.createElement('div')); + document.body.appendChild(container); + + test(function () { + var element = define_new_custom_element(['id']); + var instance = document.createElement(element.name); + container.appendChild(instance); + + instance.setAttribute('id', 'foo'); + assert_array_equals(element.takeLog().types(), ['constructed', 'connected', 'attributeChanged']); + var newInstance = testFunction(instance); + var logEntries = element.takeLog(); + assert_array_equals(logEntries.types(), ['constructed', 'attributeChanged']); + assert_attribute_log_entry(logEntries.last(), {name: 'id', oldValue: null, newValue: 'foo', namespace: null}); + }, name + ' must enqueue an attributeChanged reaction when cloning an element with an observed attribute'); + + test(function () { + var element = define_new_custom_element(['id']); + var instance = document.createElement(element.name); + container.appendChild(instance); + + instance.setAttribute('lang', 'en'); + assert_array_equals(element.takeLog().types(), ['constructed', 'connected']); + var newInstance = testFunction(instance); + assert_array_equals(element.takeLog().types(), ['constructed']); + }, name + ' must not enqueue an attributeChanged reaction when cloning an element with an unobserved attribute'); + + test(function () { + var element = define_new_custom_element(['title', 'class']); + var instance = document.createElement(element.name); + container.appendChild(instance); + + instance.setAttribute('lang', 'en'); + instance.className = 'foo'; + instance.setAttribute('title', 'hello world'); + assert_array_equals(element.takeLog().types(), ['constructed', 'connected', 'attributeChanged', 'attributeChanged']); + var newInstance = testFunction(instance); + var logEntries = element.takeLog(); + assert_array_equals(logEntries.types(), ['constructed', 'attributeChanged', 'attributeChanged']); + assert_attribute_log_entry(logEntries[1], {name: 'class', oldValue: null, newValue: 'foo', namespace: null}); + assert_attribute_log_entry(logEntries[2], {name: 'title', oldValue: null, newValue: 'hello world', namespace: null}); + }, name + ' must enqueue an attributeChanged reaction when cloning an element only for observed attributes'); +} + +function testReflectAttribute(jsAttributeName, contentAttributeName, validValue1, validValue2, name) { + test(function () { + var element = define_new_custom_element([contentAttributeName]); + var instance = document.createElement(element.name); + assert_array_equals(element.takeLog().types(), ['constructed']); + instance[jsAttributeName] = validValue1; + var logEntries = element.takeLog(); + assert_array_equals(logEntries.types(), ['attributeChanged']); + assert_attribute_log_entry(logEntries.last(), {name: contentAttributeName, oldValue: null, newValue: validValue1, namespace: null}); + }, name + ' must enqueue an attributeChanged reaction when adding ' + contentAttributeName + ' content attribute'); + + test(function () { + var element = define_new_custom_element([contentAttributeName]); + var instance = document.createElement(element.name); + instance[jsAttributeName] = validValue1; + assert_array_equals(element.takeLog().types(), ['constructed', 'attributeChanged']); + instance[jsAttributeName] = validValue2; + var logEntries = element.takeLog(); + assert_array_equals(logEntries.types(), ['attributeChanged']); + assert_attribute_log_entry(logEntries.last(), {name: contentAttributeName, oldValue: validValue1, newValue: validValue2, namespace: null}); + }, name + ' must enqueue an attributeChanged reaction when replacing an existing attribute'); +} + +function testAttributeAdder(testFunction, name) { + test(function () { + var element = define_new_custom_element(['id']); + var instance = document.createElement(element.name); + assert_array_equals(element.takeLog().types(), ['constructed']); + testFunction(instance, 'id', 'foo'); + var logEntries = element.takeLog(); + assert_array_equals(logEntries.types(), ['attributeChanged']); + assert_attribute_log_entry(logEntries.last(), {name: 'id', oldValue: null, newValue: 'foo', namespace: null}); + }, name + ' must enqueue an attributeChanged reaction when adding an attribute'); + + test(function () { + var element = define_new_custom_element(['class']); + var instance = document.createElement(element.name); + assert_array_equals(element.takeLog().types(), ['constructed']); + testFunction(instance, 'data-lang', 'en'); + assert_array_equals(element.takeLog().types(), []); + }, name + ' must not enqueue an attributeChanged reaction when adding an unobserved attribute'); + + test(function () { + var element = define_new_custom_element(['title']); + var instance = document.createElement(element.name); + instance.setAttribute('title', 'hello'); + assert_array_equals(element.takeLog().types(), ['constructed', 'attributeChanged']); + testFunction(instance, 'title', 'world'); + var logEntries = element.takeLog(); + assert_array_equals(logEntries.types(), ['attributeChanged']); + assert_attribute_log_entry(logEntries.last(), {name: 'title', oldValue: 'hello', newValue: 'world', namespace: null}); + }, name + ' must enqueue an attributeChanged reaction when replacing an existing attribute'); + + test(function () { + var element = define_new_custom_element([]); + var instance = document.createElement(element.name); + instance.setAttribute('data-lang', 'zh'); + assert_array_equals(element.takeLog().types(), ['constructed']); + testFunction(instance, 'data-lang', 'en'); + assert_array_equals(element.takeLog().types(), []); + }, name + ' must enqueue an attributeChanged reaction when replacing an existing unobserved attribute'); +} + +function testAttributeMutator(testFunction, name) { + test(function () { + var element = define_new_custom_element(['title']); + var instance = document.createElement(element.name); + instance.setAttribute('title', 'hello'); + assert_array_equals(element.takeLog().types(), ['constructed', 'attributeChanged']); + testFunction(instance, 'title', 'world'); + var logEntries = element.takeLog(); + assert_array_equals(logEntries.types(), ['attributeChanged']); + assert_attribute_log_entry(logEntries.last(), {name: 'title', oldValue: 'hello', newValue: 'world', namespace: null}); + }, name + ' must enqueue an attributeChanged reaction when replacing an existing attribute'); + + test(function () { + var element = define_new_custom_element(['class']); + var instance = document.createElement(element.name); + instance.setAttribute('data-lang', 'zh'); + assert_array_equals(element.takeLog().types(), ['constructed']); + testFunction(instance, 'data-lang', 'en'); + assert_array_equals(element.takeLog().types(), []); + }, name + ' must not enqueue an attributeChanged reaction when replacing an existing unobserved attribute'); +} + +function testAttributeRemover(testFunction, name) { + test(function () { + var element = define_new_custom_element(['title']); + var instance = document.createElement(element.name); + assert_array_equals(element.takeLog().types(), ['constructed']); + testFunction(instance, 'title'); + assert_array_equals(element.takeLog().types(), []); + }, name + ' must not enqueue an attributeChanged reaction when removing an attribute that does not exist'); + + test(function () { + var element = define_new_custom_element([]); + var instance = document.createElement(element.name); + instance.setAttribute('data-lang', 'hello'); + assert_array_equals(element.takeLog().types(), ['constructed']); + testFunction(instance, 'data-lang'); + assert_array_equals(element.takeLog().types(), []); + }, name + ' must not enqueue an attributeChanged reaction when removing an unobserved attribute'); + + test(function () { + var element = define_new_custom_element(['title']); + var instance = document.createElement(element.name); + instance.setAttribute('title', 'hello'); + assert_array_equals(element.takeLog().types(), ['constructed', 'attributeChanged']); + testFunction(instance, 'title'); + var logEntries = element.takeLog(); + assert_array_equals(logEntries.types(), ['attributeChanged']); + assert_attribute_log_entry(logEntries.last(), {name: 'title', oldValue: 'hello', newValue: null, namespace: null}); + }, name + ' must enqueue an attributeChanged reaction when removing an existing attribute'); + + test(function () { + var element = define_new_custom_element([]); + var instance = document.createElement(element.name); + instance.setAttribute('data-lang', 'ja'); + assert_array_equals(element.takeLog().types(), ['constructed']); + testFunction(instance, 'data-lang'); + assert_array_equals(element.takeLog().types(), []); + }, name + ' must not enqueue an attributeChanged reaction when removing an existing unobserved attribute'); +} diff --git a/testing/web-platform/tests/custom-elements/resources/custom-elements-helpers.js b/testing/web-platform/tests/custom-elements/resources/custom-elements-helpers.js new file mode 100644 index 000000000..63fb98b43 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/resources/custom-elements-helpers.js @@ -0,0 +1,162 @@ +function create_window_in_test(t, srcdoc) { + let p = new Promise((resolve) => { + let f = document.createElement('iframe'); + f.srcdoc = srcdoc ? srcdoc : ''; + f.onload = (event) => { + let w = f.contentWindow; + t.add_cleanup(() => f.parentNode && f.remove()); + resolve(w); + }; + document.body.appendChild(f); + }); + return p; +} + +function test_with_window(f, name, srcdoc) { + promise_test((t) => { + return create_window_in_test(t, srcdoc) + .then((w) => { + f(w); + }); + }, name); +} + +function create_attribute_changed_callback_log(element, name, oldValue, newValue, namespace) { + return { + type: 'attributeChanged', + element: element, + name: name, + namespace: namespace, + oldValue: oldValue, + newValue: newValue, + actualValue: element.getAttributeNS(namespace, name) + }; +} + +function assert_attribute_log_entry(log, expected) { + assert_equals(log.type, 'attributeChanged'); + assert_equals(log.name, expected.name); + assert_equals(log.oldValue, expected.oldValue); + assert_equals(log.newValue, expected.newValue); + assert_equals(log.actualValue, expected.newValue); + assert_equals(log.namespace, expected.namespace); +} + + +function define_new_custom_element(observedAttributes) { + let log = []; + let name = 'custom-element-' + define_new_custom_element._element_number++; + + class CustomElement extends HTMLElement { + constructor() { + super(); + log.push({type: 'constructed', element: this}); + } + attributeChangedCallback(...args) { + log.push(create_attribute_changed_callback_log(this, ...args)); + } + connectedCallback() { log.push({type: 'connected', element: this}); } + disconnectedCallback() { log.push({type: 'disconnected', element: this}); } + adoptedCallback(oldDocument, newDocument) { log.push({type: 'adopted', element: this, oldDocument: oldDocument, newDocument: newDocument}); } + } + CustomElement.observedAttributes = observedAttributes; + + customElements.define(name, CustomElement); + + return { + name: name, + takeLog: function () { + let currentLog = log; log = []; + currentLog.types = () => currentLog.map((entry) => entry.type); + currentLog.last = () => currentLog[currentLog.length - 1]; + return currentLog; + } + }; +} +define_new_custom_element._element_number = 1; + +function document_types() { + return [ + { + name: 'the document', + create: function () { return Promise.resolve(document); }, + isOwner: true, + hasBrowsingContext: true, + }, + { + name: 'the document of the template elements', + create: function () { + return new Promise(function (resolve) { + var template = document.createElementNS('http://www.w3.org/1999/xhtml', 'template'); + var doc = template.content.ownerDocument; + if (!doc.documentElement) + doc.appendChild(doc.createElement('html')); + resolve(doc); + }); + }, + hasBrowsingContext: false, + }, + { + name: 'a new document', + create: function () { + return new Promise(function (resolve) { + var doc = new Document(); + doc.appendChild(doc.createElement('html')); + resolve(doc); + }); + }, + hasBrowsingContext: false, + }, + { + name: 'a cloned document', + create: function () { + return new Promise(function (resolve) { + var doc = document.cloneNode(false); + doc.appendChild(doc.createElement('html')); + resolve(doc); + }); + }, + hasBrowsingContext: false, + }, + { + name: 'a document created by createHTMLDocument', + create: function () { + return Promise.resolve(document.implementation.createHTMLDocument()); + }, + hasBrowsingContext: false, + }, + { + name: 'an HTML document created by createDocument', + create: function () { + return Promise.resolve(document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null)); + }, + hasBrowsingContext: false, + }, + { + name: 'the document of an iframe', + create: function () { + return new Promise(function (resolve, reject) { + var iframe = document.createElement('iframe'); + iframe.onload = function () { resolve(iframe.contentDocument); } + iframe.onerror = function () { reject('Failed to load an empty iframe'); } + document.body.appendChild(iframe); + }); + }, + hasBrowsingContext: true, + }, + { + name: 'an HTML document fetched by XHR', + create: function () { + return new Promise(function (resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', 'resources/empty-html-document.html'); + xhr.overrideMimeType('text/xml'); + xhr.onload = function () { resolve(xhr.responseXML); } + xhr.onerror = function () { reject('Failed to fetch the document'); } + xhr.send(); + }); + }, + hasBrowsingContext: false, + } + ]; +} diff --git a/testing/web-platform/tests/custom-elements/resources/empty-html-document.html b/testing/web-platform/tests/custom-elements/resources/empty-html-document.html new file mode 100644 index 000000000..eaca3f49f --- /dev/null +++ b/testing/web-platform/tests/custom-elements/resources/empty-html-document.html @@ -0,0 +1,5 @@ + + + + + diff --git a/testing/web-platform/tests/custom-elements/v0/concepts/custom-elements-type-allowed-chars-first-char.html b/testing/web-platform/tests/custom-elements/v0/concepts/custom-elements-type-allowed-chars-first-char.html new file mode 100644 index 000000000..b83b5fa78 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/concepts/custom-elements-type-allowed-chars-first-char.html @@ -0,0 +1,58 @@ + + + +First char allowed for custom element type + + + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/concepts/custom-elements-type-allowed-chars.html b/testing/web-platform/tests/custom-elements/v0/concepts/custom-elements-type-allowed-chars.html new file mode 100644 index 000000000..64252ab49 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/concepts/custom-elements-type-allowed-chars.html @@ -0,0 +1,54 @@ + + + +Chars allowed for custom element type + + + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/concepts/custom-elements-type-naming.html b/testing/web-platform/tests/custom-elements/v0/concepts/custom-elements-type-naming.html new file mode 100644 index 000000000..c05f1ccde --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/concepts/custom-elements-type-naming.html @@ -0,0 +1,65 @@ + + + +The custom element type is a sequence of characters that must match the NCName production and contain a minus character + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/new-registry-test.html b/testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/new-registry-test.html new file mode 100644 index 000000000..597f15c21 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/new-registry-test.html @@ -0,0 +1,39 @@ + + + +When an HTML Document is loaded in a browsing context, a new registry must be created and associated with this document + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/no-registry-test.html b/testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/no-registry-test.html new file mode 100644 index 000000000..d936fd34f --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/no-registry-test.html @@ -0,0 +1,48 @@ + + + +New document without browsing context must not have a registry + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/share-registry-create-document.html b/testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/share-registry-create-document.html new file mode 100644 index 000000000..64244f169 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/share-registry-create-document.html @@ -0,0 +1,51 @@ + + + +Document, created with createHTMLDocument or createDocument with HTML namespace, should share registry with the associated document + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/share-registry-import-document.html b/testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/share-registry-import-document.html new file mode 100644 index 000000000..251e4f123 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/creating-and-passing-registries/share-registry-import-document.html @@ -0,0 +1,95 @@ + + + +When creating an import, use the registry of the master document + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/enqueuing-and-invoking-callbacks/invoke-callbacks.html b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/enqueuing-and-invoking-callbacks/invoke-callbacks.html new file mode 100644 index 000000000..97fb73560 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/enqueuing-and-invoking-callbacks/invoke-callbacks.html @@ -0,0 +1,60 @@ + + + +Invoke CALLBACK with ELEMENT as callback this value + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-move-element-test.html b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-move-element-test.html new file mode 100644 index 000000000..df4df5535 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-move-element-test.html @@ -0,0 +1,159 @@ + + + +Attached callback of a custom element should be called if element is moved + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-test.html b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-test.html new file mode 100644 index 000000000..a4cc0b746 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-test.html @@ -0,0 +1,117 @@ + + + +Attached callback of a custom element should be called + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-change-attribute-test.html b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-change-attribute-test.html new file mode 100644 index 000000000..cd5f3a4b8 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-change-attribute-test.html @@ -0,0 +1,229 @@ + + + +Test attributeChanged callback is called if custom element attribute value is changed + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-remove-attribute-test.html b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-remove-attribute-test.html new file mode 100644 index 000000000..fb451b074 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-remove-attribute-test.html @@ -0,0 +1,166 @@ + + + +Test attribute removing to check attributeChanged callback of a custom element + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-set-attribute-test.html b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-set-attribute-test.html new file mode 100644 index 000000000..1c4ab8618 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-set-attribute-test.html @@ -0,0 +1,338 @@ + + + +Test attributeChanged callback is called if custom element attribute value is set + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-element-prototype-test.html b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-element-prototype-test.html new file mode 100644 index 000000000..188957c1a --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-element-prototype-test.html @@ -0,0 +1,87 @@ + + + +The custom element prototype must be set just prior to invoking created callback + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-order-test.html b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-order-test.html new file mode 100644 index 000000000..b0f2d5ee8 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-order-test.html @@ -0,0 +1,242 @@ + + + +All other callbacks must not be enqueued until after the created callback's invocation had started + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-test.html b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-test.html new file mode 100644 index 000000000..63814a80f --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-test.html @@ -0,0 +1,167 @@ + + + +Created callback of a custom element should be invoked after custom element instance is created and its definition is registered + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-move-element-test.html b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-move-element-test.html new file mode 100644 index 000000000..d69eb54db --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-move-element-test.html @@ -0,0 +1,130 @@ + + + +Test detached callback of a custom element when moving custom element between different documents + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-no-browsing-context-test.html b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-no-browsing-context-test.html new file mode 100644 index 000000000..2b420d11c --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-no-browsing-context-test.html @@ -0,0 +1,147 @@ + + + +Detached callback of a custom element should not be called if document has no browsing context + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-with-browsing-context-test.html b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-with-browsing-context-test.html new file mode 100644 index 000000000..31b06a907 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-with-browsing-context-test.html @@ -0,0 +1,85 @@ + + + +Detached callback of a custom element should be called if document has browsing context + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/changing-is-attribute.html b/testing/web-platform/tests/custom-elements/v0/instantiating/changing-is-attribute.html new file mode 100644 index 000000000..fb4338840 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/changing-is-attribute.html @@ -0,0 +1,158 @@ + + + +Changing IS attribute of the custom element must not affect this element's custom element type, after element is instantiated + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-is-attribute.html b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-is-attribute.html new file mode 100644 index 000000000..0e18bf651 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-is-attribute.html @@ -0,0 +1,49 @@ + + + +Custom element constructor sets value of IS attribute to custom element type, if it is not equal to name + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-local-name.html b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-local-name.html new file mode 100644 index 000000000..28f6ca33f --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-local-name.html @@ -0,0 +1,44 @@ + + + +Custom element constructor sets local name to the name from custom element definition + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-namespace.html b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-namespace.html new file mode 100644 index 000000000..7278086ac --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-namespace.html @@ -0,0 +1,43 @@ + + + +Custom element constructor sets local namespace to the namespace from custom element definition + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-node-document.html b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-node-document.html new file mode 100644 index 000000000..3112b36da --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-node-document.html @@ -0,0 +1,100 @@ + + + +Custom element constructor sets owner document to the document, where custom element type is registered + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-prototype.html b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-prototype.html new file mode 100644 index 000000000..0158af511 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-constructor-prototype.html @@ -0,0 +1,28 @@ + + + +Custom element constructor prototype is the prototype object specified in element definition + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-prototype.html b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-prototype.html new file mode 100644 index 000000000..2b298ea74 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-prototype.html @@ -0,0 +1,30 @@ + + + +Custom element prototype is the prototype object specified in element definition + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-type-is-attribute.html b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-type-is-attribute.html new file mode 100644 index 000000000..c18290d0e --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-type-is-attribute.html @@ -0,0 +1,73 @@ + + + +Instantiation of custom element: custom element type is given as the value of the IS attribute + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-type-local-name-and-is-attribute.html b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-type-local-name-and-is-attribute.html new file mode 100644 index 000000000..c55e2cc25 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-type-local-name-and-is-attribute.html @@ -0,0 +1,101 @@ + + + +Instantiation of custom element: the custom tag must win over the type extension + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-type-local-name.html b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-type-local-name.html new file mode 100644 index 000000000..0f0d46f0a --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/custom-element-type-local-name.html @@ -0,0 +1,38 @@ + + + +Instantiation of custom element: custom element type is given via the local name of the custom element + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-local-name.html b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-local-name.html new file mode 100644 index 000000000..f59d6dcb8 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-local-name.html @@ -0,0 +1,43 @@ + + + +Document.createElement() and Document.createElementNS() create custom element of type, specified by localName argument + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-type-extension.html b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-type-extension.html new file mode 100644 index 000000000..3df042676 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-type-extension.html @@ -0,0 +1,69 @@ + + + +Document.createElement() and Document.createElementNS() create custom element of type, specified by typeExtension argument + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-is-attribute.html b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-is-attribute.html new file mode 100644 index 000000000..374ec5922 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-is-attribute.html @@ -0,0 +1,71 @@ + + + +Document.createElement() and Document.createElementNS() set IS attribute to type + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-namespace.html b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-namespace.html new file mode 100644 index 000000000..60d501219 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-namespace.html @@ -0,0 +1,68 @@ + + + +Document.createElement() sets custom element namespace to HTML Namespace + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-is-a-type.html b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-is-a-type.html new file mode 100644 index 000000000..ce7c933e2 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-is-a-type.html @@ -0,0 +1,47 @@ + + + +Document.createElement() and Document.createElementNS() create custom element of type, specified by typeExtension argument + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-unresolved.html b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-unresolved.html new file mode 100644 index 000000000..3eaadf312 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-unresolved.html @@ -0,0 +1,49 @@ + + + +Document.createElement() and Document.createElementNS() create custom element of type, specified by localName argument + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-is-a-local-name.html b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-is-a-local-name.html new file mode 100644 index 000000000..487b14b9d --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-is-a-local-name.html @@ -0,0 +1,38 @@ + + + +Document.createElement() and Document.createElementNS() create custom element of type, specified by single localName argument + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element-ns.html b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element-ns.html new file mode 100644 index 000000000..7bf09601c --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element-ns.html @@ -0,0 +1,72 @@ + + + +Document.createElementNS() must enqueue created callback for registered custom element type + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element.html b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element.html new file mode 100644 index 000000000..dc05e01e1 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element.html @@ -0,0 +1,72 @@ + + + +Document.createElement() must enqueue created callback for registered custom element type + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/non-configurable-constructor-property.html b/testing/web-platform/tests/custom-elements/v0/instantiating/non-configurable-constructor-property.html new file mode 100644 index 000000000..ddb1ff9de --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/non-configurable-constructor-property.html @@ -0,0 +1,41 @@ + + + +If prototype has a non-configurable property named constructor, Document.registerElement() throws NotSupportedError + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/prototype-is-interface-prototype-object.html b/testing/web-platform/tests/custom-elements/v0/instantiating/prototype-is-interface-prototype-object.html new file mode 100644 index 000000000..ad7f454f5 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/prototype-is-interface-prototype-object.html @@ -0,0 +1,44 @@ + + + +If prototype is already an interface prototype object, Document.registerElement() throws a NotSupportedError + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/instantiating/unchanged-attribute.html b/testing/web-platform/tests/custom-elements/v0/instantiating/unchanged-attribute.html new file mode 100644 index 000000000..3baa174cb --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/instantiating/unchanged-attribute.html @@ -0,0 +1,29 @@ + + +Custom element's type is immutable. + + + + + +
+ diff --git a/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-default-namespace.html b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-default-namespace.html new file mode 100644 index 000000000..6a1f532c7 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-default-namespace.html @@ -0,0 +1,43 @@ + + + +Default namespace is HTML namespace + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-duplicate-definition.html b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-duplicate-definition.html new file mode 100644 index 000000000..b3f661c4f --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-duplicate-definition.html @@ -0,0 +1,56 @@ + + + +Check duplicate definition + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-invalid-type.html b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-invalid-type.html new file mode 100644 index 000000000..5f2c09b4b --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-invalid-type.html @@ -0,0 +1,22 @@ + + + +If TYPE is an invalid custom element type, throw SyntaxError + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-local-name-lowercased.html b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-local-name-lowercased.html new file mode 100644 index 000000000..7725e2efa --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-local-name-lowercased.html @@ -0,0 +1,32 @@ + + + +Custom element local name should be converted to lower case if document is an HTML document + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-name-is-null.html b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-name-is-null.html new file mode 100644 index 000000000..2b76818d6 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-name-is-null.html @@ -0,0 +1,40 @@ + + + +If NAME is null then localName must be set to TYPE + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-no-interface-for-name.html b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-no-interface-for-name.html new file mode 100644 index 000000000..6d72d60df --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-no-interface-for-name.html @@ -0,0 +1,26 @@ + + + +If element interface for name doesn't exists then error must be thrown + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace-name-is-null.html b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace-name-is-null.html new file mode 100644 index 000000000..dd6b61059 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace-name-is-null.html @@ -0,0 +1,36 @@ + + + +If namespace is SVG namespace and name is null then error must be thrown + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace.html b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace.html new file mode 100644 index 000000000..497de2919 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace.html @@ -0,0 +1,26 @@ + + + +For SVG prototype namespace is SVG namespace + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-type-name-lowercased.html b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-type-name-lowercased.html new file mode 100644 index 000000000..38dce801c --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/definition-construction-algorithm-type-name-lowercased.html @@ -0,0 +1,41 @@ + + + +Custom element type should be converted to lower case + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/element-registration-algorithm-no-registry.html b/testing/web-platform/tests/custom-elements/v0/registering/element-registration-algorithm-no-registry.html new file mode 100644 index 000000000..6e9c20be3 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/element-registration-algorithm-no-registry.html @@ -0,0 +1,39 @@ + + + +If document has no registry NotSupportedError is thrown + + + + + + + + +
+ + + \ No newline at end of file diff --git a/testing/web-platform/tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-name.html b/testing/web-platform/tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-name.html new file mode 100644 index 000000000..e276e834a --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-name.html @@ -0,0 +1,36 @@ + + + +Custom element local name is the lowercased value of the EXTENDS property, supplied to Document.registerElement() + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-prototype.html b/testing/web-platform/tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-prototype.html new file mode 100644 index 000000000..de397aacd --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-prototype.html @@ -0,0 +1,27 @@ + + + +Test prototype object of a custom element + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag-ref.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag-ref.html new file mode 100644 index 000000000..33c36463c --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag-ref.html @@ -0,0 +1,16 @@ + + +The :unresolved pseudoclass reference file + + + +

Test passes if x-element background below is red

+ + x-element + + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html new file mode 100644 index 000000000..290e5b15c --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html @@ -0,0 +1,23 @@ + + +The :unresolved pseudoclass matching custom tag + + + + + + +

Test passes if x-element background below is red

+ + x-element + + + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag-ref.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag-ref.html new file mode 100644 index 000000000..d49f3d768 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag-ref.html @@ -0,0 +1,16 @@ + + +The :unresolved pseudoclass reference file + + + +

Test passes if x-element background below is yellow

+ + x-element + + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html new file mode 100644 index 000000000..3cd7b41d6 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html @@ -0,0 +1,26 @@ + + +The :unresolved pseudoclass matching custom tag + + + + + + +

Test passes if x-element background below is yellow

+ + x-element + + + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension-ref.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension-ref.html new file mode 100644 index 000000000..90baf9554 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension-ref.html @@ -0,0 +1,16 @@ + + +The :unresolved pseudoclass reference file + + + +

Test passes if x-element background below is yellow

+ + x-element + + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension.html new file mode 100644 index 000000000..65921bd41 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension.html @@ -0,0 +1,33 @@ + + +The :unresolved pseudoclass matching type extension + + + + + + + +

Test passes if x-element background below is yellow

+ + x-element + + + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension-ref.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension-ref.html new file mode 100644 index 000000000..9865f2e39 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension-ref.html @@ -0,0 +1,17 @@ + + +The :unresolved pseudoclass reference file + + + +

Test passes if x-element background below is red

+ + x-element + + + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html new file mode 100644 index 000000000..60f39125a --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html @@ -0,0 +1,23 @@ + + +The :unresolved pseudoclass matching type extension + + + + + + +

Test passes if x-element background below is red

+ + x-element + + + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector-all.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector-all.html new file mode 100644 index 000000000..2ddc2afc2 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector-all.html @@ -0,0 +1,190 @@ + + + +The :unresolved pseudoclass matching with Document.querySelectorAll() + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector.html new file mode 100644 index 000000000..47b7e5c47 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector.html @@ -0,0 +1,161 @@ + + + +The :unresolved pseudoclass matching with Document.querySelector() + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-elements-interface-html-element.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-elements-interface-html-element.html new file mode 100644 index 000000000..492c75b72 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-elements-interface-html-element.html @@ -0,0 +1,56 @@ + + + +Unresolved element interface must be HTMLElement, if the namespace is HTML Namespace + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-elements-interface-html-unknown-element.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-elements-interface-html-unknown-element.html new file mode 100644 index 000000000..70c23d3c9 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-elements-interface-html-unknown-element.html @@ -0,0 +1,53 @@ + + + +Unresolved element interface must be HTMLUnknownElement, if the namespace is neither HTML Namespace nor SVG Namespace + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/registering/unresolved-elements-interface-svg-element.html b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-elements-interface-svg-element.html new file mode 100644 index 000000000..4164b62dc --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/registering/unresolved-elements-interface-svg-element.html @@ -0,0 +1,47 @@ + + + +Unresolved element interface must be SVGElement, if the namespace is SVG Namespace + + + + + + + + + + +
+ + + diff --git a/testing/web-platform/tests/custom-elements/v0/resources/blank.html b/testing/web-platform/tests/custom-elements/v0/resources/blank.html new file mode 100644 index 000000000..2e5697ba1 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/resources/blank.html @@ -0,0 +1,9 @@ + + + + Blank document + + + + + diff --git a/testing/web-platform/tests/custom-elements/v0/resources/import-master-async.html b/testing/web-platform/tests/custom-elements/v0/resources/import-master-async.html new file mode 100644 index 000000000..0ecaafb29 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/resources/import-master-async.html @@ -0,0 +1,10 @@ + + + + Import Master Document (asynchronous) + + + +

Master document body

+ + diff --git a/testing/web-platform/tests/custom-elements/v0/resources/import-master.html b/testing/web-platform/tests/custom-elements/v0/resources/import-master.html new file mode 100644 index 000000000..d91bcb9cd --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/resources/import-master.html @@ -0,0 +1,10 @@ + + + + Import Master Document + + + +

Master document body

+ + diff --git a/testing/web-platform/tests/custom-elements/v0/resources/import.html b/testing/web-platform/tests/custom-elements/v0/resources/import.html new file mode 100644 index 000000000..dddc46701 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/resources/import.html @@ -0,0 +1,9 @@ + + + + Import Document + + +

Import Document body

+ + diff --git a/testing/web-platform/tests/custom-elements/v0/resources/register-and-create-custom-element.html b/testing/web-platform/tests/custom-elements/v0/resources/register-and-create-custom-element.html new file mode 100644 index 000000000..3aabff244 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/resources/register-and-create-custom-element.html @@ -0,0 +1,19 @@ + + + + Register and create custom element + + + + +
+ + + + diff --git a/testing/web-platform/tests/custom-elements/v0/resources/x-element.html b/testing/web-platform/tests/custom-elements/v0/resources/x-element.html new file mode 100644 index 000000000..0c0d2daad --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/resources/x-element.html @@ -0,0 +1,10 @@ + + + + x-element custom element + + + + + + diff --git a/testing/web-platform/tests/custom-elements/v0/resources/x-mathml-element.html b/testing/web-platform/tests/custom-elements/v0/resources/x-mathml-element.html new file mode 100644 index 000000000..3efdc2d00 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/resources/x-mathml-element.html @@ -0,0 +1,12 @@ + + + + Custom element in MathML namespace + + + + + + + + diff --git a/testing/web-platform/tests/custom-elements/v0/resources/x-svg-element.html b/testing/web-platform/tests/custom-elements/v0/resources/x-svg-element.html new file mode 100644 index 000000000..6cea85758 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/resources/x-svg-element.html @@ -0,0 +1,12 @@ + + + + SVG custom element + + + + + + + + diff --git a/testing/web-platform/tests/custom-elements/v0/testcommon.js b/testing/web-platform/tests/custom-elements/v0/testcommon.js new file mode 100644 index 000000000..5cddbe8bc --- /dev/null +++ b/testing/web-platform/tests/custom-elements/v0/testcommon.js @@ -0,0 +1,286 @@ +/* +Distributed under both the W3C Test Suite License [1] and the W3C +3-clause BSD License [2]. To contribute to a W3C Test Suite, see the +policies and contribution forms [3]. + +[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license +[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license +[3] http://www.w3.org/2004/10/27-testcases + */ + +"use strict"; + +var HTML5_ELEMENTS = [ 'a', 'abbr', 'address', 'area', 'article', 'aside', + 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'body', 'br', + 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', + 'command', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', + 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', + 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', + 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', + 'keygen', 'label', 'legend', 'li', 'link', 'map', 'mark', 'menu', + 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', + 'option', 'output', 'p', 'param', 'pre', 'progress', 'q', 'rp', 'rt', + 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', + 'span', 'strong', 'style', 'sub', 'table', 'tbody', 'td', 'textarea', + 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', + 'var', 'video', 'wbr' ]; + +var HTML5_DOCUMENT_ELEMENTS = [ 'html', 'head', 'body' ]; + +var HTML5_TABLE_ELEMENTS = [ 'caption', 'col', 'colgroup', 'tbody', 'td', + 'tfoot', 'th', 'thead', 'tr' ]; + +var EXTENDER_CHARS = [ 0x00B7, 0x02D0, 0x02D1, 0x0387, 0x0640, 0x0E46, 0x0EC6, + 0x3005, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x309D, 0x309E, 0x30FC, + 0x30FD, 0x30FE ]; + +var COMBINING_CHARS = [ 0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, + 0x0307, 0x0308, 0x0309, 0x030A, 0x030B, 0x030C, 0x030D, 0x030E, 0x030F, + 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317, 0x0318, + 0x0319, 0x031A, 0x031B, 0x031C, 0x031D, 0x031E, 0x031F, 0x0320, 0x0321, + 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327, 0x0328, 0x0329, 0x032A, + 0x032B, 0x032C, 0x032D, 0x032E, 0x032F, 0x0330, 0x0331, 0x0332, 0x0333, + 0x0334, 0x0335, 0x0336, 0x0337, 0x0338, 0x0339, 0x033A, 0x033B, 0x033C, + 0x033D, 0x033E, 0x033F, 0x0340, 0x0341, 0x0342, 0x0343, 0x0344, 0x0345, + 0x0360, 0x0361, 0x0483, 0x0484, 0x0485, 0x0486, 0x0591, 0x0592, 0x0593, + 0x0594, 0x0595, 0x0596, 0x0597, 0x0598, 0x0599, 0x05A0, 0x05A1, 0x05A3, + 0x05A4, 0x05A5, 0x05A6, 0x05A7, 0x05A8, 0x05A9, 0x05AA, 0x05AB, 0x05AC, + 0x05AD, 0x05AE, 0x05AF, 0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, + 0x05B6, 0x05B7, 0x05B8, 0x05B9, 0x05BB, 0x05BC, 0x05BD, 0x05BF, 0x05C1, + 0x05C2, 0x05C4, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, 0x0650, 0x0651, + 0x0652, 0x0670, 0x06D6, 0x06D7, 0x06D8, 0x06D9, 0x06DA, 0x06DB, 0x06DC, + 0x06DD, 0x06DE, 0x06DF, 0x06E0, 0x06E1, 0x06E2, 0x06E3, 0x06E4, 0x06E7, + 0x06E8, 0x06EA, 0x06EB, 0x06EC, 0x06ED, 0x0901, 0x0902, 0x0903, 0x093C, + 0x093E, 0x093F, 0x0940, 0x0941, 0x0942, 0x0943, 0x0944, 0x0945, 0x0946, + 0x0947, 0x0948, 0x0949, 0x094A, 0x094B, 0x094C, 0x094D, 0x0951, 0x0952, + 0x0953, 0x0954, 0x0962, 0x0963, 0x0981, 0x0982, 0x0983, 0x09BC, 0x09BE, + 0x09BF, 0x09C0, 0x09C1, 0x09C2, 0x09C3, 0x09C4, 0x09C7, 0x09C8, 0x09CB, + 0x09CC, 0x09CD, 0x09D7, 0x09E2, 0x09E3, 0x0A02, 0x0A3C, 0x0A3E, 0x0A3F, + 0x0A40, 0x0A41, 0x0A42, 0x0A47, 0x0A48, 0x0A4B, 0x0A4C, 0x0A4D, 0x0A70, + 0x0A71, 0x0A81, 0x0A82, 0x0A83, 0x0ABC, 0x0ABE, 0x0ABF, 0x0AC0, 0x0AC1, + 0x0AC2, 0x0AC3, 0x0AC4, 0x0AC5, 0x0AC7, 0x0AC8, 0x0AC9, 0x0ACB, 0x0ACC, + 0x0ACD, 0x0B01, 0x0B02, 0x0B03, 0x0B3C, 0x0B3E, 0x0B3F, 0x0B40, 0x0B41, + 0x0B42, 0x0B43, 0x0B47, 0x0B48, 0x0B4B, 0x0B4C, 0x0B4D, 0x0B56, 0x0B57, + 0x0B82, 0x0B83, 0x0BBE, 0x0BBF, 0x0BC0, 0x0BC1, 0x0BC2, 0x0BC6, 0x0BC7, + 0x0BC8, 0x0BCA, 0x0BCB, 0x0BCC, 0x0BCD, 0x0BD7, 0x0C01, 0x0C02, 0x0C03, + 0x0C3E, 0x0C3F, 0x0C40, 0x0C41, 0x0C42, 0x0C43, 0x0C44, 0x0C46, 0x0C47, + 0x0C48, 0x0C4A, 0x0C4B, 0x0C4C, 0x0C4D, 0x0C55, 0x0C56, 0x0C82, 0x0C83, + 0x0CBE, 0x0CBF, 0x0CC0, 0x0CC1, 0x0CC2, 0x0CC3, 0x0CC4, 0x0CC6, 0x0CC7, + 0x0CC8, 0x0CCA, 0x0CCB, 0x0CCC, 0x0CCD, 0x0CD5, 0x0CD6, 0x0D02, 0x0D03, + 0x0D3E, 0x0D3F, 0x0D40, 0x0D41, 0x0D42, 0x0D43, 0x0D46, 0x0D47, 0x0D48, + 0x0D4A, 0x0D4B, 0x0D4C, 0x0D4D, 0x0D57, 0x0E31, 0x0E34, 0x0E35, 0x0E36, + 0x0E37, 0x0E38, 0x0E39, 0x0E3A, 0x0E47, 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, + 0x0E4C, 0x0E4D, 0x0E4E, 0x0EB1, 0x0EB4, 0x0EB5, 0x0EB6, 0x0EB7, 0x0EB8, + 0x0EB9, 0x0EBB, 0x0EBC, 0x0EC8, 0x0EC9, 0x0ECA, 0x0ECB, 0x0ECC, 0x0ECD, + 0x0F18, 0x0F19, 0x0F35, 0x0F37, 0x0F39, 0x0F3E, 0x0F3F, 0x0F71, 0x0F72, + 0x0F73, 0x0F74, 0x0F75, 0x0F76, 0x0F77, 0x0F78, 0x0F79, 0x0F7A, 0x0F7B, + 0x0F7C, 0x0F7D, 0x0F7E, 0x0F7F, 0x0F80, 0x0F81, 0x0F82, 0x0F83, 0x0F84, + 0x0F86, 0x0F87, 0x0F88, 0x0F89, 0x0F8A, 0x0F8B, 0x0F90, 0x0F91, 0x0F92, + 0x0F93, 0x0F94, 0x0F95, 0x0F97, 0x0F99, 0x0F9A, 0x0F9B, 0x0F9C, 0x0F9D, + 0x0F9E, 0x0F9F, 0x0FA0, 0x0FA1, 0x0FA2, 0x0FA3, 0x0FA4, 0x0FA5, 0x0FA6, + 0x0FA7, 0x0FA8, 0x0FA9, 0x0FAA, 0x0FAB, 0x0FAC, 0x0FAD, 0x0FB1, 0x0FB2, + 0x0FB3, 0x0FB4, 0x0FB5, 0x0FB6, 0x0FB7, 0x0FB9, 0x20D0, 0x20D1, 0x20D2, + 0x20D3, 0x20D4, 0x20D5, 0x20D6, 0x20D7, 0x20D8, 0x20D9, 0x20DA, 0x20DB, + 0x20DC, 0x20E1, 0x302A, 0x302B, 0x302C, 0x302D, 0x302E, 0x302F, 0x3099, + 0x309A ]; + +var BASE_CHARS_SINGLE = [ 0x0386, 0x038C, 0x03DA, 0x03DC, 0x03DE, 0x03E0, + 0x0559, 0x06D5, 0x093D, 0x09B2, 0x0A5E, 0x0A8D, 0x0ABD, 0x0AE0, 0x0B3D, + 0x0B9C, 0x0CDE, 0x0E30, 0x0E84, 0x0E8A, 0x0E8D, 0x0EA5, 0x0EA7, 0x0EB0, + 0x0EBD, 0x1100, 0x1109, 0x113C, 0x113E, 0x1140, 0x114C, 0x114E, 0x1150, + 0x1159, 0x1163, 0x1165, 0x1167, 0x1169, 0x1175, 0x119E, 0x11A8, 0x11AB, + 0x11BA, 0x11EB, 0x11F0, 0x11F9, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2126, + 0x212E ]; + +var BASE_CHARS_RANGES = [ 0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6, + 0x00D8, 0x00F6, 0x00F8, 0x00FF, 0x0100, 0x0131, 0x0134, 0x013E, 0x0141, + 0x0148, 0x014A, 0x017E, 0x0180, 0x01C3, 0x01CD, 0x01F0, 0x01F4, 0x01F5, + 0x01FA, 0x0217, 0x0250, 0x02A8, 0x02BB, 0x02C1, 0x0388, 0x038A, 0x038E, + 0x03A1, 0x03A3, 0x03CE, 0x03D0, 0x03D6, 0x03E2, 0x03F3, 0x0401, 0x040C, + 0x040E, 0x044F, 0x0451, 0x045C, 0x045E, 0x0481, 0x0490, 0x04C4, 0x04C7, + 0x04C8, 0x04CB, 0x04CC, 0x04D0, 0x04EB, 0x04EE, 0x04F5, 0x04F8, 0x04F9, + 0x0531, 0x0556, 0x0561, 0x0586, 0x05D0, 0x05EA, 0x05F0, 0x05F2, 0x0621, + 0x063A, 0x0641, 0x064A, 0x0671, 0x06B7, 0x06BA, 0x06BE, 0x06C0, 0x06CE, + 0x06D0, 0x06D3, 0x06E5, 0x06E6, 0x0905, 0x0939, 0x0958, 0x0961, 0x0985, + 0x098C, 0x098F, 0x0990, 0x0993, 0x09A8, 0x09AA, 0x09B0, 0x09B6, 0x09B9, + 0x09DC, 0x09DD, 0x09DF, 0x09E1, 0x09F0, 0x09F1, 0x0A05, 0x0A0A, 0x0A0F, + 0x0A10, 0x0A13, 0x0A28, 0x0A2A, 0x0A30, 0x0A32, 0x0A33, 0x0A35, 0x0A36, + 0x0A38, 0x0A39, 0x0A59, 0x0A5C, 0x0A72, 0x0A74, 0x0A85, 0x0A8B, 0x0A8F, + 0x0A91, 0x0A93, 0x0AA8, 0x0AAA, 0x0AB0, 0x0AB2, 0x0AB3, 0x0AB5, 0x0AB9, + 0x0B05, 0x0B0C, 0x0B0F, 0x0B10, 0x0B13, 0x0B28, 0x0B2A, 0x0B30, 0x0B32, + 0x0B33, 0x0B36, 0x0B39, 0x0B5C, 0x0B5D, 0x0B5F, 0x0B61, 0x0B85, 0x0B8A, + 0x0B8E, 0x0B90, 0x0B92, 0x0B95, 0x0B99, 0x0B9A, 0x0B9E, 0x0B9F, 0x0BA3, + 0x0BA4, 0x0BA8, 0x0BAA, 0x0BAE, 0x0BB5, 0x0BB7, 0x0BB9, 0x0C05, 0x0C0C, + 0x0C0E, 0x0C10, 0x0C12, 0x0C28, 0x0C2A, 0x0C33, 0x0C35, 0x0C39, 0x0C60, + 0x0C61, 0x0C85, 0x0C8C, 0x0C8E, 0x0C90, 0x0C92, 0x0CA8, 0x0CAA, 0x0CB3, + 0x0CB5, 0x0CB9, 0x0CE0, 0x0CE1, 0x0D05, 0x0D0C, 0x0D0E, 0x0D10, 0x0D12, + 0x0D28, 0x0D2A, 0x0D39, 0x0D60, 0x0D61, 0x0E01, 0x0E2E, 0x0E32, 0x0E33, + 0x0E40, 0x0E45, 0x0E81, 0x0E82, 0x0E87, 0x0E88, 0x0E94, 0x0E97, 0x0E99, + 0x0E9F, 0x0EA1, 0x0EA3, 0x0EAA, 0x0EAB, 0x0EAD, 0x0EAE, 0x0EB2, 0x0EB3, + 0x0EC0, 0x0EC4, 0x0F40, 0x0F47, 0x0F49, 0x0F69, 0x10A0, 0x10C5, 0x10D0, + 0x10F6, 0x1102, 0x1103, 0x1105, 0x1107, 0x110B, 0x110C, 0x110E, 0x1112, + 0x1154, 0x1155, 0x115F, 0x1161, 0x116D, 0x116E, 0x1172, 0x1173, 0x11AE, + 0x11AF, 0x11B7, 0x11B8, 0x11BC, 0x11C2, 0x1E00, 0x1E9B, 0x1EA0, 0x1EF9, + 0x1F00, 0x1F15, 0x1F18, 0x1F1D, 0x1F20, 0x1F45, 0x1F48, 0x1F4D, 0x1F50, + 0x1F57, 0x1F5F, 0x1F7D, 0x1F80, 0x1FB4, 0x1FB6, 0x1FBC, 0x1FC2, 0x1FC4, + 0x1FC6, 0x1FCC, 0x1FD0, 0x1FD3, 0x1FD6, 0x1FDB, 0x1FE0, 0x1FEC, 0x1FF2, + 0x1FF4, 0x1FF6, 0x1FFC, 0x212A, 0x212B, 0x2180, 0x2182, 0x3041, 0x3094, + 0x30A1, 0x30FA, 0x3105, 0x312C, 0xAC00, 0xD7A3 ]; + +var IDEOGRAPHIC_CHARS_SINGLE = [ 0x3007 ]; + +var IDEOGRAPHIC_CHARS_RANGES = [ 0x3021, 0x3029, 0x4E00, 0x9FA5 ]; + +var DIGIT_CHARS_RANGES = [ 0x0030, 0x0039, 0x0660, 0x0669, 0x06F0, 0x06F9, + 0x0966, 0x096F, 0x09E6, 0x09EF, 0x0A66, 0x0A6F, 0x0AE6, 0x0AEF, 0x0B66, + 0x0B6F, 0x0BE7, 0x0BEF, 0x0C66, 0x0C6F, 0x0CE6, 0x0CEF, 0x0D66, 0x0D6F, + 0x0E50, 0x0E59, 0x0ED0, 0x0ED9, 0x0F20, 0x0F29 ]; + +function CharsArray(array) { + this.array = array; +} + +CharsArray.prototype.testEach = function(namingFunction, checkFunction) { + if (this.array != null) { + this.array.forEach(function(value) { + checkFunction(namingFunction(getCharCode(value))); + }); + } +}; + +function CharRangesArray(array) { + this.array = array; +} + +CharRangesArray.prototype.testEach = function(namingFunction, checkFunction) { + if (this.array != null) { + for (var i = 0; i < this.array.length; i += 2) { + var rangeStart = getCharCode(this.array[i]); + var rangeEnd = getCharCode(this.array[i+1]); + for (var c = rangeStart; c <= rangeEnd; c++) { + checkFunction(namingFunction(c)); + } + } + } +}; + +function testCharCode(charCode, namingFunction, checkFunction) { + checkFunction(namingFunction(charCode)); +} + +var extenderChars = new CharsArray(EXTENDER_CHARS); +var combiningChars = new CharsArray(COMBINING_CHARS); +var baseCharsSingle = new CharsArray(BASE_CHARS_SINGLE); +var baseCharsRanges = new CharRangesArray(BASE_CHARS_RANGES); +var ideographicCharsSingle = new CharsArray(IDEOGRAPHIC_CHARS_SINGLE); +var ideographicCharsRanges = new CharRangesArray(IDEOGRAPHIC_CHARS_RANGES); +var digitCharsRanges = new CharRangesArray(DIGIT_CHARS_RANGES); + +// Helper function, which verifies that given custom element name is valid +function checkValidName(name) { + var doc = newHTMLDocument(); + try { + doc.registerElement(name); + } catch (e) { + assert_unreached('The custom element name \'' + name + + '\' should be registered without errors'); + } +} + +// Helper function, which verifies that given custom element name is invalid +function checkInvalidName(name) { + var doc = newHTMLDocument(); + assert_throws('SyntaxError', function() { + doc.registerElement(name); + }, 'Registering invalid custom element name \'' + name + '\' should fail'); +} + +// Helper function to extract character code from given object +// expected input: either charater code or one character long string. +function getCharCode(c) { + if (typeof(c) === 'string') { + assert_equals(1, c.length, 'Error in test: input string should be one character long'); + c = c.charCodeAt(0); + } + assert_equals('number', typeof(c), 'Error in test: unexpected type for charater code'); + return c; +} + +var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; +var SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; + +function newHTMLDocument() { + return document.implementation.createHTMLDocument('Test Document'); +} + +// Creates new iframe and loads given url into it. +// Returns reference to created iframe. +function newIFrame(url) { + assert_not_equals(url, null, 'argument url should not be null'); + var iframe = document.createElement('iframe'); + iframe.src = url; + document.body.appendChild(iframe); + return iframe; +} + +// Creates new iframe and loads given url into it. +// Function f is bound to the iframe's onload event. +// Function f receives iframe's contentDocument as argument. +// The iframe is disposed after function f is executed. +function testInIFrame(url, f, testName, testProps) { + var t = async_test(testName, testProps); + t.step(function() { + var iframe = newIFrame(url); + iframe.onload = t.step_func(function() { + try { + f(iframe.contentDocument); + t.done(); + } finally { + iframe.remove(); + } + }); + }); +} + +// Helper function to create a prototype for custom element +// with predefined callbacks +function newHTMLElementPrototype() { + return newCustomElementPrototype(HTMLElement.prototype); +} + +// Helper function to create a prototype for custom element +// with predefined callbacks +function newCustomElementPrototype(parent) { + var proto = Object.create(parent); + proto.createdCallbackThis = null; + proto.createdCallbackCalledCounter = 0; + + proto.attachedCallbackThis = null; + proto.attachedCallbackCalledCounter = 0; + + proto.detachedCallbackThis = null; + proto.detachedCallbackCalledCounter = 0; + + proto.attributeChangedCallbackThis = null; + proto.attributeChangedCallbackCalledCounter = 0; + proto.attributeChangedCallbackArgs = null; + + proto.createdCallback = function() { + proto.createdCallbackThis = this; + proto.createdCallbackCalledCounter++; + }; + proto.attachedCallback = function() { + proto.attachedCallbackThis = this; + proto.attachedCallbackCalledCounter++; + }; + proto.detachedCallback = function() { + proto.detachedCallbackThis = this; + proto.detachedCallbackCalledCounter++; + }; + proto.attributeChangedCallback = function(arg1, arg2, arg3) { + proto.attributeChangedCallbackThis = this; + proto.attributeChangedCallbackCalledCounter++; + proto.attributeChangedCallbackArgs = [arg1, arg2, arg3]; + }; + return proto; +} -- cgit v1.2.3