WebKit Bugzilla
Attachment 373767 Details for
Bug 196998
: AX: HTML datalist accessibility is not exposed by WebKit
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-196998-20190709172942.patch (text/plain), 6.29 KB, created by
Andres Gonzalez
on 2019-07-09 14:29:43 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Andres Gonzalez
Created:
2019-07-09 14:29:43 PDT
Size:
6.29 KB
patch
obsolete
>Subversion Revision: 247229 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 4e1e2499cfb9bac3e1d764b37438c389b84dcde2..fec146343c63069d89f3dc52470ee6f1c387a082 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,20 @@ >+2019-07-09 Andres Gonzalez <andresg_22@apple.com> >+ >+ AX: HTML datalist accessibility is not exposed by WebKit >+ https://bugs.webkit.org/show_bug.cgi?id=196998 >+ <rdar://problem/49962521> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Input fields with datalist are exposed as having a listbox popup. >+ >+ Test: accessibility/datalist.html >+ >+ * accessibility/AccessibilityObject.cpp: >+ (WebCore::AccessibilityObject::popupValue const): >+ (WebCore::AccessibilityObject::hasDatalist const): >+ * accessibility/AccessibilityObject.h: >+ > 2019-07-08 Wenson Hsieh <wenson_hsieh@apple.com> > > Unable to paste from Notes into Excel 365 spreadsheet >diff --git a/Source/WebCore/accessibility/AccessibilityObject.cpp b/Source/WebCore/accessibility/AccessibilityObject.cpp >index bbea694aab93bf64dbb2c9310769912fced01bc8..28894f5b22bfbec5bc02a149a0100e8eae65a5d3 100644 >--- a/Source/WebCore/accessibility/AccessibilityObject.cpp >+++ b/Source/WebCore/accessibility/AccessibilityObject.cpp >@@ -48,6 +48,7 @@ > #include "Frame.h" > #include "FrameLoader.h" > #include "FrameSelection.h" >+#include "HTMLDataListElement.h" > #include "HTMLDetailsElement.h" > #include "HTMLFormControlElement.h" > #include "HTMLInputElement.h" >@@ -2767,7 +2768,7 @@ String AccessibilityObject::popupValue() const > auto hasPopup = getAttribute(aria_haspopupAttr).convertToASCIILowercase(); > if (hasPopup.isNull() || hasPopup.isEmpty()) { > // In ARIA 1.1, the implicit value for combobox became "listbox." >- if (isComboBox()) >+ if (isComboBox() || hasDatalist()) > return "listbox"; > return "false"; > } >@@ -2785,6 +2786,20 @@ String AccessibilityObject::popupValue() const > return "false"; > } > >+bool AccessibilityObject::hasDatalist() const >+{ >+ auto datalistId = getAttribute(listAttr); >+ if (datalistId.isNull() || datalistId.isEmpty()) >+ return false; >+ >+ auto element = this->element(); >+ if (!element) >+ return false; >+ >+ auto datalist = element->treeScope().getElementById(datalistId); >+ return is<HTMLDataListElement>(datalist); >+} >+ > bool AccessibilityObject::supportsSetSize() const > { > return hasAttribute(aria_setsizeAttr); >diff --git a/Source/WebCore/accessibility/AccessibilityObject.h b/Source/WebCore/accessibility/AccessibilityObject.h >index 7b763c7fa2050ac3d9ce9b8d89ba86640f6613f8..4995a4a8974ffd302724546df1c0517d64caa6f0 100644 >--- a/Source/WebCore/accessibility/AccessibilityObject.h >+++ b/Source/WebCore/accessibility/AccessibilityObject.h >@@ -553,6 +553,7 @@ public: > > virtual bool hasPopup() const { return false; } > String popupValue() const; >+ bool hasDatalist() const; > bool supportsHasPopup() const; > bool pressedIsPresent() const; > bool ariaIsMultiline() const; >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 063d59e4b43cbb49ca64ea3a3c99b85dc96eacdf..2102147b459abb72e0cb0b9d684700fc973e0a32 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,14 @@ >+2019-07-09 Andres Gonzalez <andresg_22@apple.com> >+ >+ AX: HTML datalist accessibility is not exposed by WebKit >+ https://bugs.webkit.org/show_bug.cgi?id=196998 >+ <rdar://problem/49962521> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * accessibility/datalist-expected.txt: Added. >+ * accessibility/datalist.html: Added. >+ > 2019-07-08 Charlie Turner <cturner@igalia.com> > > [GTK] Some media fragment tests are flaky >diff --git a/LayoutTests/accessibility/datalist-expected.txt b/LayoutTests/accessibility/datalist-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..8a063308c8647c105a5ce570c7f33a953a1ebc5c >--- /dev/null >+++ b/LayoutTests/accessibility/datalist-expected.txt >@@ -0,0 +1,13 @@ >+Websites >+ >+This tests that an input field with a datalist is conveyed as listbox popup. >+ >+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". >+ >+ >+PASS axInput.popupValue is 'listbox' >+PASS axInput.popupValue is 'listbox' >+PASS successfullyParsed is true >+ >+TEST COMPLETE >+ >diff --git a/LayoutTests/accessibility/datalist.html b/LayoutTests/accessibility/datalist.html >new file mode 100644 >index 0000000000000000000000000000000000000000..d29e25fa256dcfcf5b16a297f386b0ca5a5d6c95 >--- /dev/null >+++ b/LayoutTests/accessibility/datalist.html >@@ -0,0 +1,57 @@ >+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> >+<html> >+<head> >+<script src="../resources/js-test-pre.js"></script> >+</head> >+<body> >+ >+<div> >+ <label> >+ Websites <input id="input1" type="text" list="datalist1" /> >+ </label> >+ <datalist id="datalist1"> >+ <option value="https://www.apple.com/" label="Apple">Apple</option> >+ <option value="https://www.wikipedia.com/" label="Wikipedia">Wikipedia</option> >+ </datalist> >+</div> >+ >+<div> >+ <input id="input2" type="search" placeholder="Fruits" list="fruits" /> >+ <datalist id="fruits"> >+ <select> >+ <option>Apple</option> >+ <option>Apricot</option> >+ <option>Banana</option> >+ <option>Cantaloupe</option> >+ <option>Durian</option> >+ <option>Grape</option> >+ <option>Guava</option> >+ <option>Orange</option> >+ <option>Mango</option> >+ <option>Pear</option> >+ <option>Watermelon</option> >+ <option></option> >+ <option disabled>Foo</option> >+ </select> >+ </datalist> >+</div> >+ >+<p id="description"></p> >+<div id="console"></div> >+ >+<script> >+ description("This tests that an input field with a datalist is conveyed as listbox popup."); >+ >+ if (window.accessibilityController) { >+ document.getElementById("input1").focus(); >+ var axInput = accessibilityController.focusedElement; >+ shouldBe("axInput.popupValue", "'listbox'"); >+ >+ document.getElementById("input2").focus(); >+ axInput = accessibilityController.focusedElement; >+ shouldBe("axInput.popupValue", "'listbox'"); >+ } >+</script> >+<script src="../resources/js-test-post.js"></script> >+</body> >+</html>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 196998
:
373744
|
373750
|
373766
|
373767
|
373793
|
373799
|
373807
|
373810