blob: d73fd0ec52789a76b2cf882635f3695b263d8cef [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 how widget minimum size works.\n`);
function showRootSplitWidget(splitWidget) {
splitWidget.element.style.position = 'absolute';
splitWidget.element.style.top = '0';
splitWidget.element.style.left = '0';
splitWidget.element.style.height = '500px';
splitWidget.element.style.width = '500px';
splitWidget.markAsRoot();
splitWidget.show(document.body);
return splitWidget;
}
function dumpBoundingBoxes(widgets) {
for (var name in widgets) {
var box = widgets[name].element.getBoundingClientRect();
TestRunner.addResult(
'[' + name + '] left = ' + box.left + '; right = ' + box.right + '; top = ' + box.top +
'; bottom = ' + box.bottom);
}
}
TestRunner.addResult('Creating simple hierarchy');
var splitWidget = new UI.SplitWidget(true, true, 'splitWidgetStateSettingName.splitWidget', 250, 250);
showRootSplitWidget(splitWidget);
var mainWidget = new UI.Widget();
mainWidget.setMinimumSize(100, 80);
splitWidget.setMainWidget(mainWidget);
var firstSidebarWidget = new UI.Widget();
firstSidebarWidget.setMinimumSize(40, 70);
splitWidget.setSidebarWidget(firstSidebarWidget);
var widgets = {'splitWidget': splitWidget, 'mainWidget': mainWidget, 'sidebarWidget': firstSidebarWidget};
dumpBoundingBoxes(widgets);
TestRunner.addResult('Changing sidebar size');
splitWidget.setSidebarSize(30);
dumpBoundingBoxes(widgets);
TestRunner.addResult('Changing sidebar widget minimum size');
firstSidebarWidget.setMinimumSize(90, 70);
dumpBoundingBoxes(widgets);
TestRunner.addResult('Changing orientation');
splitWidget.setVertical(false);
dumpBoundingBoxes(widgets);
TestRunner.addResult('Changing main widget minimum size');
mainWidget.setMinimumSize(450, 450);
dumpBoundingBoxes(widgets);
TestRunner.addResult('Changing main widget minimum size back and resizing');
mainWidget.setMinimumSize(100, 80);
splitWidget.setSidebarSize(450);
dumpBoundingBoxes(widgets);
TestRunner.addResult('Wrapping main widget to a split widget');
var childsplitWidget = new UI.SplitWidget(false, true, 'splitWidgetStateSettingName.childsplitWidget', 100, 100);
childsplitWidget.hideSidebar();
childsplitWidget.setMainWidget(mainWidget);
splitWidget.setMainWidget(childsplitWidget);
widgets['childSplitWidget'] = childsplitWidget;
dumpBoundingBoxes(widgets);
TestRunner.addResult('Adding invisble sidebar');
var secondSidebarWidget = new UI.Widget();
secondSidebarWidget.setMinimumSize(60, 60);
childsplitWidget.setSidebarWidget(secondSidebarWidget);
widgets['secondSidebarWidget'] = secondSidebarWidget;
dumpBoundingBoxes(widgets);
TestRunner.addResult('Showing sidebar');
childsplitWidget.showBoth();
dumpBoundingBoxes(widgets);
TestRunner.addResult('Detaching sidebar');
secondSidebarWidget.detach();
delete widgets['secondSidebarWidget'];
dumpBoundingBoxes(widgets);
TestRunner.addResult('Attaching another sidebar');
var thirdSidebarWidget = new UI.Widget();
thirdSidebarWidget.setMinimumSize(80, 80);
childsplitWidget.setSidebarWidget(thirdSidebarWidget);
widgets['thirdSidebarWidget'] = thirdSidebarWidget;
dumpBoundingBoxes(widgets);
TestRunner.addResult('Swapping main and sidebar');
splitWidget.setSecondIsSidebar(false);
dumpBoundingBoxes(widgets);
TestRunner.addResult('Arranging preferred sizes');
firstSidebarWidget.setMinimumAndPreferredSizes(50, 50, 100, 100);
mainWidget.setMinimumAndPreferredSizes(50, 50, 200, 200);
thirdSidebarWidget.setMinimumAndPreferredSizes(49, 49, 99, 99);
splitWidget.setSidebarSize(260);
dumpBoundingBoxes(widgets);
TestRunner.addResult('Less than sidebar preferred size');
splitWidget.setSidebarSize(80);
dumpBoundingBoxes(widgets);
TestRunner.addResult('Size changes proportionally');
splitWidget.setSidebarSize(320);
dumpBoundingBoxes(widgets);
TestRunner.addResult('Manual resize inside child split widget');
childsplitWidget.setSidebarSize(50);
dumpBoundingBoxes(widgets);
TestRunner.addResult('Manual resize inside child split widget');
childsplitWidget.setSidebarSize(120);
dumpBoundingBoxes(widgets);
TestRunner.addResult('Child split widget gets more space');
splitWidget.setSidebarSize(170);
dumpBoundingBoxes(widgets);
TestRunner.addResult('Child split widget gets less space');
splitWidget.setSidebarSize(360);
dumpBoundingBoxes(widgets);
TestRunner.completeTest();
})();