Changeset 168360 in webkit


Ignore:
Timestamp:
May 6, 2014 9:17:19 AM (10 years ago)
Author:
Chris Fleizach
Message:

AX: VoiceOver does not announce text changes for content editable regions in Safari
https://bugs.webkit.org/show_bug.cgi?id=132577

Reviewed by Mario Sanchez Prada.

Source/WebCore:
When text or children are changed inside of a contenteditable region, we need to
convert those actions into AXValueChange notifications.

Test: accessibility/content-editable-set-inner-text-generates-axvalue-notification.html

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::childrenChanged):
(WebCore::AccessibilityNodeObject::hasContentEditableAttributeSet): Deleted.

  • accessibility/AccessibilityNodeObject.h:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::hasContentEditableAttributeSet):

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

(WebCore::AccessibilityRenderObject::textChanged):

LayoutTests:

  • accessibility/content-editable-set-inner-text-generates-axvalue-notification-expected.txt: Added.
  • accessibility/content-editable-set-inner-text-generates-axvalue-notification.html: Added.
Location:
trunk
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r168358 r168360  
     12014-05-06  Chris Fleizach  <cfleizach@apple.com>
     2
     3        AX: VoiceOver does not announce text changes for content editable regions in Safari
     4        https://bugs.webkit.org/show_bug.cgi?id=132577
     5
     6        Reviewed by Mario Sanchez Prada.
     7
     8        * accessibility/content-editable-set-inner-text-generates-axvalue-notification-expected.txt: Added.
     9        * accessibility/content-editable-set-inner-text-generates-axvalue-notification.html: Added.
     10
    1112014-05-06  Dirk Schulze  <krit@webkit.org>
    212
  • trunk/Source/WebCore/ChangeLog

    r168358 r168360  
     12014-05-06  Chris Fleizach  <cfleizach@apple.com>
     2
     3        AX: VoiceOver does not announce text changes for content editable regions in Safari
     4        https://bugs.webkit.org/show_bug.cgi?id=132577
     5
     6        Reviewed by Mario Sanchez Prada.
     7
     8        When text or children are changed inside of a contenteditable region, we need to
     9        convert those actions into AXValueChange notifications.
     10
     11        Test: accessibility/content-editable-set-inner-text-generates-axvalue-notification.html
     12
     13        * accessibility/AccessibilityNodeObject.cpp:
     14        (WebCore::AccessibilityNodeObject::childrenChanged):
     15        (WebCore::AccessibilityNodeObject::hasContentEditableAttributeSet): Deleted.
     16        * accessibility/AccessibilityNodeObject.h:
     17        * accessibility/AccessibilityObject.cpp:
     18        (WebCore::AccessibilityObject::hasContentEditableAttributeSet):
     19        * accessibility/AccessibilityObject.h:
     20        * accessibility/AccessibilityRenderObject.cpp:
     21        (WebCore::AccessibilityRenderObject::textChanged):
     22
    1232014-05-06  Dirk Schulze  <krit@webkit.org>
    224
  • trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp

    r168042 r168360  
    153153       
    154154        // If this element is an ARIA text control, notify the AT of changes.
    155         if (parent->isARIATextControl() && !parent->isNativeTextControl() && !parent->node()->hasEditableStyle())
     155        if ((parent->isARIATextControl() || parent->hasContentEditableAttributeSet()) && !parent->isNativeTextControl())
    156156            cache->postNotification(parent, parent->document(), AXObjectCache::AXValueChanged);
    157157    }
     
    20092009}   
    20102010
    2011 // If you call node->hasEditableStyle() since that will return true if an ancestor is editable.
    2012 // This only returns true if this is the element that actually has the contentEditable attribute set.
    2013 bool AccessibilityNodeObject::hasContentEditableAttributeSet() const
    2014 {
    2015     return contentEditableAttributeIsEnabled(element());
    2016 }
    2017 
    20182011bool AccessibilityNodeObject::canSetSelectedAttribute() const
    20192012{
  • trunk/Source/WebCore/accessibility/AccessibilityNodeObject.h

    r166438 r168360  
    178178    AccessibilityRole determineAriaRoleAttribute() const;
    179179    AccessibilityRole remapAriaRoleDueToParent(AccessibilityRole) const;
    180     bool hasContentEditableAttributeSet() const;
    181180    virtual bool isDescendantOfBarrenParent() const override;
    182181    void alterSliderValue(bool increase);
  • trunk/Source/WebCore/accessibility/AccessibilityObject.cpp

    r168171 r168360  
    13171317}
    13181318   
     1319// If you call node->hasEditableStyle() since that will return true if an ancestor is editable.
     1320// This only returns true if this is the element that actually has the contentEditable attribute set.
     1321bool AccessibilityObject::hasContentEditableAttributeSet() const
     1322{
     1323    return contentEditableAttributeIsEnabled(element());
     1324}
     1325
    13191326bool AccessibilityObject::contentEditableAttributeIsEnabled(Element* element)
    13201327{
  • trunk/Source/WebCore/accessibility/AccessibilityObject.h

    r168171 r168360  
    847847    static bool liveRegionStatusIsEnabled(const AtomicString&);
    848848    static bool contentEditableAttributeIsEnabled(Element*);
     849    bool hasContentEditableAttributeSet() const;
    849850   
    850851    bool supportsARIAAttributes() const;
  • trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp

    r168042 r168360  
    27682768            cache->postNotification(renderParent, AXObjectCache::AXLiveRegionChanged);
    27692769
    2770         if (parent->isARIATextControl() && !parent->isNativeTextControl() && !parent->node()->hasEditableStyle())
     2770        if ((parent->isARIATextControl() || parent->hasContentEditableAttributeSet()) && !parent->isNativeTextControl())
    27712771            cache->postNotification(renderParent, AXObjectCache::AXValueChanged);
    27722772    }
Note: See TracChangeset for help on using the changeset viewer.