| Index: third_party/WebKit/LayoutTests/custom-elements/spec/doc-without-browsing-context.html
|
| diff --git a/third_party/WebKit/LayoutTests/custom-elements/spec/doc-without-browsing-context.html b/third_party/WebKit/LayoutTests/custom-elements/spec/doc-without-browsing-context.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fbaf1dc7277c7b923f7517f99042aa8aa8f02c31
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/custom-elements/spec/doc-without-browsing-context.html
|
| @@ -0,0 +1,53 @@
|
| +<!DOCTYPE html>
|
| +<title>Custom Elements: create an element inside a template </title>
|
| +<link rel="help" href="https://dom.spec.whatwg.org/#concept-create-element">
|
| +<script src="../../resources/testharness.js"></script>
|
| +<script src="../../resources/testharnessreport.js"></script>
|
| +<script src="resources/custom-elements-helpers.js"></script>
|
| +<iframe id="iframe"></iframe>
|
| +<script>
|
| +'use strict';
|
| +
|
| +// A document`s browsing context only afffects the look up result of custom element definition
|
| +// https://html.spec.whatwg.org/#look-up-a-custom-element-definition
|
| +// There are two places where we need to look up a custom element definition:
|
| +// 1. creating an element
|
| +// https://dom.spec.whatwg.org/#concept-create-element
|
| +// 2. trying to upgrade an element
|
| +// https://html.spec.whatwg.org/#concept-try-upgrade
|
| +// The previous observation leads to the following behaviours:
|
| +// 1. an element in a document without browsing context should not be upgraded
|
| +// 2. a custom element cannot be created in a document without browsing context
|
| +// 3. an already "defined" custom element should remain "defined" after being inserted
|
| +// into a document without browsing context
|
| +
|
| +test_with_window(w => {
|
| + let doc_without_browsing_context = w.document.implementation.createHTMLDocument();
|
| + let element = doc_without_browsing_context.createElement('a-a');
|
| + w.customElements.define('a-a', class extends w.HTMLElement {});
|
| + doc_without_browsing_context.body.appendChild(element);
|
| + assert_true(element.matches(':not(:defined)'));
|
| + w.document.body.appendChild(element);
|
| + assert_true(element.matches(':defined'));
|
| +}, 'An element should not upgraded in a document without browsing context');
|
| +
|
| +test_with_window(w => {
|
| + let doc_without_browsing_context = w.document.implementation.createHTMLDocument();
|
| + w.customElements.define('b-b', class extends w.HTMLElement {});
|
| + let e1 = doc_without_browsing_context.createElement('b-b');
|
| + assert_true(e1.matches(':not(:defined)'));
|
| + let e2 = w.document.createElement('b-b');
|
| + assert_true(e2.matches(':defined'));
|
| +}, 'Custom element should not be created in a document without browsing context');
|
| +
|
| +test_with_window(w => {
|
| + w.customElements.define('a-a', class extends w.HTMLElement {});
|
| + let element = w.document.createElement('a-a');
|
| + assert_true(element.matches(':defined'));
|
| + let doc_without_browsing_context = w.document.implementation.createHTMLDocument();
|
| + doc_without_browsing_context.body.appendChild(element);
|
| + let inserted_element = doc_without_browsing_context.body.querySelector('a-a');
|
| + assert_true(inserted_element.matches(':defined'));
|
| +}, 'Inserting an already defined custom element into a document without browsing context ' +
|
| + 'should not change its state');
|
| +</script>
|
|
|