| Index: LayoutTests/imported/web-platform-tests/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/non-element-nodes-001.html
|
| diff --git a/LayoutTests/imported/web-platform-tests/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/non-element-nodes-001.html b/LayoutTests/imported/web-platform-tests/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/non-element-nodes-001.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c58072fa7e2170eefb5f50520595ad551376d5c7
|
| --- /dev/null
|
| +++ b/LayoutTests/imported/web-platform-tests/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/non-element-nodes-001.html
|
| @@ -0,0 +1,136 @@
|
| +<!DOCTYPE html>
|
| +<!--
|
| +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
|
| + -->
|
| +<html>
|
| +<head>
|
| +<title>Shadow DOM Test: Non-element node cannot be a shadow host</title>
|
| +<link rel="author" title="Aleksei Yu. Semenov" href="mailto:sgrekhov@unipro.ru">
|
| +<link rel="author" title="Mikhail Fursov" href="mailto:mfursov@unipro.ru">
|
| +<link rel="author" title="Yuta Kitamura" href="mailto:yutak@google.com">
|
| +<link rel="help" href="http://www.w3.org/TR/2013/WD-shadow-dom-20130514/#partial-element-methods">
|
| +<meta name="assert" content="Nodes, that are not elements, are not allowed to become shadow hosts.">
|
| +<script src="../../../../../../resources/testharness.js"></script>
|
| +<script src="../../../../../../resources/testharnessreport.js"></script>
|
| +<script src="../../../testcommon.js"></script>
|
| +<link rel="stylesheet" href="../../../../../../resources/testharness.css">
|
| +</head>
|
| +<body>
|
| +<div id="log"></div>
|
| +<script>
|
| +var XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';
|
| +
|
| +function createTextNode() {
|
| + var doc = document.implementation.createHTMLDocument('Test Document');
|
| + var node = doc.createTextNode('Text Node');
|
| + doc.body.appendChild(node);
|
| + return node;
|
| +}
|
| +
|
| +function createCommentNode() {
|
| + var doc = document.implementation.createHTMLDocument('Test Document');
|
| + var node = doc.createComment('Comment Node');
|
| + doc.body.appendChild(node);
|
| + return node;
|
| +}
|
| +
|
| +function createCDATASectionNode() {
|
| + var doc = document.implementation.createDocument(XHTML_NAMESPACE, 'html');
|
| + var node = doc.createCDATASection('CDATA Section Node');
|
| + doc.documentElement.appendChild(node);
|
| + return node;
|
| +}
|
| +
|
| +function createAttributeNode() {
|
| + var doc = document.implementation.createDocument(XHTML_NAMESPACE, 'html');
|
| + var node = doc.createAttribute('attribute-node');
|
| + doc.documentElement.setAttributeNode(node);
|
| + return node;
|
| +}
|
| +
|
| +function createDocumentFragmentNode() {
|
| + var doc = document.implementation.createDocument(XHTML_NAMESPACE, 'html');
|
| + var node = doc.createDocumentFragment();
|
| + doc.documentElement.appendChild(node);
|
| + return node;
|
| +}
|
| +
|
| +function createEntityReferenceNode() {
|
| + var doc = document.implementation.createDocument(XHTML_NAMESPACE, 'html');
|
| + var node = doc.createEntityReference('entity-reference-node');
|
| + doc.documentElement.appendChild(node);
|
| + return node;
|
| +}
|
| +
|
| +function createProcessingInstructionNode() {
|
| + var doc = document.implementation.createDocument(XHTML_NAMESPACE, 'html');
|
| + var node = doc.createProcessingInstruction('processing-instruction-node');
|
| + doc.documentElement.appendChild(node);
|
| + return node;
|
| +}
|
| +
|
| +function createDocumentNode() {
|
| + return document.implementation.createDocument(XHTML_NAMESPACE, 'html');
|
| +}
|
| +
|
| +var factories = [
|
| + ['a text node', createTextNode],
|
| + ['a comment node', createCommentNode],
|
| + ['a CDATA section node', createCDATASectionNode],
|
| + ['an attribute node', createAttributeNode],
|
| + ['a document fragment node', createDocumentFragmentNode],
|
| + ['an entity reference node', createEntityReferenceNode],
|
| + ['a processing instruction node', createProcessingInstructionNode],
|
| + ['a document node', createDocumentNode]
|
| +];
|
| +
|
| +// Non-element nodes should not have createShadowRoot() method.
|
| +var noCreateShadowRootTestParameters = factories.map(
|
| + function (nameAndFactory) {
|
| + var name = nameAndFactory[0];
|
| + var factory = nameAndFactory[1];
|
| + return [
|
| + 'Checks whether ' + name + ' does not have createShadowRoot() ' +
|
| + 'method.',
|
| + factory
|
| + ];
|
| + });
|
| +
|
| +function testNoCreateShadowRoot(factory) {
|
| + var node = factory();
|
| + assert_equals(node.createShadowRoot, undefined);
|
| +}
|
| +
|
| +generate_tests(testNoCreateShadowRoot, noCreateShadowRootTestParameters);
|
| +
|
| +// When createShadowRoot() is called on non-element nodes, it should throw
|
| +// InvalidNodeTypeError (step 1 of section 10.2.2).
|
| +function testThrowInvalidNodeTypeError(factory) {
|
| + var node = factory();
|
| + node.createShadowRoot = Element.prototype.createShadowRoot;
|
| + assert_throws('InvalidNodeTypeError',
|
| + function () { node.createShadowRoot(); });
|
| +}
|
| +
|
| +var throwInvalidNodeTypeErrorTestParameters = factories.map(
|
| + function (nameAndFactory) {
|
| + var name = nameAndFactory[0];
|
| + var factory = nameAndFactory[1];
|
| + return [
|
| + 'When createShadowRoot() is called on ' + name + ', ' +
|
| + 'InvalidNodeTypeError should be thrown.',
|
| + factory
|
| + ];
|
| + });
|
| +
|
| +generate_tests(testThrowInvalidNodeTypeError,
|
| + throwInvalidNodeTypeErrorTestParameters);
|
| +</script>
|
| +</body>
|
| +</html>
|
|
|