blob: 183fe52ff4e9d9b55c51dbb4042b343021ee71c8 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(`This test checks dom extensions.\n`);
TestRunner.runTestSuite([
function traverseNextNodeInShadowDom(next) {
function createSlot(parent, name) {
const slot = parent.createChild('slot');
if (name)
slot.name = name;
return slot;
}
function createChild(parent, tagName, name, text = '') {
const child = parent.createChild(tagName, name);
if (name)
child.slot = name;
child.textContent = text;
return child;
}
var component1 = document.createElement('div');
component1.classList.add('component1');
var shadow1 = component1.attachShadow({mode: 'open'});
createChild(component1, 'div', 'component1-content', 'text 1');
createChild(component1, 'div', 'component2-content', 'text 2');
createChild(component1, 'span', undefined, 'text 3');
createChild(component1, 'span', 'component1-content', 'text 4');
var shadow1Content = document.createElement('div');
shadow1Content.classList.add('shadow-component1');
shadow1.appendChild(shadow1Content);
createSlot(shadow1Content, 'component1-content');
createSlot(shadow1Content);
var component2 = shadow1Content.createChild('div', 'component2');
var shadow2 = component2.attachShadow({mode: 'open'});
createSlot(component2, 'component2-content');
createChild(
component2, 'div', 'component2-content', 'component2 light dom text');
var shadow2Content = document.createElement('div');
shadow2Content.classList.add('shadow-component1');
shadow2.appendChild(shadow2Content);
var midDiv = createChild(shadow2Content, 'div', 'mid-div');
createChild(midDiv, 'div', undefined, 'component2-text');
createSlot(midDiv);
createSlot(midDiv, 'component2-content');
var node = component1;
while ((node = node.traverseNextNode(component1))) {
if (node.nodeType === Node.TEXT_NODE)
TestRunner.addResult(node.nodeValue);
else
TestRunner.addResult(node.nodeName + (node.className ? '.' + node.className : ''));
}
next();
},
]);
})();