Changeset 202063 in webkit


Ignore:
Timestamp:
Jun 14, 2016 2:28:37 PM (8 years ago)
Author:
d_russell@apple.com
Message:

AX: Form label text should be exposed as static text if it contains only static text
https://bugs.webkit.org/show_bug.cgi?id=158634

Reviewed by Chris Fleizach.

Use AccessibilityLabel to represent HTMLLabelElement to assistive technology.
AccessibilityLabel::containsOnlyStaticText() searches label subtree to evaluate
if all children are static text.
AccessibilityLabel::stringValue() consults containsOnlyStaticText() and returns
textUnderElement() if true.
WebAccessibilityObjectWrapperMac consults containsOnlyStaticText() and substitutes
StaticTextRole for LabelRole if true.
Cache containsOnlyStaticText() in the common case when updating children.

Source/WebCore:

Tests: accessibility/mac/label-element-all-text-string-value.html

accessibility/mac/label-element-with-link-string-value.html

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/AXObjectCache.cpp:

(WebCore::createFromRenderer):

  • accessibility/AccessibilityAllInOne.cpp:
  • accessibility/AccessibilityLabel.cpp: Added.

(WebCore::AccessibilityLabel::AccessibilityLabel):
(WebCore::AccessibilityLabel::~AccessibilityLabel):
(WebCore::AccessibilityLabel::create):
(WebCore::AccessibilityLabel::computeAccessibilityIsIgnored):
(WebCore::AccessibilityLabel::stringValue):
(WebCore::childrenContainOnlyStaticText):
(WebCore::AccessibilityLabel::containsOnlyStaticText):
(WebCore::AccessibilityLabel::updateChildrenIfNecessary):
(WebCore::AccessibilityLabel::clearChildren):
(WebCore::AccessibilityLabel::insertChild):

  • accessibility/AccessibilityLabel.h: Added.
  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::isLabel):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper role]):

LayoutTests:

  • accessibility/aria-labelledby-overrides-label-expected.txt:
  • accessibility/mac/label-element-all-text-string-value-expected.txt: Added.
  • accessibility/mac/label-element-all-text-string-value.html: Added.
  • accessibility/mac/label-element-with-hidden-control-expected.txt:
  • accessibility/mac/label-element-with-hidden-control.html:
  • accessibility/mac/label-element-with-link-string-value-expected.txt: Added.
  • accessibility/mac/label-element-with-link-string-value.html: Added.
  • accessibility/mac/slider-allows-title-ui-element-expected.txt:
  • accessibility/mac/slider-allows-title-ui-element.html:
Location:
trunk
Files:
10 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r202061 r202063  
     12016-06-14  Doug Russell  <d_russell@apple.com>
     2
     3        AX: Form label text should be exposed as static text if it contains only static text
     4        https://bugs.webkit.org/show_bug.cgi?id=158634
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Use AccessibilityLabel to represent HTMLLabelElement to assistive technology.
     9        AccessibilityLabel::containsOnlyStaticText() searches label subtree to evaluate
     10        if all children are static text.
     11        AccessibilityLabel::stringValue() consults containsOnlyStaticText() and returns
     12        textUnderElement() if true.
     13        WebAccessibilityObjectWrapperMac consults containsOnlyStaticText() and substitutes
     14        StaticTextRole for LabelRole if true.
     15        Cache containsOnlyStaticText() in the common case when updating children.
     16
     17        * accessibility/aria-labelledby-overrides-label-expected.txt:
     18        * accessibility/mac/label-element-all-text-string-value-expected.txt: Added.
     19        * accessibility/mac/label-element-all-text-string-value.html: Added.
     20        * accessibility/mac/label-element-with-hidden-control-expected.txt:
     21        * accessibility/mac/label-element-with-hidden-control.html:
     22        * accessibility/mac/label-element-with-link-string-value-expected.txt: Added.
     23        * accessibility/mac/label-element-with-link-string-value.html: Added.
     24        * accessibility/mac/slider-allows-title-ui-element-expected.txt:
     25        * accessibility/mac/slider-allows-title-ui-element.html:
     26
    1272016-06-14  Ryan Haddad  <ryanhaddad@apple.com>
    228
  • trunk/LayoutTests/accessibility/aria-labelledby-overrides-label-expected.txt

    r201216 r202063  
    66PASS platformValueForW3CName(text) is "Shut down computer after 10 minutes"
    77PASS text.titleUIElement() != null && text.titleUIElement().isValid is false
    8 Label element role is: AXRole: AXGroup
     8Label element role is: AXRole: AXStaticText
    99PASS successfullyParsed is true
    1010
  • trunk/LayoutTests/accessibility/mac/label-element-with-hidden-control-expected.txt

    r187799 r202063  
    55
    66
    7 PASS container.childAtIndex('0').role is 'AXRole: AXGroup'
     7PASS container.childAtIndex('0').role is 'AXRole: AXStaticText'
    88PASS container.childAtIndex('0').childAtIndex(0).role is 'AXRole: AXStaticText'
    99PASS container.childAtIndex('0').childAtIndex(0).stringValue is 'AXValue: Test label1'
  • trunk/LayoutTests/accessibility/mac/label-element-with-hidden-control.html

    r187799 r202063  
    2222            body.focus();
    2323            var container = accessibilityController.focusedElement.childAtIndex(0);
    24             shouldBe("container.childAtIndex('0').role", "'AXRole: AXGroup'");           
     24            shouldBe("container.childAtIndex('0').role", "'AXRole: AXStaticText'");           
    2525            shouldBe("container.childAtIndex('0').childAtIndex(0).role", "'AXRole: AXStaticText'");           
    2626            shouldBe("container.childAtIndex('0').childAtIndex(0).stringValue", "'AXValue: Test label1'");           
  • trunk/LayoutTests/accessibility/mac/slider-allows-title-ui-element-expected.txt

    r187799 r202063  
    66
    77PASS slider.titleUIElement().isEqual(title) is true
    8 PASS title.role is 'AXRole: AXGroup'
     8PASS title.role is 'AXRole: AXStaticText'
    99PASS title.childAtIndex(0).role is 'AXRole: AXStaticText'
    1010PASS successfullyParsed is true
  • trunk/LayoutTests/accessibility/mac/slider-allows-title-ui-element.html

    r187799 r202063  
    2525
    2626        shouldBeTrue("slider.titleUIElement().isEqual(title)");
    27         shouldBe("title.role", "'AXRole: AXGroup'");
     27        shouldBe("title.role", "'AXRole: AXStaticText'");
    2828        shouldBe("title.childAtIndex(0).role", "'AXRole: AXStaticText'");
    2929    }
  • trunk/Source/WebCore/CMakeLists.txt

    r202023 r202063  
    10511051    accessibility/AccessibilityAttachment.cpp
    10521052    accessibility/AccessibilityImageMapLink.cpp
     1053    accessibility/AccessibilityLabel.cpp
    10531054    accessibility/AccessibilityList.cpp
    10541055    accessibility/AccessibilityListBox.cpp
  • trunk/Source/WebCore/ChangeLog

    r202059 r202063  
     12016-06-14  Doug Russell  <d_russell@apple.com>
     2
     3        AX: Form label text should be exposed as static text if it contains only static text
     4        https://bugs.webkit.org/show_bug.cgi?id=158634
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Use AccessibilityLabel to represent HTMLLabelElement to assistive technology.
     9        AccessibilityLabel::containsOnlyStaticText() searches label subtree to evaluate
     10        if all children are static text.
     11        AccessibilityLabel::stringValue() consults containsOnlyStaticText() and returns
     12        textUnderElement() if true.
     13        WebAccessibilityObjectWrapperMac consults containsOnlyStaticText() and substitutes
     14        StaticTextRole for LabelRole if true.
     15        Cache containsOnlyStaticText() in the common case when updating children.
     16
     17        Tests: accessibility/mac/label-element-all-text-string-value.html
     18               accessibility/mac/label-element-with-link-string-value.html
     19
     20        * CMakeLists.txt:
     21        * WebCore.xcodeproj/project.pbxproj:
     22        * accessibility/AXObjectCache.cpp:
     23        (WebCore::createFromRenderer):
     24        * accessibility/AccessibilityAllInOne.cpp:
     25        * accessibility/AccessibilityLabel.cpp: Added.
     26        (WebCore::AccessibilityLabel::AccessibilityLabel):
     27        (WebCore::AccessibilityLabel::~AccessibilityLabel):
     28        (WebCore::AccessibilityLabel::create):
     29        (WebCore::AccessibilityLabel::computeAccessibilityIsIgnored):
     30        (WebCore::AccessibilityLabel::stringValue):
     31        (WebCore::childrenContainOnlyStaticText):
     32        (WebCore::AccessibilityLabel::containsOnlyStaticText):
     33        (WebCore::AccessibilityLabel::updateChildrenIfNecessary):
     34        (WebCore::AccessibilityLabel::clearChildren):
     35        (WebCore::AccessibilityLabel::insertChild):
     36        * accessibility/AccessibilityLabel.h: Added.
     37        * accessibility/AccessibilityObject.h:
     38        (WebCore::AccessibilityObject::isLabel):
     39        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
     40        (-[WebAccessibilityObjectWrapper role]):
     41
    1422016-06-14  Commit Queue  <commit-queue@webkit.org>
    243
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r202023 r202063  
    67766776                F50664F8157F52DC00AC226F /* FormController.h in Headers */ = {isa = PBXBuildFile; fileRef = F50664F6157F52DC00AC226F /* FormController.h */; };
    67776777                F513A3EA15FF4841001526DB /* ValidationMessageClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F513A3E915FF4841001526DB /* ValidationMessageClient.h */; };
     6778                F52A8FD71D0A8D0E0073CF42 /* AccessibilityLabel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F52A8FD51D0A88010073CF42 /* AccessibilityLabel.cpp */; };
    67786779                F52AD5E41534245F0059FBE6 /* EmptyClients.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F52AD5E31534245F0059FBE6 /* EmptyClients.cpp */; };
    67796780                F544F78815CFB2A800AF33A8 /* PlatformLocale.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F544F78615CFB2A800AF33A8 /* PlatformLocale.cpp */; };
     
    1487214873                F523D30302DE4476018635CA /* Range.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Range.cpp; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    1487314874                F523D30402DE4476018635CA /* Range.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Range.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
     14875                F52A8FD51D0A88010073CF42 /* AccessibilityLabel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityLabel.cpp; sourceTree = "<group>"; };
     14876                F52A8FD61D0A88010073CF42 /* AccessibilityLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityLabel.h; sourceTree = "<group>"; };
    1487414877                F52AD5E31534245F0059FBE6 /* EmptyClients.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EmptyClients.cpp; sourceTree = "<group>"; };
    1487514878                F544F78615CFB2A800AF33A8 /* PlatformLocale.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformLocale.cpp; sourceTree = "<group>"; };
     
    1652116524                                2981CAA0131822EC00D12F2A /* AccessibilityImageMapLink.cpp */,
    1652216525                                29A8121D0FBB9C1D00510293 /* AccessibilityImageMapLink.h */,
     16526                                F52A8FD51D0A88010073CF42 /* AccessibilityLabel.cpp */,
     16527                                F52A8FD61D0A88010073CF42 /* AccessibilityLabel.h */,
    1652316528                                2981CAA1131822EC00D12F2A /* AccessibilityList.cpp */,
    1652416529                                29A8120E0FBB9C1D00510293 /* AccessibilityList.h */,
     
    2977829783                                93C09A7F0B064EEF005ABD4D /* EventHandlerMac.mm in Sources */,
    2977929784                                AD4495F3141FC08900541EDF /* EventListenerMap.cpp in Sources */,
     29785                                F52A8FD71D0A8D0E0073CF42 /* AccessibilityLabel.cpp in Sources */,
    2978029786                                C400D10918F1C8F60090D863 /* EventLoopInput.cpp in Sources */,
    2978129787                                99CC0B5018BE9849006CEBCC /* EventLoopInputDispatcher.cpp in Sources */,
  • trunk/Source/WebCore/accessibility/AXObjectCache.cpp

    r201667 r202063  
    3838#include "AccessibilityAttachment.h"
    3939#include "AccessibilityImageMapLink.h"
     40#include "AccessibilityLabel.h"
    4041#include "AccessibilityList.h"
    4142#include "AccessibilityListBox.h"
     
    428429    if (nodeHasRole(node, "treeitem"))
    429430        return AccessibilityTreeItem::create(renderer);
     431
     432    if (node && is<HTMLLabelElement>(node))
     433        return AccessibilityLabel::create(renderer);
    430434
    431435#if ENABLE(VIDEO)
  • trunk/Source/WebCore/accessibility/AccessibilityAllInOne.cpp

    r198942 r202063  
    3232#include "AccessibilityAttachment.cpp"
    3333#include "AccessibilityImageMapLink.cpp"
     34#include "AccessibilityLabel.cpp"
    3435#include "AccessibilityList.cpp"
    3536#include "AccessibilityListBox.cpp"
  • trunk/Source/WebCore/accessibility/AccessibilityObject.h

    r200677 r202063  
    513513    virtual bool isInputSlider() const { return false; }
    514514    virtual bool isControl() const { return false; }
     515    virtual bool isLabel() const { return false; }
    515516    virtual bool isList() const { return false; }
    516517    virtual bool isTable() const { return false; }
  • trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm

    r201087 r202063  
    3434#import "AXObjectCache.h"
    3535#import "AccessibilityARIAGridRow.h"
     36#import "AccessibilityLabel.h"
    3637#import "AccessibilityList.h"
    3738#import "AccessibilityListBox.h"
     
    22332234#pragma clang diagnostic pop
    22342235    AccessibilityRole role = m_object->roleValue();
     2236
     2237    if (role == LabelRole && is<AccessibilityLabel>(*m_object) && downcast<AccessibilityLabel>(*m_object).containsOnlyStaticText())
     2238        role = StaticTextRole;
     2239
    22352240    if (role == CanvasRole && m_object->canvasHasFallbackContent())
    22362241        role = GroupRole;
Note: See TracChangeset for help on using the changeset viewer.