[Webkit-unassigned] [Bug 31234] Make tests http/tests/misc/isindex-with-no-form-base-href.html and isindex-with-no-form.html work using DOM keyboard events

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sat Nov 14 21:52:57 PST 2009


https://bugs.webkit.org/show_bug.cgi?id=31234


Daniel Bates <dbates at webkit.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Depends on|                            |16735




--- Comment #2 from Daniel Bates <dbates at webkit.org>  2009-11-14 21:52:55 PST ---
Using a debugger to trace the execution of DOM KeyboardEvents, we need to fix
bug #16735 in order to fix this bug.

Running the attachment Example
<https://bugs.webkit.org/attachment.cgi?id=43241>, we see that the call flow is
as follows (*):

WebCore::jsNodePrototypeFunctionDispatchEvent->EventTarget::dispatchEvent->Node::dispatchEvent->Node::dispatchGenericEvent->HTMLInputElement::defaultEventHandler

By line 1412 of HTMLInputElement.cpp
<http://trac.webkit.org/browser/trunk/WebCore/html/HTMLInputElement.cpp?rev=50996#L1412>,
we call KeyboardEvent::charCode(). Notice, this KeyboardEvent was generated
programmatically by JavaScript (as opposed to a physical key press). Hence,
this KeyboardEvent has no associated PlatformKeyboardEvent (i.e.
KeyboardEvent::m_keyEvent == null). And by line 138 of KeyboardEvent.cpp
<http://trac.webkit.org/browser/trunk/WebCore/dom/KeyboardEvent.cpp?rev=38094#L138>
method KeyboardEvent::charCode returns 0 if !KeyboardEvent::m_keyEvent. So, for
this example, KeyboardEvent::charCode always returns 0. Therefore, we cannot
resolve this bug until we resolve bug #16735.

For completeness, before executing (*), the DOM keyboard event is first
instantiated via the following call flow:

WebCore::jsDocumentPrototypeFunctionCreateEvent->Document::createEvent->KeyboardEvent::create->KeyboardEvent::KeyboardEvent()

Note, specifically the constructor KeyboardEvent::KeyboardEvent() is called.
Hence, m_keyEvent := 0.

Then, the DOM keyboard event is initialized via the call flow: 

WebCore::jsKeyboardEventPrototypeFunctionInitKeyboardEvent->KeyboardEvent::initKeyboardEvent

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list