blob: 5fbb75c1c53a1130bfa06ace0c804053b4fb2129 [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 text prompt suggestions' casing follows that of the user input.\n`);
await TestRunner.loadModule('elements_test_runner');
await TestRunner.showPanel('elements');
await TestRunner.loadHTML(`
<div id="inner" style="color:initial;"></div>
`);
await ElementsTestRunner.selectNodeAndWaitForStylesPromise('inner');
var colorTreeElement = ElementsTestRunner.getMatchedStylePropertyTreeItem('color');
var prompt = new Elements.StylesSidebarPane.CSSPropertyPrompt(colorTreeElement, true /* isEditingName */);
TestRunner.runTestSuite([
function testForUpperCase(next) {
testAutoCompletionsAgainstCase(prompt, 'C', next);
},
function testForLowerCase(next) {
testAutoCompletionsAgainstCase(prompt, 'b', next);
},
function testForMixedCase(next) {
testAutoCompletionsAgainstCase(prompt, 'bAcK', next);
}
]);
function testAutoCompletionsAgainstCase(prompt, inputText, callback) {
var proxyElement = document.body.createChild('span');
proxyElement.textContent = inputText;
var selectionRange = document.createRange();
selectionRange.selectNodeContents(proxyElement);
var prefix = selectionRange.toString();
prompt._buildPropertyCompletions(inputText.substring(0, inputText.length - prefix.length), prefix, true)
.then(completions);
function completions(result) {
function isUpperCase(str) {
return str === str.toUpperCase();
}
function isLowerCase(str) {
return str === str.toLowerCase();
}
var Case = {Upper: 0, Lower: 1, Mixed: 2};
var inputCase = isUpperCase(inputText) ? Case.Upper : isLowerCase(inputText) ? Case.Lower : Case.Mixed;
for (var i = 0; i < result.length; ++i) {
let text = result[i].text;
const colonIndex = text.indexOf(':');
if (colonIndex !== -1)
text = text.substring(0, colonIndex);
switch (inputCase) {
case Case.Upper:
if (!isUpperCase(text))
TestRunner.addResult('Error: Suggestion ' + text + ' must be in UPPERCASE.');
break;
case Case.Lower:
if (!isLowerCase(text))
TestRunner.addResult('Error: Suggestion ' + text + ' must be in lowercase.');
break;
}
}
proxyElement.remove();
callback();
}
}
})();