Bug 28899

Summary: WebKit should broadcast an MSAA event when jumping to a named anchor
Product: WebKit Reporter: Jon Honeycutt <jhoneycutt>
Component: AccessibilityAssignee: Jon Honeycutt <jhoneycutt>
Status: RESOLVED FIXED    
Severity: Normal Keywords: InRadar
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Windows XP   
Attachments:
Description Flags
patch
aroben: review+, aroben: commit-queue-
DRT changes, layout test
aroben: review-
DRT changes, layout test aroben: review+, aroben: commit-queue-

Jon Honeycutt
Reported 2009-09-01 17:30:53 PDT
Firefox broadcasts an EVENT_SYSTEM_SCROLLINGSTART event when jumping to a named anchor. WebKit should also broadcast this event.
Attachments
patch (15.38 KB, patch)
2009-09-11 21:42 PDT, Jon Honeycutt
aroben: review+
aroben: commit-queue-
DRT changes, layout test (10.68 KB, patch)
2009-09-11 21:42 PDT, Jon Honeycutt
aroben: review-
DRT changes, layout test (13.12 KB, patch)
2009-09-14 12:49 PDT, Jon Honeycutt
aroben: review+
aroben: commit-queue-
Jon Honeycutt
Comment 1 2009-09-03 20:02:49 PDT
Jon Honeycutt
Comment 2 2009-09-11 21:42:10 PDT
Jon Honeycutt
Comment 3 2009-09-11 21:42:40 PDT
Created attachment 39505 [details] DRT changes, layout test
Adam Roben (:aroben)
Comment 4 2009-09-14 06:31:10 PDT
Comment on attachment 39504 [details] patch > + DWORD msaaEvent; > + switch (notification) { > + case AXFocusedUIElementChanged: > + msaaEvent = EVENT_OBJECT_FOCUS; > + break; > + > + case AXScrolledToAnchor: > + msaaEvent = EVENT_SYSTEM_SCROLLINGSTART; > + break; > + > + default: > + return; > + } It might be clearer to use a HashMap, though it probably doesn't matter as long as we only have two events we care about. > + // Windows will end up calling get_accChild() on the root accessible > + // object for the WebView, passing the child ID that we specify below. We > + // negate the AXID so we know that the caller is passing the ID of an > + // element, not the index of a child element. > + > + ASSERT(obj->axObjectID() >= 1 && obj->axObjectID() <= numeric_limits<LONG>::max()); You should split this up into two assertions. r=me
Adam Roben (:aroben)
Comment 5 2009-09-14 06:33:45 PDT
Comment on attachment 39505 [details] DRT changes, layout test This patch looks fine, but your new test and result are missing!
Jon Honeycutt
Comment 6 2009-09-14 12:49:26 PDT
Created attachment 39565 [details] DRT changes, layout test Whoops! Added the test and result.
Adam Roben (:aroben)
Comment 7 2009-09-14 12:53:35 PDT
Comment on attachment 39565 [details] DRT changes, layout test > + function test() > + { > + if (window.layoutTestController) > + document.getElementById("notDRT").style.visibility = "hidden"; > + > + accessibilityController.logScrollingStartEvents(); > + layoutTestController.waitUntilDone(); > + layoutTestController.dumpAsText(); > + setTimeout(scrollToAnchor, 0); > + } > + > + function scrollToAnchor() > + { > + if (window.eventSender) { > + var input = document.getElementById('ANCHORLINK'); > + var x = input.offsetLeft; > + var y = input.offsetTop; > + eventSender.mouseMoveTo(x, y); > + eventSender.mouseDown(); > + eventSender.mouseUp(); > + } > + > + layoutTestController.notifyDone(); > + } This will throw a bunch of JS exceptions when window.layoutTestController or window.accessibilityController don't exist. r=me
Jon Honeycutt
Comment 8 2009-09-14 13:13:40 PDT
(In reply to comment #7) > (From update of attachment 39565 [details]) > > This will throw a bunch of JS exceptions when window.layoutTestController or > window.accessibilityController don't exist. I changed test() to return early in this case. > > r=me Thanks!
Jon Honeycutt
Comment 9 2009-09-14 14:28:15 PDT
Committed r48367, r48368.
Note You need to log in before you can comment on or make changes to this bug.