blob: 35791c8f5ccf6b689036f03bac37a4d3b6f1d810 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<p>This tests setting the value to a readonly or disabled text field which was previously editable</p>
<pre id="log"></pre>
<input type="text">
<script>
if (!window.accessibilityController)
document.write('This test requires accessibilityController');
else {
testRunner.dumpAsText();
testRunner.waitUntilDone();
accessibilityController.enableEnhancedAccessibility(true);
function sortByKey(unsortedObject) {
const sortedObject = {};
for (const key of Object.keys(unsortedObject).sort())
sortedObject[key] = unsortedObject[key];
return sortedObject;
}
const webArea = accessibilityController.rootElement.childAtIndex(0);
const notifications = [];
webArea.addNotificationListener((notification, userInfo) => {
if (notification == 'AXLoadComplete') {
webArea.removeNotificationListener();
testRunner.notifyDone();
return;
}
if (notification != 'AXValueChanged')
return;
document.getElementById('log').textContent
+= `AXTextStateChangeType=${userInfo['AXTextStateChangeType']}`
+ ` AXTextChangeValues=${JSON.stringify(userInfo['AXTextChangeValues'].map(object => sortByKey(object)))}\n`
});
const input = document.querySelector('input');
input.focus();
eventSender.keyDown('a');
input.value = 'hello';
eventSender.keyDown('b');
input.readOnly = true;
internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks();
input.value = 'world';
input.readOnly = false;
internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks();
eventSender.keyDown('c');
input.disabled = true;
internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks();
input.value = 'WebKit';
input.disabled = false;
internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks();
eventSender.keyDown('d');
}
</script>
</body>
</html>