WebCore:
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Jan 2009 17:29:22 +0000 (17:29 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Jan 2009 17:29:22 +0000 (17:29 +0000)
2009-01-05  Darin Adler  <darin@apple.com>

        Reviewed by Anders Carlsson.

        Bug 23104: minor mistakes in init functions for animation and transition events
        https://bugs.webkit.org/show_bug.cgi?id=23104

        Test: fast/events/init-events.html

        Also fixed two StorageEvent problems the test case uncovered:

            Made document.createEvent("StorageEvent") work.
            Allow null values for StorageEvent.oldValue and StorageEvent.newValue.

        * dom/Document.cpp:
        (WebCore::Document::createEvent): Sorted alphabetically by the name of the event
        class. Added StorageEvent.

        * dom/UIEvent.idl: Fixed typo in a comment.

        * dom/WebKitAnimationEvent.cpp:
        (WebCore::WebKitAnimationEvent::initWebKitAnimationEvent): Use all the arguments.
        * dom/WebKitTransitionEvent.cpp:
        (WebCore::WebKitTransitionEvent::initWebKitTransitionEvent): Ditto.

        * storage/StorageEvent.idl: Use the ConvertNullToNullString keyword on the
        arguments to initStorageEvent so it can create events with null values for the
        oldValue and newValue, just like the real storage events. Note that the properties
        already had ConvertNullStringTo=Null, so this is just the other half of that.

LayoutTests:

2009-01-05  Darin Adler  <darin@apple.com>

        Reviewed by Anders Carlsson.

        Bug 23104: minor mistakes in init functions for animation and transition events
        https://bugs.webkit.org/show_bug.cgi?id=23104

        * fast/events/init-events-expected.txt: Added.
        * fast/events/init-events.html: Added.
        * fast/events/resources/init-events.js: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@39602 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/events/init-events-expected.txt [new file with mode: 0644]
LayoutTests/fast/events/init-events.html [new file with mode: 0644]
LayoutTests/fast/events/resources/init-events.js [new file with mode: 0644]
WebCore/ChangeLog
WebCore/dom/Document.cpp
WebCore/dom/UIEvent.idl
WebCore/dom/WebKitAnimationEvent.cpp
WebCore/dom/WebKitTransitionEvent.cpp
WebCore/storage/StorageEvent.idl

index 128c451..450a5f4 100644 (file)
@@ -1,3 +1,14 @@
+2009-01-05  Darin Adler  <darin@apple.com>
+
+        Reviewed by Anders Carlsson.
+
+        Bug 23104: minor mistakes in init functions for animation and transition events
+        https://bugs.webkit.org/show_bug.cgi?id=23104
+
+        * fast/events/init-events-expected.txt: Added.
+        * fast/events/init-events.html: Added.
+        * fast/events/resources/init-events.js: Added.
+
 2009-01-04  Darin Adler  <darin@apple.com>
 
         Reviewed by Oliver Hunt.
diff --git a/LayoutTests/fast/events/init-events-expected.txt b/LayoutTests/fast/events/init-events-expected.txt
new file mode 100644 (file)
index 0000000..ee5c73a
--- /dev/null
@@ -0,0 +1,198 @@
+This tests the init functions for all the event DOM classes that have them.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS testInitEvent('', '"a", false, false').type is 'a'
+PASS testInitEvent('', 'null, false, false').type is 'null'
+PASS testInitEvent('', '"a", false, false').bubbles is false
+PASS testInitEvent('', '"a", true, false').bubbles is true
+PASS testInitEvent('', '"a", false, false').cancelable is false
+PASS testInitEvent('', '"a", false, true').cancelable is true
+PASS testInitEvent('Keyboard', '"a", false, false, window, "b", 1001, false, false, false, false, false').type is 'a'
+PASS testInitEvent('Keyboard', 'null, false, false, window, "b", 1001, false, false, false, false, false').type is 'null'
+PASS testInitEvent('Keyboard', '"a", false, false, window, "b", 1001, false, false, false, false, false').bubbles is false
+PASS testInitEvent('Keyboard', '"a", true, false, window, "b", 1001, false, false, false, false, false').bubbles is true
+PASS testInitEvent('Keyboard', '"a", false, false, window, "b", 1001, false, false, false, false, false').cancelable is false
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').cancelable is true
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').view is window
+PASS testInitEvent('Keyboard', '"a", false, true, null, "b", 1001, false, false, false, false, false').view is null
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').keyIdentifier is 'b'
+PASS testInitEvent('Keyboard', '"a", false, true, window, null, 1001, false, false, false, false, false').keyIdentifier is 'null'
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').keyLocation is 1001
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').ctrlKey is false
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, true, false, false, false, false').ctrlKey is true
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').altKey is false
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, true, false, false, false').altKey is true
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').shiftKey is false
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, true, false, false').shiftKey is true
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').metaKey is false
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, true, false').metaKey is true
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').altGraphKey is false
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, true').altGraphKey is true
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, true').detail is 0
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').keyCode is 0
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').charCode is 0
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').layerX is 0
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').layerY is 0
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').pageX is 0
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').pageY is 0
+PASS testInitEvent('Keyboard', '"a", false, true, window, "b", 1001, false, false, false, false, false').which is 0
+PASS testInitEvent('Message', '"a", false, false, "b", "c", "d", window, null').type is 'a'
+PASS testInitEvent('Message', 'null, false, false, "b", "c", "d", window, null').type is 'null'
+PASS testInitEvent('Message', '"a", false, false, "b", "c", "d", window, null').bubbles is false
+PASS testInitEvent('Message', '"a", true, false, "b", "c", "d", window, null').bubbles is true
+PASS testInitEvent('Message', '"a", false, false, "b", "c", "d", window, null').cancelable is false
+PASS testInitEvent('Message', '"a", false, true, "b", "c", "d", window, null').cancelable is true
+PASS testInitEvent('Message', '"a", false, false, "b", "c", "d", window, null').data is 'b'
+PASS testInitEvent('Message', '"a", false, false, null, "c", "d", window, null').data is 'null'
+PASS testInitEvent('Message', '"a", false, false, "b", "c", "d", window, null').origin is 'c'
+PASS testInitEvent('Message', '"a", false, false, "b", null, "d", window, null').origin is 'null'
+PASS testInitEvent('Message', '"a", false, false, "b", "c", "d", window, null').lastEventId is 'd'
+PASS testInitEvent('Message', '"a", false, false, "b", "c", null, window, null').lastEventId is 'null'
+PASS testInitEvent('Message', '"a", false, false, "b", "c", "d", window, null').source is window
+PASS testInitEvent('Message', '"a", false, false, "b", "c", "d", null, null').source is null
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').type is 'a'
+PASS testInitEvent('Mouse', 'null, false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').type is 'null'
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').bubbles is false
+PASS testInitEvent('Mouse', '"a", true, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').bubbles is true
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').cancelable is false
+PASS testInitEvent('Mouse', '"a", false, true, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').cancelable is true
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').view is window
+PASS testInitEvent('Mouse', '"a", false, false, null, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').view is null
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').detail is 1001
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').screenX is 1002
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').screenY is 1003
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').clientX is 1004
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').clientY is 1005
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').ctrlKey is false
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, true, false, false, false, 1006, null').ctrlKey is true
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').altKey is false
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, true, false, false, 1006, null').altKey is true
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').shiftKey is false
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, true, false, 1006, null').shiftKey is true
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').metaKey is false
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, true, 1006, null').metaKey is true
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').button is 1006
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').relatedTarget is null
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, document').relatedTarget is document
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').offsetX is 1004
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').offsetY is 1005
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').x is 1004
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').y is 1005
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').fromElement is null
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, document').fromElement is document
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').toElement is null
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').dataTransfer is null
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').keyCode is 0
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').charCode is 0
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').layerX is 1004
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').layerY is 1005
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').pageX is 1004
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').pageY is 1005
+PASS testInitEvent('Mouse', '"a", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').which is 1007
+PASS testInitEvent('Mutation', '"a", false, false, null, "b", "c", "d", 1001').type is 'a'
+PASS testInitEvent('Mutation', 'null, false, false, null, "b", "c", "d", 1001').type is 'null'
+PASS testInitEvent('Mutation', '"a", false, false, null, "b", "c", "d", 1001').bubbles is false
+PASS testInitEvent('Mutation', '"a", true, false, null, "b", "c", "d", 1001').bubbles is true
+PASS testInitEvent('Mutation', '"a", false, false, null, "b", "c", "d", 1001').cancelable is false
+PASS testInitEvent('Mutation', '"a", false, true, null, "b", "c", "d", 1001').cancelable is true
+PASS testInitEvent('Mutation', '"a", false, false, null, "b", "c", "d", 1001').relatedNode is null
+PASS testInitEvent('Mutation', '"a", false, false, document, "b", "c", "d", 1001').relatedNode is document
+PASS testInitEvent('Mutation', '"a", false, false, null, "b", "c", "d", 1001').prevValue is 'b'
+PASS testInitEvent('Mutation', '"a", false, false, null, null, "c", "d", 1001').prevValue is 'null'
+PASS testInitEvent('Mutation', '"a", false, false, null, "b", "c", "d", 1001').newValue is 'c'
+PASS testInitEvent('Mutation', '"a", false, false, null, "b", null, "d", 1001').newValue is 'null'
+PASS testInitEvent('Mutation', '"a", false, false, null, "b", "c", "d", 1001').attrName is 'd'
+PASS testInitEvent('Mutation', '"a", false, false, null, "b", "c", null, 1001').attrName is 'null'
+PASS testInitEvent('Mutation', '"a", false, false, null, "b", "c", "d", 1001').attrChange is 1001
+PASS testInitEvent('Overflow', '1001, false, false').type is 'overflowchanged'
+PASS testInitEvent('Overflow', '1001, false, false').bubbles is false
+PASS testInitEvent('Overflow', '1001, false, false').cancelable is false
+PASS testInitEvent('Overflow', '1001, false, false').orient is 1001
+PASS testInitEvent('Overflow', '1001, false, false').horizontalOverflow is false
+PASS testInitEvent('Overflow', '1001, true, false').horizontalOverflow is true
+PASS testInitEvent('Overflow', '1001, false, false').verticalOverflow is false
+PASS testInitEvent('Overflow', '1001, false, true').verticalOverflow is true
+PASS testInitEvent('Progress', '"a", false, false, false, 1001, 1002').type is 'a'
+PASS testInitEvent('Progress', 'null, false, false, false, 1001, 1002').type is 'null'
+PASS testInitEvent('Progress', '"a", false, false, false, 1001, 1002').bubbles is false
+PASS testInitEvent('Progress', '"a", true, false, false, 1001, 1002').bubbles is true
+PASS testInitEvent('Progress', '"a", false, false, false, 1001, 1002').cancelable is false
+PASS testInitEvent('Progress', '"a", false, true, false, 1001, 1002').cancelable is true
+PASS testInitEvent('Progress', '"a", false, false, false, 1001, 1002').lengthComputable is false
+PASS testInitEvent('Progress', '"a", false, false, true, 1001, 1002').lengthComputable is true
+PASS testInitEvent('Progress', '"a", false, false, false, 1001, 1002').loaded is 1001
+PASS testInitEvent('Progress', '"a", false, false, false, 1001, 1002').total is 1002
+PASS testInitEvent('Storage', '"a", false, false, "b", "c", "d", "e", window').type is 'a'
+PASS testInitEvent('Storage', 'null, false, false, "b", "c", "d", "e", window').type is 'null'
+PASS testInitEvent('Storage', '"a", false, false, "b", "c", "d", "e", window').bubbles is false
+PASS testInitEvent('Storage', '"a", true, false, "b", "c", "d", "e", window').bubbles is true
+PASS testInitEvent('Storage', '"a", false, false, "b", "c", "d", "e", window').cancelable is false
+PASS testInitEvent('Storage', '"a", false, true, "b", "c", "d", "e", window').cancelable is true
+PASS testInitEvent('Storage', '"a", false, false, "b", "c", "d", "e", window').key is 'b'
+PASS testInitEvent('Storage', '"a", false, false, null, "c", "d", "e", window').key is 'null'
+PASS testInitEvent('Storage', '"a", false, false, "b", "c", "d", "e", window').oldValue is 'c'
+PASS testInitEvent('Storage', '"a", false, false, "b", null, "d", "e", window').oldValue is null
+PASS testInitEvent('Storage', '"a", false, false, "b", "c", "d", "e", window').newValue is 'd'
+PASS testInitEvent('Storage', '"a", false, false, "b", "c", null, "e", window').newValue is null
+PASS testInitEvent('Storage', '"a", false, false, "b", "c", "d", "e", window').uri is 'e'
+PASS testInitEvent('Storage', '"a", false, false, "b", "c", "d", null, window').uri is 'null'
+PASS testInitEvent('Storage', '"a", false, false, "b", "c", "d", "e", window').source is window
+PASS testInitEvent('Storage', '"a", false, false, "b", "c", "d", "e", null').source is null
+PASS testInitEvent('Text', '"a", false, false, window, "b"').type is 'a'
+PASS testInitEvent('Text', 'null, false, false, window, "b"').type is 'null'
+PASS testInitEvent('Text', '"a", false, false, window, "b"').bubbles is false
+PASS testInitEvent('Text', '"a", true, false, window, "b"').bubbles is true
+PASS testInitEvent('Text', '"a", false, false, window, "b"').cancelable is false
+PASS testInitEvent('Text', '"a", false, true, window, "b"').cancelable is true
+PASS testInitEvent('Text', '"a", false, false, window, "b"').view is window
+PASS testInitEvent('Text', '"a", false, false, null, "b"').view is null
+PASS testInitEvent('Text', '"a", false, false, window, "b"').data is 'b'
+PASS testInitEvent('Text', '"a", false, false, window, null').data is 'null'
+PASS testInitEvent('Text', '"a", false, false, window, "b"').detail is 0
+PASS testInitEvent('Text', '"a", false, false, window, "b"').keyCode is 0
+PASS testInitEvent('Text', '"a", false, false, window, "b"').charCode is 0
+PASS testInitEvent('Text', '"a", false, false, window, "b"').layerX is 0
+PASS testInitEvent('Text', '"a", false, false, window, "b"').layerY is 0
+PASS testInitEvent('Text', '"a", false, false, window, "b"').pageX is 0
+PASS testInitEvent('Text', '"a", false, false, window, "b"').pageY is 0
+PASS testInitEvent('Text', '"a", false, false, window, "b"').which is 0
+PASS testInitEvent('UI', '"a", false, false, window, 1001').type is 'a'
+PASS testInitEvent('UI', 'null, false, false, window, 1001').type is 'null'
+PASS testInitEvent('UI', '"a", false, false, window, 1001').bubbles is false
+PASS testInitEvent('UI', '"a", true, false, window, 1001').bubbles is true
+PASS testInitEvent('UI', '"a", false, false, window, 1001').cancelable is false
+PASS testInitEvent('UI', '"a", false, true, window, 1001').cancelable is true
+PASS testInitEvent('UI', '"a", false, false, window, 1001').view is window
+PASS testInitEvent('UI', '"a", false, false, null, 1001').view is null
+PASS testInitEvent('UI', '"a", false, false, window, 1001').detail is 1001
+PASS testInitEvent('UI', '"a", false, false, window, 1001').keyCode is 0
+PASS testInitEvent('UI', '"a", false, false, window, 1001').charCode is 0
+PASS testInitEvent('UI', '"a", false, false, window, 1001').layerX is 0
+PASS testInitEvent('UI', '"a", false, false, window, 1001').layerY is 0
+PASS testInitEvent('UI', '"a", false, false, window, 1001').pageX is 0
+PASS testInitEvent('UI', '"a", false, false, window, 1001').pageY is 0
+PASS testInitEvent('UI', '"a", false, false, window, 1001').which is 0
+PASS testInitEvent('WebKitAnimation', '"a", false, false, "b", 1001').type is 'a'
+PASS testInitEvent('WebKitAnimation', 'null, false, false, "b", 1001').type is 'null'
+PASS testInitEvent('WebKitAnimation', '"a", false, false, "b", 1001').bubbles is false
+PASS testInitEvent('WebKitAnimation', '"a", true, false, "b", 1001').bubbles is true
+PASS testInitEvent('WebKitAnimation', '"a", false, false, "b", 1001').cancelable is false
+PASS testInitEvent('WebKitAnimation', '"a", false, true, "b", 1001').cancelable is true
+PASS testInitEvent('WebKitAnimation', '"a", false, false, "b", 1001').animationName is 'b'
+PASS testInitEvent('WebKitAnimation', '"a", false, false, null, 1001').animationName is 'null'
+PASS testInitEvent('WebKitAnimation', '"a", false, false, "b", 1001').elapsedTime is 1001
+PASS testInitEvent('WebKitTransition', '"a", false, false, "b", 1001').type is 'a'
+PASS testInitEvent('WebKitTransition', 'null, false, false, "b", 1001').type is 'null'
+PASS testInitEvent('WebKitTransition', '"a", false, false, "b", 1001').bubbles is false
+PASS testInitEvent('WebKitTransition', '"a", true, false, "b", 1001').bubbles is true
+PASS testInitEvent('WebKitTransition', '"a", false, false, "b", 1001').cancelable is false
+PASS testInitEvent('WebKitTransition', '"a", false, true, "b", 1001').cancelable is true
+PASS testInitEvent('WebKitTransition', '"a", false, false, "b", 1001').propertyName is 'b'
+PASS testInitEvent('WebKitTransition', '"a", false, false, null, 1001').propertyName is 'null'
+PASS testInitEvent('WebKitTransition', '"a", false, false, "b", 1001').elapsedTime is 1001
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/events/init-events.html b/LayoutTests/fast/events/init-events.html
new file mode 100644 (file)
index 0000000..ca720af
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../js/resources/js-test-style.css">
+<script src="../js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script src="resources/init-events.js"></script>
+<script src="../js/resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/events/resources/init-events.js b/LayoutTests/fast/events/resources/init-events.js
new file mode 100644 (file)
index 0000000..7bde2f5
--- /dev/null
@@ -0,0 +1,220 @@
+description("This tests the init functions for all the event DOM classes that have them.");
+
+function testInitEvent(prefix, argumentString)
+{
+    var event = document.createEvent(prefix + "Event");
+    var initExpression = "event.init" + prefix + "Event(" + argumentString + ")";
+    eval(initExpression);
+    return event;
+}
+
+var event = document.createEvent("Event");
+
+event.initEvent("type", false, false);
+
+shouldBe("testInitEvent('', '\"a\", false, false').type", "'a'");
+shouldBe("testInitEvent('', 'null, false, false').type", "'null'");
+shouldBe("testInitEvent('', '\"a\", false, false').bubbles", "false");
+shouldBe("testInitEvent('', '\"a\", true, false').bubbles", "true");
+shouldBe("testInitEvent('', '\"a\", false, false').cancelable", "false");
+shouldBe("testInitEvent('', '\"a\", false, true').cancelable", "true");
+
+shouldBe("testInitEvent('Keyboard', '\"a\", false, false, window, \"b\", 1001, false, false, false, false, false').type", "'a'");
+shouldBe("testInitEvent('Keyboard', 'null, false, false, window, \"b\", 1001, false, false, false, false, false').type", "'null'");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, false, window, \"b\", 1001, false, false, false, false, false').bubbles", "false");
+shouldBe("testInitEvent('Keyboard', '\"a\", true, false, window, \"b\", 1001, false, false, false, false, false').bubbles", "true");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, false, window, \"b\", 1001, false, false, false, false, false').cancelable", "false");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').cancelable", "true");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').view", "window");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, null, \"b\", 1001, false, false, false, false, false').view", "null");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').keyIdentifier", "'b'");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, null, 1001, false, false, false, false, false').keyIdentifier", "'null'");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').keyLocation", "1001");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').ctrlKey", "false");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, true, false, false, false, false').ctrlKey", "true");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').altKey", "false");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, true, false, false, false').altKey", "true");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').shiftKey", "false");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, true, false, false').shiftKey", "true");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').metaKey", "false");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, true, false').metaKey", "true");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').altGraphKey", "false");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, true').altGraphKey", "true");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, true').detail", "0");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').keyCode", "0");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').charCode", "0");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').layerX", "0");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').layerY", "0");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').pageX", "0");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').pageY", "0");
+shouldBe("testInitEvent('Keyboard', '\"a\", false, true, window, \"b\", 1001, false, false, false, false, false').which", "0");
+
+shouldBe("testInitEvent('Message', '\"a\", false, false, \"b\", \"c\", \"d\", window, null').type", "'a'");
+shouldBe("testInitEvent('Message', 'null, false, false, \"b\", \"c\", \"d\", window, null').type", "'null'");
+shouldBe("testInitEvent('Message', '\"a\", false, false, \"b\", \"c\", \"d\", window, null').bubbles", "false");
+shouldBe("testInitEvent('Message', '\"a\", true, false, \"b\", \"c\", \"d\", window, null').bubbles", "true");
+shouldBe("testInitEvent('Message', '\"a\", false, false, \"b\", \"c\", \"d\", window, null').cancelable", "false");
+shouldBe("testInitEvent('Message', '\"a\", false, true, \"b\", \"c\", \"d\", window, null').cancelable", "true");
+shouldBe("testInitEvent('Message', '\"a\", false, false, \"b\", \"c\", \"d\", window, null').data", "'b'");
+shouldBe("testInitEvent('Message', '\"a\", false, false, null, \"c\", \"d\", window, null').data", "'null'");
+shouldBe("testInitEvent('Message', '\"a\", false, false, \"b\", \"c\", \"d\", window, null').origin", "'c'");
+shouldBe("testInitEvent('Message', '\"a\", false, false, \"b\", null, \"d\", window, null').origin", "'null'");
+shouldBe("testInitEvent('Message', '\"a\", false, false, \"b\", \"c\", \"d\", window, null').lastEventId", "'d'");
+shouldBe("testInitEvent('Message', '\"a\", false, false, \"b\", \"c\", null, window, null').lastEventId", "'null'");
+shouldBe("testInitEvent('Message', '\"a\", false, false, \"b\", \"c\", \"d\", window, null').source", "window");
+shouldBe("testInitEvent('Message', '\"a\", false, false, \"b\", \"c\", \"d\", null, null').source", "null");
+// FIXME: Not sure how to make a MessagePort to test messagePort argument.
+
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').type", "'a'");
+shouldBe("testInitEvent('Mouse', 'null, false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').type", "'null'");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').bubbles", "false");
+shouldBe("testInitEvent('Mouse', '\"a\", true, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').bubbles", "true");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').cancelable", "false");
+shouldBe("testInitEvent('Mouse', '\"a\", false, true, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').cancelable", "true");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').view", "window");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, null, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').view", "null");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').detail", "1001");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').screenX", "1002");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').screenY", "1003");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').clientX", "1004");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').clientY", "1005");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').ctrlKey", "false");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, true, false, false, false, 1006, null').ctrlKey", "true");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').altKey", "false");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, true, false, false, 1006, null').altKey", "true");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').shiftKey", "false");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, true, false, 1006, null').shiftKey", "true");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').metaKey", "false");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, true, 1006, null').metaKey", "true");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').button", "1006");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').relatedTarget", "null");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, document').relatedTarget", "document");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').offsetX", "1004");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').offsetY", "1005");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').x", "1004");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').y", "1005");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').fromElement", "null");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, document').fromElement", "document");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').toElement", "null");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').dataTransfer", "null");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').keyCode", "0");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').charCode", "0");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').layerX", "1004");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').layerY", "1005");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').pageX", "1004");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').pageY", "1005");
+shouldBe("testInitEvent('Mouse', '\"a\", false, false, window, 1001, 1002, 1003, 1004, 1005, false, false, false, false, 1006, null').which", "1007");
+
+shouldBe("testInitEvent('Mutation', '\"a\", false, false, null, \"b\", \"c\", \"d\", 1001').type", "'a'");
+shouldBe("testInitEvent('Mutation', 'null, false, false, null, \"b\", \"c\", \"d\", 1001').type", "'null'");
+shouldBe("testInitEvent('Mutation', '\"a\", false, false, null, \"b\", \"c\", \"d\", 1001').bubbles", "false");
+shouldBe("testInitEvent('Mutation', '\"a\", true, false, null, \"b\", \"c\", \"d\", 1001').bubbles", "true");
+shouldBe("testInitEvent('Mutation', '\"a\", false, false, null, \"b\", \"c\", \"d\", 1001').cancelable", "false");
+shouldBe("testInitEvent('Mutation', '\"a\", false, true, null, \"b\", \"c\", \"d\", 1001').cancelable", "true");
+shouldBe("testInitEvent('Mutation', '\"a\", false, false, null, \"b\", \"c\", \"d\", 1001').relatedNode", "null");
+shouldBe("testInitEvent('Mutation', '\"a\", false, false, document, \"b\", \"c\", \"d\", 1001').relatedNode", "document");
+shouldBe("testInitEvent('Mutation', '\"a\", false, false, null, \"b\", \"c\", \"d\", 1001').prevValue", "'b'");
+shouldBe("testInitEvent('Mutation', '\"a\", false, false, null, null, \"c\", \"d\", 1001').prevValue", "'null'");
+shouldBe("testInitEvent('Mutation', '\"a\", false, false, null, \"b\", \"c\", \"d\", 1001').newValue", "'c'");
+shouldBe("testInitEvent('Mutation', '\"a\", false, false, null, \"b\", null, \"d\", 1001').newValue", "'null'");
+shouldBe("testInitEvent('Mutation', '\"a\", false, false, null, \"b\", \"c\", \"d\", 1001').attrName", "'d'");
+shouldBe("testInitEvent('Mutation', '\"a\", false, false, null, \"b\", \"c\", null, 1001').attrName", "'null'");
+shouldBe("testInitEvent('Mutation', '\"a\", false, false, null, \"b\", \"c\", \"d\", 1001').attrChange", "1001");
+
+// initOverflowEvent has an interface that has an design that's inconsistent with the init functions from other events.
+shouldBe("testInitEvent('Overflow', '1001, false, false').type", "'overflowchanged'");
+shouldBe("testInitEvent('Overflow', '1001, false, false').bubbles", "false");
+shouldBe("testInitEvent('Overflow', '1001, false, false').cancelable", "false");
+shouldBe("testInitEvent('Overflow', '1001, false, false').orient", "1001");
+shouldBe("testInitEvent('Overflow', '1001, false, false').horizontalOverflow", "false");
+shouldBe("testInitEvent('Overflow', '1001, true, false').horizontalOverflow", "true");
+shouldBe("testInitEvent('Overflow', '1001, false, false').verticalOverflow", "false");
+shouldBe("testInitEvent('Overflow', '1001, false, true').verticalOverflow", "true");
+
+shouldBe("testInitEvent('Progress', '\"a\", false, false, false, 1001, 1002').type", "'a'");
+shouldBe("testInitEvent('Progress', 'null, false, false, false, 1001, 1002').type", "'null'");
+shouldBe("testInitEvent('Progress', '\"a\", false, false, false, 1001, 1002').bubbles", "false");
+shouldBe("testInitEvent('Progress', '\"a\", true, false, false, 1001, 1002').bubbles", "true");
+shouldBe("testInitEvent('Progress', '\"a\", false, false, false, 1001, 1002').cancelable", "false");
+shouldBe("testInitEvent('Progress', '\"a\", false, true, false, 1001, 1002').cancelable", "true");
+shouldBe("testInitEvent('Progress', '\"a\", false, false, false, 1001, 1002').lengthComputable", "false");
+shouldBe("testInitEvent('Progress', '\"a\", false, false, true, 1001, 1002').lengthComputable", "true");
+shouldBe("testInitEvent('Progress', '\"a\", false, false, false, 1001, 1002').loaded", "1001");
+shouldBe("testInitEvent('Progress', '\"a\", false, false, false, 1001, 1002').total", "1002");
+
+shouldBe("testInitEvent('Storage', '\"a\", false, false, \"b\", \"c\", \"d\", \"e\", window').type", "'a'");
+shouldBe("testInitEvent('Storage', 'null, false, false, \"b\", \"c\", \"d\", \"e\", window').type", "'null'");
+shouldBe("testInitEvent('Storage', '\"a\", false, false, \"b\", \"c\", \"d\", \"e\", window').bubbles", "false");
+shouldBe("testInitEvent('Storage', '\"a\", true, false, \"b\", \"c\", \"d\", \"e\", window').bubbles", "true");
+shouldBe("testInitEvent('Storage', '\"a\", false, false, \"b\", \"c\", \"d\", \"e\", window').cancelable", "false");
+shouldBe("testInitEvent('Storage', '\"a\", false, true, \"b\", \"c\", \"d\", \"e\", window').cancelable", "true");
+shouldBe("testInitEvent('Storage', '\"a\", false, false, \"b\", \"c\", \"d\", \"e\", window').key", "'b'");
+shouldBe("testInitEvent('Storage', '\"a\", false, false, null, \"c\", \"d\", \"e\", window').key", "'null'");
+shouldBe("testInitEvent('Storage', '\"a\", false, false, \"b\", \"c\", \"d\", \"e\", window').oldValue", "'c'");
+shouldBe("testInitEvent('Storage', '\"a\", false, false, \"b\", null, \"d\", \"e\", window').oldValue", "null");
+shouldBe("testInitEvent('Storage', '\"a\", false, false, \"b\", \"c\", \"d\", \"e\", window').newValue", "'d'");
+shouldBe("testInitEvent('Storage', '\"a\", false, false, \"b\", \"c\", null, \"e\", window').newValue", "null");
+shouldBe("testInitEvent('Storage', '\"a\", false, false, \"b\", \"c\", \"d\", \"e\", window').uri", "'e'");
+shouldBe("testInitEvent('Storage', '\"a\", false, false, \"b\", \"c\", \"d\", null, window').uri", "'null'");
+shouldBe("testInitEvent('Storage', '\"a\", false, false, \"b\", \"c\", \"d\", \"e\", window').source", "window");
+shouldBe("testInitEvent('Storage', '\"a\", false, false, \"b\", \"c\", \"d\", \"e\", null').source", "null");
+
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').type", "'a'");
+shouldBe("testInitEvent('Text', 'null, false, false, window, \"b\"').type", "'null'");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').bubbles", "false");
+shouldBe("testInitEvent('Text', '\"a\", true, false, window, \"b\"').bubbles", "true");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').cancelable", "false");
+shouldBe("testInitEvent('Text', '\"a\", false, true, window, \"b\"').cancelable", "true");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').view", "window");
+shouldBe("testInitEvent('Text', '\"a\", false, false, null, \"b\"').view", "null");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').data", "'b'");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, null').data", "'null'");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').detail", "0");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').keyCode", "0");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').charCode", "0");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').layerX", "0");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').layerY", "0");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').pageX", "0");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').pageY", "0");
+shouldBe("testInitEvent('Text', '\"a\", false, false, window, \"b\"').which", "0");
+
+shouldBe("testInitEvent('UI', '\"a\", false, false, window, 1001').type", "'a'");
+shouldBe("testInitEvent('UI', 'null, false, false, window, 1001').type", "'null'");
+shouldBe("testInitEvent('UI', '\"a\", false, false, window, 1001').bubbles", "false");
+shouldBe("testInitEvent('UI', '\"a\", true, false, window, 1001').bubbles", "true");
+shouldBe("testInitEvent('UI', '\"a\", false, false, window, 1001').cancelable", "false");
+shouldBe("testInitEvent('UI', '\"a\", false, true, window, 1001').cancelable", "true");
+shouldBe("testInitEvent('UI', '\"a\", false, false, window, 1001').view", "window");
+shouldBe("testInitEvent('UI', '\"a\", false, false, null, 1001').view", "null");
+shouldBe("testInitEvent('UI', '\"a\", false, false, window, 1001').detail", "1001");
+shouldBe("testInitEvent('UI', '\"a\", false, false, window, 1001').keyCode", "0");
+shouldBe("testInitEvent('UI', '\"a\", false, false, window, 1001').charCode", "0");
+shouldBe("testInitEvent('UI', '\"a\", false, false, window, 1001').layerX", "0");
+shouldBe("testInitEvent('UI', '\"a\", false, false, window, 1001').layerY", "0");
+shouldBe("testInitEvent('UI', '\"a\", false, false, window, 1001').pageX", "0");
+shouldBe("testInitEvent('UI', '\"a\", false, false, window, 1001').pageY", "0");
+shouldBe("testInitEvent('UI', '\"a\", false, false, window, 1001').which", "0");
+
+shouldBe("testInitEvent('WebKitAnimation', '\"a\", false, false, \"b\", 1001').type", "'a'");
+shouldBe("testInitEvent('WebKitAnimation', 'null, false, false, \"b\", 1001').type", "'null'");
+shouldBe("testInitEvent('WebKitAnimation', '\"a\", false, false, \"b\", 1001').bubbles", "false");
+shouldBe("testInitEvent('WebKitAnimation', '\"a\", true, false, \"b\", 1001').bubbles", "true");
+shouldBe("testInitEvent('WebKitAnimation', '\"a\", false, false, \"b\", 1001').cancelable", "false");
+shouldBe("testInitEvent('WebKitAnimation', '\"a\", false, true, \"b\", 1001').cancelable", "true");
+shouldBe("testInitEvent('WebKitAnimation', '\"a\", false, false, \"b\", 1001').animationName", "'b'");
+shouldBe("testInitEvent('WebKitAnimation', '\"a\", false, false, null, 1001').animationName", "'null'");
+shouldBe("testInitEvent('WebKitAnimation', '\"a\", false, false, \"b\", 1001').elapsedTime", "1001");
+
+shouldBe("testInitEvent('WebKitTransition', '\"a\", false, false, \"b\", 1001').type", "'a'");
+shouldBe("testInitEvent('WebKitTransition', 'null, false, false, \"b\", 1001').type", "'null'");
+shouldBe("testInitEvent('WebKitTransition', '\"a\", false, false, \"b\", 1001').bubbles", "false");
+shouldBe("testInitEvent('WebKitTransition', '\"a\", true, false, \"b\", 1001').bubbles", "true");
+shouldBe("testInitEvent('WebKitTransition', '\"a\", false, false, \"b\", 1001').cancelable", "false");
+shouldBe("testInitEvent('WebKitTransition', '\"a\", false, true, \"b\", 1001').cancelable", "true");
+shouldBe("testInitEvent('WebKitTransition', '\"a\", false, false, \"b\", 1001').propertyName", "'b'");
+shouldBe("testInitEvent('WebKitTransition', '\"a\", false, false, null, 1001').propertyName", "'null'");
+shouldBe("testInitEvent('WebKitTransition', '\"a\", false, false, \"b\", 1001').elapsedTime", "1001");
+
+// WheelEvent has no init function yet; roughly speaking, we are waiting for that part of DOM 3 to stabilize.
+
+var successfullyParsed = true;
index 9f69070..4288854 100644 (file)
@@ -1,5 +1,35 @@
 2009-01-05  Darin Adler  <darin@apple.com>
 
+        Reviewed by Anders Carlsson.
+
+        Bug 23104: minor mistakes in init functions for animation and transition events
+        https://bugs.webkit.org/show_bug.cgi?id=23104
+
+        Test: fast/events/init-events.html
+
+        Also fixed two StorageEvent problems the test case uncovered:
+
+            Made document.createEvent("StorageEvent") work.
+            Allow null values for StorageEvent.oldValue and StorageEvent.newValue.
+
+        * dom/Document.cpp:
+        (WebCore::Document::createEvent): Sorted alphabetically by the name of the event
+        class. Added StorageEvent.
+
+        * dom/UIEvent.idl: Fixed typo in a comment.
+
+        * dom/WebKitAnimationEvent.cpp:
+        (WebCore::WebKitAnimationEvent::initWebKitAnimationEvent): Use all the arguments.
+        * dom/WebKitTransitionEvent.cpp:
+        (WebCore::WebKitTransitionEvent::initWebKitTransitionEvent): Ditto.
+
+        * storage/StorageEvent.idl: Use the ConvertNullToNullString keyword on the
+        arguments to initStorageEvent so it can create events with null values for the
+        oldValue and newValue, just like the real storage events. Note that the properties
+        already had ConvertNullStringTo=Null, so this is just the other half of that.
+
+2009-01-05  Darin Adler  <darin@apple.com>
+
         Reviewed by Alexey Proskuryakov.
 
         Bug 23102: turn on unused parameter warnings in WebCore
index ab4d5e5..84e5425 100644 (file)
 #include "SegmentedString.h"
 #include "SelectionController.h"
 #include "Settings.h"
+#include "StorageEvent.h"
 #include "StyleSheetList.h"
 #include "SystemTime.h"
 #include "TextEvent.h"
@@ -2637,22 +2638,30 @@ DOMWindow* Document::domWindow() const
 
 PassRefPtr<Event> Document::createEvent(const String& eventType, ExceptionCode& ec)
 {
-    if (eventType == "UIEvents" || eventType == "UIEvent")
-        return UIEvent::create();
-    if (eventType == "MouseEvents" || eventType == "MouseEvent")
+    if (eventType == "Event" || eventType == "Events" || eventType == "HTMLEvents")
+        return Event::create();
+    if (eventType == "KeyboardEvent" || eventType == "KeyboardEvents")
+        return KeyboardEvent::create();
+    if (eventType == "MessageEvent")
+        return MessageEvent::create();
+    if (eventType == "MouseEvent" || eventType == "MouseEvents")
         return MouseEvent::create();
-    if (eventType == "MutationEvents" || eventType == "MutationEvent")
+    if (eventType == "MutationEvent" || eventType == "MutationEvents")
         return MutationEvent::create();
-    if (eventType == "KeyboardEvents" || eventType == "KeyboardEvent")
-        return KeyboardEvent::create();
-    if (eventType == "HTMLEvents" || eventType == "Event" || eventType == "Events")
-        return Event::create();
+    if (eventType == "OverflowEvent")
+        return OverflowEvent::create();
     if (eventType == "ProgressEvent")
         return ProgressEvent::create();
+    if (eventType == "StorageEvent")
+        return StorageEvent::create();
     if (eventType == "TextEvent")
         return TextEvent::create();
-    if (eventType == "OverflowEvent")
-        return OverflowEvent::create();
+    if (eventType == "UIEvent" || eventType == "UIEvents")
+        return UIEvent::create();
+    if (eventType == "WebKitAnimationEvent")
+        return WebKitAnimationEvent::create();
+    if (eventType == "WebKitTransitionEvent")
+        return WebKitTransitionEvent::create();
     if (eventType == "WheelEvent")
         return WheelEvent::create();
 #if ENABLE(SVG)
@@ -2661,12 +2670,6 @@ PassRefPtr<Event> Document::createEvent(const String& eventType, ExceptionCode&
     if (eventType == "SVGZoomEvents")
         return SVGZoomEvent::create();
 #endif
-    if (eventType == "MessageEvent")
-        return MessageEvent::create();
-    if (eventType == "WebKitAnimationEvent")
-        return WebKitAnimationEvent::create();
-    if (eventType == "WebKitTransitionEvent")
-        return WebKitTransitionEvent::create();
     ec = NOT_SUPPORTED_ERR;
     return 0;
 }
index de83a2a..36d0988 100644 (file)
@@ -32,7 +32,7 @@ module events {
                                         in DOMWindow view, 
                                         in long detail);
 
-        // extentsions
+        // extensions
         readonly attribute long                 keyCode;
         readonly attribute long                 charCode;
         readonly attribute long                 layerX;
index ddaaf64..371ea69 100644 (file)
@@ -47,17 +47,18 @@ WebKitAnimationEvent::~WebKitAnimationEvent()
 }
 
 void WebKitAnimationEvent::initWebKitAnimationEvent(const AtomicString& type, 
-                                        bool /*canBubbleArg*/,
-                                        bool /*cancelableArg*/,
+                                        bool canBubbleArg,
+                                        bool cancelableArg,
                                         const String& animationName,
                                         double elapsedTime)
 {
     if (dispatched())
         return;
     
-    initEvent(type, false, true);
+    initEvent(type, canBubbleArg, cancelableArg);
     
     m_animationName = animationName;
+    m_elapsedTime = elapsedTime;
 }
 
 const String& WebKitAnimationEvent::animationName() const
index f4bdbf5..f0e86de 100644 (file)
@@ -48,17 +48,18 @@ WebKitTransitionEvent::~WebKitTransitionEvent()
 }
 
 void WebKitTransitionEvent::initWebKitTransitionEvent(const AtomicString& type, 
-                                            bool /*canBubbleArg*/,
-                                            bool /*cancelableArg*/,
+                                            bool canBubbleArg,
+                                            bool cancelableArg,
                                             const String& propertyName,
                                             double elapsedTime)
 {
     if (dispatched())
         return;
     
-    initEvent(type, false, true);
+    initEvent(type, canBubbleArg, cancelableArg);
     
     m_propertyName = propertyName;
+    m_elapsedTime = elapsedTime;
 }
 
 const String& WebKitTransitionEvent::propertyName() const
index 057770c..47ef67d 100644 (file)
@@ -33,7 +33,7 @@ module storage {
         readonly attribute [ConvertNullStringTo=Null] DOMString newValue;
         readonly attribute DOMString uri;
         readonly attribute DOMWindow source;
-        void initStorageEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMString keyArg, in DOMString oldValueArg, in DOMString newValueArg, in DOMString uriArg, in DOMWindow sourceArg);
+        void initStorageEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMString keyArg, in [ConvertNullToNullString] DOMString oldValueArg, in [ConvertNullToNullString] DOMString newValueArg, in DOMString uriArg, in DOMWindow sourceArg);
 
         // Needed once we support init<blank>EventNS
         // void initStorageEventNS(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMString keyArg, in DOMString oldValueArg, in DOMString newValueArg, in DOMString uriArg, in Window sourceArg);