Bug 139330

Summary: AX: I cannot activate links on the mobile version of news.google.com
Product: WebKit Reporter: chris fleizach <cfleizach>
Component: AccessibilityAssignee: chris fleizach <cfleizach>
Status: RESOLVED FIXED    
Severity: Normal CC: aboxhall, apinheiro, commit-queue, dmazzoni, jcraig, jdiggs, mario, samuel_white, simon.fraser, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
patch simon.fraser: review+

Description chris fleizach 2014-12-05 18:04:52 PST
If I visit news.google.com on iPhone with VOT enabled, the mobile version by default appears. If I touch Top Stories, swipe once to the right, then double tap to activate the first top story link, nothing ahppens. Turn off VO and do the same, you’ll be brought to the proper location, which may mean a new tab.
Comment 1 chris fleizach 2014-12-05 18:05:18 PST
This is because news.google only listens for touch events and ignores all other kinds of clicks.
we need to simulate a touch event
Comment 2 chris fleizach 2014-12-05 18:09:43 PST
Created attachment 242691 [details]
patch
Comment 3 Simon Fraser (smfr) 2014-12-05 19:04:53 PST
Comment on attachment 242691 [details]
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=242691&action=review

> Source/WebCore/platform/ios/PlatformEventFactoryIOS.mm:278
> +            PlatformTouchPoint::TouchPhaseType touchPhase;
> +            switch (type) {
> +            case PlatformEvent::TouchStart:
> +                touchPhase = PlatformTouchPoint::TouchPhaseBegan;
> +                break;
> +            case PlatformEvent::TouchMove:
> +                touchPhase = PlatformTouchPoint::TouchPhaseMoved;
> +                break;
> +            case PlatformEvent::TouchEnd:
> +                touchPhase = PlatformTouchPoint::TouchPhaseEnded;
> +                break;
> +            default:
> +                ASSERT_NOT_REACHED();
> +                break;
> +            }

Would be nice to pull this enum translation out into a small separate function.

> Source/WebCore/accessibility/AccessibilityObject.h:757
> +    virtual bool isDetachedFromParent() { return false; }

Is this relevant?

> LayoutTests/platform/ios-simulator/ios-accessibility/press-fires-touch-events.html:42
> +//    window.jsTestIsAsync = true;
> +
> +    if (window.accessibilityController) {
> +
> +        var button = accessibilityController.accessibleElementById("button");
> +        button.press();
> +    }
> +//    if (window.testRunner)
> +  //      testRunner.waitUntilDone();

You have some commented-out code here.
Comment 4 chris fleizach 2014-12-05 21:31:03 PST
(In reply to comment #3)
> Comment on attachment 242691 [details]
> patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=242691&action=review
> 
> > Source/WebCore/platform/ios/PlatformEventFactoryIOS.mm:278
> > +            PlatformTouchPoint::TouchPhaseType touchPhase;
> > +            switch (type) {
> > +            case PlatformEvent::TouchStart:
> > +                touchPhase = PlatformTouchPoint::TouchPhaseBegan;
> > +                break;
> > +            case PlatformEvent::TouchMove:
> > +                touchPhase = PlatformTouchPoint::TouchPhaseMoved;
> > +                break;
> > +            case PlatformEvent::TouchEnd:
> > +                touchPhase = PlatformTouchPoint::TouchPhaseEnded;
> > +                break;
> > +            default:
> > +                ASSERT_NOT_REACHED();
> > +                break;
> > +            }
> 
> Would be nice to pull this enum translation out into a small separate
> function.

Will do

> 
> > Source/WebCore/accessibility/AccessibilityObject.h:757
> > +    virtual bool isDetachedFromParent() { return false; }
> 
> Is this relevant?

Left over from another patch. Thanks.
> 
> > LayoutTests/platform/ios-simulator/ios-accessibility/press-fires-touch-events.html:42
> > +//    window.jsTestIsAsync = true;
> > +
> > +    if (window.accessibilityController) {
> > +
> > +        var button = accessibilityController.accessibleElementById("button");
> > +        button.press();
> > +    }
> > +//    if (window.testRunner)
> > +  //      testRunner.waitUntilDone();
> 
> You have some commented-out code here.

Thanks for review
Comment 5 chris fleizach 2014-12-05 21:44:06 PST
http://trac.webkit.org/changeset/176904