Bug 20571 - Window object missing Animation/Transition event setter
Summary: Window object missing Animation/Transition event setter
Alias: None
Product: WebKit
Classification: Unclassified
Component: DOM (show other bugs)
Version: 528+ (Nightly build)
Hardware: Mac OS X 10.5
: P2 Normal
Assignee: Dean Jackson
Depends on:
Blocks: 20361 20572
  Show dependency treegraph
Reported: 2008-08-29 19:02 PDT by Dean Jackson
Modified: 2008-09-01 16:34 PDT (History)
1 user (show)

See Also:

patch with testcases (53.46 KB, patch)
2008-08-29 19:07 PDT, Dean Jackson
sam: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Dean Jackson 2008-08-29 19:02:57 PDT
When I landed Transition events I forgot to put a setter for the attributes on the Window object.
Comment 1 Dean Jackson 2008-08-29 19:07:07 PDT
Created attachment 23078 [details]
patch with testcases

This patch also includes a code cleanup since a lot of this file violated the coding guidelines and hence offended my eyes. Check the next comment for the "real" patch.

Also, not all the tests included here are directly relevant to the fix in the patch, but are the tests that should have been landed with the events in the first place.

Lastly, there is an outstanding bug that makes using window pretty annoying. The event dispatch code only fires a transition event if the document was notified of a listener. If you attach only to Window then the Document doesn't know, and hence nothing happens. I'll file a separate bug on that. The workaround is to attach a transition event listener anywhere on the document (even if it isn't in the right place and is empty).
Comment 2 Dean Jackson 2008-08-29 19:07:42 PDT
Here is the real meat of the patch (without coding style fixes):

diff --git a/WebCore/bindings/js/JSDOMWindowBase.cpp b/WebCore/bindings/js/JSDOMWindowBase.cpp
index 60ac671..7c3e4b2 100644
--- a/WebCore/bindings/js/JSDOMWindowBase.cpp
+++ b/WebCore/bindings/js/JSDOMWindowBase.cpp
@@ -749,6 +761,22 @@ void JSDOMWindowBase::put(ExecState* exec, const Identifier& propertyName, JSVal
       if (allowsAccessFrom(exec))
         setListener(exec, unloadEvent, value);
+    case OnWebKitAnimationStart:
+      if (allowsAccessFrom(exec))
+        setListener(exec, webkitAnimationStartEvent, value);
+       return;
+    case OnWebKitAnimationIteration:
+      if (allowsAccessFrom(exec))
+        setListener(exec, webkitAnimationIterationEvent, value);
+      return;
+    case OnWebKitAnimationEnd:
+      if (allowsAccessFrom(exec))
+        setListener(exec, webkitAnimationEndEvent, value);
+      return;
+    case OnWebKitTransitionEnd:
+      if (allowsAccessFrom(exec))
+        setListener(exec, webkitTransitionEndEvent, value);
+      return;

Comment 3 Darin Adler 2008-08-30 19:15:14 PDT
Comment on attachment 23078 [details]
patch with testcases

It'd be better to clean up the whitespace in a separate check-in first.
Comment 4 Sam Weinig 2008-08-31 19:35:56 PDT
Comment on attachment 23078 [details]
patch with testcases

In general, we prefer if the test cases JS try and match our coding styles, but it is just something to think about in the future.
Comment 5 Dean Jackson 2008-09-01 16:06:52 PDT
Code cleanup commit

Committed r36020
	M	WebCore/bindings/js/JSDOMWindowBase.cpp
	M	WebCore/ChangeLog

Comment 6 Dean Jackson 2008-09-01 16:34:37 PDT
Committed r36021
	M	WebCore/bindings/js/JSDOMWindowBase.cpp
	M	WebCore/ChangeLog
	M	LayoutTests/ChangeLog
	A	LayoutTests/transitions/transition-end-event-all-properties.html
	A	LayoutTests/transitions/transition-end-event-left-expected.txt
	A	LayoutTests/transitions/transition-end-event-window.html
	A	LayoutTests/transitions/transition-end-event-multiple-01.html
	A	LayoutTests/transitions/transition-end-event-multiple-02.html
	A	LayoutTests/transitions/transition-end-event-transform.html
	A	LayoutTests/transitions/transition-end-event-multiple-03.html
	A	LayoutTests/transitions/transition-end-event-multiple-04.html
	A	LayoutTests/transitions/transition-end-event-all-properties-expected.txt
	A	LayoutTests/transitions/transition-end-event-window-expected.txt
	A	LayoutTests/transitions/end-event-helpers.js
	A	LayoutTests/transitions/transition-end-event-container.html
	A	LayoutTests/transitions/transition-end-event-nested.html
	A	LayoutTests/transitions/transition-end-event-multiple-01-expected.txt
	A	LayoutTests/transitions/transition-end-event-multiple-02-expected.txt
	A	LayoutTests/transitions/transition-end-event-multiple-03-expected.txt
	A	LayoutTests/transitions/transition-end-event-transform-expected.txt
	A	LayoutTests/transitions/transition-end-event-attributes.html
	A	LayoutTests/transitions/transition-end-event-multiple-04-expected.txt
	A	LayoutTests/transitions/transition-end-event-left.html
	A	LayoutTests/transitions/transition-end-event-container-expected.txt
	A	LayoutTests/transitions/transition-end-event-nested-expected.txt
	A	LayoutTests/transitions/transition-end-event-attributes-expected.txt