blob: a0dc655aaca9a7210c289d97696bd5ed215d3b4f [file] [log] [blame]
// Copyright 2018 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 the styles sidebar can be used with a mouse.\n`);
await TestRunner.loadModule('elements_test_runner');
await TestRunner.showPanel('elements');
await TestRunner.loadHTML(`
<style>
#inspected {
color: blue;
background-color: red;
}
</style>
<div id="inspected">Text</div>
`);
await new Promise(x => ElementsTestRunner.selectNodeAndWaitForStyles('inspected', x));
var stylesPane = UI.panels.elements._stylesWidget;
var firstRule = stylesPane._sectionBlocks[0].sections[1].propertiesTreeOutline;
var blueElement = () => firstRule.firstChild().valueElement;
var colorElement = () => firstRule.firstChild().nameElement;
var listItemElement = () => firstRule.firstChild().listItemElement;
TestRunner.addResult('Test switching between items')
mouseDown(blueElement());
mouseUp(blueElement());
TestRunner.addResult('');
mouseDown(colorElement());
mouseUp(colorElement());
TestRunner.addResult('');
mouseDown(blueElement());
mouseUp(colorElement());
TestRunner.addResult('');
TestRunner.addResult('Cancel editing by clicking a blank area');
mouseDown(listItemElement(), 6); // offset the click to stop eventSender from doing dblclick
mouseUp(listItemElement(), 6);
TestRunner.addResult('');
TestRunner.addResult('Create a new property by clicking a blank area');
mouseDown(listItemElement());
mouseUp(listItemElement());
TestRunner.addResult('');
TestRunner.addResult('Test disabling the property');
var checkbox = () => listItemElement().querySelector('.enabled-button');
mouseDown(checkbox());
mouseUp(checkbox());
TestRunner.addResult('Enabled: ' + checkbox().checked);
TestRunner.addResult('');
TestRunner.addResult('Test enabling the property');
mouseDown(checkbox());
mouseUp(checkbox());
TestRunner.addResult('Enabled: ' + checkbox().checked);
TestRunner.addResult('');
TestRunner.completeTest();
function dumpEditingState() {
if (!stylesPane._isEditingStyle) {
TestRunner.addResult('Not editing');
return;
}
TestRunner.addResult('Editing: "' + TestRunner.textContentWithoutStyles(document.deepActiveElement()) + '"');
}
function mouseDown(element, offset = 0) {
TestRunner.addResult('mouse down: ' + element.tagName + ':' + TestRunner.textContentWithoutStyles(element));
var rect = element.getBoundingClientRect();
eventSender.mouseMoveTo((rect.left + rect.right) / 2 + offset, (rect.top + rect.bottom) / 2);
eventSender.mouseDown();
dumpEditingState();
}
function mouseUp(element, offset = 0) {
TestRunner.addResult('mouse up: ' + element.tagName + ':' + TestRunner.textContentWithoutStyles(element));
var rect = element.getBoundingClientRect();
eventSender.mouseMoveTo((rect.left + rect.right) / 2 + offset, (rect.top + rect.bottom) / 2);
eventSender.mouseUp();
dumpEditingState();
}
})();