blob: 5d0bff4a97b8d98c29f144d0f3d9972d1eb705f4 [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(`Tests that elements panel updates dom tree structure upon changes to characters.\n`);
await TestRunner.loadModule('elements_test_runner');
await TestRunner.showPanel('elements');
await TestRunner.loadHTML(`
<div id="node">Foo</div>
<div id="rangenode">Lorem ipsum dolor sit amet</div>
`);
await TestRunner.evaluateInPagePromise(`
function modifyChars()
{
var node = document.getElementById("node");
node.firstChild.textContent = "Bar";
}
function modifyViaRange()
{
var range = document.createRange();
var referenceNode = document.getElementById("rangenode").firstChild;
range.selectNode(referenceNode);
range.setStart(referenceNode, 9);
range.setEnd(referenceNode, 9 + 5);
range.deleteContents();
var span = range.startContainer.ownerDocument.createElement("span");
span.innerHTML = "test";
range.insertNode(span);
}
`);
var targetNode;
TestRunner.runTestSuite([
function testDumpInitial(next) {
function callback(node) {
targetNode = node;
TestRunner.addResult('========= Original for normal mutation ========');
ElementsTestRunner.dumpElementsTree(targetNode);
next();
}
ElementsTestRunner.selectNodeWithId('node', callback);
},
function testSetAttribute(next) {
function callback() {
TestRunner.addResult('===== Mutated text node =====');
ElementsTestRunner.dumpElementsTree(targetNode);
next();
}
TestRunner.evaluateInPage('modifyChars()', callback);
},
function testModifyViaRange(next) {
function callback() {
TestRunner.addResult('===== Contents modified via Range =====');
ElementsTestRunner.dumpElementsTree(targetNode);
next();
}
function expandCallback() {
ElementsTestRunner.expandElementsTree(callback);
}
function selectCallback(node) {
targetNode = node;
TestRunner.addResult('========= Original for Range mutation ========');
ElementsTestRunner.dumpElementsTree(targetNode);
TestRunner.evaluateInPage('modifyViaRange()', expandCallback);
}
ElementsTestRunner.selectNodeWithId('rangenode', selectCallback);
}
]);
})();