61 lines
2.0 KiB
HTML
61 lines
2.0 KiB
HTML
<!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>
|