Changeset 247349 in webkit


Ignore:
Timestamp:
Jul 11, 2019 6:36:50 AM (5 years ago)
Author:
jdiggs@igalia.com
Message:

AX: Implement support for ARIA roles insertion, deletion, subscript, superscript, and time
https://bugs.webkit.org/show_bug.cgi?id=199692

Reviewed by Chris Fleizach.

Source/WebCore:

Create new AccessibilityRole types which correspond to the new ARIA roles and
update AccessibilityRenderObject::determineAccessibilityRole() to assign these
internal roles to the related HTML elements.

Update both ATK and Mac to recognize these new internal roles. In addition, update
the ATK mappings for the ins and del elements to ATK_ROLE_CONTENT_INSERTION and
ATK_ROLE_CONTENT_DELETION respectively. Also expose "insertion" and "deletion" via
the AtkObject xml-roles attribute so that this information is not completely absent
for GTK or WPE built against earlier versions of ATK.

Remove AccessibilityObject's isSubscriptStyleGroup() and isSuperscriptStyleGroup().
These two methods were only being used by ATK and are no longer needed for platform
role mapping.

No new tests. Instead add the roles to the existing role-exposure tests.

  • accessibility/AccessibilityObject.cpp:

(WebCore::initializeRoleMap):
(WebCore::AccessibilityObject::isSubscriptStyleGroup const): Deleted.
(WebCore::AccessibilityObject::isSuperscriptStyleGroup const): Deleted.

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::determineAccessibilityRole):

  • accessibility/atk/WebKitAccessible.cpp:

(webkitAccessibleGetAttributes):
(atkRole):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(createAccessibilityRoleMap):
(-[WebAccessibilityObjectWrapper subrole]):

Tools:

Add support for output of AXDeletion and AXInsertion roles for tests.
Update GTK and WPE jhbuild modules to use version of ATK and AT-SPI2
which include ROLE_CONTENT_DELETION and ROLE_CONTENT_INSERTION.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
  • gtk/jhbuild.modules:
  • wpe/jhbuild.modules:

LayoutTests:

Add the new roles to the existing role-exposure tests and update expectations accordingly.

  • accessibility/gtk/object-attributes-expected.txt:
  • accessibility/gtk/object-attributes.html:
  • accessibility/gtk/xml-roles-exposed-expected.txt:
  • accessibility/gtk/xml-roles-exposed.html:
  • accessibility/roles-computedRoleString.html:
  • accessibility/roles-exposed.html:
  • platform/gtk/accessibility/roles-computedRoleString-expected.txt:
  • platform/gtk/accessibility/roles-exposed-expected.txt:
  • platform/mac-wk2/accessibility/roles-exposed-expected.txt:
  • platform/mac/accessibility/roles-computedRoleString-expected.txt:
  • platform/mac/accessibility/roles-exposed-expected.txt:
  • platform/wpe/accessibility/roles-computedRoleString-expected.txt:
  • platform/wpe/accessibility/roles-exposed-expected.txt:
Location:
trunk
Files:
26 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r247338 r247349  
     12019-07-11  Joanmarie Diggs  <jdiggs@igalia.com>
     2
     3        AX: Implement support for ARIA roles insertion, deletion, subscript, superscript, and time
     4        https://bugs.webkit.org/show_bug.cgi?id=199692
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Add the new roles to the existing role-exposure tests and update expectations accordingly.
     9
     10        * accessibility/gtk/object-attributes-expected.txt:
     11        * accessibility/gtk/object-attributes.html:
     12        * accessibility/gtk/xml-roles-exposed-expected.txt:
     13        * accessibility/gtk/xml-roles-exposed.html:
     14        * accessibility/roles-computedRoleString.html:
     15        * accessibility/roles-exposed.html:
     16        * platform/gtk/accessibility/roles-computedRoleString-expected.txt:
     17        * platform/gtk/accessibility/roles-exposed-expected.txt:
     18        * platform/mac-wk2/accessibility/roles-exposed-expected.txt:
     19        * platform/mac/accessibility/roles-computedRoleString-expected.txt:
     20        * platform/mac/accessibility/roles-exposed-expected.txt:
     21        * platform/wpe/accessibility/roles-computedRoleString-expected.txt:
     22        * platform/wpe/accessibility/roles-exposed-expected.txt:
     23
    1242019-07-10  Saam Barati  <sbarati@apple.com>
    225
  • trunk/LayoutTests/accessibility/gtk/object-attributes-expected.txt

    r243167 r247349  
    22224
    2323
     24foo
     25bar
     26baz
    2427This tests the exposure of Atk object attributes.
    2528
     
    216219AXPlatformAttributes: computed-role:table, tag:table, toolkit:WebKitGtk
    217220------------
     221AXRole: AXDeletion
     222AXParent: AXWebArea
     223AXChildren: 0
     224AXPosition:  { 8.00000, 392.000 }
     225AXSize: { 784.000, 19.0000 }
     226AXTitle:
     227AXDescription:
     228AXValue: foo
     229AXFocusable: 0
     230AXFocused: 0
     231AXSelectable: 0
     232AXSelected: 0
     233AXMultiSelectable: 0
     234AXEnabled: 1
     235AXExpanded: 0
     236AXRequired: 0
     237AXChecked: 0
     238AXPlatformAttributes: xml-roles:deletion, computed-role:deletion, tag:del, toolkit:WebKitGtk
     239------------
     240AXRole: AXInsertion
     241AXParent: AXWebArea
     242AXChildren: 0
     243AXPosition:  { 8.00000, 410.000 }
     244AXSize: { 784.000, 19.0000 }
     245AXTitle:
     246AXDescription:
     247AXValue: bar
     248AXFocusable: 0
     249AXFocused: 0
     250AXSelectable: 0
     251AXSelected: 0
     252AXMultiSelectable: 0
     253AXEnabled: 1
     254AXExpanded: 0
     255AXRequired: 0
     256AXChecked: 0
     257AXPlatformAttributes: xml-roles:insertion, computed-role:insertion, tag:ins, toolkit:WebKitGtk
     258------------
     259AXRole: AXStatic
     260AXParent: AXWebArea
     261AXChildren: 0
     262AXPosition:  { 8.00000, 428.000 }
     263AXSize: { 784.000, 19.0000 }
     264AXTitle:
     265AXDescription:
     266AXValue: baz
     267AXFocusable: 0
     268AXFocused: 0
     269AXSelectable: 0
     270AXSelected: 0
     271AXMultiSelectable: 0
     272AXEnabled: 1
     273AXExpanded: 0
     274AXRequired: 0
     275AXChecked: 0
     276AXPlatformAttributes: computed-role:time, tag:time, toolkit:WebKitGtk
     277------------
    218278AXRole: AXParagraph
    219279AXParent: AXWebArea
    220280AXChildren: 2
    221 AXPosition:  { 8.00000, 408.000 }
     281AXPosition:  { 8.00000, 462.000 }
    222282AXSize: { 784.000, 53.0000 }
    223283AXTitle:
  • trunk/LayoutTests/accessibility/gtk/object-attributes.html

    r200260 r247349  
    2121<tr><td><p>3</p></td><td><p>4</p></td></tr>
    2222</table>
     23<del style="display:block;">foo</del>
     24<ins style="display:block;">bar</ins>
     25<time style="display:block;">baz</time>
    2326<p id="description"></p>
    2427<div id="console"></div>
  • trunk/LayoutTests/accessibility/gtk/xml-roles-exposed-expected.txt

    r243198 r247349  
    251251AXPlatformAttributes: computed-role:definition, xml-roles:definition, tag:div, toolkit:WebKitGtk
    252252------------
     253AXRole: AXDeletion
     254AXParent: AXWebArea
     255AXChildren: 0
     256AXPosition:  { 0.00000, 0.00000 }
     257AXSize: { 0.00000, 0.00000 }
     258AXTitle:
     259AXDescription:
     260AXValue:
     261AXFocusable: 0
     262AXFocused: 0
     263AXSelectable: 0
     264AXSelected: 0
     265AXMultiSelectable: 0
     266AXEnabled: 1
     267AXExpanded: 0
     268AXRequired: 0
     269AXChecked: 0
     270AXPlatformAttributes: computed-role:deletion, xml-roles:deletion, tag:div, toolkit:WebKitGtk
     271------------
    253272AXRole: AXDialog
    254273AXParent: AXWebArea
     
    421440AXChecked: 0
    422441AXPlatformAttributes: computed-role:img, xml-roles:img, tag:div, toolkit:WebKitGtk
     442------------
     443AXRole: AXInsertion
     444AXParent: AXWebArea
     445AXChildren: 0
     446AXPosition:  { 0.00000, 0.00000 }
     447AXSize: { 0.00000, 0.00000 }
     448AXTitle:
     449AXDescription:
     450AXValue:
     451AXFocusable: 0
     452AXFocused: 0
     453AXSelectable: 0
     454AXSelected: 0
     455AXMultiSelectable: 0
     456AXEnabled: 1
     457AXExpanded: 0
     458AXRequired: 0
     459AXChecked: 0
     460AXPlatformAttributes: computed-role:insertion, xml-roles:insertion, tag:div, toolkit:WebKitGtk
    423461------------
    424462AXRole: AXLink
     
    803841AXPlatformAttributes: atomic:true, relevant:additions text, live:polite, container-live-role:status, container-atomic:true, container-relevant:additions text, container-live:polite, computed-role:status, xml-roles:status, tag:div, toolkit:WebKitGtk
    804842------------
     843AXRole: AXSubscript
     844AXParent: AXWebArea
     845AXChildren: 0
     846AXPosition:  { 0.00000, 0.00000 }
     847AXSize: { 0.00000, 0.00000 }
     848AXTitle:
     849AXDescription:
     850AXValue:
     851AXFocusable: 0
     852AXFocused: 0
     853AXSelectable: 0
     854AXSelected: 0
     855AXMultiSelectable: 0
     856AXEnabled: 1
     857AXExpanded: 0
     858AXRequired: 0
     859AXChecked: 0
     860AXPlatformAttributes: computed-role:subscript, xml-roles:subscript, tag:div, toolkit:WebKitGtk
     861------------
     862AXRole: AXSuperscript
     863AXParent: AXWebArea
     864AXChildren: 0
     865AXPosition:  { 0.00000, 0.00000 }
     866AXSize: { 0.00000, 0.00000 }
     867AXTitle:
     868AXDescription:
     869AXValue:
     870AXFocusable: 0
     871AXFocused: 0
     872AXSelectable: 0
     873AXSelected: 0
     874AXMultiSelectable: 0
     875AXEnabled: 1
     876AXExpanded: 0
     877AXRequired: 0
     878AXChecked: 0
     879AXPlatformAttributes: computed-role:superscript, xml-roles:superscript, tag:div, toolkit:WebKitGtk
     880------------
    805881AXRole: AXToggleButton
    806882AXParent: AXWebArea
     
    859935AXChecked: 0
    860936AXPlatformAttributes: xml-roles:textbox, readonly:false, tag:div, toolkit:WebKitGtk
     937------------
     938AXRole: AXStatic
     939AXParent: AXWebArea
     940AXChildren: 0
     941AXPosition:  { 0.00000, 0.00000 }
     942AXSize: { 0.00000, 0.00000 }
     943AXTitle:
     944AXDescription:
     945AXValue:
     946AXFocusable: 0
     947AXFocused: 0
     948AXSelectable: 0
     949AXSelected: 0
     950AXMultiSelectable: 0
     951AXEnabled: 1
     952AXExpanded: 0
     953AXRequired: 0
     954AXChecked: 0
     955AXPlatformAttributes: computed-role:time, xml-roles:time, tag:div, toolkit:WebKitGtk
    861956------------
    862957AXRole: AXTimer
  • trunk/LayoutTests/accessibility/gtk/xml-roles-exposed.html

    r243198 r247349  
    1919 <div role="contentinfo"></div>
    2020 <div role="definition"></div>
     21 <div role="deletion"></div>
    2122 <div role="dialog"></div>
    2223 <div role="directory"></div>
     
    2829 <div role="heading"></div>
    2930 <div role="img"></div>
     31 <div role="insertion"></div>
    3032 <div role="link"></div>
    3133 <div role="log"></div>
     
    4951 <div role="spinbutton"></div>
    5052 <div role="status"></div>
     53 <div role="subscript"></div>
     54 <div role="superscript"></div>
    5155 <div role="switch"></div>
    5256 <div role="term"></div>
    5357 <div role="textbox"></div>
     58 <div role="time"></div>
    5459 <div role="timer"></div>
    5560 <div role="toolbar"></div>
  • trunk/LayoutTests/accessibility/roles-computedRoleString.html

    r243198 r247349  
    1313<aside data-role="complementary" data-platform="atk,mac" class="ex">X</aside>
    1414<button data-role="button" data-platform="atk,mac" class="ex">X</button>
     15<del data-role="deletion" data-platform="atk,mac" class="ex">X</ins>
    1516<dfn data-role="definition" data-platform="atk,mac" class="ex">X</dfn>
    1617<dl data-role="" data-platform="atk,mac" class="ex">
     
    5455<input type="url" value="X" data-role="" data-platform="atk,mac" class="ex" data-note="[type='url']">
    5556<input type="week" value="X" data-role="" data-platform="atk,mac" class="ex" data-note="[type='week']">
    56 <ins data-role="" data-platform="atk,mac" class="ex">X</ins>
     57<ins data-role="insertion" data-platform="atk,mac" class="ex">X</ins>
    5758<mark data-role="" data-platform="atk,mac" class="ex">X</mark>
    5859<math data-role="math" data-platform="atk,mac" class="ex">X</math>
     
    99100<span data-role="" data-platform="atk,mac" class="ex">X</span>
    100101<strong data-role="" data-platform="atk,mac" class="ex">X</strong>
    101 <sub data-role="" data-platform="atk,mac" class="ex">X</sub>
    102 <sup data-role="" data-platform="atk,mac" class="ex">X</sup>
     102<sub data-role="subscript" data-platform="atk,mac" class="ex">X</sub>
     103<sup data-role="superscript" data-platform="atk,mac" class="ex">X</sup>
    103104<svg data-role="" data-platform="atk,mac" class="ex">X</svg>
    104105
     
    142143
    143144<textarea data-role="textbox" data-platform="atk,mac" class="ex">X</textarea>
    144 <time data-role="" data-platform="atk,mac" class="ex">X</time>
     145<time data-role="time" data-platform="atk,mac" class="ex">X</time>
    145146<ul data-role="list" data-platform="atk,mac" class="ex">
    146147    <li data-role="listitem" data-platform="atk,mac" class="ex">X</li>
     
    182183<div role="contentinfo"              data-role="contentinfo" data-platform="atk,mac" class="ex">X</div>
    183184<div role="definition"               data-role="definition" data-platform="atk,mac" class="ex">X</div>
     185<div role="deletion"                 data-role="deletion" data-platform="atk,mac" class="ex">X</div>
    184186<div role="dialog"                   data-role="dialog" data-platform="atk,mac" class="ex">X</div>
    185187<div role="directory"                data-role="list" data-platform="atk,mac" class="ex">X</div><!-- FIXME: should be directory -->
     
    203205<div role="heading"                  data-role="heading" data-platform="atk,mac" class="ex">X</div>
    204206<div role="img"                      data-role="img" data-platform="atk,mac" class="ex">X</div>
     207<div role="insertion"                data-role="insertion" data-platform="atk,mac" class="ex">X</div>
    205208<div role="link"                     data-role="link" data-platform="atk,mac" class="ex">X</div>
    206209<div role="list"                     data-role="list" data-platform="atk,mac" class="ex">
     
    245248<div role="spinbutton"               data-role="spinbutton" data-platform="atk,mac" class="ex">X</div>
    246249<div role="status"                   data-role="status" data-platform="atk,mac" class="ex">X</div>
     250<div role="subscript"                data-role="subscript" data-platform="atk,mac" class="ex">X</div>
     251<div role="superscript"              data-role="superscript" data-platform="atk,mac" class="ex">X</div>
    247252<div role="tablist"                  data-role="tablist" data-platform="atk,mac" class="ex">
    248253    <div role="tab"                  data-role="tab" data-platform="atk,mac" class="ex">X</div>
     
    251256<div role="textbox"                  data-role="" data-platform="atk,mac" class="ex">X</div><!-- FIXME: should be textbox -->
    252257<div role="term"                     data-role="term" data-platform="atk,mac" class="ex">X</div>
     258<div role="time"                     data-role="time" data-platform="atk,mac" class="ex">X</div>
    253259<div role="timer"                    data-role="timer" data-platform="atk,mac" class="ex">X</div>
    254260<div role="toolbar"                  data-role="toolbar" data-platform="atk,mac" class="ex">X</div>
  • trunk/LayoutTests/accessibility/roles-exposed.html

    r243198 r247349  
    257257<div role="contentinfo"              data-platform="atk,mac" class="ex">X</div>
    258258<div role="definition"               data-platform="atk,mac" class="ex">X</div>
     259<div role="deletion"                 data-platform="atk,mac" class="ex">X</div>
    259260<div role="dialog"                   data-platform="atk,mac" class="ex">X</div>
    260261<div role="directory"                data-platform="atk,mac" class="ex">X</div>
     
    320321<div role="heading"                  data-platform="atk,mac" class="ex">X</div>
    321322<div role="img"                      data-platform="atk,mac" class="ex">X</div>
     323<div role="insertion"                data-platform="atk,mac" class="ex">X</div>
    322324<div role="link"                     data-platform="atk,mac" class="ex">X</div>
    323325<div role="list"                     data-platform="atk,mac" class="ex">
     
    364366<div role="spinbutton"               data-platform="atk,mac" class="ex">X</div>
    365367<div role="status"                   data-platform="atk,mac" class="ex">X</div>
     368<div role="subscript"                data-platform="atk,mac" class="ex">X</div>
     369<div role="superscript"              data-platform="atk,mac" class="ex">X</div>
    366370<div role="switch"                   data-platform="atk,mac" class="ex">X</div>
    367371<div role="tablist"                  data-platform="atk,mac" class="ex">
     
    371375<div role="term"                     data-platform="atk,mac" class="ex">X</div>
    372376<div role="textbox"                  data-platform="atk,mac" class="ex">X</div>
     377<div role="time"                     data-platform="atk,mac" class="ex">X</div>
    373378<div role="timer"                    data-platform="atk,mac" class="ex">X</div>
    374379<div role="toolbar"                  data-platform="atk,mac" class="ex">X</div>
  • trunk/LayoutTests/platform/gtk/accessibility/roles-computedRoleString-expected.txt

    r243198 r247349  
    88PASS: aside -> complementary.
    99PASS: button -> button.
     10PASS: del -> deletion.
    1011PASS: dfn -> definition.
    1112PASS: dl -> .
     
    4243PASS: input[type='url'] -> .
    4344PASS: input[type='week'] -> .
    44 PASS: ins -> .
     45PASS: ins -> insertion.
    4546PASS: math -> math.
    4647PASS: nav -> navigation.
     
    6263PASS: option -> option.
    6364PASS: option -> option.
    64 PASS: sub -> .
    65 PASS: sup -> .
     65PASS: sub -> subscript.
     66PASS: sup -> superscript.
    6667PASS: table -> table.
    6768PASS: caption -> caption.
     
    8081PASS: td[role="gridcell"] -> gridcell.
    8182PASS: textarea -> textbox.
    82 PASS: time -> .
     83PASS: time -> time.
    8384PASS: ul -> list.
    8485PASS: li -> listitem.
     
    109110PASS: div[role="contentinfo"] -> contentinfo.
    110111PASS: div[role="definition"] -> definition.
     112PASS: div[role="deletion"] -> deletion.
    111113PASS: div[role="dialog"] -> dialog.
    112114PASS: div[role="directory"] -> list.
     
    126128PASS: div[role="heading"] -> heading.
    127129PASS: div[role="img"] -> img.
     130PASS: div[role="insertion"] -> insertion.
    128131PASS: div[role="link"] -> link.
    129132PASS: div[role="list"] -> list.
     
    159162PASS: div[role="spinbutton"] -> spinbutton.
    160163PASS: div[role="status"] -> status.
     164PASS: div[role="subscript"] -> subscript.
     165PASS: div[role="superscript"] -> superscript.
    161166PASS: div[role="tablist"] -> tablist.
    162167PASS: div[role="tab"] -> tab.
     
    164169PASS: div[role="textbox"] -> .
    165170PASS: div[role="term"] -> term.
     171PASS: div[role="time"] -> time.
    166172PASS: div[role="timer"] -> timer.
    167173PASS: div[role="toolbar"] -> toolbar.
  • trunk/LayoutTests/platform/gtk/accessibility/roles-exposed-expected.txt

    r243198 r247349  
    5151     
    5252del:not([datetime])
    53       AXRole: AXStatic
     53      AXRole: AXDeletion
    5454     
    5555del[datetime]
    56       AXRole: AXStatic
     56      AXRole: AXDeletion
    5757     
    5858dfn
     
    204204     
    205205ins:not([datetime])
    206       AXRole: AXStatic
     206      AXRole: AXInsertion
    207207     
    208208ins[datetime]
    209       AXRole: AXStatic
     209      AXRole: AXInsertion
    210210     
    211211map
     
    524524      AXRole: AXDefinition
    525525     
     526div[role=deletion]
     527      AXRole: AXDeletion
     528     
    526529div[role=dialog]
    527530      AXRole: AXDialog
     
    695698      AXRole: AXImage
    696699     
     700div[role=insertion]
     701      AXRole: AXInsertion
     702     
    697703div[role=link]
    698704      AXRole: AXLink
     
    800806      AXRole: AXStatusBar
    801807     
     808div[role=subscript]
     809      AXRole: AXSubscript
     810     
     811div[role=superscript]
     812      AXRole: AXSuperscript
     813     
    802814div[role=switch]
    803815      AXRole: AXToggleButton
     
    817829div[role=textbox]
    818830      AXRole: AXTextField
     831     
     832div[role=time]
     833      AXRole: AXStatic
    819834     
    820835div[role=timer]
  • trunk/LayoutTests/platform/mac-wk2/accessibility/roles-exposed-expected.txt

    r243198 r247349  
    875875      AXRoleDescription: definition
    876876     
     877div[role=deletion]
     878      AXRole: AXGroup
     879      AXSubrole: AXDeleteStyleGroup
     880      AXRoleDescription: group
     881     
    877882div[role=dialog]
    878883      AXRole: AXGroup
     
    11601165      AXRoleDescription: image
    11611166     
     1167div[role=insertion]
     1168      AXRole: AXGroup
     1169      AXSubrole: AXInsertStyleGroup
     1170      AXRoleDescription: group
     1171     
    11621172div[role=link]
    11631173      AXRole: AXLink
     
    13351345      AXRoleDescription: application status
    13361346     
     1347div[role=subscript]
     1348      AXRole: AXGroup
     1349      AXSubrole: AXSubscriptStyleGroup
     1350      AXRoleDescription: group
     1351     
     1352div[role=superscript]
     1353      AXRole: AXGroup
     1354      AXSubrole: AXSuperscriptStyleGroup
     1355      AXRoleDescription: group
     1356     
    13371357div[role=switch]
    13381358      AXRole: AXCheckBox
     
    13651385      AXRoleDescription: text field
    13661386     
     1387div[role=time]
     1388      AXRole: AXGroup
     1389      AXSubrole: AXTimeGroup
     1390      AXRoleDescription: group
     1391     
    13671392div[role=timer]
    13681393      AXRole: AXGroup
  • trunk/LayoutTests/platform/mac/accessibility/roles-computedRoleString-expected.txt

    r243198 r247349  
    88PASS: aside -> complementary.
    99PASS: button -> button.
     10PASS: del -> deletion.
    1011PASS: dfn -> definition.
    1112PASS: dl -> .
     
    4243PASS: input[type='url'] -> .
    4344PASS: input[type='week'] -> .
    44 PASS: ins -> .
     45PASS: ins -> insertion.
    4546PASS: mark -> .
    4647PASS: math -> math.
     
    6263PASS: option -> option.
    6364PASS: option -> option.
    64 PASS: sub -> .
    65 PASS: sup -> .
     65PASS: sub -> subscript.
     66PASS: sup -> superscript.
    6667PASS: table -> table.
    6768PASS: tr -> row.
     
    7980PASS: td[role="gridcell"] -> gridcell.
    8081PASS: textarea -> textbox.
    81 PASS: time -> .
     82PASS: time -> time.
    8283PASS: ul -> list.
    8384PASS: li -> listitem.
     
    108109PASS: div[role="contentinfo"] -> contentinfo.
    109110PASS: div[role="definition"] -> definition.
     111PASS: div[role="deletion"] -> deletion.
    110112PASS: div[role="dialog"] -> dialog.
    111113PASS: div[role="directory"] -> list.
     
    125127PASS: div[role="heading"] -> heading.
    126128PASS: div[role="img"] -> img.
     129PASS: div[role="insertion"] -> insertion.
    127130PASS: div[role="link"] -> link.
    128131PASS: div[role="list"] -> list.
     
    158161PASS: div[role="spinbutton"] -> spinbutton.
    159162PASS: div[role="status"] -> status.
     163PASS: div[role="subscript"] -> subscript.
     164PASS: div[role="superscript"] -> superscript.
    160165PASS: div[role="tablist"] -> tablist.
    161166PASS: div[role="tab"] -> tab.
     
    163168PASS: div[role="textbox"] -> .
    164169PASS: div[role="term"] -> term.
     170PASS: div[role="time"] -> time.
    165171PASS: div[role="timer"] -> timer.
    166172PASS: div[role="toolbar"] -> toolbar.
  • trunk/LayoutTests/platform/mac/accessibility/roles-exposed-expected.txt

    r243198 r247349  
    875875      AXRoleDescription: definition
    876876     
     877div[role=deletion]
     878      AXRole: AXGroup
     879      AXSubrole: AXDeleteStyleGroup
     880      AXRoleDescription: group
     881     
    877882div[role=dialog]
    878883      AXRole: AXGroup
     
    11601165      AXRoleDescription: image
    11611166     
     1167div[role=insertion]
     1168      AXRole: AXGroup
     1169      AXSubrole: AXInsertStyleGroup
     1170      AXRoleDescription: group
     1171     
    11621172div[role=link]
    11631173      AXRole: AXLink
     
    13351345      AXRoleDescription: application status
    13361346     
     1347div[role=subscript]
     1348      AXRole: AXGroup
     1349      AXSubrole: AXSubscriptStyleGroup
     1350      AXRoleDescription: group
     1351     
     1352div[role=superscript]
     1353      AXRole: AXGroup
     1354      AXSubrole: AXSuperscriptStyleGroup
     1355      AXRoleDescription: group
     1356     
    13371357div[role=switch]
    13381358      AXRole: AXCheckBox
     
    13651385      AXRoleDescription: text field
    13661386     
     1387div[role=time]
     1388      AXRole: AXGroup
     1389      AXSubrole: AXTimeGroup
     1390      AXRoleDescription: group
     1391     
    13671392div[role=timer]
    13681393      AXRole: AXGroup
  • trunk/LayoutTests/platform/wpe/accessibility/roles-computedRoleString-expected.txt

    r245565 r247349  
    88PASS: aside -> complementary.
    99PASS: button -> button.
     10PASS: del -> deletion.
    1011PASS: dfn -> definition.
    1112PASS: dl -> .
     
    4243PASS: input[type='url'] -> .
    4344PASS: input[type='week'] -> .
    44 PASS: ins -> .
     45PASS: ins -> insertion.
    4546PASS: math -> math.
    4647PASS: nav -> navigation.
     
    6263PASS: option -> option.
    6364PASS: option -> option.
    64 PASS: sub -> .
    65 PASS: sup -> .
     65PASS: sub -> subscript.
     66PASS: sup -> superscript.
    6667PASS: table -> table.
    6768PASS: caption -> caption.
     
    8081PASS: td[role="gridcell"] -> gridcell.
    8182PASS: textarea -> textbox.
    82 PASS: time -> .
     83PASS: time -> time.
    8384PASS: ul -> list.
    8485PASS: li -> listitem.
     
    109110PASS: div[role="contentinfo"] -> contentinfo.
    110111PASS: div[role="definition"] -> definition.
     112PASS: div[role="deletion"] -> deletion.
    111113PASS: div[role="dialog"] -> dialog.
    112114PASS: div[role="directory"] -> list.
     
    126128PASS: div[role="heading"] -> heading.
    127129PASS: div[role="img"] -> img.
     130PASS: div[role="insertion"] -> insertion.
    128131PASS: div[role="link"] -> link.
    129132PASS: div[role="list"] -> list.
     
    159162PASS: div[role="spinbutton"] -> spinbutton.
    160163PASS: div[role="status"] -> status.
     164PASS: div[role="subscript"] -> subscript.
     165PASS: div[role="superscript"] -> superscript.
    161166PASS: div[role="tablist"] -> tablist.
    162167PASS: div[role="tab"] -> tab.
     
    164169PASS: div[role="textbox"] -> .
    165170PASS: div[role="term"] -> term.
     171PASS: div[role="time"] -> time.
    166172PASS: div[role="timer"] -> timer.
    167173PASS: div[role="toolbar"] -> toolbar.
  • trunk/LayoutTests/platform/wpe/accessibility/roles-exposed-expected.txt

    r245565 r247349  
    5151     
    5252del:not([datetime])
    53       AXRole: AXStatic
     53      AXRole: AXDeletion
    5454     
    5555del[datetime]
    56       AXRole: AXStatic
     56      AXRole: AXDeletion
    5757     
    5858dfn
     
    204204     
    205205ins:not([datetime])
    206       AXRole: AXStatic
     206      AXRole: AXInsertion
    207207     
    208208ins[datetime]
    209       AXRole: AXStatic
     209      AXRole: AXInsertion
    210210     
    211211map
     
    524524      AXRole: AXDefinition
    525525     
     526div[role=deletion]
     527      AXRole: AXDeletion
     528     
    526529div[role=dialog]
    527530      AXRole: AXDialog
     
    695698      AXRole: AXImage
    696699     
     700div[role=insertion]
     701      AXRole: AXInsertion
     702     
    697703div[role=link]
    698704      AXRole: AXLink
     
    800806      AXRole: AXStatusBar
    801807     
     808div[role=subscript]
     809      AXRole: AXSubscript
     810     
     811div[role=superscript]
     812      AXRole: AXSuperscript
     813     
    802814div[role=switch]
    803815      AXRole: AXToggleButton
     
    817829div[role=textbox]
    818830      AXRole: AXTextField
     831     
     832div[role=time]
     833      AXRole: AXStatic
    819834     
    820835div[role=timer]
  • trunk/Source/WebCore/ChangeLog

    r247347 r247349  
     12019-07-11  Joanmarie Diggs  <jdiggs@igalia.com>
     2
     3        AX: Implement support for ARIA roles insertion, deletion, subscript, superscript, and time
     4        https://bugs.webkit.org/show_bug.cgi?id=199692
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Create new AccessibilityRole types which correspond to the new ARIA roles and
     9        update AccessibilityRenderObject::determineAccessibilityRole() to assign these
     10        internal roles to the related HTML elements.
     11
     12        Update both ATK and Mac to recognize these new internal roles. In addition, update
     13        the ATK mappings for the ins and del elements to ATK_ROLE_CONTENT_INSERTION and
     14        ATK_ROLE_CONTENT_DELETION respectively. Also expose "insertion" and "deletion" via
     15        the AtkObject xml-roles attribute so that this information is not completely absent
     16        for GTK or WPE built against earlier versions of ATK.
     17
     18        Remove AccessibilityObject's isSubscriptStyleGroup() and isSuperscriptStyleGroup().
     19        These two methods were only being used by ATK and are no longer needed for platform
     20        role mapping.
     21
     22        No new tests. Instead add the roles to the existing role-exposure tests.
     23
     24        * accessibility/AccessibilityObject.cpp:
     25        (WebCore::initializeRoleMap):
     26        (WebCore::AccessibilityObject::isSubscriptStyleGroup const): Deleted.
     27        (WebCore::AccessibilityObject::isSuperscriptStyleGroup const): Deleted.
     28        * accessibility/AccessibilityObject.h:
     29        * accessibility/AccessibilityObjectInterface.h:
     30        * accessibility/AccessibilityRenderObject.cpp:
     31        (WebCore::AccessibilityRenderObject::determineAccessibilityRole):
     32        * accessibility/atk/WebKitAccessible.cpp:
     33        (webkitAccessibleGetAttributes):
     34        (atkRole):
     35        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
     36        (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
     37        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
     38        (createAccessibilityRoleMap):
     39        (-[WebAccessibilityObjectWrapper subrole]):
     40
    1412019-07-11  Thibault Saunier  <tsaunier@igalia.com>
    242
  • trunk/Source/WebCore/accessibility/AccessibilityObject.cpp

    r247295 r247349  
    23462346        { "complementary", AccessibilityRole::LandmarkComplementary },
    23472347        { "contentinfo", AccessibilityRole::LandmarkContentInfo },
     2348        { "deletion", AccessibilityRole::Deletion },
    23482349        { "dialog", AccessibilityRole::ApplicationDialog },
    23492350        { "directory", AccessibilityRole::Directory },
     
    24082409        { "heading", AccessibilityRole::Heading },
    24092410        { "img", AccessibilityRole::Image },
     2411        { "insertion", AccessibilityRole::Insertion },
    24102412        { "link", AccessibilityRole::WebCoreLink },
    24112413        { "list", AccessibilityRole::List },
     
    24412443        { "spinbutton", AccessibilityRole::SpinButton },
    24422444        { "status", AccessibilityRole::ApplicationStatus },
     2445        { "subscript", AccessibilityRole::Subscript },
     2446        { "superscript", AccessibilityRole::Superscript },
    24432447        { "switch", AccessibilityRole::Switch },
    24442448        { "tab", AccessibilityRole::Tab },
     
    24482452        { "textbox", AccessibilityRole::TextArea },
    24492453        { "term", AccessibilityRole::Term },
     2454        { "time", AccessibilityRole::Time },
    24502455        { "timer", AccessibilityRole::ApplicationTimer },
    24512456        { "toolbar", AccessibilityRole::Toolbar },
     
    35053510}
    35063511
    3507 bool AccessibilityObject::isSubscriptStyleGroup() const
    3508 {
    3509     Node* node = this->node();
    3510     return node && node->hasTagName(subTag);
    3511 }
    3512 
    3513 bool AccessibilityObject::isSuperscriptStyleGroup() const
    3514 {
    3515     Node* node = this->node();
    3516     return node && node->hasTagName(supTag);
    3517 }
    3518 
    35193512bool AccessibilityObject::isFigureElement() const
    35203513{
  • trunk/Source/WebCore/accessibility/AccessibilityObject.h

    r247295 r247349  
    453453    bool isToolbar() const { return roleValue() == AccessibilityRole::Toolbar; }
    454454    bool isStyleFormatGroup() const;
    455     bool isSubscriptStyleGroup() const;
    456     bool isSuperscriptStyleGroup() const;
    457455    bool isFigureElement() const;
    458456    bool isKeyboardFocusable() const;
  • trunk/Source/WebCore/accessibility/AccessibilityObjectInterface.h

    r245565 r247349  
    7676    ComboBox,
    7777    Definition,
     78    Deletion,
    7879    DescriptionList,
    7980    DescriptionListTerm,
     
    110111    ImageMapLink,
    111112    Incrementor,
     113    Insertion,
    112114    Label,
    113115    LandmarkBanner,
     
    167169    Splitter,
    168170    StaticText,
     171    Subscript,
    169172    Summary,
     173    Superscript,
    170174    Switch,
    171175    SystemWide,
  • trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp

    r247071 r247349  
    28142814        return AccessibilityRole::SVGRoot;
    28152815   
    2816     if (isStyleFormatGroup())
     2816    if (isStyleFormatGroup()) {
     2817        if (node->hasTagName(delTag))
     2818            return AccessibilityRole::Deletion;
     2819        if (node->hasTagName(insTag))
     2820            return AccessibilityRole::Insertion;
     2821        if (node->hasTagName(subTag))
     2822            return AccessibilityRole::Subscript;
     2823        if (node->hasTagName(supTag))
     2824            return AccessibilityRole::Superscript;
    28172825        return is<RenderInline>(*m_renderer) ? AccessibilityRole::Inline : AccessibilityRole::TextGroup;
     2826    }
    28182827   
    28192828    if (node && node->hasTagName(ddTag))
  • trunk/Source/WebCore/accessibility/atk/WebKitAccessible.cpp

    r247071 r247349  
    521521        // The HTML AAM maps several elements to ARIA landmark roles. In order for the type of landmark
    522522        // to be obtainable in the same fashion as an ARIA landmark, fall back on the computedRoleString.
    523         if (coreObject->ariaRoleAttribute() == AccessibilityRole::Unknown && coreObject->isLandmark())
     523        // We also want to do this for the style-format-group element types so that the type of format
     524        // group it is doesn't get lost to a generic platform role.
     525        if (coreObject->ariaRoleAttribute() == AccessibilityRole::Unknown
     526            && (coreObject->isLandmark() || coreObject->isStyleFormatGroup()))
    524527            attributeSet = addToAtkAttributeSet(attributeSet, "xml-roles", computedRoleString.utf8().data());
    525528    }
     
    800803    case AccessibilityRole::DescriptionListDetail:
    801804        return ATK_ROLE_DESCRIPTION_VALUE;
     805    case AccessibilityRole::Deletion:
     806#if ATK_CHECK_VERSION(2, 33, 3)
     807        return ATK_ROLE_CONTENT_DELETION;
     808#else
     809        return ATK_ROLE_STATIC;
     810#endif
     811    case AccessibilityRole::Insertion:
     812#if ATK_CHECK_VERSION(2, 33, 3)
     813        return ATK_ROLE_CONTENT_INSERTION;
     814#else
     815        return ATK_ROLE_STATIC;
     816#endif
     817    case AccessibilityRole::Subscript:
     818        return ATK_ROLE_SUBSCRIPT;
     819    case AccessibilityRole::Superscript:
     820        return ATK_ROLE_SUPERSCRIPT;
    802821    case AccessibilityRole::Inline:
    803         if (coreObject->isSubscriptStyleGroup())
    804             return ATK_ROLE_SUBSCRIPT;
    805         if (coreObject->isSuperscriptStyleGroup())
    806             return ATK_ROLE_SUPERSCRIPT;
    807         return ATK_ROLE_STATIC;
    808822    case AccessibilityRole::SVGTextPath:
    809823    case AccessibilityRole::SVGTSpan:
  • trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm

    r247330 r247349  
    943943    case AccessibilityRole::ColumnHeader:
    944944    case AccessibilityRole::Definition:
     945    case AccessibilityRole::Deletion:
    945946    case AccessibilityRole::DescriptionList:
    946947    case AccessibilityRole::DescriptionListTerm:
     
    968969    case AccessibilityRole::Ignored:
    969970    case AccessibilityRole::Inline:
     971    case AccessibilityRole::Insertion:
    970972    case AccessibilityRole::Label:
    971973    case AccessibilityRole::LandmarkBanner:
     
    10081010    case AccessibilityRole::SplitGroup:
    10091011    case AccessibilityRole::Splitter:
     1012    case AccessibilityRole::Subscript:
     1013    case AccessibilityRole::Superscript:
    10101014    case AccessibilityRole::Summary:
    10111015    case AccessibilityRole::SystemWide:
  • trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm

    r247071 r247349  
    21772177        { AccessibilityRole::GraphicsSymbol, NSAccessibilityImageRole },
    21782178        { AccessibilityRole::Caption, NSAccessibilityGroupRole },
     2179        { AccessibilityRole::Deletion, NSAccessibilityGroupRole },
     2180        { AccessibilityRole::Insertion, NSAccessibilityGroupRole },
     2181        { AccessibilityRole::Subscript, NSAccessibilityGroupRole },
     2182        { AccessibilityRole::Superscript, NSAccessibilityGroupRole },
    21792183    };
    21802184    AccessibilityRoleMap roleMap;
     
    23822386        return NSAccessibilitySwitchSubrole;
    23832387
     2388    if (role == AccessibilityRole::Insertion)
     2389        return @"AXInsertStyleGroup";
     2390    if (role == AccessibilityRole::Deletion)
     2391        return @"AXDeleteStyleGroup";
     2392    if (role == AccessibilityRole::Superscript)
     2393        return @"AXSuperscriptStyleGroup";
     2394    if (role == AccessibilityRole::Subscript)
     2395        return @"AXSubscriptStyleGroup";
     2396
    23842397    if (m_object->isStyleFormatGroup()) {
    23852398        if (Node* node = m_object->node()) {
     
    23962409            if (node->hasTagName(citeTag))
    23972410                return @"AXCiteStyleGroup";
    2398             if (node->hasTagName(insTag))
    2399                 return @"AXInsertStyleGroup";
    2400             if (node->hasTagName(delTag))
    2401                 return @"AXDeleteStyleGroup";
    2402             if (node->hasTagName(supTag))
    2403                 return @"AXSuperscriptStyleGroup";
    2404             if (node->hasTagName(subTag))
    2405                 return @"AXSubscriptStyleGroup";
    24062411        }
    24072412    }
  • trunk/Tools/ChangeLog

    r247348 r247349  
     12019-07-11  Joanmarie Diggs  <jdiggs@igalia.com>
     2
     3        AX: Implement support for ARIA roles insertion, deletion, subscript, superscript, and time
     4        https://bugs.webkit.org/show_bug.cgi?id=199692
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Add support for output of AXDeletion and AXInsertion roles for tests.
     9        Update GTK and WPE jhbuild modules to use version of ATK and AT-SPI2
     10        which include ROLE_CONTENT_DELETION and ROLE_CONTENT_INSERTION.
     11
     12        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
     13        * gtk/jhbuild.modules:
     14        * wpe/jhbuild.modules:
     15
    1162019-07-11  Adrian Perez de Castro  <aperez@igalia.com>
    217
  • trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp

    r247135 r247349  
    530530        return "AXFootnote";
    531531#endif
     532#if ATK_CHECK_VERSION(2, 33, 3)
     533    case ATK_ROLE_CONTENT_DELETION:
     534        return "AXDeletion";
     535    case ATK_ROLE_CONTENT_INSERTION:
     536        return "AXInsertion";
     537#endif
    532538    default:
    533539        // We want to distinguish ATK_ROLE_UNKNOWN from a known AtkRole which
  • trunk/Tools/gtk/jhbuild.modules

    r247138 r247349  
    273273
    274274  <meson id="atk" mesonargs="-Dintrospection=false">
    275     <branch module="pub/GNOME/sources/atk/2.32/atk-2.32.0.tar.xz" version="2.32.0"
    276             repo="ftp.gnome.org"
    277             hash="sha256:cb41feda7fe4ef0daa024471438ea0219592baf7c291347e5a858bb64e4091cc"/>
     275    <branch module="pub/GNOME/sources/atk/2.33/atk-2.33.3.tar.xz" version="2.33.3"
     276            repo="ftp.gnome.org"
     277            hash="sha256:532d1081e87b9f0a8d71733101e791818442fa1896531621d1aecc189e1a4ffe"/>
    278278  </meson>
    279279
    280280  <meson id="at-spi2-core" mesonargs="-Dintrospection=no">
    281     <branch module="pub/GNOME/sources/at-spi2-core/2.32/at-spi2-core-2.32.1.tar.xz" version="2.32.1"
    282             repo="ftp.gnome.org"
    283             hash="sha256:3c2aa937ebfaca2c86569bce9b16a34fbe20d69ef0c58846313b1c42f53b0d53">
     281    <branch module="pub/GNOME/sources/at-spi2-core/2.33/at-spi2-core-2.33.2.tar.xz" version="2.33.2"
     282            repo="ftp.gnome.org"
     283            hash="sha256:0e3f44707cccf9ec9098f84abdf91ea654c919eac3c688400f8d261383cc2abe">
    284284    </branch>
    285285    <dependencies>
     
    289289
    290290  <meson id="at-spi2-atk">
    291     <branch module="pub/GNOME/sources/at-spi2-atk/2.32/at-spi2-atk-2.32.0.tar.xz" version="2.32.0"
    292             repo="ftp.gnome.org"
    293             hash="sha256:0b51e6d339fa2bcca3a3e3159ccea574c67b107f1ac8b00047fa60e34ce7a45c">
     291    <branch module="pub/GNOME/sources/at-spi2-atk/2.33/at-spi2-atk-2.33.2.tar.xz" version="2.33.2"
     292            repo="ftp.gnome.org"
     293            hash="sha256:64d4351b245d717ec6f4f81fd40fe67481ff8e62d3893d465f01e71d9a3db3d3">
    294294    </branch>
    295295    <dependencies>
  • trunk/Tools/wpe/jhbuild.modules

    r247138 r247349  
    269269
    270270  <meson id="atk" mesonargs="-Dintrospection=false">
    271     <branch module="pub/GNOME/sources/atk/2.32/atk-2.32.0.tar.xz" version="2.32.0"
    272             repo="ftp.gnome.org"
    273             hash="sha256:cb41feda7fe4ef0daa024471438ea0219592baf7c291347e5a858bb64e4091cc"/>
     271    <branch module="pub/GNOME/sources/atk/2.33/atk-2.33.3.tar.xz" version="2.33.3"
     272            repo="ftp.gnome.org"
     273            hash="sha256:532d1081e87b9f0a8d71733101e791818442fa1896531621d1aecc189e1a4ffe"/>
    274274    <dependencies>
    275275      <dep package="glib"/>
     
    278278
    279279  <meson id="at-spi2-core" mesonargs="-Dintrospection=no -Dx11=no">
    280     <branch module="pub/GNOME/sources/at-spi2-core/2.32/at-spi2-core-2.32.1.tar.xz" version="2.32.1"
    281             repo="ftp.gnome.org"
    282             hash="sha256:3c2aa937ebfaca2c86569bce9b16a34fbe20d69ef0c58846313b1c42f53b0d53">
     280    <branch module="pub/GNOME/sources/at-spi2-core/2.33/at-spi2-core-2.33.2.tar.xz" version="2.33.2"
     281            repo="ftp.gnome.org"
     282            hash="sha256:0e3f44707cccf9ec9098f84abdf91ea654c919eac3c688400f8d261383cc2abe">
    283283    </branch>
    284284    <dependencies>
     
    288288
    289289  <meson id="at-spi2-atk">
    290     <branch module="pub/GNOME/sources/at-spi2-atk/2.32/at-spi2-atk-2.32.0.tar.xz" version="2.32.0"
    291             repo="ftp.gnome.org"
    292             hash="sha256:0b51e6d339fa2bcca3a3e3159ccea574c67b107f1ac8b00047fa60e34ce7a45c">
     290    <branch module="pub/GNOME/sources/at-spi2-atk/2.33/at-spi2-atk-2.33.2.tar.xz" version="2.33.2"
     291            repo="ftp.gnome.org"
     292            hash="sha256:64d4351b245d717ec6f4f81fd40fe67481ff8e62d3893d465f01e71d9a3db3d3">
    293293    </branch>
    294294    <dependencies>
Note: See TracChangeset for help on using the changeset viewer.