Changeset 224953 in webkit


Ignore:
Timestamp:
Nov 16, 2017 6:24:53 PM (6 years ago)
Author:
n_wang@apple.com
Message:

AX: AOM: Implement string type properties
https://bugs.webkit.org/show_bug.cgi?id=179495

Reviewed by Chris Fleizach.

Source/WebCore:

Implemented the rest of the string type properties for Accessibility
Object Model.

Test: accessibility/mac/AOM-string-properties.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::handleLiveRegionCreated):

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::childrenChanged):
(WebCore::AccessibilityNodeObject::isPressed const):
(WebCore::AccessibilityNodeObject::isChecked const):
(WebCore::AccessibilityNodeObject::valueDescription const):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::isAccessibilityObjectSearchMatchAtIndex):
(WebCore::AccessibilityObject::supportsAutoComplete const):
(WebCore::AccessibilityObject::autoCompleteValue const):
(WebCore::AccessibilityObject::invalidStatus const):
(WebCore::AccessibilityObject::supportsCurrent const):
(WebCore::AccessibilityObject::currentState const):
(WebCore::AccessibilityObject::currentValue const):
(WebCore::AccessibilityObject::roleDescription const):
(WebCore::AccessibilityObject::keyShortcutsValue const):
(WebCore::AccessibilityObject::placeholderValue const):
(WebCore::AccessibilityObject::isInsideLiveRegion const):
(WebCore::AccessibilityObject::liveRegionAncestor const):
(WebCore::AccessibilityObject::supportsARIAAttributes const):
(WebCore::AccessibilityObject::supportsLiveRegion const):
(WebCore::AccessibilityObject::sortDirection const):
(WebCore::AccessibilityObject::supportsHasPopup const):
(WebCore::AccessibilityObject::hasPopupValue const):
(WebCore::AccessibilityObject::supportsPressed const):
(WebCore::AccessibilityObject::checkboxOrRadioValue const):
(WebCore::AccessibilityObject::pressedIsPresent const):
(WebCore::AccessibilityObject::buttonRoleType const):
(WebCore::AccessibilityObject::supportsARIAAutoComplete const): Deleted.
(WebCore::AccessibilityObject::ariaAutoCompleteValue const): Deleted.
(WebCore::AccessibilityObject::supportsARIACurrent const): Deleted.
(WebCore::AccessibilityObject::ariaCurrentState const): Deleted.
(WebCore::AccessibilityObject::ariaCurrentValue const): Deleted.
(WebCore::AccessibilityObject::ariaKeyShortcutsValue const): Deleted.
(WebCore::AccessibilityObject::isInsideARIALiveRegion const): Deleted.
(WebCore::AccessibilityObject::ariaLiveRegionAncestor const): Deleted.
(WebCore::AccessibilityObject::supportsARIALiveRegion const): Deleted.
(WebCore::AccessibilityObject::supportsARIAHasPopup const): Deleted.
(WebCore::AccessibilityObject::ariaPopupValue const): Deleted.
(WebCore::AccessibilityObject::supportsARIAPressed const): Deleted.
(WebCore::AccessibilityObject::ariaPressedIsPresent const): Deleted.

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::hasPopup const):
(WebCore::AccessibilityObject::liveRegionStatus const):
(WebCore::AccessibilityObject::liveRegionRelevant const):
(WebCore::AccessibilityObject::liveRegionAtomic const):
(WebCore::AccessibilityObject::ariaHasPopup const): Deleted.
(WebCore::AccessibilityObject::ariaLiveRegionStatus const): Deleted.
(WebCore::AccessibilityObject::ariaLiveRegionRelevant const): Deleted.
(WebCore::AccessibilityObject::ariaLiveRegionAtomic const): Deleted.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::hasPopup const):
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
(WebCore::AccessibilityRenderObject::orientation const):
(WebCore::AccessibilityRenderObject::textChanged):
(WebCore::AccessibilityRenderObject::liveRegionStatus const):
(WebCore::AccessibilityRenderObject::liveRegionRelevant const):
(WebCore::AccessibilityRenderObject::liveRegionAtomic const):
(WebCore::AccessibilityRenderObject::ariaHasPopup const): Deleted.
(WebCore::AccessibilityRenderObject::ariaLiveRegionStatus const): Deleted.
(WebCore::AccessibilityRenderObject::ariaLiveRegionRelevant const): Deleted.
(WebCore::AccessibilityRenderObject::ariaLiveRegionAtomic const): Deleted.

  • accessibility/AccessibilityRenderObject.h:
  • accessibility/AccessibleNode.cpp:

(WebCore::ariaAttributeMap):
(WebCore::isPropertyValueString):
(WebCore::AccessibleNode::notifyAttributeChanged):
(WebCore::AccessibleNode::autocomplete const):
(WebCore::AccessibleNode::setAutocomplete):
(WebCore::AccessibleNode::checked const):
(WebCore::AccessibleNode::setChecked):
(WebCore::AccessibleNode::current const):
(WebCore::AccessibleNode::setCurrent):
(WebCore::AccessibleNode::hasPopUp const):
(WebCore::AccessibleNode::setHasPopUp):
(WebCore::AccessibleNode::invalid const):
(WebCore::AccessibleNode::setInvalid):
(WebCore::AccessibleNode::keyShortcuts const):
(WebCore::AccessibleNode::setKeyShortcuts):
(WebCore::AccessibleNode::live const):
(WebCore::AccessibleNode::setLive):
(WebCore::AccessibleNode::setLabel):
(WebCore::AccessibleNode::orientation const):
(WebCore::AccessibleNode::setOrientation):
(WebCore::AccessibleNode::placeholder const):
(WebCore::AccessibleNode::setPlaceholder):
(WebCore::AccessibleNode::pressed const):
(WebCore::AccessibleNode::setPressed):
(WebCore::AccessibleNode::relevant const):
(WebCore::AccessibleNode::setRelevant):
(WebCore::AccessibleNode::role const):
(WebCore::AccessibleNode::setRole):
(WebCore::AccessibleNode::roleDescription const):
(WebCore::AccessibleNode::setRoleDescription):
(WebCore::AccessibleNode::sort const):
(WebCore::AccessibleNode::setSort):
(WebCore::AccessibleNode::valueText const):
(WebCore::AccessibleNode::setValueText):

  • accessibility/AccessibleNode.h:

(WebCore::AXPropertyHashTraits::constructDeletedValue):
(WebCore::AXPropertyHashTraits::isDeletedValue):

  • accessibility/AccessibleNode.idl:
  • accessibility/atk/AXObjectCacheAtk.cpp:

(WebCore::AXObjectCache::postPlatformNotification):

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(webkitAccessibleGetAttributes):
(atkRole):
(setAtkStateSetFromCoreObject):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityHasPopup]):
(-[WebAccessibilityObjectWrapper accessibilityARIALiveRegionStatus]):
(-[WebAccessibilityObjectWrapper accessibilityARIARelevantStatus]):
(-[WebAccessibilityObjectWrapper accessibilityARIALiveRegionIsAtomic]):
(-[WebAccessibilityObjectWrapper accessibilitySupportsARIAPressed]):
(-[WebAccessibilityObjectWrapper accessibilityARIACurrentStatus]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):

LayoutTests:

  • accessibility/accessibility-object-model.html:
  • accessibility/mac/AOM-string-properties-expected.txt: Added.
  • accessibility/mac/AOM-string-properties.html: Added.
Location:
trunk
Files:
2 added
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r224946 r224953  
     12017-11-16  Nan Wang  <n_wang@apple.com>
     2
     3        AX: AOM: Implement string type properties
     4        https://bugs.webkit.org/show_bug.cgi?id=179495
     5
     6        Reviewed by Chris Fleizach.
     7
     8        * accessibility/accessibility-object-model.html:
     9        * accessibility/mac/AOM-string-properties-expected.txt: Added.
     10        * accessibility/mac/AOM-string-properties.html: Added.
     11
    1122017-11-16  Ryan Haddad  <ryanhaddad@apple.com>
    213
  • trunk/LayoutTests/accessibility/accessibility-object-model.html

    r224893 r224953  
    112112            button2.parentElement.removeChild(button2);
    113113        })();
    114         gc();
    115114        shouldBe("aomRemovedButton.role", "'checkbox'");
    116115    }
  • trunk/Source/WebCore/ChangeLog

    r224952 r224953  
     12017-11-16  Nan Wang  <n_wang@apple.com>
     2
     3        AX: AOM: Implement string type properties
     4        https://bugs.webkit.org/show_bug.cgi?id=179495
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Implemented the rest of the string type properties for Accessibility
     9        Object Model.
     10
     11        Test: accessibility/mac/AOM-string-properties.html
     12
     13        * accessibility/AXObjectCache.cpp:
     14        (WebCore::AXObjectCache::handleLiveRegionCreated):
     15        * accessibility/AccessibilityNodeObject.cpp:
     16        (WebCore::AccessibilityNodeObject::childrenChanged):
     17        (WebCore::AccessibilityNodeObject::isPressed const):
     18        (WebCore::AccessibilityNodeObject::isChecked const):
     19        (WebCore::AccessibilityNodeObject::valueDescription const):
     20        * accessibility/AccessibilityObject.cpp:
     21        (WebCore::AccessibilityObject::isAccessibilityObjectSearchMatchAtIndex):
     22        (WebCore::AccessibilityObject::supportsAutoComplete const):
     23        (WebCore::AccessibilityObject::autoCompleteValue const):
     24        (WebCore::AccessibilityObject::invalidStatus const):
     25        (WebCore::AccessibilityObject::supportsCurrent const):
     26        (WebCore::AccessibilityObject::currentState const):
     27        (WebCore::AccessibilityObject::currentValue const):
     28        (WebCore::AccessibilityObject::roleDescription const):
     29        (WebCore::AccessibilityObject::keyShortcutsValue const):
     30        (WebCore::AccessibilityObject::placeholderValue const):
     31        (WebCore::AccessibilityObject::isInsideLiveRegion const):
     32        (WebCore::AccessibilityObject::liveRegionAncestor const):
     33        (WebCore::AccessibilityObject::supportsARIAAttributes const):
     34        (WebCore::AccessibilityObject::supportsLiveRegion const):
     35        (WebCore::AccessibilityObject::sortDirection const):
     36        (WebCore::AccessibilityObject::supportsHasPopup const):
     37        (WebCore::AccessibilityObject::hasPopupValue const):
     38        (WebCore::AccessibilityObject::supportsPressed const):
     39        (WebCore::AccessibilityObject::checkboxOrRadioValue const):
     40        (WebCore::AccessibilityObject::pressedIsPresent const):
     41        (WebCore::AccessibilityObject::buttonRoleType const):
     42        (WebCore::AccessibilityObject::supportsARIAAutoComplete const): Deleted.
     43        (WebCore::AccessibilityObject::ariaAutoCompleteValue const): Deleted.
     44        (WebCore::AccessibilityObject::supportsARIACurrent const): Deleted.
     45        (WebCore::AccessibilityObject::ariaCurrentState const): Deleted.
     46        (WebCore::AccessibilityObject::ariaCurrentValue const): Deleted.
     47        (WebCore::AccessibilityObject::ariaKeyShortcutsValue const): Deleted.
     48        (WebCore::AccessibilityObject::isInsideARIALiveRegion const): Deleted.
     49        (WebCore::AccessibilityObject::ariaLiveRegionAncestor const): Deleted.
     50        (WebCore::AccessibilityObject::supportsARIALiveRegion const): Deleted.
     51        (WebCore::AccessibilityObject::supportsARIAHasPopup const): Deleted.
     52        (WebCore::AccessibilityObject::ariaPopupValue const): Deleted.
     53        (WebCore::AccessibilityObject::supportsARIAPressed const): Deleted.
     54        (WebCore::AccessibilityObject::ariaPressedIsPresent const): Deleted.
     55        * accessibility/AccessibilityObject.h:
     56        (WebCore::AccessibilityObject::hasPopup const):
     57        (WebCore::AccessibilityObject::liveRegionStatus const):
     58        (WebCore::AccessibilityObject::liveRegionRelevant const):
     59        (WebCore::AccessibilityObject::liveRegionAtomic const):
     60        (WebCore::AccessibilityObject::ariaHasPopup const): Deleted.
     61        (WebCore::AccessibilityObject::ariaLiveRegionStatus const): Deleted.
     62        (WebCore::AccessibilityObject::ariaLiveRegionRelevant const): Deleted.
     63        (WebCore::AccessibilityObject::ariaLiveRegionAtomic const): Deleted.
     64        * accessibility/AccessibilityRenderObject.cpp:
     65        (WebCore::AccessibilityRenderObject::hasPopup const):
     66        (WebCore::AccessibilityRenderObject::determineAccessibilityRole):
     67        (WebCore::AccessibilityRenderObject::orientation const):
     68        (WebCore::AccessibilityRenderObject::textChanged):
     69        (WebCore::AccessibilityRenderObject::liveRegionStatus const):
     70        (WebCore::AccessibilityRenderObject::liveRegionRelevant const):
     71        (WebCore::AccessibilityRenderObject::liveRegionAtomic const):
     72        (WebCore::AccessibilityRenderObject::ariaHasPopup const): Deleted.
     73        (WebCore::AccessibilityRenderObject::ariaLiveRegionStatus const): Deleted.
     74        (WebCore::AccessibilityRenderObject::ariaLiveRegionRelevant const): Deleted.
     75        (WebCore::AccessibilityRenderObject::ariaLiveRegionAtomic const): Deleted.
     76        * accessibility/AccessibilityRenderObject.h:
     77        * accessibility/AccessibleNode.cpp:
     78        (WebCore::ariaAttributeMap):
     79        (WebCore::isPropertyValueString):
     80        (WebCore::AccessibleNode::notifyAttributeChanged):
     81        (WebCore::AccessibleNode::autocomplete const):
     82        (WebCore::AccessibleNode::setAutocomplete):
     83        (WebCore::AccessibleNode::checked const):
     84        (WebCore::AccessibleNode::setChecked):
     85        (WebCore::AccessibleNode::current const):
     86        (WebCore::AccessibleNode::setCurrent):
     87        (WebCore::AccessibleNode::hasPopUp const):
     88        (WebCore::AccessibleNode::setHasPopUp):
     89        (WebCore::AccessibleNode::invalid const):
     90        (WebCore::AccessibleNode::setInvalid):
     91        (WebCore::AccessibleNode::keyShortcuts const):
     92        (WebCore::AccessibleNode::setKeyShortcuts):
     93        (WebCore::AccessibleNode::live const):
     94        (WebCore::AccessibleNode::setLive):
     95        (WebCore::AccessibleNode::setLabel):
     96        (WebCore::AccessibleNode::orientation const):
     97        (WebCore::AccessibleNode::setOrientation):
     98        (WebCore::AccessibleNode::placeholder const):
     99        (WebCore::AccessibleNode::setPlaceholder):
     100        (WebCore::AccessibleNode::pressed const):
     101        (WebCore::AccessibleNode::setPressed):
     102        (WebCore::AccessibleNode::relevant const):
     103        (WebCore::AccessibleNode::setRelevant):
     104        (WebCore::AccessibleNode::role const):
     105        (WebCore::AccessibleNode::setRole):
     106        (WebCore::AccessibleNode::roleDescription const):
     107        (WebCore::AccessibleNode::setRoleDescription):
     108        (WebCore::AccessibleNode::sort const):
     109        (WebCore::AccessibleNode::setSort):
     110        (WebCore::AccessibleNode::valueText const):
     111        (WebCore::AccessibleNode::setValueText):
     112        * accessibility/AccessibleNode.h:
     113        (WebCore::AXPropertyHashTraits::constructDeletedValue):
     114        (WebCore::AXPropertyHashTraits::isDeletedValue):
     115        * accessibility/AccessibleNode.idl:
     116        * accessibility/atk/AXObjectCacheAtk.cpp:
     117        (WebCore::AXObjectCache::postPlatformNotification):
     118        * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
     119        (webkitAccessibleGetAttributes):
     120        (atkRole):
     121        (setAtkStateSetFromCoreObject):
     122        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
     123        (-[WebAccessibilityObjectWrapper accessibilityHasPopup]):
     124        (-[WebAccessibilityObjectWrapper accessibilityARIALiveRegionStatus]):
     125        (-[WebAccessibilityObjectWrapper accessibilityARIARelevantStatus]):
     126        (-[WebAccessibilityObjectWrapper accessibilityARIALiveRegionIsAtomic]):
     127        (-[WebAccessibilityObjectWrapper accessibilitySupportsARIAPressed]):
     128        (-[WebAccessibilityObjectWrapper accessibilityARIACurrentStatus]):
     129        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
     130        (-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
     131        (-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
     132        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
     133        * inspector/agents/InspectorDOMAgent.cpp:
     134        (WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):
     135
    11362017-11-16  Alex Christensen  <achristensen@webkit.org>
    2137
  • trunk/Source/WebCore/accessibility/AXObjectCache.cpp

    r224871 r224953  
    848848   
    849849    Element* element = downcast<Element>(node);
    850     String liveRegionStatus = element->attributeWithoutSynchronization(aria_liveAttr);
     850    String liveRegionStatus = AccessibleNode::effectiveStringValueForElement(*element, AXPropertyName::Live);
    851851    if (liveRegionStatus.isEmpty()) {
    852852        const AtomicString& ariaRole = AccessibleNode::effectiveStringValueForElement(*element, AXPropertyName::Role);
  • trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp

    r224871 r224953  
    146146        // notifications. To fix this, we used a timer to make sure we only post one notification for the children changes within a pre-defined
    147147        // time interval.
    148         if (parent->supportsARIALiveRegion())
     148        if (parent->supportsLiveRegion())
    149149            cache->postLiveRegionChangeNotification(parent);
    150150       
     
    659659    // If this is an toggle button, check the aria-pressed attribute rather than node()->active()
    660660    if (isToggleButton())
    661         return equalLettersIgnoringASCIICase(getAttribute(aria_pressedAttr), "true");
     661        return equalLettersIgnoringASCIICase(stringValueForProperty(AXPropertyName::Pressed), "true");
    662662
    663663    if (!is<Element>(*node))
     
    691691    }
    692692   
    693     if (validRole && equalLettersIgnoringASCIICase(getAttribute(aria_checkedAttr), "true"))
     693    if (validRole && equalLettersIgnoringASCIICase(stringValueForProperty(AXPropertyName::Checked), "true"))
    694694        return true;
    695695
     
    803803        return String();
    804804
    805     return getAttribute(aria_valuetextAttr).string();
     805    return stringValueForProperty(AXPropertyName::ValueText);
    806806}
    807807
  • trunk/Source/WebCore/accessibility/AccessibilityObject.cpp

    r224899 r224953  
    211211       
    212212    case AccessibilitySearchKey::LiveRegion:
    213         return axObject->supportsARIALiveRegion();
     213        return axObject->supportsLiveRegion();
    214214       
    215215    case AccessibilitySearchKey::MisspelledWord:
     
    16661666}
    16671667
    1668 bool AccessibilityObject::supportsARIAAutoComplete() const
    1669 {
    1670     return (isComboBox() || isARIATextControl()) && hasAttribute(aria_autocompleteAttr);
    1671 }
    1672 
    1673 String AccessibilityObject::ariaAutoCompleteValue() const
    1674 {
    1675     const AtomicString& autoComplete = getAttribute(aria_autocompleteAttr);
     1668bool AccessibilityObject::supportsAutoComplete() const
     1669{
     1670    return (isComboBox() || isARIATextControl()) && hasProperty(AXPropertyName::Autocomplete);
     1671}
     1672
     1673String AccessibilityObject::autoCompleteValue() const
     1674{
     1675    const AtomicString& autoComplete = stringValueForProperty(AXPropertyName::Autocomplete);
    16761676    if (equalLettersIgnoringASCIICase(autoComplete, "inline")
    16771677        || equalLettersIgnoringASCIICase(autoComplete, "list")
     
    20012001
    20022002    // aria-invalid can return false (default), grammar, spelling, or true.
    2003     String ariaInvalid = stripLeadingAndTrailingHTMLSpaces(getAttribute(aria_invalidAttr));
     2003    String ariaInvalid = stripLeadingAndTrailingHTMLSpaces(stringValueForProperty(AXPropertyName::Invalid));
    20042004   
    20052005    if (ariaInvalid.isEmpty()) {
     
    20272027}
    20282028
    2029 bool AccessibilityObject::supportsARIACurrent() const
    2030 {
    2031     return hasAttribute(aria_currentAttr);
     2029bool AccessibilityObject::supportsCurrent() const
     2030{
     2031    return hasProperty(AXPropertyName::Current);
    20322032}
    20332033 
    2034 AccessibilityARIACurrentState AccessibilityObject::ariaCurrentState() const
     2034AccessibilityCurrentState AccessibilityObject::currentState() const
    20352035{
    20362036    // aria-current can return false (default), true, page, step, location, date or time.
    2037     String currentStateValue = stripLeadingAndTrailingHTMLSpaces(getAttribute(aria_currentAttr));
     2037    String currentStateValue = stripLeadingAndTrailingHTMLSpaces(stringValueForProperty(AXPropertyName::Current));
    20382038   
    20392039    // If "false", empty, or missing, return false state.
    20402040    if (currentStateValue.isEmpty() || currentStateValue == "false")
    2041         return AccessibilityARIACurrentState::False;
     2041        return AccessibilityCurrentState::False;
    20422042   
    20432043    if (currentStateValue == "page")
    2044         return AccessibilityARIACurrentState::Page;
     2044        return AccessibilityCurrentState::Page;
    20452045    if (currentStateValue == "step")
    2046         return AccessibilityARIACurrentState::Step;
     2046        return AccessibilityCurrentState::Step;
    20472047    if (currentStateValue == "location")
    2048         return AccessibilityARIACurrentState::Location;
     2048        return AccessibilityCurrentState::Location;
    20492049    if (currentStateValue == "date")
    2050         return AccessibilityARIACurrentState::Date;
     2050        return AccessibilityCurrentState::Date;
    20512051    if (currentStateValue == "time")
    2052         return AccessibilityARIACurrentState::Time;
     2052        return AccessibilityCurrentState::Time;
    20532053   
    20542054    // Any value not included in the list of allowed values should be treated as "true".
    2055     return AccessibilityARIACurrentState::True;
    2056 }
    2057 
    2058 String AccessibilityObject::ariaCurrentValue() const
    2059 {
    2060     switch (ariaCurrentState()) {
    2061     case AccessibilityARIACurrentState::False:
     2055    return AccessibilityCurrentState::True;
     2056}
     2057
     2058String AccessibilityObject::currentValue() const
     2059{
     2060    switch (currentState()) {
     2061    case AccessibilityCurrentState::False:
    20622062        return "false";
    2063     case AccessibilityARIACurrentState::Page:
     2063    case AccessibilityCurrentState::Page:
    20642064        return "page";
    2065     case AccessibilityARIACurrentState::Step:
     2065    case AccessibilityCurrentState::Step:
    20662066        return "step";
    2067     case AccessibilityARIACurrentState::Location:
     2067    case AccessibilityCurrentState::Location:
    20682068        return "location";
    2069     case AccessibilityARIACurrentState::Time:
     2069    case AccessibilityCurrentState::Time:
    20702070        return "time";
    2071     case AccessibilityARIACurrentState::Date:
     2071    case AccessibilityCurrentState::Date:
    20722072        return "date";
    20732073    default:
    2074     case AccessibilityARIACurrentState::True:
     2074    case AccessibilityCurrentState::True:
    20752075        return "true";
    20762076    }
     
    23992399String AccessibilityObject::roleDescription() const
    24002400{
    2401     return stripLeadingAndTrailingHTMLSpaces(getAttribute(aria_roledescriptionAttr));
     2401    return stripLeadingAndTrailingHTMLSpaces(stringValueForProperty(AXPropertyName::RoleDescription));
    24022402}
    24032403   
     
    24472447}
    24482448   
    2449 const AtomicString& AccessibilityObject::ariaKeyShortcutsValue() const
    2450 {
    2451     return getAttribute(aria_keyshortcutsAttr);
     2449const String AccessibilityObject::keyShortcutsValue() const
     2450{
     2451    return stringValueForProperty(AXPropertyName::KeyShortcuts);
    24522452}
    24532453
     
    24922492}
    24932493
    2494 const AtomicString& AccessibilityObject::placeholderValue() const
     2494const String AccessibilityObject::placeholderValue() const
    24952495{
    24962496    const AtomicString& placeholder = getAttribute(placeholderAttr);
     
    24982498        return placeholder;
    24992499   
    2500     const AtomicString& ariaPlaceholder = getAttribute(aria_placeholderAttr);
     2500    const AtomicString& ariaPlaceholder = stringValueForProperty(AXPropertyName::Placeholder);
    25012501    if (!ariaPlaceholder.isEmpty())
    25022502        return ariaPlaceholder;
     
    25052505}
    25062506   
    2507 bool AccessibilityObject::isInsideARIALiveRegion(bool excludeIfOff) const
    2508 {
    2509     return ariaLiveRegionAncestor(excludeIfOff);
    2510 }
    2511    
    2512 AccessibilityObject* AccessibilityObject::ariaLiveRegionAncestor(bool excludeIfOff) const
     2507bool AccessibilityObject::isInsideLiveRegion(bool excludeIfOff) const
     2508{
     2509    return liveRegionAncestor(excludeIfOff);
     2510}
     2511   
     2512AccessibilityObject* AccessibilityObject::liveRegionAncestor(bool excludeIfOff) const
    25132513{
    25142514    return const_cast<AccessibilityObject*>(AccessibilityObject::matchedParent(*this, true, [excludeIfOff] (const AccessibilityObject& object) {
    2515         return object.supportsARIALiveRegion(excludeIfOff);
     2515        return object.supportsLiveRegion(excludeIfOff);
    25162516    }));
    25172517}
     
    25202520{
    25212521    // This returns whether the element supports any global ARIA attributes.
    2522     return supportsARIALiveRegion()
     2522    return supportsLiveRegion()
    25232523        || supportsARIADragging()
    25242524        || supportsARIADropping()
     
    25272527        || hasAttribute(aria_busyAttr)
    25282528        || hasAttribute(aria_controlsAttr)
    2529         || hasAttribute(aria_currentAttr)
     2529        || hasProperty(AXPropertyName::Current)
    25302530        || hasAttribute(aria_describedbyAttr)
    25312531        || hasAttribute(aria_detailsAttr)
     
    25332533        || hasAttribute(aria_errormessageAttr)
    25342534        || hasAttribute(aria_flowtoAttr)
    2535         || hasAttribute(aria_haspopupAttr)
    2536         || hasAttribute(aria_invalidAttr)
     2535        || hasProperty(AXPropertyName::HasPopUp)
     2536        || hasProperty(AXPropertyName::Invalid)
    25372537        || hasProperty(AXPropertyName::Label)
    25382538        || hasAttribute(aria_labelledbyAttr)
    2539         || hasAttribute(aria_relevantAttr);
     2539        || hasProperty(AXPropertyName::Relevant);
    25402540}
    25412541   
     
    25452545}
    25462546   
    2547 bool AccessibilityObject::supportsARIALiveRegion(bool excludeIfOff) const
    2548 {
    2549     const AtomicString& liveRegionStatus = ariaLiveRegionStatus();
    2550     return excludeIfOff ? liveRegionStatusIsEnabled(liveRegionStatus) : !liveRegionStatus.isEmpty();
     2547bool AccessibilityObject::supportsLiveRegion(bool excludeIfOff) const
     2548{
     2549    const AtomicString& liveRegionStatusValue = liveRegionStatus();
     2550    return excludeIfOff ? liveRegionStatusIsEnabled(liveRegionStatusValue) : !liveRegionStatusValue.isEmpty();
    25512551}
    25522552
     
    25992599        return AccessibilitySortDirection::Invalid;
    26002600
    2601     const AtomicString& sortAttribute = getAttribute(aria_sortAttr);
     2601    const AtomicString& sortAttribute = stringValueForProperty(AXPropertyName::Sort);
    26022602    if (equalLettersIgnoringASCIICase(sortAttribute, "ascending"))
    26032603        return AccessibilitySortDirection::Ascending;
     
    26202620}
    26212621   
    2622 bool AccessibilityObject::supportsARIAHasPopup() const
    2623 {
    2624     return hasAttribute(aria_haspopupAttr) || isComboBox();
    2625 }
    2626 
    2627 String AccessibilityObject::ariaPopupValue() const
    2628 {
    2629     const AtomicString& hasPopup = getAttribute(aria_haspopupAttr);
     2622bool AccessibilityObject::supportsHasPopup() const
     2623{
     2624    return hasProperty(AXPropertyName::HasPopUp) || isComboBox();
     2625}
     2626
     2627String AccessibilityObject::hasPopupValue() const
     2628{
     2629    const AtomicString& hasPopup = stringValueForProperty(AXPropertyName::HasPopUp);
    26302630    if (equalLettersIgnoringASCIICase(hasPopup, "true")
    26312631        || equalLettersIgnoringASCIICase(hasPopup, "dialog")
     
    26842684}
    26852685
    2686 bool AccessibilityObject::supportsARIAPressed() const
    2687 {
    2688     const AtomicString& expanded = getAttribute(aria_pressedAttr);
     2686bool AccessibilityObject::supportsPressed() const
     2687{
     2688    const AtomicString& expanded = stringValueForProperty(AXPropertyName::Pressed);
    26892689    return equalLettersIgnoringASCIICase(expanded, "true") || equalLettersIgnoringASCIICase(expanded, "false");
    26902690}
     
    27462746
    27472747    if (isToggleButton()) {
    2748         const AtomicString& ariaPressed = getAttribute(aria_pressedAttr);
     2748        const AtomicString& ariaPressed = stringValueForProperty(AXPropertyName::Pressed);
    27492749        if (equalLettersIgnoringASCIICase(ariaPressed, "true"))
    27502750            return AccessibilityButtonState::On;
     
    27542754    }
    27552755   
    2756     const AtomicString& result = getAttribute(aria_checkedAttr);
     2756    const AtomicString& result = stringValueForProperty(AXPropertyName::Checked);
    27572757    if (equalLettersIgnoringASCIICase(result, "true"))
    27582758        return AccessibilityButtonState::On;
     
    31283128}
    31293129
    3130 bool AccessibilityObject::ariaPressedIsPresent() const
    3131 {
    3132     return !getAttribute(aria_pressedAttr).isEmpty();
     3130bool AccessibilityObject::pressedIsPresent() const
     3131{
     3132    return !stringValueForProperty(AXPropertyName::Pressed).isEmpty();
    31333133}
    31343134
     
    31503150    // If aria-pressed is present, then it should be exposed as a toggle button.
    31513151    // http://www.w3.org/TR/wai-aria/states_and_properties#aria-pressed
    3152     if (ariaPressedIsPresent())
     3152    if (pressedIsPresent())
    31533153        return AccessibilityRole::ToggleButton;
    3154     if (ariaHasPopup())
     3154    if (hasPopup())
    31553155        return AccessibilityRole::PopUpButton;
    31563156    // We don't contemplate AccessibilityRole::RadioButton, as it depends on the input
  • trunk/Source/WebCore/accessibility/AccessibilityObject.h

    r224871 r224953  
    477477enum class AccessibilityMathMultiscriptObjectType { PreSubscript, PreSuperscript, PostSubscript, PostSuperscript };
    478478
    479 enum class AccessibilityARIACurrentState { False, True, Page, Step, Location, Date, Time };
     479enum class AccessibilityCurrentState { False, True, Page, Step, Location, Date, Time };
    480480   
    481481bool nodeHasPresentationRole(Node*);
     
    684684    void ariaOwnsReferencingElements(AccessibilityChildrenVector&) const;
    685685
    686     virtual bool ariaHasPopup() const { return false; }
    687     String ariaPopupValue() const;
    688     bool supportsARIAHasPopup() const;
    689     bool ariaPressedIsPresent() const;
     686    virtual bool hasPopup() const { return false; }
     687    String hasPopupValue() const;
     688    bool supportsHasPopup() const;
     689    bool pressedIsPresent() const;
    690690    bool ariaIsMultiline() const;
    691691    String invalidStatus() const;
    692     bool supportsARIAPressed() const;
     692    bool supportsPressed() const;
    693693    bool supportsExpanded() const;
    694694    bool supportsChecked() const;
     
    699699    void classList(Vector<String>&) const;
    700700    virtual String roleDescription() const;
    701     AccessibilityARIACurrentState ariaCurrentState() const;
    702     String ariaCurrentValue() const;
    703     bool supportsARIACurrent() const;
    704     const AtomicString& ariaKeyShortcutsValue() const;
     701    AccessibilityCurrentState currentState() const;
     702    String currentValue() const;
     703    bool supportsCurrent() const;
     704    const String keyShortcutsValue() const;
    705705   
    706706    // This function checks if the object should be ignored when there's a modal dialog displayed.
     
    783783    virtual String ariaLabeledByAttribute() const { return String(); }
    784784    virtual String ariaDescribedByAttribute() const { return String(); }
    785     const AtomicString& placeholderValue() const;
     785    const String placeholderValue() const;
    786786    bool accessibleNameDerivesFromContent() const;
    787787   
     
    979979   
    980980    // ARIA live-region features.
    981     bool supportsARIALiveRegion(bool excludeIfOff = true) const;
    982     bool isInsideARIALiveRegion(bool excludeIfOff = true) const;
    983     AccessibilityObject* ariaLiveRegionAncestor(bool excludeIfOff = true) const;
    984     virtual const String ariaLiveRegionStatus() const { return String(); }
    985     virtual const AtomicString& ariaLiveRegionRelevant() const { return nullAtom(); }
    986     virtual bool ariaLiveRegionAtomic() const { return false; }
     981    bool supportsLiveRegion(bool excludeIfOff = true) const;
     982    bool isInsideLiveRegion(bool excludeIfOff = true) const;
     983    AccessibilityObject* liveRegionAncestor(bool excludeIfOff = true) const;
     984    virtual const String liveRegionStatus() const { return String(); }
     985    virtual const String liveRegionRelevant() const { return nullAtom(); }
     986    virtual bool liveRegionAtomic() const { return false; }
    987987    virtual bool isBusy() const { return false; }
    988988    static const String defaultLiveRegionStatusForRole(AccessibilityRole);
     
    994994    virtual String ariaReadOnlyValue() const;
    995995
    996     bool supportsARIAAutoComplete() const;
    997     String ariaAutoCompleteValue() const;
     996    bool supportsAutoComplete() const;
     997    String autoCompleteValue() const;
    998998   
    999999    bool supportsARIAAttributes() const;
  • trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp

    r224871 r224953  
    10071007}
    10081008   
    1009 bool AccessibilityRenderObject::ariaHasPopup() const
    1010 {
    1011     return !equalLettersIgnoringASCIICase(ariaPopupValue(), "false");
     1009bool AccessibilityRenderObject::hasPopup() const
     1010{
     1011    return !equalLettersIgnoringASCIICase(hasPopupValue(), "false");
    10121012}
    10131013
     
    26422642    if (cssBox && cssBox->isImage()) {
    26432643        if (is<HTMLInputElement>(node))
    2644             return ariaHasPopup() ? AccessibilityRole::PopUpButton : AccessibilityRole::Button;
     2644            return hasPopup() ? AccessibilityRole::PopUpButton : AccessibilityRole::Button;
    26452645        if (isSVGImage())
    26462646            return AccessibilityRole::SVGRoot;
     
    28422842AccessibilityOrientation AccessibilityRenderObject::orientation() const
    28432843{
    2844     const AtomicString& ariaOrientation = getAttribute(aria_orientationAttr);
     2844    const AtomicString& ariaOrientation = stringValueForProperty(AXPropertyName::Orientation);
    28452845    if (equalLettersIgnoringASCIICase(ariaOrientation, "horizontal"))
    28462846        return AccessibilityOrientation::Horizontal;
     
    29652965            continue;
    29662966       
    2967         if (parent->supportsARIALiveRegion())
     2967        if (parent->supportsLiveRegion())
    29682968            cache->postLiveRegionChangeNotification(parent);
    29692969
     
    32543254}
    32553255
    3256 const String AccessibilityRenderObject::ariaLiveRegionStatus() const
    3257 {
    3258     const AtomicString& liveRegionStatus = getAttribute(aria_liveAttr);
     3256const String AccessibilityRenderObject::liveRegionStatus() const
     3257{
     3258    const AtomicString& liveRegionStatus = stringValueForProperty(AXPropertyName::Live);
    32593259    // These roles have implicit live region status.
    32603260    if (liveRegionStatus.isEmpty())
     
    32643264}
    32653265
    3266 const AtomicString& AccessibilityRenderObject::ariaLiveRegionRelevant() const
    3267 {
    3268     static NeverDestroyed<const AtomicString> defaultLiveRegionRelevant("additions text", AtomicString::ConstructFromLiteral);
    3269     const AtomicString& relevant = getAttribute(aria_relevantAttr);
     3266const String AccessibilityRenderObject::liveRegionRelevant() const
     3267{
     3268    const AtomicString& relevant = stringValueForProperty(AXPropertyName::Relevant);
    32703269
    32713270    // Default aria-relevant = "additions text".
    32723271    if (relevant.isEmpty())
    3273         return defaultLiveRegionRelevant;
     3272        return "additions text";
    32743273   
    32753274    return relevant;
    32763275}
    32773276
    3278 bool AccessibilityRenderObject::ariaLiveRegionAtomic() const
     3277bool AccessibilityRenderObject::liveRegionAtomic() const
    32793278{
    32803279    const AtomicString& atomic = getAttribute(aria_atomicAttr);
  • trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h

    r224650 r224953  
    172172    void setSelectedVisiblePositionRange(const VisiblePositionRange&) const override;
    173173    bool isVisiblePositionRangeInDifferentDocument(const VisiblePositionRange&) const;
    174     bool ariaHasPopup() const override;
     174    bool hasPopup() const override;
    175175
    176176    bool supportsARIADropping() const override;
     
    277277    ESpeak speakProperty() const override;
    278278   
    279     const String ariaLiveRegionStatus() const override;
    280     const AtomicString& ariaLiveRegionRelevant() const override;
    281     bool ariaLiveRegionAtomic() const override;
     279    const String liveRegionStatus() const override;
     280    const String liveRegionRelevant() const override;
     281    bool liveRegionAtomic() const override;
    282282    bool isBusy() const override;
    283283
  • trunk/Source/WebCore/accessibility/AccessibleNode.cpp

    r224871 r224953  
    4646            QualifiedName ariaAttribute;
    4747        } attributes[] = {
     48            { AXPropertyName::Autocomplete, aria_autocompleteAttr },
     49            { AXPropertyName::Checked, aria_checkedAttr },
     50            { AXPropertyName::Current, aria_currentAttr },
     51            { AXPropertyName::HasPopUp, aria_haspopupAttr },
     52            { AXPropertyName::Invalid, aria_invalidAttr },
     53            { AXPropertyName::KeyShortcuts, aria_keyshortcutsAttr },
    4854            { AXPropertyName::Label, aria_labelAttr },
    49             { AXPropertyName::Role, roleAttr }
     55            { AXPropertyName::Live, aria_liveAttr },
     56            { AXPropertyName::Orientation, aria_orientationAttr },
     57            { AXPropertyName::Placeholder, aria_placeholderAttr },
     58            { AXPropertyName::Pressed, aria_pressedAttr },
     59            { AXPropertyName::Relevant, aria_relevantAttr },
     60            { AXPropertyName::Role, roleAttr },
     61            { AXPropertyName::RoleDescription, aria_roledescriptionAttr },
     62            { AXPropertyName::Sort, aria_sortAttr },
     63            { AXPropertyName::ValueText, aria_valuetextAttr }
    5064        };
    5165        ARIAAttributeMap map;
     
    6074{
    6175    switch (propertyName) {
     76    case AXPropertyName::Autocomplete:
     77    case AXPropertyName::Checked:
     78    case AXPropertyName::Current:
     79    case AXPropertyName::HasPopUp:
     80    case AXPropertyName::Invalid:
    6281    case AXPropertyName::Label:
     82    case AXPropertyName::Live:
     83    case AXPropertyName::Orientation:
     84    case AXPropertyName::Placeholder:
     85    case AXPropertyName::Pressed:
     86    case AXPropertyName::Relevant:
    6387    case AXPropertyName::Role:
     88    case AXPropertyName::RoleDescription:
     89    case AXPropertyName::Sort:
     90    case AXPropertyName::ValueText:
    6491        return true;
    6592    default:
     
    120147}
    121148
     149void AccessibleNode::notifyAttributeChanged(const WebCore::QualifiedName& name)
     150{
     151    if (AXObjectCache* cache = m_ownerElement.document().axObjectCache())
     152        cache->handleAttributeChanged(name, &m_ownerElement);
     153}
     154
     155String AccessibleNode::autocomplete() const
     156{
     157    return stringValueForProperty(m_ownerElement, AXPropertyName::Autocomplete);
     158}
     159
     160void AccessibleNode::setAutocomplete(const String& autocomplete)
     161{
     162    setStringProperty(autocomplete, AXPropertyName::Autocomplete);
     163    notifyAttributeChanged(aria_autocompleteAttr);
     164}
     165
     166String AccessibleNode::checked() const
     167{
     168    return stringValueForProperty(m_ownerElement, AXPropertyName::Checked);
     169}
     170
     171void AccessibleNode::setChecked(const String& checked)
     172{
     173    setStringProperty(checked, AXPropertyName::Checked);
     174    notifyAttributeChanged(aria_checkedAttr);
     175}
     176
     177String AccessibleNode::current() const
     178{
     179    return stringValueForProperty(m_ownerElement, AXPropertyName::Current);
     180}
     181
     182void AccessibleNode::setCurrent(const String& current)
     183{
     184    setStringProperty(current, AXPropertyName::Current);
     185    notifyAttributeChanged(aria_currentAttr);
     186}
     187
     188String AccessibleNode::hasPopUp() const
     189{
     190    return stringValueForProperty(m_ownerElement, AXPropertyName::HasPopUp);
     191}
     192
     193void AccessibleNode::setHasPopUp(const String& hasPopUp)
     194{
     195    setStringProperty(hasPopUp, AXPropertyName::HasPopUp);
     196    notifyAttributeChanged(aria_haspopupAttr);
     197}
     198
     199String AccessibleNode::invalid() const
     200{
     201    return stringValueForProperty(m_ownerElement, AXPropertyName::Invalid);
     202}
     203
     204void AccessibleNode::setInvalid(const String& invalid)
     205{
     206    setStringProperty(invalid, AXPropertyName::Invalid);
     207    notifyAttributeChanged(aria_invalidAttr);
     208}
     209
     210String AccessibleNode::keyShortcuts() const
     211{
     212    return stringValueForProperty(m_ownerElement, AXPropertyName::KeyShortcuts);
     213}
     214
     215void AccessibleNode::setKeyShortcuts(const String& keyShortcuts)
     216{
     217    setStringProperty(keyShortcuts, AXPropertyName::KeyShortcuts);
     218    notifyAttributeChanged(aria_keyshortcutsAttr);
     219}
     220
     221String AccessibleNode::live() const
     222{
     223    return stringValueForProperty(m_ownerElement, AXPropertyName::Live);
     224}
     225
     226void AccessibleNode::setLive(const String& live)
     227{
     228    setStringProperty(live, AXPropertyName::Live);
     229    notifyAttributeChanged(aria_liveAttr);
     230}
     231
     232String AccessibleNode::label() const
     233{
     234    return stringValueForProperty(m_ownerElement, AXPropertyName::Label);
     235}
     236
     237void AccessibleNode::setLabel(const String& label)
     238{
     239    setStringProperty(label, AXPropertyName::Label);
     240    notifyAttributeChanged(aria_labelAttr);
     241}
     242
     243String AccessibleNode::orientation() const
     244{
     245    return stringValueForProperty(m_ownerElement, AXPropertyName::Orientation);
     246}
     247
     248void AccessibleNode::setOrientation(const String& orientation)
     249{
     250    setStringProperty(orientation, AXPropertyName::Orientation);
     251    notifyAttributeChanged(aria_orientationAttr);
     252}
     253
     254String AccessibleNode::placeholder() const
     255{
     256    return stringValueForProperty(m_ownerElement, AXPropertyName::Placeholder);
     257}
     258
     259void AccessibleNode::setPlaceholder(const String& placeholder)
     260{
     261    setStringProperty(placeholder, AXPropertyName::Placeholder);
     262    notifyAttributeChanged(aria_placeholderAttr);
     263}
     264
     265String AccessibleNode::pressed() const
     266{
     267    return stringValueForProperty(m_ownerElement, AXPropertyName::Pressed);
     268}
     269
     270void AccessibleNode::setPressed(const String& pressed)
     271{
     272    setStringProperty(pressed, AXPropertyName::Pressed);
     273    notifyAttributeChanged(aria_pressedAttr);
     274}
     275
     276String AccessibleNode::relevant() const
     277{
     278    return stringValueForProperty(m_ownerElement, AXPropertyName::Relevant);
     279}
     280
     281void AccessibleNode::setRelevant(const String& relevant)
     282{
     283    setStringProperty(relevant, AXPropertyName::Relevant);
     284    notifyAttributeChanged(aria_relevantAttr);
     285}
     286
    122287String AccessibleNode::role() const
    123288{
     
    128293{
    129294    setStringProperty(role, AXPropertyName::Role);
    130     if (AXObjectCache* cache = m_ownerElement.document().axObjectCache())
    131         cache->handleAttributeChanged(roleAttr, &m_ownerElement);
    132 }
    133 
    134 String AccessibleNode::label() const
    135 {
    136     return stringValueForProperty(m_ownerElement, AXPropertyName::Label);
    137 }
    138 
    139 void AccessibleNode::setLabel(const String& label)
    140 {
    141     setStringProperty(label, AXPropertyName::Label);
    142     if (AXObjectCache* cache = m_ownerElement.document().axObjectCache())
    143         cache->handleAttributeChanged(aria_labelAttr, &m_ownerElement);
     295    notifyAttributeChanged(roleAttr);
     296}
     297
     298String AccessibleNode::roleDescription() const
     299{
     300    return stringValueForProperty(m_ownerElement, AXPropertyName::RoleDescription);
     301}
     302
     303void AccessibleNode::setRoleDescription(const String& roleDescription)
     304{
     305    setStringProperty(roleDescription, AXPropertyName::RoleDescription);
     306    notifyAttributeChanged(aria_roledescriptionAttr);
     307}
     308
     309String AccessibleNode::sort() const
     310{
     311    return stringValueForProperty(m_ownerElement, AXPropertyName::Sort);
     312}
     313
     314void AccessibleNode::setSort(const String& sort)
     315{
     316    setStringProperty(sort, AXPropertyName::Sort);
     317    notifyAttributeChanged(aria_sortAttr);
     318}
     319
     320String AccessibleNode::valueText() const
     321{
     322    return stringValueForProperty(m_ownerElement, AXPropertyName::ValueText);
     323}
     324
     325void AccessibleNode::setValueText(const String& valueText)
     326{
     327    setStringProperty(valueText, AXPropertyName::ValueText);
     328    notifyAttributeChanged(aria_valuetextAttr);
    144329}
    145330
  • trunk/Source/WebCore/accessibility/AccessibleNode.h

    r224871 r224953  
    4141enum class AXPropertyName {
    4242    None,
     43    Autocomplete,
     44    Checked,
     45    Current,
     46    HasPopUp,
     47    Invalid,
     48    KeyShortcuts,
     49    Label,
     50    Live,
     51    Orientation,
     52    Placeholder,
     53    Pressed,
     54    Relevant,
    4355    Role,
    44     Label
     56    RoleDescription,
     57    Sort,
     58    ValueText
    4559};
    4660
     
    5064    static void constructDeletedValue(AXPropertyName& slot)
    5165    {
    52         slot = AXPropertyName::None;
     66        slot = static_cast<AXPropertyName>(static_cast<int>(AXPropertyName::None) - 1);
    5367    }
    5468    static bool isDeletedValue(AXPropertyName value)
    5569    {
    56         return value == AXPropertyName::None;
     70        return static_cast<int>(value) == static_cast<int>(AXPropertyName::None) - 1;
    5771    }
    5872};
     
    7286    static bool hasProperty(Element&, AXPropertyName);
    7387
     88    String autocomplete() const;
     89    void setAutocomplete(const String&);
     90
     91    String checked() const;
     92    void setChecked(const String&);
     93
     94    String current() const;
     95    void setCurrent(const String&);
     96
     97    String hasPopUp() const;
     98    void setHasPopUp(const String&);
     99
     100    String invalid() const;
     101    void setInvalid(const String&);
     102
     103    String keyShortcuts() const;
     104    void setKeyShortcuts(const String&);
     105
     106    String live() const;
     107    void setLive(const String&);
     108
     109    String label() const;
     110    void setLabel(const String&);
     111
     112    String orientation() const;
     113    void setOrientation(const String&);
     114
     115    String placeholder() const;
     116    void setPlaceholder(const String&);
     117
     118    String pressed() const;
     119    void setPressed(const String&);
     120
     121    String relevant() const;
     122    void setRelevant(const String&);
     123
    74124    String role() const;
    75125    void setRole(const String&);
    76126
    77     String label() const;
    78     void setLabel(const String&);
     127    String roleDescription() const;
     128    void setRoleDescription(const String&);
     129
     130    String sort() const;
     131    void setSort(const String&);
     132
     133    String valueText() const;
     134    void setValueText(const String&);
    79135
    80136private:
     
    82138    static const String stringValueForProperty(Element&, AXPropertyName);
    83139    void setStringProperty(const String&, AXPropertyName);
     140   
     141    void notifyAttributeChanged(const WebCore::QualifiedName&);
    84142
    85143    Element& m_ownerElement;
  • trunk/Source/WebCore/accessibility/AccessibleNode.idl

    r224871 r224953  
    2828    EnabledAtRuntime=AccessibilityObjectModel,
    2929] interface AccessibleNode {
     30    attribute DOMString? autocomplete;
     31    attribute DOMString? checked;
     32    attribute DOMString? current;
     33    attribute DOMString? hasPopUp;
     34    attribute DOMString? invalid;
     35    attribute DOMString? keyShortcuts;
     36    attribute DOMString? label;
     37    attribute DOMString? live;
     38    attribute DOMString? orientation;
     39    attribute DOMString? placeholder;
     40    attribute DOMString? pressed;
     41    attribute DOMString? relevant;
    3042    attribute DOMString? role;
    31     attribute DOMString? label;
     43    attribute DOMString? roleDescription;
     44    attribute DOMString? sort;
     45    attribute DOMString? valueText;
    3246};
  • trunk/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp

    r224074 r224953  
    245245
    246246    case AXCurrentChanged:
    247         atk_object_notify_state_change(axObject, ATK_STATE_ACTIVE, coreObject->ariaCurrentState() != AccessibilityARIACurrentState::False);
     247        atk_object_notify_state_change(axObject, ATK_STATE_ACTIVE, coreObject->currentState() != AccessibilityCurrentState::False);
    248248        break;
    249249
  • trunk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp

    r224074 r224953  
    500500        attributeSet = addToAtkAttributeSet(attributeSet, "placeholder-text", placeholder.utf8().data());
    501501
    502     if (coreObject->supportsARIAAutoComplete())
    503         attributeSet = addToAtkAttributeSet(attributeSet, "autocomplete", coreObject->ariaAutoCompleteValue().utf8().data());
    504 
    505     if (coreObject->supportsARIAHasPopup())
    506         attributeSet = addToAtkAttributeSet(attributeSet, "haspopup", coreObject->ariaPopupValue().utf8().data());
    507 
    508     if (coreObject->supportsARIACurrent())
    509         attributeSet = addToAtkAttributeSet(attributeSet, "current", coreObject->ariaCurrentValue().utf8().data());
     502    if (coreObject->supportsAutoComplete())
     503        attributeSet = addToAtkAttributeSet(attributeSet, "autocomplete", coreObject->autoCompleteValue().utf8().data());
     504
     505    if (coreObject->supportsHasPopup())
     506        attributeSet = addToAtkAttributeSet(attributeSet, "haspopup", coreObject->hasPopupValue().utf8().data());
     507
     508    if (coreObject->supportsCurrent())
     509        attributeSet = addToAtkAttributeSet(attributeSet, "current", coreObject->currentValue().utf8().data());
    510510
    511511    // The Core AAM states that an explicitly-set value should be exposed, including "none".
     
    566566
    567567    // We need to expose the live region attributes even if the live region is currently disabled/off.
    568     if (auto liveContainer = coreObject->ariaLiveRegionAncestor(false)) {
    569         String liveStatus = liveContainer->ariaLiveRegionStatus();
    570         String relevant = liveContainer->ariaLiveRegionRelevant();
    571         bool isAtomic = liveContainer->ariaLiveRegionAtomic();
     568    if (auto liveContainer = coreObject->liveRegionAncestor(false)) {
     569        String liveStatus = liveContainer->liveRegionStatus();
     570        String relevant = liveContainer->liveRegionRelevant();
     571        bool isAtomic = liveContainer->liveRegionAtomic();
    572572        String liveRole = roleString.isEmpty() ? computedRoleString : roleString;
    573573
     
    588588            if (isAtomic)
    589589                attributeSet = addToAtkAttributeSet(attributeSet, "atomic", "true");
    590         } else if (!isAtomic && coreObject->ariaLiveRegionAtomic())
     590        } else if (!isAtomic && coreObject->liveRegionAtomic())
    591591            attributeSet = addToAtkAttributeSet(attributeSet, "atomic", "true");
    592592    }
     
    603603
    604604    // The Core AAM states the author-provided value should be exposed as-is.
    605     const AtomicString& keyShortcuts = coreObject->ariaKeyShortcutsValue();
     605    const AtomicString& keyShortcuts = coreObject->keyShortcutsValue();
    606606    if (!keyShortcuts.isEmpty())
    607607        attributeSet = addToAtkAttributeSet(attributeSet, "keyshortcuts", keyShortcuts.string().utf8().data());
     
    688688        return ATK_ROLE_WINDOW;
    689689    case AccessibilityRole::PopUpButton:
    690         return coreObject->ariaHasPopup() ? ATK_ROLE_PUSH_BUTTON : ATK_ROLE_COMBO_BOX;
     690        return coreObject->hasPopup() ? ATK_ROLE_PUSH_BUTTON : ATK_ROLE_COMBO_BOX;
    691691    case AccessibilityRole::ComboBox:
    692692        return ATK_ROLE_COMBO_BOX;
     
    931931    // Please keep the state list in alphabetical order
    932932    if ((isListBoxOption && coreObject->isSelectedOptionActive())
    933         || coreObject->ariaCurrentState() != AccessibilityARIACurrentState::False)
     933        || coreObject->currentState() != AccessibilityCurrentState::False)
    934934        atk_state_set_add_state(stateSet, ATK_STATE_ACTIVE);
    935935
     
    978978        atk_state_set_add_state(stateSet, ATK_STATE_VERTICAL);
    979979
    980     if (coreObject->ariaHasPopup())
     980    if (coreObject->hasPopup())
    981981        atk_state_set_add_state(stateSet, ATK_STATE_HAS_POPUP);
    982982
     
    10471047    // TODO: ATK_STATE_SENSITIVE
    10481048
    1049     if (coreObject->supportsARIAAutoComplete() && coreObject->ariaAutoCompleteValue() != "none")
     1049    if (coreObject->supportsAutoComplete() && coreObject->autoCompleteValue() != "none")
    10501050        atk_state_set_add_state(stateSet, ATK_STATE_SUPPORTS_AUTOCOMPLETION);
    10511051
  • trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm

    r224074 r224953  
    498498        return NO;
    499499   
    500     return m_object->ariaHasPopup();
     500    return m_object->hasPopup();
    501501}
    502502
     
    28812881        return nil;
    28822882
    2883     return m_object->ariaLiveRegionStatus();
     2883    return m_object->liveRegionStatus();
    28842884}
    28852885
     
    28892889        return nil;
    28902890   
    2891     return m_object->ariaLiveRegionRelevant();
     2891    return m_object->liveRegionRelevant();
    28922892}
    28932893
     
    28972897        return NO;
    28982898   
    2899     return m_object->ariaLiveRegionAtomic();
     2899    return m_object->liveRegionAtomic();
    29002900}
    29012901
     
    29052905        return NO;
    29062906   
    2907     return m_object->supportsARIAPressed();
     2907    return m_object->supportsPressed();
    29082908}
    29092909
     
    29692969        return nil;
    29702970   
    2971     switch (m_object->ariaCurrentState()) {
    2972     case AccessibilityARIACurrentState::False:
     2971    switch (m_object->currentState()) {
     2972    case AccessibilityCurrentState::False:
    29732973        return @"false";
    2974     case AccessibilityARIACurrentState::Page:
     2974    case AccessibilityCurrentState::Page:
    29752975        return @"page";
    2976     case AccessibilityARIACurrentState::Step:
     2976    case AccessibilityCurrentState::Step:
    29772977        return @"step";
    2978     case AccessibilityARIACurrentState::Location:
     2978    case AccessibilityCurrentState::Location:
    29792979        return @"location";
    2980     case AccessibilityARIACurrentState::Time:
     2980    case AccessibilityCurrentState::Time:
    29812981        return @"time";
    2982     case AccessibilityARIACurrentState::Date:
     2982    case AccessibilityCurrentState::Date:
    29832983        return @"date";
    2984     case AccessibilityARIACurrentState::True:
     2984    case AccessibilityCurrentState::True:
    29852985        return @"true";
    29862986    }
  • trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm

    r224074 r224953  
    11881188        [additional addObject:NSAccessibilitySelectedRowsAttribute];
    11891189   
    1190     if (m_object->supportsARIALiveRegion()) {
     1190    if (m_object->supportsLiveRegion()) {
    11911191        [additional addObject:NSAccessibilityARIALiveAttribute];
    11921192        [additional addObject:NSAccessibilityARIARelevantAttribute];
     
    12031203   
    12041204    // If an object is a child of a live region, then add these
    1205     if (m_object->isInsideARIALiveRegion())
     1205    if (m_object->isInsideLiveRegion())
    12061206        [additional addObject:NSAccessibilityARIAAtomicAttribute];
    12071207    // All objects should expose the ARIA busy attribute (ARIA 1.1 with ISSUE-538).
     
    12201220    }
    12211221   
    1222     if (m_object->ariaHasPopup())
     1222    if (m_object->hasPopup())
    12231223        [additional addObject:NSAccessibilityHasPopupAttribute];
    12241224   
     
    16621662   
    16631663    // Only expose AXARIACurrent attribute when the element is set to be current item.
    1664     if (m_object->ariaCurrentState() != AccessibilityARIACurrentState::False)
     1664    if (m_object->currentState() != AccessibilityCurrentState::False)
    16651665        objectAttributes = [objectAttributes arrayByAddingObjectsFromArray:@[ NSAccessibilityARIACurrentAttribute ]];
    16661666   
     
    29802980   
    29812981    if ([attributeName isEqualToString: NSAccessibilityARIACurrentAttribute])
    2982         return m_object->ariaCurrentValue();
     2982        return m_object->currentValue();
    29832983   
    29842984    if ([attributeName isEqualToString: NSAccessibilityServesAsTitleForUIElementsAttribute] && m_object->isMenuButton()) {
     
    30923092
    30933093    if ([attributeName isEqualToString:NSAccessibilityHasPopupAttribute])
    3094         return [NSNumber numberWithBool:m_object->ariaHasPopup()];
     3094        return [NSNumber numberWithBool:m_object->hasPopup()];
    30953095
    30963096    if ([attributeName isEqualToString:NSAccessibilityDatetimeValueAttribute])
     
    31023102    // ARIA Live region attributes.
    31033103    if ([attributeName isEqualToString:NSAccessibilityARIALiveAttribute])
    3104         return m_object->ariaLiveRegionStatus();
     3104        return m_object->liveRegionStatus();
    31053105    if ([attributeName isEqualToString:NSAccessibilityARIARelevantAttribute])
    3106         return m_object->ariaLiveRegionRelevant();
     3106        return m_object->liveRegionRelevant();
    31073107    if ([attributeName isEqualToString:NSAccessibilityARIAAtomicAttribute])
    3108         return [NSNumber numberWithBool:m_object->ariaLiveRegionAtomic()];
     3108        return [NSNumber numberWithBool:m_object->liveRegionAtomic()];
    31093109    if ([attributeName isEqualToString:NSAccessibilityElementBusyAttribute])
    31103110        return [NSNumber numberWithBool:m_object->isBusy()];
     
    31843184    if ([attributeName isEqualToString:@"AXDRTElementIdAttribute"])
    31853185        return m_object->getAttribute(idAttr);
     3186   
     3187    if ([attributeName isEqualToString:@"AXAutocompleteValue"])
     3188        return m_object->autoCompleteValue();
     3189   
     3190    if ([attributeName isEqualToString:@"AXHasPopUpValue"])
     3191        return m_object->hasPopupValue();
     3192   
     3193    if ([attributeName isEqualToString:@"AXKeyShortcutsValue"])
     3194        return m_object->keyShortcutsValue();
     3195   
     3196    if ([attributeName isEqualToString:@"AXARIAPressedIsPresent"])
     3197        return [NSNumber numberWithBool:m_object->pressedIsPresent()];
    31863198   
    31873199    if (m_object->isWebArea() && [attributeName isEqualToString:NSAccessibilityPreventKeyboardDOMEventDispatchAttribute])
  • trunk/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp

    r224879 r224953  
    17621762            }
    17631763           
    1764             switch (axObject->ariaCurrentState()) {
    1765             case AccessibilityARIACurrentState::False:
     1764            switch (axObject->currentState()) {
     1765            case AccessibilityCurrentState::False:
    17661766                currentState = Inspector::Protocol::DOM::AccessibilityProperties::Current::False;
    17671767                break;
    1768             case AccessibilityARIACurrentState::Page:
     1768            case AccessibilityCurrentState::Page:
    17691769                currentState = Inspector::Protocol::DOM::AccessibilityProperties::Current::Page;
    17701770                break;
    1771             case AccessibilityARIACurrentState::Step:
     1771            case AccessibilityCurrentState::Step:
    17721772                currentState = Inspector::Protocol::DOM::AccessibilityProperties::Current::Step;
    17731773                break;
    1774             case AccessibilityARIACurrentState::Location:
     1774            case AccessibilityCurrentState::Location:
    17751775                currentState = Inspector::Protocol::DOM::AccessibilityProperties::Current::Location;
    17761776                break;
    1777             case AccessibilityARIACurrentState::Date:
     1777            case AccessibilityCurrentState::Date:
    17781778                currentState = Inspector::Protocol::DOM::AccessibilityProperties::Current::Date;
    17791779                break;
    1780             case AccessibilityARIACurrentState::Time:
     1780            case AccessibilityCurrentState::Time:
    17811781                currentState = Inspector::Protocol::DOM::AccessibilityProperties::Current::Time;
    17821782                break;
    1783             case AccessibilityARIACurrentState::True:
     1783            case AccessibilityCurrentState::True:
    17841784                currentState = Inspector::Protocol::DOM::AccessibilityProperties::Current::True;
    17851785                break;
     
    18251825            label = axObject->computedLabel();
    18261826
    1827             if (axObject->supportsARIALiveRegion()) {
     1827            if (axObject->supportsLiveRegion()) {
    18281828                supportsLiveRegion = true;
    1829                 liveRegionAtomic = axObject->ariaLiveRegionAtomic();
    1830 
    1831                 String ariaRelevantAttrValue = axObject->ariaLiveRegionRelevant();
     1829                liveRegionAtomic = axObject->liveRegionAtomic();
     1830
     1831                String ariaRelevantAttrValue = axObject->liveRegionRelevant();
    18321832                if (!ariaRelevantAttrValue.isEmpty()) {
    18331833                    // FIXME: Pass enum values rather than strings once unblocked. http://webkit.org/b/133711
     
    18531853                }
    18541854
    1855                 String ariaLive = axObject->ariaLiveRegionStatus();
     1855                String ariaLive = axObject->liveRegionStatus();
    18561856                if (ariaLive == "assertive")
    18571857                    liveRegionStatus = Inspector::Protocol::DOM::AccessibilityProperties::LiveRegionStatus::Assertive;
     
    18761876                parentNode = parentObject->node();
    18771877
    1878             supportsPressed = axObject->ariaPressedIsPresent();
     1878            supportsPressed = axObject->pressedIsPresent();
    18791879            if (supportsPressed)
    18801880                pressed = axObject->isPressed();
     
    19041904           
    19051905            level = hierarchicalLevel ? hierarchicalLevel : headingLevel;
    1906             isPopupButton = axObject->isPopUpButton() || axObject->ariaHasPopup();
     1906            isPopupButton = axObject->isPopUpButton() || axObject->hasPopup();
    19071907        }
    19081908    }
Note: See TracChangeset for help on using the changeset viewer.