haikuwebkit/LayoutTests/accessibility/listbox-clear-selection.html

32 lines
959 B
HTML
Raw Permalink Normal View History

AX: [ATK] Attempting to clear selection on ARIA listboxes results in crash https://bugs.webkit.org/show_bug.cgi?id=164331 Reviewed by Chris Fleizach. Source/WebCore: The ATK code is using is<AccessibilityListBox>() to identify native listboxes. But is<AccessibilityListBox>() returns the value of isListBox() which returns true both for AccessibilityListBox instances as well as for AccessibilityObject instances which have an AccessibilityRole value of ListBoxRole. Because only native listboxes should be AccessibilityListBoxes, add isNativeListBox() so that we can distinguish native and ARIA listboxes. Tests: accessibility/aria-listbox-clear-selection-crash.html accessibility/listbox-clear-selection.html * accessibility/AccessibilityListBox.h: * accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::isNativeListBox): (WebCore::AccessibilityObject::isListBox): Tools: Add AccessibilityUIElement::clearSelectedChildren() to DRT and WKTR. Implement it for ATK. * DumpRenderTree/AccessibilityUIElement.h: * DumpRenderTree/ios/AccessibilityUIElementIOS.mm: (AccessibilityUIElement::clearSelectedChildren): * DumpRenderTree/mac/AccessibilityUIElementMac.mm: (AccessibilityUIElement::clearSelectedChildren): * DumpRenderTree/win/AccessibilityUIElementWin.cpp: (AccessibilityUIElement::clearSelectedChildren): * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h: * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl: * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp: (WTR::AccessibilityUIElement::clearSelectedChildren): * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: (WTR::AccessibilityUIElement::clearSelectedChildren): * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm: (WTR::AccessibilityUIElement::clearSelectedChildren): LayoutTests: Add tests to verify clearing selection works for native listboxes, and does not crash for ARIA listboxes. These tests are being skipped for the Mac and Win ports which do not yet implement AccessibilityUIElement::clearSelectedChildren(). * accessibility/aria-listbox-clear-selection-crash-expected.txt: Added. * accessibility/aria-listbox-clear-selection-crash.html: Added. * accessibility/listbox-clear-selection-expected.txt: Added. * accessibility/listbox-clear-selection.html: Added. * platform/mac/TestExpectations: * platform/win/TestExpectations: Canonical link: https://commits.webkit.org/182125@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@208384 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-11-04 16:48:12 +00:00
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/js-test-pre.js"></script>
</head>
<body id="body">
<select id="listbox" multiple="multiple">
<option>Option 1</option>
<option>Option 2</option>
</select>
<div id="description"></div>
<div id="console"></div>
<script>
description("Tests clearing the selection of a multi-select select element.");
if (window.accessibilityController) {
var listbox = accessibilityController.accessibleElementById("listbox");
shouldBe("listbox.selectedChildrenCount", "0");
listbox.setSelectedChildAtIndex(0);
shouldBe("listbox.selectedChildrenCount", "1");
listbox.setSelectedChildAtIndex(1);
shouldBe("listbox.selectedChildrenCount", "2");
listbox.clearSelectedChildren();
shouldBe("listbox.selectedChildrenCount", "0");
}
</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>