blob: 7a1ecb26cf218b3a9557c20ae96801cf223ac2d2 [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 content-box and border-box content area dimensions are handled property by the Metrics pane.\n`);
await TestRunner.loadModule('elements_test_runner');
await TestRunner.showPanel('elements');
await TestRunner.loadHTML(`
<style>
#border-box {
box-sizing: border-box;
width: 55px;
height: 55px;
margin: 1px;
padding: 7px;
border: 3px solid black;
}
#content-box {
box-sizing: content-box;
width: 55px;
height: 55px;
margin: 1px;
padding: 7px;
border: 3px solid black;
}
</style>
<div id="content-box">content-box</div>
<div id="border-box">border-box</div>
<div id="output-content">zzz</div>
<div id="output-border">zzz</div>
`);
await TestRunner.evaluateInPagePromise(`
function dumpDimensions()
{
var element;
element = document.getElementById("content-box");
document.getElementById("output-content").textContent = "content-box rendered dimensions: " + element.offsetWidth + " x " + element.offsetHeight;
element = document.getElementById("border-box");
document.getElementById("output-border").textContent = "border-box rendered dimensions: " + element.offsetWidth + " x " + element.offsetHeight;
}
`);
var contentWidthElement;
var contentHeightElement;
function getChildTextByClassName(element, className) {
var children = element.children;
for (var i = 0; i < children.length; ++i) {
if (children[i].classList && children[i].classList.contains(className))
return children[i].textContent;
}
return null;
}
function dumpMetrics(sectionElement) {
var marginElement = sectionElement.getElementsByClassName('margin')[0];
var borderElement = sectionElement.getElementsByClassName('border')[0];
var paddingElement = sectionElement.getElementsByClassName('padding')[0];
var contentDimensions = sectionElement.getElementsByClassName('content')[0].getElementsByTagName('span');
TestRunner.addResult(
'margin: ' + getChildTextByClassName(marginElement, 'top') + ' ' +
getChildTextByClassName(marginElement, 'right') + ' ' + getChildTextByClassName(marginElement, 'bottom') + ' ' +
getChildTextByClassName(marginElement, 'left'));
TestRunner.addResult(
'border: ' + getChildTextByClassName(borderElement, 'top') + ' ' +
getChildTextByClassName(borderElement, 'right') + ' ' + getChildTextByClassName(borderElement, 'bottom') + ' ' +
getChildTextByClassName(borderElement, 'left'));
TestRunner.addResult(
'padding: ' + getChildTextByClassName(paddingElement, 'top') + ' ' +
getChildTextByClassName(paddingElement, 'right') + ' ' + getChildTextByClassName(paddingElement, 'bottom') +
' ' + getChildTextByClassName(paddingElement, 'left'));
TestRunner.addResult('content: ' + contentDimensions[0].textContent + ' x ' + contentDimensions[1].textContent);
}
function createDoubleClickEvent() {
var event = document.createEvent('MouseEvent');
event.initMouseEvent('dblclick', true, true, null, 2, 0, 0, 0, 0, false, false, false, false, 0, null);
return event;
}
var section = UI.panels.elements._metricsWidget;
TestRunner.runTestSuite([
function testBorderBoxInit1(next) {
ElementsTestRunner.selectNodeAndWaitForStyles('border-box', next);
},
async function testInitialBorderBoxMetrics(next) {
await section.doUpdate();
var spanElements = section.contentElement.getElementsByClassName('content')[0].getElementsByTagName('span');
contentWidthElement = spanElements[0];
contentHeightElement = spanElements[1];
TestRunner.addResult('=== Initial border-box ===');
dumpMetrics(section.contentElement);
contentWidthElement.dispatchEvent(createDoubleClickEvent());
contentWidthElement.textContent = '60';
contentWidthElement.dispatchEvent(TestRunner.createKeyEvent('Enter'));
TestRunner.deprecatedRunAfterPendingDispatches(next);
},
function testModifiedBorderBoxMetrics(next) {
TestRunner.addResult('=== Modified border-box ===');
dumpMetrics(section.contentElement);
next();
},
function testContentBoxInit1(next) {
ElementsTestRunner.selectNodeWithId('content-box', next);
},
async function testInitialContentBoxMetrics(next) {
await section.doUpdate();
var spanElements = section.contentElement.getElementsByClassName('content')[0].getElementsByTagName('span');
contentWidthElement = spanElements[0];
contentHeightElement = spanElements[1];
TestRunner.addResult('=== Initial content-box ===');
dumpMetrics(section.contentElement);
contentWidthElement.dispatchEvent(createDoubleClickEvent());
contentWidthElement.textContent = '60';
contentWidthElement.dispatchEvent(TestRunner.createKeyEvent('Enter'));
TestRunner.deprecatedRunAfterPendingDispatches(next);
next();
},
function testModifiedContentBoxMetrics(next) {
function callback() {
next();
}
TestRunner.addResult('=== Modified content-box ===');
dumpMetrics(section.contentElement);
TestRunner.evaluateInPage('dumpDimensions()', callback);
}
]);
})();