61 lines
1.6 KiB
HTML
61 lines
1.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Custom elements: Range APIs should invoke constructor in tree order</title>
|
|
<meta name="author" title="Edgar Chen" href="mailto:echen@mozilla.com">
|
|
<link rel="help" href="https://html.spec.whatwg.org/multipage/scripting.html#concept-upgrade-an-element">
|
|
<link rel="help" href="https://dom.spec.whatwg.org/#concept-create-element">
|
|
<link rel="help" href="https://dom.spec.whatwg.org/#concept-range-extract">
|
|
<link rel="help" href="https://dom.spec.whatwg.org/#concept-range-clone">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
</head>
|
|
<body>
|
|
<div id="log"></div>
|
|
|
|
<c-e id="root">
|
|
<c-e id="root-0">
|
|
<c-e id="root-0-0">
|
|
<c-e id="root-0-0-0"></c-e>
|
|
<span id="start"></span>
|
|
</c-e>
|
|
</c-e>
|
|
<c-e id="root-1"></c-e>
|
|
<span id="end"></span>
|
|
</c-e>
|
|
|
|
<script>
|
|
|
|
var logs = [];
|
|
class CE extends HTMLElement {
|
|
constructor() {
|
|
super();
|
|
logs.push(this.id);
|
|
}
|
|
}
|
|
customElements.define('c-e', CE);
|
|
|
|
function getRange() {
|
|
const range = new Range();
|
|
range.setStart(document.getElementById('start'), 0);
|
|
range.setEnd(document.getElementById('end'), 0);
|
|
return range;
|
|
}
|
|
|
|
test(function () {
|
|
// Clear log for testing.
|
|
logs = [];
|
|
getRange().cloneContents();
|
|
assert_array_equals(logs, ['root-0', 'root-0-0', 'root-1']);
|
|
}, 'Range.cloneContents should invoke constructor in tree order');
|
|
|
|
test(function () {
|
|
// Clear log for testing.
|
|
logs = [];
|
|
getRange().extractContents();
|
|
assert_array_equals(logs, ['root-0', 'root-0-0']);
|
|
}, 'Range.extractContents should invoke constructor in tree order');
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|