diff options
Diffstat (limited to 'dom/tests/mochitest/webcomponents/test_document_shared_registry.html')
-rw-r--r-- | dom/tests/mochitest/webcomponents/test_document_shared_registry.html | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/dom/tests/mochitest/webcomponents/test_document_shared_registry.html b/dom/tests/mochitest/webcomponents/test_document_shared_registry.html new file mode 100644 index 000000000..76c2ea8ec --- /dev/null +++ b/dom/tests/mochitest/webcomponents/test_document_shared_registry.html @@ -0,0 +1,79 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=783129 +--> +<head> + <title>Test shared registry for associated HTML documents.</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<div id="container"></div> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=783129">Bug 783129</a> +<script> +var container = document.getElementById("container"); + +function createdCallbackFromMainDoc() { + var createdCallbackCalled = false; + var assocDoc = document.implementation.createHTMLDocument(); + + var proto = Object.create(HTMLElement.prototype); + proto.createdCallback = function() { + is(createdCallbackCalled, false, "created callback should only be called once in this tests."); + createdCallbackCalled = true; + runNextTest(); + }; + + assocDoc.registerElement("x-associated-doc-callback-elem", { prototype: proto }); + document.createElement("x-associated-doc-callback-elem"); +} + +function createdCallbackFromDocHTMLNamespace() { + var createdCallbackCalled = false; + var assocDoc = document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", null); + var somediv = assocDoc.createElement("div"); + + var proto = Object.create(HTMLElement.prototype); + proto.createdCallback = function() { + is(createdCallbackCalled, false, "created callback should only be called once in this tests."); + createdCallbackCalled = true; + runNextTest(); + }; + + assocDoc.registerElement("x-assoc-doc-with-ns-callback-elem", { prototype: proto }); + document.createElement("x-assoc-doc-with-ns-callback-elem"); +} + +function registerNoRegistryDoc() { + var assocDoc = document.implementation.createDocument(null, "html"); + try { + assocDoc.registerElement("x-dummy", { prototype: Object.create(HTMLElement.prototype) }); + ok(false, "Registring element in document without registry should throw."); + } catch (ex) { + ok(true, "Registring element in document without registry should throw."); + } + + runNextTest(); +} + +function runNextTest() { + if (testFunctions.length > 0) { + var nextTestFunction = testFunctions.shift(); + nextTestFunction(); + } +} + +var testFunctions = [ + createdCallbackFromMainDoc, + createdCallbackFromDocHTMLNamespace, + registerNoRegistryDoc, + SimpleTest.finish +]; + +SimpleTest.waitForExplicitFinish(); + +runNextTest(); +</script> +</body> +</html> |