blob: d4ea1ebd4602686fd2e7b4410b52b717715882aa [file] [log] [blame]
(async function(testRunner) {
var {page, session, dp} = await testRunner.startHTML(`
<head>
<style>
.relayout-boundary {
width: 200px;
height: 40px;
overflow: hidden;
position: relative;
}
</style>
</head>
<body>
<div id='outer'></div>
<div class='relayout-boundary' id='boundary'>
<div id='inner'></div>
<div style='display: none'>
<div id='hidden'></div>
</div>
</div>
</body>
`, 'Tests DOM.getRelayoutBoundary method.');
var DOMHelper = await testRunner.loadScript('../resources/dom-helper.js');
var NodeTracker = await testRunner.loadScript('../resources/node-tracker.js');
var nodeTracker = new NodeTracker(dp);
var response = await dp.DOM.getDocument();
nodeTracker.addDocumentNode(response.result.root);
await dp.DOM.requestChildNodes({nodeId: response.result.root.nodeId, depth: -1});
var nodeByIdAttribute = {};
for (var node of nodeTracker.nodes())
nodeByIdAttribute[DOMHelper.attributes(node).get('id')] = node;
await dumpRelayoutBoundary(nodeByIdAttribute['outer']);
await dumpRelayoutBoundary(nodeByIdAttribute['boundary']);
await dumpRelayoutBoundary(nodeByIdAttribute['inner']);
await dumpRelayoutBoundary(nodeByIdAttribute['hidden']);
testRunner.completeTest();
function nodeLabel(node) {
var result = node.localName;
var id = DOMHelper.attributes(node).get('id');
return result + (id ? '#' + id : '');
}
async function dumpRelayoutBoundary(node) {
var response = await dp.DOM.getRelayoutBoundary({nodeId: node.nodeId});
var text;
if (response.error) {
text = response.error.message;
} else {
var boundaryNode = nodeTracker.nodeForId(response.result.nodeId);
text = boundaryNode ? nodeLabel(boundaryNode) : 'null';
}
testRunner.log('Relayout boundary for ' + nodeLabel(node) + ' is: ' + text);
}
});