| Index: third_party/WebKit/LayoutTests/imported/wpt/custom-elements/adopted-callback.html
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/custom-elements/adopted-callback.html b/third_party/WebKit/LayoutTests/imported/wpt/custom-elements/adopted-callback.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2df100301e9821d17220646f66a9336aa1752f1e
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/custom-elements/adopted-callback.html
|
| @@ -0,0 +1,135 @@
|
| +<!DOCTYPE html>
|
| +<html>
|
| +<head>
|
| +<title>Custom Elements: adoptedCallback</title>
|
| +<meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org">
|
| +<meta name="assert" content="adoptedCallback must be enqueued whenever custom element is adopted into a new document">
|
| +<link rel="help" href="https://w3c.github.io/webcomponents/spec/custom/#dfn-connected-callback">
|
| +<script src="/resources/testharness.js"></script>
|
| +<script src="/resources/testharnessreport.js"></script>
|
| +<script src="./resources/document-types.js"></script>
|
| +</head>
|
| +<body>
|
| +<div id="log"></div>
|
| +<script>
|
| +
|
| +var calls = [];
|
| +class MyCustomElement extends HTMLElement {
|
| + connectedCallback() { calls.push('connected'); }
|
| + adoptedCallback(oldDocument, newDocument) { calls.push('adopted'); calls.push(oldDocument); calls.push(newDocument); }
|
| + disconnectedCallback() { calls.push('disconnected'); }
|
| +}
|
| +customElements.define('my-custom-element', MyCustomElement);
|
| +
|
| +test(function () {
|
| + var instance = document.createElement('my-custom-element');
|
| + calls = [];
|
| + document.body.appendChild(instance);
|
| + assert_array_equals(calls, ['connected']);
|
| +}, 'Inserting a custom element into the owner document must not enqueue and invoke adoptedCallback');
|
| +
|
| +DocumentTypes.forEach(function (entry) {
|
| + if (entry.isOwner)
|
| + return;
|
| +
|
| + var documentName = entry.name;
|
| + var getDocument = entry.create;
|
| +
|
| + promise_test(function () {
|
| + return getDocument().then(function (doc) {
|
| + var instance = document.createElement('my-custom-element');
|
| + calls = [];
|
| + doc.documentElement.appendChild(instance);
|
| + assert_array_equals(calls, ['adopted', document, doc, 'connected']);
|
| + });
|
| + }, 'Inserting a custom element into a ' + documentName + ' must enqueue and invoke adoptedCallback');
|
| +
|
| + promise_test(function () {
|
| + return getDocument().then(function (doc) {
|
| + var instance = document.createElement('my-custom-element');
|
| + document.body.appendChild(instance);
|
| + calls = [];
|
| + doc.documentElement.appendChild(instance);
|
| + assert_array_equals(calls, ['disconnected', 'adopted', document, doc, 'connected']);
|
| + });
|
| + }, 'Moving a custom element from the owner document into a ' + documentName + ' must enqueue and invoke adoptedCallback');
|
| +
|
| + promise_test(function () {
|
| + return getDocument().then(function (doc) {
|
| + var instance = document.createElement('my-custom-element');
|
| + var parent = document.createElement('div');
|
| + parent.appendChild(instance);
|
| + calls = [];
|
| + doc.documentElement.appendChild(parent);
|
| + assert_array_equals(calls, ['adopted', document, doc, 'connected']);
|
| + });
|
| + }, 'Inserting an ancestor of custom element into a ' + documentName + ' must enqueue and invoke adoptedCallback');
|
| +
|
| + promise_test(function () {
|
| + return getDocument().then(function (doc) {
|
| + var instance = document.createElement('my-custom-element');
|
| + var parent = document.createElement('div');
|
| + parent.appendChild(instance);
|
| + document.body.appendChild(parent);
|
| + calls = [];
|
| + doc.documentElement.appendChild(parent);
|
| + assert_array_equals(calls, ['disconnected', 'adopted', document, doc, 'connected']);
|
| + });
|
| + }, 'Moving an ancestor of custom element from the owner document into a ' + documentName + ' must enqueue and invoke adoptedCallback');
|
| +
|
| + promise_test(function () {
|
| + return getDocument().then(function (doc) {
|
| + var instance = document.createElement('my-custom-element');
|
| + var host = doc.createElementNS('http://www.w3.org/1999/xhtml', 'div');
|
| + var shadowRoot = host.attachShadow({mode: 'closed'});
|
| + doc.documentElement.appendChild(host);
|
| +
|
| + calls = [];
|
| + shadowRoot.appendChild(instance);
|
| + assert_array_equals(calls, ['adopted', document, doc, 'connected']);
|
| + });
|
| + }, 'Inserting a custom element into a shadow tree in a ' + documentName + ' must enqueue and invoke adoptedCallback');
|
| +
|
| + promise_test(function () {
|
| + return getDocument().then(function (doc) {
|
| + var instance = document.createElement('my-custom-element');
|
| + var host = document.createElement('div');
|
| + var shadowRoot = host.attachShadow({mode: 'closed'});
|
| + shadowRoot.appendChild(instance);
|
| +
|
| + calls = [];
|
| + doc.documentElement.appendChild(host);
|
| + assert_array_equals(calls, ['adopted', document, doc, 'connected']);
|
| + });
|
| + }, 'Inserting the shadow host of a custom element into a ' + documentName + ' must enqueue and invoke adoptedCallback');
|
| +
|
| + promise_test(function () {
|
| + return getDocument().then(function (doc) {
|
| + var instance = document.createElement('my-custom-element');
|
| + var host = document.createElement('div');
|
| + var shadowRoot = host.attachShadow({mode: 'closed'});
|
| + shadowRoot.appendChild(instance);
|
| + document.body.appendChild(host);
|
| +
|
| + calls = [];
|
| + doc.documentElement.appendChild(host);
|
| + assert_array_equals(calls, ['disconnected', 'adopted', document, doc, 'connected']);
|
| + });
|
| + }, 'Moving the shadow host of a custom element from the owner document into a ' + documentName + ' must enqueue and invoke adoptedCallback');
|
| +
|
| + promise_test(function () {
|
| + return getDocument().then(function (doc) {
|
| + var instance = document.createElement('my-custom-element');
|
| + var host = doc.createElementNS('http://www.w3.org/1999/xhtml', 'div');
|
| + var shadowRoot = host.attachShadow({mode: 'closed'});
|
| +
|
| + calls = [];
|
| + shadowRoot.appendChild(instance);
|
| + assert_array_equals(calls, ['adopted', document, doc]);
|
| + });
|
| + }, 'Inserting a custom element into a detached shadow tree that belongs to a ' + documentName + ' must enqueue and invoke adoptedCallback');
|
| +});
|
| +
|
| +</script>
|
| +</body>
|
| +</html>
|
|
|