Changeset 203955 in webkit


Ignore:
Timestamp:
Jul 31, 2016 1:02:54 PM (8 years ago)
Author:
n_wang@apple.com
Message:

AX: Add a check for touch event listener on iOS accessibility object
https://bugs.webkit.org/show_bug.cgi?id=160388

Reviewed by Chris Fleizach.

Source/WebCore:

dispatchTouchEvent() is not working correctly within AXPress() sometimes. Need to
investigate it more in the future. Now, adding a check for the touch event listener
on the object's node so that iOS can handle dispatching the touch event instead.

Test: accessibility/ios-simulator/has-touch-event-listener.html

  • accessibility/AccessibilityObject.h:
  • accessibility/ios/AccessibilityObjectIOS.mm:

(WebCore::AccessibilityObject::accessibilityPlatformIncludesObject):
(WebCore::AccessibilityObject::hasTouchEventListener):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(appendStringToResult):
(-[WebAccessibilityObjectWrapper _accessibilityHasTouchEventListener]):
(-[WebAccessibilityObjectWrapper _accessibilityValueIsAutofilled]):

Tools:

  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::boolAttributeValue):

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::boolAttributeValue):

LayoutTests:

  • accessibility/ios-simulator/has-touch-event-listener-expected.txt: Added.
  • accessibility/ios-simulator/has-touch-event-listener.html: Added.
Location:
trunk
Files:
2 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r203952 r203955  
     12016-07-31  Nan Wang  <n_wang@apple.com>
     2
     3        AX: Add a check for touch event listener on iOS accessibility object
     4        https://bugs.webkit.org/show_bug.cgi?id=160388
     5
     6        Reviewed by Chris Fleizach.
     7
     8        * accessibility/ios-simulator/has-touch-event-listener-expected.txt: Added.
     9        * accessibility/ios-simulator/has-touch-event-listener.html: Added.
     10
    1112016-07-30  Mark Lam  <mark.lam@apple.com>
    212
  • trunk/Source/WebCore/ChangeLog

    r203951 r203955  
     12016-07-31  Nan Wang  <n_wang@apple.com>
     2
     3        AX: Add a check for touch event listener on iOS accessibility object
     4        https://bugs.webkit.org/show_bug.cgi?id=160388
     5
     6        Reviewed by Chris Fleizach.
     7
     8        dispatchTouchEvent() is not working correctly within AXPress() sometimes. Need to
     9        investigate it more in the future. Now, adding a check for the touch event listener
     10        on the object's node so that iOS can handle dispatching the touch event instead.
     11
     12        Test: accessibility/ios-simulator/has-touch-event-listener.html
     13
     14        * accessibility/AccessibilityObject.h:
     15        * accessibility/ios/AccessibilityObjectIOS.mm:
     16        (WebCore::AccessibilityObject::accessibilityPlatformIncludesObject):
     17        (WebCore::AccessibilityObject::hasTouchEventListener):
     18        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
     19        (appendStringToResult):
     20        (-[WebAccessibilityObjectWrapper _accessibilityHasTouchEventListener]):
     21        (-[WebAccessibilityObjectWrapper _accessibilityValueIsAutofilled]):
     22
    1232016-07-30  Chris Dumez  <cdumez@apple.com>
    224
  • trunk/Source/WebCore/accessibility/AccessibilityObject.cpp

    r203711 r203955  
    923923    UserGestureIndicator gestureIndicator(ProcessingUserGesture, document);
    924924   
     925    // FIXME: dispatchTouchEvent() is not dispatching the touch event correctly.
    925926    bool dispatchedTouchEvent = dispatchTouchEvent();
    926927    if (!dispatchedTouchEvent)
  • trunk/Source/WebCore/accessibility/AccessibilityObject.h

    r203711 r203955  
    10411041#if PLATFORM(IOS)
    10421042    int accessibilityPasswordFieldLength();
     1043    bool hasTouchEventListener() const;
    10431044#endif
    10441045   
  • trunk/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm

    r174898 r203955  
    2727#import "AccessibilityObject.h"
    2828#import "AccessibilityRenderObject.h"
     29#import "EventNames.h"
    2930#import "HTMLInputElement.h"
    3031#import "RenderObject.h"
     
    8182    return DefaultBehavior;
    8283}
    83    
     84
     85bool AccessibilityObject::hasTouchEventListener() const
     86{
     87    for (Node* node = this->node(); node; node = node->parentNode()) {
     88        if (node->hasEventListeners(eventNames().touchstartEvent) || node->hasEventListeners(eventNames().touchendEvent))
     89            return true;
     90    }
     91    return false;
     92}
     93
    8494} // WebCore
    8595
  • trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm

    r203538 r203955  
    950950}
    951951
     952- (BOOL)_accessibilityHasTouchEventListener
     953{
     954    if (![self _prepareAccessibilityCall])
     955        return NO;
     956   
     957    return m_object->hasTouchEventListener();
     958}
     959
    952960- (BOOL)_accessibilityValueIsAutofilled
    953961{
  • trunk/Tools/ChangeLog

    r203942 r203955  
     12016-07-31  Nan Wang  <n_wang@apple.com>
     2
     3        AX: Add a check for touch event listener on iOS accessibility object
     4        https://bugs.webkit.org/show_bug.cgi?id=160388
     5
     6        Reviewed by Chris Fleizach.
     7
     8        * DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
     9        (AccessibilityUIElement::boolAttributeValue):
     10        * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
     11        (WTR::AccessibilityUIElement::boolAttributeValue):
     12
    1132016-07-30  Manuel Rego Casasnovas  <rego@igalia.com>
    214
  • trunk/Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm

    r201568 r203955  
    9696- (UIAccessibilityTraits)_axContainedByFieldsetTrait;
    9797- (id)_accessibilityFieldsetAncestor;
     98- (BOOL)_accessibilityHasTouchEventListener;
    9899
    99100// TextMarker related
     
    668669bool AccessibilityUIElement::boolAttributeValue(JSStringRef attribute)
    669670{
     671    if (JSStringIsEqualToUTF8CString(attribute, "AXHasTouchEventListener"))
     672        return [m_element _accessibilityHasTouchEventListener];
    670673    return false;
    671674}
  • trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm

    r201568 r203955  
    7373- (UIAccessibilityTraits)_axContainedByFieldsetTrait;
    7474- (id)_accessibilityFieldsetAncestor;
     75- (BOOL)_accessibilityHasTouchEventListener;
    7576
    7677// TextMarker related
     
    380381bool AccessibilityUIElement::boolAttributeValue(JSStringRef attribute)
    381382{
     383    if (JSStringIsEqualToUTF8CString(attribute, "AXHasTouchEventListener"))
     384        return [m_element _accessibilityHasTouchEventListener];
    382385    return false;
    383386}
Note: See TracChangeset for help on using the changeset viewer.