Update remaining DOM events to stop using legacy [ConstructorTemplate=Event]
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 12 Oct 2016 16:23:00 +0000 (16:23 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 12 Oct 2016 16:23:00 +0000 (16:23 +0000)
https://bugs.webkit.org/show_bug.cgi?id=163319

Reviewed by Darin Adler.

Source/WebCore:

Update remaining DOM events to stop using legacy [ConstructorTemplate=Event]
and use regular constructors instead.

No new tests, updated existing tests.

* dom/AutocompleteErrorEvent.h:
* dom/AutocompleteErrorEvent.idl:
* dom/BeforeLoadEvent.h:
* dom/BeforeLoadEvent.idl:
* dom/CompositionEvent.cpp:
(WebCore::CompositionEvent::CompositionEvent):
* dom/CompositionEvent.h:
* dom/CompositionEvent.idl:
* dom/ErrorEvent.cpp:
(WebCore::ErrorEvent::ErrorEvent):
* dom/ErrorEvent.h:
* dom/ErrorEvent.idl:
* dom/FocusEvent.cpp:
(WebCore::FocusEvent::FocusEvent):
* dom/FocusEvent.h:
* dom/FocusEvent.idl:
* dom/HashChangeEvent.h:
* dom/HashChangeEvent.idl:
* dom/OverflowEvent.cpp:
(WebCore::OverflowEvent::OverflowEvent):
* dom/OverflowEvent.h:
* dom/OverflowEvent.idl:
* dom/PageTransitionEvent.cpp:
(WebCore::PageTransitionEvent::PageTransitionEvent):
* dom/PageTransitionEvent.h:
* dom/PageTransitionEvent.idl:
* dom/PopStateEvent.cpp:
(WebCore::PopStateEvent::PopStateEvent):
(WebCore::PopStateEvent::create):
* dom/PopStateEvent.h:
* dom/PopStateEvent.idl:
* dom/SecurityPolicyViolationEvent.h:
* dom/SecurityPolicyViolationEvent.idl:
* dom/TouchEvent.cpp:
(WebCore::TouchEvent::TouchEvent):
* dom/TouchEvent.h:
* dom/TouchEvent.idl:
* dom/TransitionEvent.cpp:
(WebCore::TransitionEvent::TransitionEvent):
* dom/TransitionEvent.h:
* dom/TransitionEvent.idl:
* dom/WebKitAnimationEvent.cpp:
(WebCore::WebKitAnimationEvent::WebKitAnimationEvent):
* dom/WebKitAnimationEvent.h:
* dom/WebKitAnimationEvent.idl:
* dom/WebKitTransitionEvent.cpp:
(WebCore::WebKitTransitionEvent::WebKitTransitionEvent):
* dom/WebKitTransitionEvent.h:
* dom/WebKitTransitionEvent.idl:

LayoutTests:

Rebaseline several existing tests to reflect minor behavior changes:
- We now properly use the default member value when an explicit undefined
  is passed.
- We throw more exceptions when bad input is passed.
- Exception messages are sometimes slightly different.

* fast/events/constructors/before-load-event-constructor-expected.txt:
* fast/events/constructors/before-load-event-constructor.html:
* fast/events/constructors/composition-event-constructor-expected.txt:
* fast/events/constructors/composition-event-constructor.html:
* fast/events/constructors/error-event-constructor-expected.txt:
* fast/events/constructors/error-event-constructor.html:
* fast/events/constructors/focus-event-constructor-expected.txt:
* fast/events/constructors/focus-event-constructor.html:
* fast/events/constructors/hash-change-event-constructor-expected.txt:
* fast/events/constructors/hash-change-event-constructor.html:
* fast/events/constructors/pop-state-event-constructor-expected.txt:
* fast/events/constructors/pop-state-event-constructor.html:
* fast/events/constructors/transition-event-constructor-expected.txt:
* fast/events/constructors/transition-event-constructor.html:
* fast/events/constructors/webkit-animation-event-constructor-expected.txt:
* fast/events/constructors/webkit-animation-event-constructor.html:
* fast/events/constructors/webkit-transition-event-constructor-expected.txt:
* fast/events/constructors/webkit-transition-event-constructor.html:

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

58 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/events/constructors/before-load-event-constructor-expected.txt
LayoutTests/fast/events/constructors/before-load-event-constructor.html
LayoutTests/fast/events/constructors/composition-event-constructor-expected.txt
LayoutTests/fast/events/constructors/composition-event-constructor.html
LayoutTests/fast/events/constructors/error-event-constructor-expected.txt
LayoutTests/fast/events/constructors/error-event-constructor.html
LayoutTests/fast/events/constructors/focus-event-constructor-expected.txt
LayoutTests/fast/events/constructors/focus-event-constructor.html
LayoutTests/fast/events/constructors/hash-change-event-constructor-expected.txt
LayoutTests/fast/events/constructors/hash-change-event-constructor.html
LayoutTests/fast/events/constructors/pop-state-event-constructor-expected.txt
LayoutTests/fast/events/constructors/pop-state-event-constructor.html
LayoutTests/fast/events/constructors/transition-event-constructor-expected.txt
LayoutTests/fast/events/constructors/transition-event-constructor.html
LayoutTests/fast/events/constructors/webkit-animation-event-constructor-expected.txt
LayoutTests/fast/events/constructors/webkit-animation-event-constructor.html
LayoutTests/fast/events/constructors/webkit-transition-event-constructor-expected.txt
LayoutTests/fast/events/constructors/webkit-transition-event-constructor.html
Source/WebCore/ChangeLog
Source/WebCore/dom/AutocompleteErrorEvent.h
Source/WebCore/dom/AutocompleteErrorEvent.idl
Source/WebCore/dom/BeforeLoadEvent.h
Source/WebCore/dom/BeforeLoadEvent.idl
Source/WebCore/dom/CompositionEvent.cpp
Source/WebCore/dom/CompositionEvent.h
Source/WebCore/dom/CompositionEvent.idl
Source/WebCore/dom/ErrorEvent.cpp
Source/WebCore/dom/ErrorEvent.h
Source/WebCore/dom/ErrorEvent.idl
Source/WebCore/dom/FocusEvent.cpp
Source/WebCore/dom/FocusEvent.h
Source/WebCore/dom/FocusEvent.idl
Source/WebCore/dom/HashChangeEvent.h
Source/WebCore/dom/HashChangeEvent.idl
Source/WebCore/dom/OverflowEvent.cpp
Source/WebCore/dom/OverflowEvent.h
Source/WebCore/dom/OverflowEvent.idl
Source/WebCore/dom/PageTransitionEvent.cpp
Source/WebCore/dom/PageTransitionEvent.h
Source/WebCore/dom/PageTransitionEvent.idl
Source/WebCore/dom/PopStateEvent.cpp
Source/WebCore/dom/PopStateEvent.h
Source/WebCore/dom/PopStateEvent.idl
Source/WebCore/dom/SecurityPolicyViolationEvent.h
Source/WebCore/dom/SecurityPolicyViolationEvent.idl
Source/WebCore/dom/TouchEvent.cpp
Source/WebCore/dom/TouchEvent.h
Source/WebCore/dom/TouchEvent.idl
Source/WebCore/dom/TransitionEvent.cpp
Source/WebCore/dom/TransitionEvent.h
Source/WebCore/dom/TransitionEvent.idl
Source/WebCore/dom/WebKitAnimationEvent.cpp
Source/WebCore/dom/WebKitAnimationEvent.h
Source/WebCore/dom/WebKitAnimationEvent.idl
Source/WebCore/dom/WebKitTransitionEvent.cpp
Source/WebCore/dom/WebKitTransitionEvent.h
Source/WebCore/dom/WebKitTransitionEvent.idl

index d69b965..96fd98c 100644 (file)
@@ -1,3 +1,35 @@
+2016-10-12  Chris Dumez  <cdumez@apple.com>
+
+        Update remaining DOM events to stop using legacy [ConstructorTemplate=Event]
+        https://bugs.webkit.org/show_bug.cgi?id=163319
+
+        Reviewed by Darin Adler.
+
+        Rebaseline several existing tests to reflect minor behavior changes:
+        - We now properly use the default member value when an explicit undefined
+          is passed.
+        - We throw more exceptions when bad input is passed.
+        - Exception messages are sometimes slightly different.
+
+        * fast/events/constructors/before-load-event-constructor-expected.txt:
+        * fast/events/constructors/before-load-event-constructor.html:
+        * fast/events/constructors/composition-event-constructor-expected.txt:
+        * fast/events/constructors/composition-event-constructor.html:
+        * fast/events/constructors/error-event-constructor-expected.txt:
+        * fast/events/constructors/error-event-constructor.html:
+        * fast/events/constructors/focus-event-constructor-expected.txt:
+        * fast/events/constructors/focus-event-constructor.html:
+        * fast/events/constructors/hash-change-event-constructor-expected.txt:
+        * fast/events/constructors/hash-change-event-constructor.html:
+        * fast/events/constructors/pop-state-event-constructor-expected.txt:
+        * fast/events/constructors/pop-state-event-constructor.html:
+        * fast/events/constructors/transition-event-constructor-expected.txt:
+        * fast/events/constructors/transition-event-constructor.html:
+        * fast/events/constructors/webkit-animation-event-constructor-expected.txt:
+        * fast/events/constructors/webkit-animation-event-constructor.html:
+        * fast/events/constructors/webkit-transition-event-constructor-expected.txt:
+        * fast/events/constructors/webkit-transition-event-constructor.html:
+
 2016-10-11  Gyuyoung Kim  <gyuyoung.kim@webkit.org>
 
         [EFL] Mark url tests to failure
index 5bdbfbc..ad26d26 100644 (file)
@@ -12,7 +12,7 @@ PASS new BeforeLoadEvent('eventType', { cancelable: false }).cancelable is false
 PASS new BeforeLoadEvent('eventType', { cancelable: true }).cancelable is true
 PASS new BeforeLoadEvent('eventType', { url: 'doremi' }).url is "doremi"
 PASS new BeforeLoadEvent('eventType', { url: '' }).url is ""
-PASS new BeforeLoadEvent('eventType', { url: undefined }).url is "undefined"
+PASS new BeforeLoadEvent('eventType', { url: undefined }).url is ""
 PASS new BeforeLoadEvent('eventType', { url: null }).url is "null"
 PASS new BeforeLoadEvent('eventType', { url: false }).url is "false"
 PASS new BeforeLoadEvent('eventType', { url: true }).url is "true"
index 8c9e4da..71c8045 100644 (file)
@@ -29,7 +29,7 @@ shouldBeEqualToString("new BeforeLoadEvent('eventType', { url: 'doremi' }).url",
 shouldBeEqualToString("new BeforeLoadEvent('eventType', { url: '' }).url", "");
 
 // Non-strings.
-shouldBeEqualToString("new BeforeLoadEvent('eventType', { url: undefined }).url", "undefined");
+shouldBeEqualToString("new BeforeLoadEvent('eventType', { url: undefined }).url", "");
 shouldBeEqualToString("new BeforeLoadEvent('eventType', { url: null }).url", "null");
 shouldBeEqualToString("new BeforeLoadEvent('eventType', { url: false }).url", "false");
 shouldBeEqualToString("new BeforeLoadEvent('eventType', { url: true }).url", "true");
index f3042d9..ec73875 100644 (file)
@@ -14,23 +14,23 @@ PASS new CompositionEvent('eventType', { cancelable: false }).cancelable is fals
 PASS new CompositionEvent('eventType', { cancelable: true }).cancelable is true
 PASS new CompositionEvent('eventType', { view: window }).view is window
 PASS new CompositionEvent('eventType', { view: this }).view is this
-PASS new CompositionEvent('eventType', { view: testObject }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new CompositionEvent('eventType', { view: document }).view threw exception TypeError: Dictionary member is not of type Window.
+PASS new CompositionEvent('eventType', { view: testObject }).view threw exception TypeError: Type error.
+PASS new CompositionEvent('eventType', { view: document }).view threw exception TypeError: Type error.
 PASS new CompositionEvent('eventType', { view: undefined }).view is null
 PASS new CompositionEvent('eventType', { view: null }).view is null
-PASS new CompositionEvent('eventType', { view: false }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new CompositionEvent('eventType', { view: true }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new CompositionEvent('eventType', { view: '' }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new CompositionEvent('eventType', { view: 'chocolate' }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new CompositionEvent('eventType', { view: 12345 }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new CompositionEvent('eventType', { view: 18446744073709551615 }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new CompositionEvent('eventType', { view: NaN }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new CompositionEvent('eventType', { view: {valueOf: function () { return window; } } }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new CompositionEvent('eventType', { get view() { return 123; } }).view threw exception TypeError: Dictionary member is not of type Window.
+PASS new CompositionEvent('eventType', { view: false }).view threw exception TypeError: Type error.
+PASS new CompositionEvent('eventType', { view: true }).view threw exception TypeError: Type error.
+PASS new CompositionEvent('eventType', { view: '' }).view threw exception TypeError: Type error.
+PASS new CompositionEvent('eventType', { view: 'chocolate' }).view threw exception TypeError: Type error.
+PASS new CompositionEvent('eventType', { view: 12345 }).view threw exception TypeError: Type error.
+PASS new CompositionEvent('eventType', { view: 18446744073709551615 }).view threw exception TypeError: Type error.
+PASS new CompositionEvent('eventType', { view: NaN }).view threw exception TypeError: Type error.
+PASS new CompositionEvent('eventType', { view: {valueOf: function () { return window; } } }).view threw exception TypeError: Type error.
+PASS new CompositionEvent('eventType', { get view() { return 123; } }).view threw exception TypeError: Type error.
 PASS new CompositionEvent('eventType', { get view() { throw 'CompositionEvent Error'; } }) threw exception CompositionEvent Error.
 PASS new CompositionEvent('eventType', { data: 'koakuma' }).data is "koakuma"
 PASS new CompositionEvent('eventType', { data: '' }).data is ""
-PASS new CompositionEvent('eventType', { data: undefined }).data is "undefined"
+PASS new CompositionEvent('eventType', { data: undefined }).data is ""
 PASS new CompositionEvent('eventType', { data: null }).data is "null"
 PASS new CompositionEvent('eventType', { data: false }).data is "false"
 PASS new CompositionEvent('eventType', { data: true }).data is "true"
index 90cb964..e4d77b2 100644 (file)
@@ -53,7 +53,7 @@ shouldBeEqualToString("new CompositionEvent('eventType', { data: 'koakuma' }).da
 shouldBeEqualToString("new CompositionEvent('eventType', { data: '' }).data", "");
 
 // Non-strings.
-shouldBeEqualToString("new CompositionEvent('eventType', { data: undefined }).data", "undefined");
+shouldBeEqualToString("new CompositionEvent('eventType', { data: undefined }).data", "");
 shouldBeEqualToString("new CompositionEvent('eventType', { data: null }).data", "null");
 shouldBeEqualToString("new CompositionEvent('eventType', { data: false }).data", "false");
 shouldBeEqualToString("new CompositionEvent('eventType', { data: true }).data", "true");
index 89d15f2..1a3394a 100644 (file)
@@ -14,7 +14,7 @@ PASS new ErrorEvent('eventType', { cancelable: false }).cancelable is false
 PASS new ErrorEvent('eventType', { cancelable: true }).cancelable is true
 PASS new ErrorEvent('eventType', { message: 'melancholy' }).message is "melancholy"
 PASS new ErrorEvent('eventType', { message: '' }).message is ""
-PASS new ErrorEvent('eventType', { message: undefined }).message is "undefined"
+PASS new ErrorEvent('eventType', { message: undefined }).message is ""
 PASS new ErrorEvent('eventType', { message: null }).message is "null"
 PASS new ErrorEvent('eventType', { message: false }).message is "false"
 PASS new ErrorEvent('eventType', { message: true }).message is "true"
@@ -27,7 +27,7 @@ PASS new ErrorEvent('eventType', { message: {melancholy: 12345} }).message is "[
 PASS new ErrorEvent('eventType', { message: {valueOf: function () { return 'melancholy'; } } }).message is "[object Object]"
 PASS new ErrorEvent('eventType', { filename: 'melancholy' }).filename is "melancholy"
 PASS new ErrorEvent('eventType', { filename: '' }).filename is ""
-PASS new ErrorEvent('eventType', { filename: undefined }).filename is "undefined"
+PASS new ErrorEvent('eventType', { filename: undefined }).filename is ""
 PASS new ErrorEvent('eventType', { filename: null }).filename is "null"
 PASS new ErrorEvent('eventType', { filename: false }).filename is "false"
 PASS new ErrorEvent('eventType', { filename: true }).filename is "true"
@@ -64,7 +64,7 @@ PASS new ErrorEvent('eventType', { colno: 0 }).colno is 0
 PASS new ErrorEvent('eventType', { colno: 1 }).colno is 1
 PASS new ErrorEvent('eventType', { colno: 4294967294 }).colno is 4294967294
 PASS new ErrorEvent('eventType', { colno: 4294967295 }).colno is 4294967295
-PASS new ErrorEvent('eventType', { error: undefined }).error is undefined
+PASS new ErrorEvent('eventType', { error: undefined }).error is null
 PASS new ErrorEvent('eventType', { error: null }).error is null
 PASS new ErrorEvent('eventType', { error: '' }).error is ''
 PASS new ErrorEvent('eventType', { error: '12345' }).error is '12345'
index 731db60..af36de0 100644 (file)
@@ -30,7 +30,7 @@ shouldBe("new ErrorEvent('eventType', { cancelable: true }).cancelable", "true")
     shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": '' })." + attr, "");
 
     // Non-strings.
-    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": undefined })." + attr, "undefined");
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": undefined })." + attr, "");
     shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": null })." + attr, "null");
     shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": false })." + attr, "false");
     shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": true })." + attr, "true");
@@ -82,7 +82,7 @@ shouldBe("new ErrorEvent('eventType', { colno: 4294967294 }).colno", "4294967294
 shouldBe("new ErrorEvent('eventType', { colno: 4294967295 }).colno", "4294967295");
 
 // error is passed.
-shouldBe("new ErrorEvent('eventType', { error: undefined }).error", "undefined");
+shouldBe("new ErrorEvent('eventType', { error: undefined }).error", "null");
 shouldBe("new ErrorEvent('eventType', { error: null }).error", "null");
 shouldBe("new ErrorEvent('eventType', { error: '' }).error", "''");
 shouldBe("new ErrorEvent('eventType', { error: '12345' }).error", "'12345'");
index 8dc61d9..81d1cea 100644 (file)
@@ -14,36 +14,36 @@ PASS new FocusEvent('eventType', { cancelable: false }).cancelable is false
 PASS new FocusEvent('eventType', { cancelable: true }).cancelable is true
 PASS new FocusEvent('eventType', { view: window }).view is window
 PASS new FocusEvent('eventType', { view: this }).view is this
-PASS new FocusEvent('eventType', { view: testObject }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new FocusEvent('eventType', { view: document }).view threw exception TypeError: Dictionary member is not of type Window.
+PASS new FocusEvent('eventType', { view: testObject }).view threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { view: document }).view threw exception TypeError: Type error.
 PASS new FocusEvent('eventType', { view: undefined }).view is null
 PASS new FocusEvent('eventType', { view: null }).view is null
-PASS new FocusEvent('eventType', { view: false }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new FocusEvent('eventType', { view: true }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new FocusEvent('eventType', { view: '' }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new FocusEvent('eventType', { view: 'chocolate' }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new FocusEvent('eventType', { view: 12345 }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new FocusEvent('eventType', { view: 18446744073709551615 }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new FocusEvent('eventType', { view: NaN }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new FocusEvent('eventType', { view: {valueOf: function () { return window; } } }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new FocusEvent('eventType', { get view() { return 123; } }).view threw exception TypeError: Dictionary member is not of type Window.
+PASS new FocusEvent('eventType', { view: false }).view threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { view: true }).view threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { view: '' }).view threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { view: 'chocolate' }).view threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { view: 12345 }).view threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { view: 18446744073709551615 }).view threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { view: NaN }).view threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { view: {valueOf: function () { return window; } } }).view threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { get view() { return 123; } }).view threw exception TypeError: Type error.
 PASS new FocusEvent('eventType', { get view() { throw 'FocusEvent Error'; } }) threw exception FocusEvent Error.
 PASS new FocusEvent('eventType', { relatedTarget: testDiv }).relatedTarget is testDiv
 PASS new FocusEvent('eventType', { relatedTarget: document }).relatedTarget is document
 PASS new FocusEvent('eventType', { relatedTarget: xhr }).relatedTarget is xhr
 PASS new FocusEvent('eventType', { relatedTarget: window }).relatedTarget is window
-PASS new FocusEvent('eventType', { relatedTarget: testObject }).relatedTarget is null
+PASS new FocusEvent('eventType', { relatedTarget: testObject }) threw exception TypeError: Type error.
 PASS new FocusEvent('eventType', { relatedTarget: undefined }).relatedTarget is null
 PASS new FocusEvent('eventType', { relatedTarget: null }).relatedTarget is null
-PASS new FocusEvent('eventType', { relatedTarget: false }).relatedTarget is null
-PASS new FocusEvent('eventType', { relatedTarget: true }).relatedTarget is null
-PASS new FocusEvent('eventType', { relatedTarget: '' }).relatedTarget is null
-PASS new FocusEvent('eventType', { relatedTarget: 'chocolate' }).relatedTarget is null
-PASS new FocusEvent('eventType', { relatedTarget: 12345 }).relatedTarget is null
-PASS new FocusEvent('eventType', { relatedTarget: 18446744073709551615 }).relatedTarget is null
-PASS new FocusEvent('eventType', { relatedTarget: NaN }).relatedTarget is null
-PASS new FocusEvent('eventType', { relatedTarget: {valueOf: function () { return testDiv; } } }).relatedTarget == testDiv is false
-PASS new FocusEvent('eventType', { get relatedTarget() { return 123; } }).relatedTarget is null
+PASS new FocusEvent('eventType', { relatedTarget: false }) threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { relatedTarget: true }) threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { relatedTarget: '' }) threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { relatedTarget: 'chocolate' }) threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { relatedTarget: 12345 }) threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { relatedTarget: 18446744073709551615 }) threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { relatedTarget: NaN }) threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { relatedTarget: {valueOf: function () { return testDiv; } } }) threw exception TypeError: Type error.
+PASS new FocusEvent('eventType', { get relatedTarget() { return 123; } }) threw exception TypeError: Type error.
 PASS new FocusEvent('eventType', { get relatedTarget() { throw 'FocusEvent Error'; } }) threw exception FocusEvent Error.
 PASS new FocusEvent('eventType', { bubbles: true, cancelable: true, view: window, detail: 111, relatedTarget: testDiv }).bubbles is true
 PASS new FocusEvent('eventType', { bubbles: true, cancelable: true, view: window, detail: 111, relatedTarget: testDiv }).cancelable is true
index 0e9ff75..be8be63 100644 (file)
@@ -57,19 +57,19 @@ shouldBe("new FocusEvent('eventType', { relatedTarget: xhr }).relatedTarget", "x
 shouldBe("new FocusEvent('eventType', { relatedTarget: window }).relatedTarget", "window");
 
 // Invalid objects.
-shouldBe("new FocusEvent('eventType', { relatedTarget: testObject }).relatedTarget", "null");
+shouldThrowErrorName("new FocusEvent('eventType', { relatedTarget: testObject })", "TypeError");
 shouldBe("new FocusEvent('eventType', { relatedTarget: undefined }).relatedTarget", "null");
 shouldBe("new FocusEvent('eventType', { relatedTarget: null }).relatedTarget", "null");
-shouldBe("new FocusEvent('eventType', { relatedTarget: false }).relatedTarget", "null");
-shouldBe("new FocusEvent('eventType', { relatedTarget: true }).relatedTarget", "null");
-shouldBe("new FocusEvent('eventType', { relatedTarget: '' }).relatedTarget", "null");
-shouldBe("new FocusEvent('eventType', { relatedTarget: 'chocolate' }).relatedTarget", "null");
-shouldBe("new FocusEvent('eventType', { relatedTarget: 12345 }).relatedTarget", "null");
-shouldBe("new FocusEvent('eventType', { relatedTarget: 18446744073709551615 }).relatedTarget", "null");
-shouldBe("new FocusEvent('eventType', { relatedTarget: NaN }).relatedTarget", "null");
+shouldThrowErrorName("new FocusEvent('eventType', { relatedTarget: false })", "TypeError");
+shouldThrowErrorName("new FocusEvent('eventType', { relatedTarget: true })", "TypeError");
+shouldThrowErrorName("new FocusEvent('eventType', { relatedTarget: '' })", "TypeError");
+shouldThrowErrorName("new FocusEvent('eventType', { relatedTarget: 'chocolate' })", "TypeError");
+shouldThrowErrorName("new FocusEvent('eventType', { relatedTarget: 12345 })", "TypeError");
+shouldThrowErrorName("new FocusEvent('eventType', { relatedTarget: 18446744073709551615 })", "TypeError");
+shouldThrowErrorName("new FocusEvent('eventType', { relatedTarget: NaN })", "TypeError");
 // Note that valueOf() is not called, when the left hand side is evaluated.
-shouldBeFalse("new FocusEvent('eventType', { relatedTarget: {valueOf: function () { return testDiv; } } }).relatedTarget == testDiv");
-shouldBe("new FocusEvent('eventType', { get relatedTarget() { return 123; } }).relatedTarget", "null");
+shouldThrowErrorName("new FocusEvent('eventType', { relatedTarget: {valueOf: function () { return testDiv; } } })", "TypeError");
+shouldThrowErrorName("new FocusEvent('eventType', { get relatedTarget() { return 123; } })", "TypeError");
 shouldThrow("new FocusEvent('eventType', { get relatedTarget() { throw 'FocusEvent Error'; } })");
 
 // All initializers are passed.
index 7ff9252..0699134 100644 (file)
@@ -13,7 +13,7 @@ PASS new HashChangeEvent('eventType', { cancelable: false }).cancelable is false
 PASS new HashChangeEvent('eventType', { cancelable: true }).cancelable is true
 PASS new HashChangeEvent('eventType', { oldURL: 'doremi' }).oldURL is "doremi"
 PASS new HashChangeEvent('eventType', { oldURL: '' }).oldURL is ""
-PASS new HashChangeEvent('eventType', { oldURL: undefined }).oldURL is "undefined"
+PASS new HashChangeEvent('eventType', { oldURL: undefined }).oldURL is ""
 PASS new HashChangeEvent('eventType', { oldURL: null }).oldURL is "null"
 PASS new HashChangeEvent('eventType', { oldURL: false }).oldURL is "false"
 PASS new HashChangeEvent('eventType', { oldURL: true }).oldURL is "true"
@@ -26,7 +26,7 @@ PASS new HashChangeEvent('eventType', { oldURL: {doremi: 12345} }).oldURL is "[o
 PASS new HashChangeEvent('eventType', { oldURL: {valueOf: function () { return 'doremi'; } } }).oldURL is "[object Object]"
 PASS new HashChangeEvent('eventType', { newURL: 'doremi' }).newURL is "doremi"
 PASS new HashChangeEvent('eventType', { newURL: '' }).newURL is ""
-PASS new HashChangeEvent('eventType', { newURL: undefined }).newURL is "undefined"
+PASS new HashChangeEvent('eventType', { newURL: undefined }).newURL is ""
 PASS new HashChangeEvent('eventType', { newURL: null }).newURL is "null"
 PASS new HashChangeEvent('eventType', { newURL: false }).newURL is "false"
 PASS new HashChangeEvent('eventType', { newURL: true }).newURL is "true"
index 16491f3..1d4dbb3 100644 (file)
@@ -29,7 +29,7 @@ shouldBe("new HashChangeEvent('eventType', { cancelable: true }).cancelable", "t
     shouldBeEqualToString("new HashChangeEvent('eventType', { " + attr + ": '' })." + attr, "");
 
     // Non-strings.
-    shouldBeEqualToString("new HashChangeEvent('eventType', { " + attr + ": undefined })." + attr, "undefined");
+    shouldBeEqualToString("new HashChangeEvent('eventType', { " + attr + ": undefined })." + attr, "");
     shouldBeEqualToString("new HashChangeEvent('eventType', { " + attr + ": null })." + attr, "null");
     shouldBeEqualToString("new HashChangeEvent('eventType', { " + attr + ": false })." + attr, "false");
     shouldBeEqualToString("new HashChangeEvent('eventType', { " + attr + ": true })." + attr, "true");
index 6622331..9a456e3 100644 (file)
@@ -12,7 +12,7 @@ PASS new PopStateEvent('eventType', { cancelable: false }).cancelable is false
 PASS new PopStateEvent('eventType', { cancelable: true }).cancelable is true
 PASS new PopStateEvent('eventType', { state: object1 }).state is object1
 PASS new PopStateEvent('eventType', { state: document }).state is document
-PASS new PopStateEvent('eventType', { state: undefined }).state is undefined
+PASS new PopStateEvent('eventType', { state: undefined }).state is null
 PASS new PopStateEvent('eventType', { state: null }).state is null
 PASS new PopStateEvent('eventType', { state: false }).state is false
 PASS new PopStateEvent('eventType', { state: true }).state is true
index 10374ac..6a22d92 100644 (file)
@@ -25,7 +25,7 @@ shouldBe("new PopStateEvent('eventType', { cancelable: true }).cancelable", "tru
 var object1 = {nyannyan: 123};
 shouldBe("new PopStateEvent('eventType', { state: object1 }).state", "object1");
 shouldBe("new PopStateEvent('eventType', { state: document }).state", "document");
-shouldBe("new PopStateEvent('eventType', { state: undefined }).state", "undefined");
+shouldBe("new PopStateEvent('eventType', { state: undefined }).state", "null");
 shouldBe("new PopStateEvent('eventType', { state: null }).state", "null");
 shouldBe("new PopStateEvent('eventType', { state: false }).state", "false");
 shouldBe("new PopStateEvent('eventType', { state: true }).state", "true");
index 3cb1e31..6dbaca8 100644 (file)
@@ -14,7 +14,7 @@ PASS new TransitionEvent('eventType', { cancelable: false }).cancelable is false
 PASS new TransitionEvent('eventType', { cancelable: true }).cancelable is true
 PASS new TransitionEvent('eventType', { propertyName: 'doremi' }).propertyName is "doremi"
 PASS new TransitionEvent('eventType', { propertyName: '' }).propertyName is ""
-PASS new TransitionEvent('eventType', { propertyName: undefined }).propertyName is "undefined"
+PASS new TransitionEvent('eventType', { propertyName: undefined }).propertyName is ""
 PASS new TransitionEvent('eventType', { propertyName: null }).propertyName is "null"
 PASS new TransitionEvent('eventType', { propertyName: false }).propertyName is "false"
 PASS new TransitionEvent('eventType', { propertyName: true }).propertyName is "true"
@@ -29,21 +29,21 @@ PASS new TransitionEvent('eventType', { elapsedTime: 0 }).elapsedTime is 0
 PASS new TransitionEvent('eventType', { elapsedTime: 123.45 }).elapsedTime is 123.45
 PASS new TransitionEvent('eventType', { elapsedTime: -123.45 }).elapsedTime is -123.45
 PASS new TransitionEvent('eventType', { elapsedTime: 18446744073709551615 }).elapsedTime is 18446744073709551615
-PASS new TransitionEvent('eventType', { elapsedTime: NaN }).elapsedTime is NaN
-PASS new TransitionEvent('eventType', { elapsedTime: Infinity }).elapsedTime is Infinity
-PASS new TransitionEvent('eventType', { elapsedTime: -Infinity }).elapsedTime is -Infinity
+PASS new TransitionEvent('eventType', { elapsedTime: NaN }).elapsedTime threw exception TypeError: The provided value is non-finite.
+PASS new TransitionEvent('eventType', { elapsedTime: Infinity }).elapsedTime threw exception TypeError: The provided value is non-finite.
+PASS new TransitionEvent('eventType', { elapsedTime: -Infinity }).elapsedTime threw exception TypeError: The provided value is non-finite.
 PASS new TransitionEvent('eventType', { pseudoElement: '::before' }).pseudoElement is "::before"
 PASS new TransitionEvent('eventType', { pseudoElement: '' }).pseudoElement is ""
-PASS new TransitionEvent('eventType', { elapsedTime: undefined }).elapsedTime is NaN
+PASS new TransitionEvent('eventType', { elapsedTime: undefined }).elapsedTime is 0
 PASS new TransitionEvent('eventType', { elapsedTime: null }).elapsedTime is 0
 PASS new TransitionEvent('eventType', { elapsedTime: false }).elapsedTime is 0
 PASS new TransitionEvent('eventType', { elapsedTime: true }).elapsedTime is 1
 PASS new TransitionEvent('eventType', { elapsedTime: '' }).elapsedTime is 0
-PASS new TransitionEvent('eventType', { elapsedTime: 'doremi' }).elapsedTime is NaN
+PASS new TransitionEvent('eventType', { elapsedTime: 'doremi' }).elapsedTime threw exception TypeError: The provided value is non-finite.
 PASS new TransitionEvent('eventType', { elapsedTime: [] }).elapsedTime is 0
 PASS new TransitionEvent('eventType', { elapsedTime: [123.45] }).elapsedTime is 123.45
-PASS new TransitionEvent('eventType', { elapsedTime: [123.45, 678.90] }).elapsedTime is NaN
-PASS new TransitionEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime is NaN
+PASS new TransitionEvent('eventType', { elapsedTime: [123.45, 678.90] }).elapsedTime threw exception TypeError: The provided value is non-finite.
+PASS new TransitionEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime threw exception TypeError: The provided value is non-finite.
 PASS new TransitionEvent('eventType', { elapsedTime: {valueOf: function () { return 123.45 } } }).elapsedTime is 123.45
 PASS new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).bubbles is true
 PASS new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).cancelable is true
index 18175d8..0a64a34 100644 (file)
@@ -29,7 +29,7 @@ shouldBeEqualToString("new TransitionEvent('eventType', { propertyName: 'doremi'
 shouldBeEqualToString("new TransitionEvent('eventType', { propertyName: '' }).propertyName", "");
 
 // Non-strings.
-shouldBeEqualToString("new TransitionEvent('eventType', { propertyName: undefined }).propertyName", "undefined");
+shouldBeEqualToString("new TransitionEvent('eventType', { propertyName: undefined }).propertyName", "");
 shouldBeEqualToString("new TransitionEvent('eventType', { propertyName: null }).propertyName", "null");
 shouldBeEqualToString("new TransitionEvent('eventType', { propertyName: false }).propertyName", "false");
 shouldBeEqualToString("new TransitionEvent('eventType', { propertyName: true }).propertyName", "true");
@@ -47,9 +47,9 @@ shouldBe("new TransitionEvent('eventType', { elapsedTime: 0 }).elapsedTime", "0"
 shouldBe("new TransitionEvent('eventType', { elapsedTime: 123.45 }).elapsedTime", "123.45");
 shouldBe("new TransitionEvent('eventType', { elapsedTime: -123.45 }).elapsedTime", "-123.45");
 shouldBe("new TransitionEvent('eventType', { elapsedTime: 18446744073709551615 }).elapsedTime", "18446744073709551615");
-shouldBe("new TransitionEvent('eventType', { elapsedTime: NaN }).elapsedTime", "NaN");
-shouldBe("new TransitionEvent('eventType', { elapsedTime: Infinity }).elapsedTime", "Infinity");
-shouldBe("new TransitionEvent('eventType', { elapsedTime: -Infinity }).elapsedTime", "-Infinity");
+shouldThrowErrorName("new TransitionEvent('eventType', { elapsedTime: NaN }).elapsedTime", "TypeError");
+shouldThrowErrorName("new TransitionEvent('eventType', { elapsedTime: Infinity }).elapsedTime", "TypeError");
+shouldThrowErrorName("new TransitionEvent('eventType', { elapsedTime: -Infinity }).elapsedTime", "TypeError");
 
 // pseudoElement is passed.
 // Strings.
@@ -57,16 +57,16 @@ shouldBeEqualToString("new TransitionEvent('eventType', { pseudoElement: '::befo
 shouldBeEqualToString("new TransitionEvent('eventType', { pseudoElement: '' }).pseudoElement", "");
 
 // Non-numeric values.
-shouldBe("new TransitionEvent('eventType', { elapsedTime: undefined }).elapsedTime", "NaN");
+shouldBe("new TransitionEvent('eventType', { elapsedTime: undefined }).elapsedTime", "0");
 shouldBe("new TransitionEvent('eventType', { elapsedTime: null }).elapsedTime", "0");
 shouldBe("new TransitionEvent('eventType', { elapsedTime: false }).elapsedTime", "0");
 shouldBe("new TransitionEvent('eventType', { elapsedTime: true }).elapsedTime", "1");
 shouldBe("new TransitionEvent('eventType', { elapsedTime: '' }).elapsedTime", "0");
-shouldBe("new TransitionEvent('eventType', { elapsedTime: 'doremi' }).elapsedTime", "NaN");
+shouldThrowErrorName("new TransitionEvent('eventType', { elapsedTime: 'doremi' }).elapsedTime", "TypeError");
 shouldBe("new TransitionEvent('eventType', { elapsedTime: [] }).elapsedTime", "0");
 shouldBe("new TransitionEvent('eventType', { elapsedTime: [123.45] }).elapsedTime", "123.45");
-shouldBe("new TransitionEvent('eventType', { elapsedTime: [123.45, 678.90] }).elapsedTime", "NaN");
-shouldBe("new TransitionEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime", "NaN");
+shouldThrowErrorName("new TransitionEvent('eventType', { elapsedTime: [123.45, 678.90] }).elapsedTime", "TypeError");
+shouldThrowErrorName("new TransitionEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime", "TypeError");
 shouldBe("new TransitionEvent('eventType', { elapsedTime: {valueOf: function () { return 123.45 } } }).elapsedTime", "123.45");
 
 // All initializers are passed.
index d30b87b..f732af5 100644 (file)
@@ -13,7 +13,7 @@ PASS new WebKitAnimationEvent('eventType', { cancelable: false }).cancelable is
 PASS new WebKitAnimationEvent('eventType', { cancelable: true }).cancelable is true
 PASS new WebKitAnimationEvent('eventType', { animationName: 'doremi' }).animationName is "doremi"
 PASS new WebKitAnimationEvent('eventType', { animationName: '' }).animationName is ""
-PASS new WebKitAnimationEvent('eventType', { animationName: undefined }).animationName is "undefined"
+PASS new WebKitAnimationEvent('eventType', { animationName: undefined }).animationName is ""
 PASS new WebKitAnimationEvent('eventType', { animationName: null }).animationName is "null"
 PASS new WebKitAnimationEvent('eventType', { animationName: false }).animationName is "false"
 PASS new WebKitAnimationEvent('eventType', { animationName: true }).animationName is "true"
@@ -28,19 +28,19 @@ PASS new WebKitAnimationEvent('eventType', { elapsedTime: 0 }).elapsedTime is 0
 PASS new WebKitAnimationEvent('eventType', { elapsedTime: 123.45 }).elapsedTime is 123.45
 PASS new WebKitAnimationEvent('eventType', { elapsedTime: -123.45 }).elapsedTime is -123.45
 PASS new WebKitAnimationEvent('eventType', { elapsedTime: 18446744073709551615 }).elapsedTime is 18446744073709551615
-PASS new WebKitAnimationEvent('eventType', { elapsedTime: NaN }).elapsedTime is NaN
-PASS new WebKitAnimationEvent('eventType', { elapsedTime: Infinity }).elapsedTime is Infinity
-PASS new WebKitAnimationEvent('eventType', { elapsedTime: -Infinity }).elapsedTime is -Infinity
-PASS new WebKitAnimationEvent('eventType', { elapsedTime: undefined }).elapsedTime is NaN
+PASS new WebKitAnimationEvent('eventType', { elapsedTime: NaN }).elapsedTime threw exception TypeError: The provided value is non-finite.
+PASS new WebKitAnimationEvent('eventType', { elapsedTime: Infinity }).elapsedTime threw exception TypeError: The provided value is non-finite.
+PASS new WebKitAnimationEvent('eventType', { elapsedTime: -Infinity }).elapsedTime threw exception TypeError: The provided value is non-finite.
+PASS new WebKitAnimationEvent('eventType', { elapsedTime: undefined }).elapsedTime is 0
 PASS new WebKitAnimationEvent('eventType', { elapsedTime: null }).elapsedTime is 0
 PASS new WebKitAnimationEvent('eventType', { elapsedTime: false }).elapsedTime is 0
 PASS new WebKitAnimationEvent('eventType', { elapsedTime: true }).elapsedTime is 1
 PASS new WebKitAnimationEvent('eventType', { elapsedTime: '' }).elapsedTime is 0
-PASS new WebKitAnimationEvent('eventType', { elapsedTime: 'doremi' }).elapsedTime is NaN
+PASS new WebKitAnimationEvent('eventType', { elapsedTime: 'doremi' }).elapsedTime threw exception TypeError: The provided value is non-finite.
 PASS new WebKitAnimationEvent('eventType', { elapsedTime: [] }).elapsedTime is 0
 PASS new WebKitAnimationEvent('eventType', { elapsedTime: [123.45] }).elapsedTime is 123.45
-PASS new WebKitAnimationEvent('eventType', { elapsedTime: [123.45, 678.90] }).elapsedTime is NaN
-PASS new WebKitAnimationEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime is NaN
+PASS new WebKitAnimationEvent('eventType', { elapsedTime: [123.45, 678.90] }).elapsedTime threw exception TypeError: The provided value is non-finite.
+PASS new WebKitAnimationEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime threw exception TypeError: The provided value is non-finite.
 PASS new WebKitAnimationEvent('eventType', { elapsedTime: {valueOf: function () { return 123.45 } } }).elapsedTime is 123.45
 PASS new WebKitAnimationEvent('eventType', { bubbles: true, cancelable: true, animationName: 'doremi', elapsedTime: 123.45 }).bubbles is true
 PASS new WebKitAnimationEvent('eventType', { bubbles: true, cancelable: true, animationName: 'doremi', elapsedTime: 123.45 }).cancelable is true
index 883f00c..9562868 100644 (file)
@@ -28,7 +28,7 @@ shouldBeEqualToString("new WebKitAnimationEvent('eventType', { animationName: 'd
 shouldBeEqualToString("new WebKitAnimationEvent('eventType', { animationName: '' }).animationName", "");
 
 // Non-strings.
-shouldBeEqualToString("new WebKitAnimationEvent('eventType', { animationName: undefined }).animationName", "undefined");
+shouldBeEqualToString("new WebKitAnimationEvent('eventType', { animationName: undefined }).animationName", "");
 shouldBeEqualToString("new WebKitAnimationEvent('eventType', { animationName: null }).animationName", "null");
 shouldBeEqualToString("new WebKitAnimationEvent('eventType', { animationName: false }).animationName", "false");
 shouldBeEqualToString("new WebKitAnimationEvent('eventType', { animationName: true }).animationName", "true");
@@ -46,21 +46,21 @@ shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: 0 }).elapsedTime"
 shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: 123.45 }).elapsedTime", "123.45");
 shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: -123.45 }).elapsedTime", "-123.45");
 shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: 18446744073709551615 }).elapsedTime", "18446744073709551615");
-shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: NaN }).elapsedTime", "NaN");
-shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: Infinity }).elapsedTime", "Infinity");
-shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: -Infinity }).elapsedTime", "-Infinity");
+shouldThrowErrorName("new WebKitAnimationEvent('eventType', { elapsedTime: NaN }).elapsedTime", "TypeError");
+shouldThrowErrorName("new WebKitAnimationEvent('eventType', { elapsedTime: Infinity }).elapsedTime", "TypeError");
+shouldThrowErrorName("new WebKitAnimationEvent('eventType', { elapsedTime: -Infinity }).elapsedTime", "TypeError");
 
 // Non-numeric values.
-shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: undefined }).elapsedTime", "NaN");
+shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: undefined }).elapsedTime", "0");
 shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: null }).elapsedTime", "0");
 shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: false }).elapsedTime", "0");
 shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: true }).elapsedTime", "1");
 shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: '' }).elapsedTime", "0");
-shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: 'doremi' }).elapsedTime", "NaN");
+shouldThrowErrorName("new WebKitAnimationEvent('eventType', { elapsedTime: 'doremi' }).elapsedTime", "TypeError");
 shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: [] }).elapsedTime", "0");
 shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: [123.45] }).elapsedTime", "123.45");
-shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: [123.45, 678.90] }).elapsedTime", "NaN");
-shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime", "NaN");
+shouldThrowErrorName("new WebKitAnimationEvent('eventType', { elapsedTime: [123.45, 678.90] }).elapsedTime", "TypeError");
+shouldThrowErrorName("new WebKitAnimationEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime", "TypeError");
 shouldBe("new WebKitAnimationEvent('eventType', { elapsedTime: {valueOf: function () { return 123.45 } } }).elapsedTime", "123.45");
 
 // All initializers are passed.
index 934284a..0573005 100644 (file)
@@ -14,7 +14,7 @@ PASS new WebKitTransitionEvent('eventType', { cancelable: false }).cancelable is
 PASS new WebKitTransitionEvent('eventType', { cancelable: true }).cancelable is true
 PASS new WebKitTransitionEvent('eventType', { propertyName: 'doremi' }).propertyName is "doremi"
 PASS new WebKitTransitionEvent('eventType', { propertyName: '' }).propertyName is ""
-PASS new WebKitTransitionEvent('eventType', { propertyName: undefined }).propertyName is "undefined"
+PASS new WebKitTransitionEvent('eventType', { propertyName: undefined }).propertyName is ""
 PASS new WebKitTransitionEvent('eventType', { propertyName: null }).propertyName is "null"
 PASS new WebKitTransitionEvent('eventType', { propertyName: false }).propertyName is "false"
 PASS new WebKitTransitionEvent('eventType', { propertyName: true }).propertyName is "true"
@@ -29,21 +29,21 @@ PASS new WebKitTransitionEvent('eventType', { elapsedTime: 0 }).elapsedTime is 0
 PASS new WebKitTransitionEvent('eventType', { elapsedTime: 123.45 }).elapsedTime is 123.45
 PASS new WebKitTransitionEvent('eventType', { elapsedTime: -123.45 }).elapsedTime is -123.45
 PASS new WebKitTransitionEvent('eventType', { elapsedTime: 18446744073709551615 }).elapsedTime is 18446744073709551615
-PASS new WebKitTransitionEvent('eventType', { elapsedTime: NaN }).elapsedTime is NaN
-PASS new WebKitTransitionEvent('eventType', { elapsedTime: Infinity }).elapsedTime is Infinity
-PASS new WebKitTransitionEvent('eventType', { elapsedTime: -Infinity }).elapsedTime is -Infinity
+PASS new WebKitTransitionEvent('eventType', { elapsedTime: NaN }).elapsedTime threw exception TypeError: The provided value is non-finite.
+PASS new WebKitTransitionEvent('eventType', { elapsedTime: Infinity }).elapsedTime threw exception TypeError: The provided value is non-finite.
+PASS new WebKitTransitionEvent('eventType', { elapsedTime: -Infinity }).elapsedTime threw exception TypeError: The provided value is non-finite.
 PASS new WebKitTransitionEvent('eventType', { pseudoElement: '::before' }).pseudoElement is "::before"
 PASS new WebKitTransitionEvent('eventType', { pseudoElement: '' }).pseudoElement is ""
-PASS new WebKitTransitionEvent('eventType', { elapsedTime: undefined }).elapsedTime is NaN
+PASS new WebKitTransitionEvent('eventType', { elapsedTime: undefined }).elapsedTime is 0
 PASS new WebKitTransitionEvent('eventType', { elapsedTime: null }).elapsedTime is 0
 PASS new WebKitTransitionEvent('eventType', { elapsedTime: false }).elapsedTime is 0
 PASS new WebKitTransitionEvent('eventType', { elapsedTime: true }).elapsedTime is 1
 PASS new WebKitTransitionEvent('eventType', { elapsedTime: '' }).elapsedTime is 0
-PASS new WebKitTransitionEvent('eventType', { elapsedTime: 'doremi' }).elapsedTime is NaN
+PASS new WebKitTransitionEvent('eventType', { elapsedTime: 'doremi' }).elapsedTime threw exception TypeError: The provided value is non-finite.
 PASS new WebKitTransitionEvent('eventType', { elapsedTime: [] }).elapsedTime is 0
 PASS new WebKitTransitionEvent('eventType', { elapsedTime: [123.45] }).elapsedTime is 123.45
-PASS new WebKitTransitionEvent('eventType', { elapsedTime: [123.45, 678.90] }).elapsedTime is NaN
-PASS new WebKitTransitionEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime is NaN
+PASS new WebKitTransitionEvent('eventType', { elapsedTime: [123.45, 678.90] }).elapsedTime threw exception TypeError: The provided value is non-finite.
+PASS new WebKitTransitionEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime threw exception TypeError: The provided value is non-finite.
 PASS new WebKitTransitionEvent('eventType', { elapsedTime: {valueOf: function () { return 123.45 } } }).elapsedTime is 123.45
 PASS new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).bubbles is true
 PASS new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).cancelable is true
index 713be75..71e7ca0 100644 (file)
@@ -29,7 +29,7 @@ shouldBeEqualToString("new WebKitTransitionEvent('eventType', { propertyName: 'd
 shouldBeEqualToString("new WebKitTransitionEvent('eventType', { propertyName: '' }).propertyName", "");
 
 // Non-strings.
-shouldBeEqualToString("new WebKitTransitionEvent('eventType', { propertyName: undefined }).propertyName", "undefined");
+shouldBeEqualToString("new WebKitTransitionEvent('eventType', { propertyName: undefined }).propertyName", "");
 shouldBeEqualToString("new WebKitTransitionEvent('eventType', { propertyName: null }).propertyName", "null");
 shouldBeEqualToString("new WebKitTransitionEvent('eventType', { propertyName: false }).propertyName", "false");
 shouldBeEqualToString("new WebKitTransitionEvent('eventType', { propertyName: true }).propertyName", "true");
@@ -47,9 +47,9 @@ shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: 0 }).elapsedTime
 shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: 123.45 }).elapsedTime", "123.45");
 shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: -123.45 }).elapsedTime", "-123.45");
 shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: 18446744073709551615 }).elapsedTime", "18446744073709551615");
-shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: NaN }).elapsedTime", "NaN");
-shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: Infinity }).elapsedTime", "Infinity");
-shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: -Infinity }).elapsedTime", "-Infinity");
+shouldThrowErrorName("new WebKitTransitionEvent('eventType', { elapsedTime: NaN }).elapsedTime", "TypeError");
+shouldThrowErrorName("new WebKitTransitionEvent('eventType', { elapsedTime: Infinity }).elapsedTime", "TypeError");
+shouldThrowErrorName("new WebKitTransitionEvent('eventType', { elapsedTime: -Infinity }).elapsedTime", "TypeError");
 
 // pseudoElement is passed.
 // Strings.
@@ -57,16 +57,16 @@ shouldBeEqualToString("new WebKitTransitionEvent('eventType', { pseudoElement: '
 shouldBeEqualToString("new WebKitTransitionEvent('eventType', { pseudoElement: '' }).pseudoElement", "");
 
 // Non-numeric values.
-shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: undefined }).elapsedTime", "NaN");
+shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: undefined }).elapsedTime", "0");
 shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: null }).elapsedTime", "0");
 shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: false }).elapsedTime", "0");
 shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: true }).elapsedTime", "1");
 shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: '' }).elapsedTime", "0");
-shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: 'doremi' }).elapsedTime", "NaN");
+shouldThrowErrorName("new WebKitTransitionEvent('eventType', { elapsedTime: 'doremi' }).elapsedTime", "TypeError");
 shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: [] }).elapsedTime", "0");
 shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: [123.45] }).elapsedTime", "123.45");
-shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: [123.45, 678.90] }).elapsedTime", "NaN");
-shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime", "NaN");
+shouldThrowErrorName("new WebKitTransitionEvent('eventType', { elapsedTime: [123.45, 678.90] }).elapsedTime", "TypeError");
+shouldThrowErrorName("new WebKitTransitionEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime", "TypeError");
 shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: {valueOf: function () { return 123.45 } } }).elapsedTime", "123.45");
 
 // All initializers are passed.
index da348c4..413ef55 100644 (file)
@@ -1,5 +1,67 @@
 2016-10-12  Chris Dumez  <cdumez@apple.com>
 
+        Update remaining DOM events to stop using legacy [ConstructorTemplate=Event]
+        https://bugs.webkit.org/show_bug.cgi?id=163319
+
+        Reviewed by Darin Adler.
+
+        Update remaining DOM events to stop using legacy [ConstructorTemplate=Event]
+        and use regular constructors instead.
+
+        No new tests, updated existing tests.
+
+        * dom/AutocompleteErrorEvent.h:
+        * dom/AutocompleteErrorEvent.idl:
+        * dom/BeforeLoadEvent.h:
+        * dom/BeforeLoadEvent.idl:
+        * dom/CompositionEvent.cpp:
+        (WebCore::CompositionEvent::CompositionEvent):
+        * dom/CompositionEvent.h:
+        * dom/CompositionEvent.idl:
+        * dom/ErrorEvent.cpp:
+        (WebCore::ErrorEvent::ErrorEvent):
+        * dom/ErrorEvent.h:
+        * dom/ErrorEvent.idl:
+        * dom/FocusEvent.cpp:
+        (WebCore::FocusEvent::FocusEvent):
+        * dom/FocusEvent.h:
+        * dom/FocusEvent.idl:
+        * dom/HashChangeEvent.h:
+        * dom/HashChangeEvent.idl:
+        * dom/OverflowEvent.cpp:
+        (WebCore::OverflowEvent::OverflowEvent):
+        * dom/OverflowEvent.h:
+        * dom/OverflowEvent.idl:
+        * dom/PageTransitionEvent.cpp:
+        (WebCore::PageTransitionEvent::PageTransitionEvent):
+        * dom/PageTransitionEvent.h:
+        * dom/PageTransitionEvent.idl:
+        * dom/PopStateEvent.cpp:
+        (WebCore::PopStateEvent::PopStateEvent):
+        (WebCore::PopStateEvent::create):
+        * dom/PopStateEvent.h:
+        * dom/PopStateEvent.idl:
+        * dom/SecurityPolicyViolationEvent.h:
+        * dom/SecurityPolicyViolationEvent.idl:
+        * dom/TouchEvent.cpp:
+        (WebCore::TouchEvent::TouchEvent):
+        * dom/TouchEvent.h:
+        * dom/TouchEvent.idl:
+        * dom/TransitionEvent.cpp:
+        (WebCore::TransitionEvent::TransitionEvent):
+        * dom/TransitionEvent.h:
+        * dom/TransitionEvent.idl:
+        * dom/WebKitAnimationEvent.cpp:
+        (WebCore::WebKitAnimationEvent::WebKitAnimationEvent):
+        * dom/WebKitAnimationEvent.h:
+        * dom/WebKitAnimationEvent.idl:
+        * dom/WebKitTransitionEvent.cpp:
+        (WebCore::WebKitTransitionEvent::WebKitTransitionEvent):
+        * dom/WebKitTransitionEvent.h:
+        * dom/WebKitTransitionEvent.idl:
+
+2016-10-12  Chris Dumez  <cdumez@apple.com>
+
         Stop using PassRefPtr in platform/efl
         https://bugs.webkit.org/show_bug.cgi?id=163321
 
index c2a500d..2594499 100644 (file)
 
 namespace WebCore {
 
-struct AutocompleteErrorEventInit : public EventInit {
-    String reason;
-};
-
 class AutocompleteErrorEvent final : public Event {
 public:
     static Ref<AutocompleteErrorEvent> create()
@@ -48,9 +44,13 @@ public:
         return adoptRef(*new AutocompleteErrorEvent(reason));
     }
 
-    static Ref<AutocompleteErrorEvent> create(const AtomicString& eventType, const AutocompleteErrorEventInit& initializer)
+    struct Init : EventInit {
+        String reason;
+    };
+
+    static Ref<AutocompleteErrorEvent> create(const AtomicString& eventType, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new AutocompleteErrorEvent(eventType, initializer));
+        return adoptRef(*new AutocompleteErrorEvent(eventType, initializer, isTrusted));
     }
 
     const String& reason() const { return m_reason; }
@@ -66,8 +66,8 @@ private:
     {
     }
 
-    AutocompleteErrorEvent(const AtomicString& eventType, const AutocompleteErrorEventInit& initializer)
-        : Event(eventType, initializer)
+    AutocompleteErrorEvent(const AtomicString& eventType, const Init& initializer, IsTrusted isTrusted)
+        : Event(eventType, initializer, isTrusted)
         , m_reason(initializer.reason)
     {
     }
index 5be6ccf..d93fa65 100644 (file)
 
 [
     Conditional=REQUEST_AUTOCOMPLETE,
-    ConstructorTemplate=Event,
+    Constructor(DOMString type, optional AutocompleteErrorEventInit eventInitDict),
     JSGenerateToJSObject
 ] interface AutocompleteErrorEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString reason;
+    readonly attribute DOMString reason;
 };
 
+dictionary AutocompleteErrorEventInit : EventInit {
+    DOMString reason = "";
+};
index 94e9a0d..dd83342 100644 (file)
 
 namespace WebCore {
 
-struct BeforeLoadEventInit : public EventInit {
-    String url;
-};
-
 class BeforeLoadEvent final : public Event {
 public:
     static Ref<BeforeLoadEvent> create(const String& url)
@@ -43,9 +39,13 @@ public:
         return adoptRef(*new BeforeLoadEvent(url));
     }
 
-    static Ref<BeforeLoadEvent> createForBindings(const AtomicString& type, const BeforeLoadEventInit& initializer)
+    struct Init : EventInit {
+        String url;
+    };
+
+    static Ref<BeforeLoadEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new BeforeLoadEvent(type, initializer));
+        return adoptRef(*new BeforeLoadEvent(type, initializer, isTrusted));
     }
 
     const String& url() const { return m_url; }
@@ -59,8 +59,8 @@ private:
     {
     }
 
-    BeforeLoadEvent(const AtomicString& type, const BeforeLoadEventInit& initializer)
-        : Event(type, initializer)
+    BeforeLoadEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+        : Event(type, initializer, isTrusted)
         , m_url(initializer.url)
     {
     }
index 6291307..5dd04ce 100644 (file)
  */
 
 [
-    ConstructorTemplate=Event
+    Constructor(DOMString type, optional BeforeLoadEventInit eventInitDict)
 ] interface BeforeLoadEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString url;
+    readonly attribute DOMString url;
 };
 
+dictionary BeforeLoadEventInit : EventInit {
+    DOMString url = "";
+};
index d27420a..0d9e5fc 100644 (file)
@@ -41,8 +41,8 @@ CompositionEvent::CompositionEvent(const AtomicString& type, DOMWindow* view, co
 {
 }
 
-CompositionEvent::CompositionEvent(const AtomicString& type, const CompositionEventInit& initializer)
-    : UIEvent(type, initializer)
+CompositionEvent::CompositionEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+    : UIEvent(type, initializer, isTrusted)
     , m_data(initializer.data)
 {
 }
index e7fa4ee..39336d9 100644 (file)
 
 namespace WebCore {
 
-struct CompositionEventInit : UIEventInit {
-    String data;
-};
-
 class CompositionEvent final : public UIEvent {
 public:
     static Ref<CompositionEvent> create(const AtomicString& type, DOMWindow* view, const String& data)
@@ -47,9 +43,13 @@ public:
         return adoptRef(*new CompositionEvent);
     }
 
-    static Ref<CompositionEvent> createForBindings(const AtomicString& type, const CompositionEventInit& initializer)
+    struct Init : UIEventInit {
+        String data;
+    };
+
+    static Ref<CompositionEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new CompositionEvent(type, initializer));
+        return adoptRef(*new CompositionEvent(type, initializer, isTrusted));
     }
 
     virtual ~CompositionEvent();
@@ -63,7 +63,7 @@ public:
 private:
     CompositionEvent();
     CompositionEvent(const AtomicString& type, DOMWindow*, const String&);
-    CompositionEvent(const AtomicString& type, const CompositionEventInit&);
+    CompositionEvent(const AtomicString& type, const Init&, IsTrusted);
 
     bool isCompositionEvent() const override;
 
index d2039de..d872408 100644 (file)
  */
 
 [
-    ConstructorConditional=DOM4_EVENTS_CONSTRUCTOR,
-    ConstructorTemplate=Event,
+    Constructor(DOMString type, optional CompositionEventInit eventInitDict),
 ] interface CompositionEvent : UIEvent {
 
-    [InitializedByEventConstructor] readonly attribute DOMString data;
+    readonly attribute DOMString data;
 
     // FIXME: Using "undefined" as default parameter value is wrong.
     void initCompositionEvent(optional DOMString typeArg = "undefined",
@@ -39,3 +38,6 @@
 
 };
 
+dictionary CompositionEventInit : UIEventInit {
+    DOMString data = "";
+};
index e13ecc5..e997fa2 100644 (file)
@@ -40,13 +40,13 @@ using namespace JSC;
 
 namespace WebCore {
 
-ErrorEvent::ErrorEvent(const AtomicString& type, const ErrorEventInit& initializer)
-    : Event(type, initializer)
+ErrorEvent::ErrorEvent(ExecState& state, const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+    : Event(type, initializer, isTrusted)
     , m_message(initializer.message)
     , m_fileName(initializer.filename)
     , m_lineNumber(initializer.lineno)
     , m_columnNumber(initializer.colno)
-    , m_error(initializer.error)
+    , m_error(state.vm(), initializer.error)
 {
 }
 
index d45b114..feb2651 100644 (file)
 
 namespace WebCore {
 
-struct ErrorEventInit : public EventInit {
-    String message;
-    String filename;
-    unsigned lineno { 0 };
-    unsigned colno { 0 };
-    Deprecated::ScriptValue error;
-};
-
 class ErrorEvent final : public Event {
 public:
     static Ref<ErrorEvent> create(const String& message, const String& fileName, unsigned lineNumber, unsigned columnNumber, const Deprecated::ScriptValue& error)
@@ -54,9 +46,17 @@ public:
         return adoptRef(*new ErrorEvent(message, fileName, lineNumber, columnNumber, error));
     }
 
-    static Ref<ErrorEvent> createForBindings(const AtomicString& type, const ErrorEventInit& initializer)
+    struct Init : EventInit {
+        String message;
+        String filename;
+        unsigned lineno { 0 };
+        unsigned colno { 0 };
+        JSC::JSValue error;
+    };
+
+    static Ref<ErrorEvent> create(JSC::ExecState& state, const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new ErrorEvent(type, initializer));
+        return adoptRef(*new ErrorEvent(state, type, initializer, isTrusted));
     }
 
     virtual ~ErrorEvent();
@@ -72,7 +72,7 @@ public:
 
 private:
     ErrorEvent(const String& message, const String& fileName, unsigned lineNumber, unsigned columnNumber, const Deprecated::ScriptValue& error);
-    ErrorEvent(const AtomicString&, const ErrorEventInit&);
+    ErrorEvent(JSC::ExecState&, const AtomicString&, const Init&, IsTrusted);
 
     RefPtr<SerializedScriptValue> trySerializeError(JSC::ExecState&);
 
index e1af3ee..84d8ec4 100644 (file)
  */
 
 [
-    ConstructorTemplate=Event,
+    Constructor(DOMString type, optional ErrorEventInit eventInitDict),
+    ConstructorCallWith=ScriptState,
     Exposed=(Window,Worker),
 ] interface ErrorEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString message;
-    [InitializedByEventConstructor] readonly attribute USVString filename;
-    [InitializedByEventConstructor] readonly attribute unsigned long lineno;
-    [InitializedByEventConstructor] readonly attribute unsigned long colno;
-    [InitializedByEventConstructor, CustomGetter] readonly attribute any error;
+    readonly attribute DOMString message;
+    readonly attribute USVString filename;
+    readonly attribute unsigned long lineno;
+    readonly attribute unsigned long colno;
+    [CustomGetter] readonly attribute any error;
 };
 
+dictionary ErrorEventInit : EventInit {
+    DOMString message = "";
+    USVString filename = "";
+    unsigned long lineno = 0;
+    unsigned long colno = 0;
+    any error = null;
+};
index cdfd109..16d8b3f 100644 (file)
@@ -46,8 +46,8 @@ FocusEvent::FocusEvent(const AtomicString& type, bool canBubble, bool cancelable
 {
 }
 
-FocusEvent::FocusEvent(const AtomicString& type, const FocusEventInit& initializer)
-    : UIEvent(type, initializer)
+FocusEvent::FocusEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+    : UIEvent(type, initializer, isTrusted)
     , m_relatedTarget(initializer.relatedTarget)
 {
 }
index ed4e93c..408222c 100644 (file)
@@ -33,10 +33,6 @@ namespace WebCore {
 
 class Node;
 
-struct FocusEventInit : public UIEventInit {
-    RefPtr<EventTarget> relatedTarget;
-};
-
 class FocusEvent final : public UIEvent {
 public:
     static Ref<FocusEvent> create(const AtomicString& type, bool canBubble, bool cancelable, DOMWindow* view, int detail, RefPtr<EventTarget>&& relatedTarget)
@@ -44,9 +40,13 @@ public:
         return adoptRef(*new FocusEvent(type, canBubble, cancelable, view, detail, WTFMove(relatedTarget)));
     }
 
-    static Ref<FocusEvent> createForBindings(const AtomicString& type, const FocusEventInit& initializer)
+    struct Init : UIEventInit {
+        RefPtr<EventTarget> relatedTarget;
+    };
+
+    static Ref<FocusEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new FocusEvent(type, initializer));
+        return adoptRef(*new FocusEvent(type, initializer, isTrusted));
     }
 
     EventTarget* relatedTarget() const override { return m_relatedTarget.get(); }
@@ -56,7 +56,7 @@ public:
 
 private:
     FocusEvent(const AtomicString& type, bool canBubble, bool cancelable, DOMWindow*, int, RefPtr<EventTarget>&&);
-    FocusEvent(const AtomicString& type, const FocusEventInit&);
+    FocusEvent(const AtomicString& type, const Init&, IsTrusted);
 
     bool isFocusEvent() const override;
 
index fc422c3..48a68f0 100644 (file)
  */
 
 [
-    ConstructorConditional=DOM4_EVENTS_CONSTRUCTOR,
-    ConstructorTemplate=Event
+    Constructor(DOMString type, optional FocusEventInit eventInitDict),
 ] interface FocusEvent : UIEvent {
-    [InitializedByEventConstructor] readonly attribute EventTarget relatedTarget;
+    readonly attribute EventTarget? relatedTarget;
+};
+
+dictionary FocusEventInit : UIEventInit {
+    EventTarget? relatedTarget = null;
 };
index 4941b07..74b189e 100644 (file)
 
 namespace WebCore {
 
-struct HashChangeEventInit : public EventInit {
-    String oldURL;
-    String newURL;
-};
-
 class HashChangeEvent final : public Event {
 public:
     static Ref<HashChangeEvent> create(const String& oldURL, const String& newURL)
@@ -43,9 +38,14 @@ public:
         return adoptRef(*new HashChangeEvent);
     }
 
-    static Ref<HashChangeEvent> createForBindings(const AtomicString& type, const HashChangeEventInit& initializer)
+    struct Init : EventInit {
+        String oldURL;
+        String newURL;
+    };
+
+    static Ref<HashChangeEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new HashChangeEvent(type, initializer));
+        return adoptRef(*new HashChangeEvent(type, initializer, isTrusted));
     }
 
     void initHashChangeEvent(const AtomicString& eventType, bool canBubble, bool cancelable, const String& oldURL, const String& newURL)
@@ -76,8 +76,8 @@ private:
     {
     }
 
-    HashChangeEvent(const AtomicString& type, const HashChangeEventInit& initializer)
-        : Event(type, initializer)
+    HashChangeEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+        : Event(type, initializer, isTrusted)
         , m_oldURL(initializer.oldURL)
         , m_newURL(initializer.newURL)
     {
index 31a3d59..e72ff8d 100644 (file)
@@ -19,7 +19,7 @@
 
 // Introduced in http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#event-hashchange
 [
-    ConstructorTemplate=Event,
+    Constructor(DOMString type, optional HashChangeEventInit eventInitDict),
 ] interface HashChangeEvent : Event {
     // FIXME: Using "undefined" as default parameter value is wrong.
     void initHashChangeEvent(optional DOMString type = "undefined",
                              optional boolean cancelable = false,
                              optional USVString oldURL = "undefined",
                              optional USVString newURL = "undefined");
-    [InitializedByEventConstructor] readonly attribute USVString oldURL;
-    [InitializedByEventConstructor] readonly attribute USVString newURL;
+
+    readonly attribute USVString oldURL;
+    readonly attribute USVString newURL;
 };
 
+dictionary HashChangeEventInit : EventInit {
+    USVString oldURL = "";
+    USVString newURL = "";
+};
index b0087cf..dc80178 100644 (file)
@@ -52,8 +52,8 @@ OverflowEvent::OverflowEvent(bool horizontalOverflowChanged, bool horizontalOver
         m_orient = VERTICAL;
 }
 
-OverflowEvent::OverflowEvent(const AtomicString& type, const OverflowEventInit& initializer)
-    : Event(type, initializer)
+OverflowEvent::OverflowEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+    : Event(type, initializer, isTrusted)
     , m_orient(initializer.orient)
     , m_horizontalOverflow(initializer.horizontalOverflow)
     , m_verticalOverflow(initializer.verticalOverflow)
index e51db60..c3fa181 100644 (file)
 
 namespace WebCore {
 
-struct OverflowEventInit : public EventInit {
-    unsigned short orient { 0 };
-    bool horizontalOverflow { false };
-    bool verticalOverflow { false };
-};
-
 class OverflowEvent final : public Event {
 public:
     enum orientType {
@@ -48,13 +42,21 @@ public:
     {
         return adoptRef(*new OverflowEvent(horizontalOverflowChanged, horizontalOverflow, verticalOverflowChanged, verticalOverflow));
     }
+
     static Ref<OverflowEvent> createForBindings()
     {
         return adoptRef(*new OverflowEvent);
     }
-    static Ref<OverflowEvent> createForBindings(const AtomicString& type, const OverflowEventInit& initializer)
+
+    struct Init : EventInit {
+        unsigned short orient { 0 };
+        bool horizontalOverflow { false };
+        bool verticalOverflow { false };
+    };
+
+    static Ref<OverflowEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new OverflowEvent(type, initializer));
+        return adoptRef(*new OverflowEvent(type, initializer, isTrusted));
     }
 
     WEBCORE_EXPORT void initOverflowEvent(unsigned short orient, bool horizontalOverflow, bool verticalOverflow);
@@ -68,7 +70,7 @@ public:
 private:
     OverflowEvent();
     OverflowEvent(bool horizontalOverflowChanged, bool horizontalOverflow, bool verticalOverflowChanged, bool verticalOverflow);
-    OverflowEvent(const AtomicString&, const OverflowEventInit&);
+    OverflowEvent(const AtomicString&, const Init&, IsTrusted);
 
     unsigned short m_orient;
     bool m_horizontalOverflow;
index 0dd79c1..9fe025f 100644 (file)
  */
 
 [
-    ConstructorTemplate=Event
+    Constructor(DOMString type, optional OverflowEventInit eventInitDict),
 ] interface OverflowEvent : Event {
     const unsigned short HORIZONTAL = 0;
     const unsigned short VERTICAL   = 1;
     const unsigned short BOTH       = 2;
     
-    [InitializedByEventConstructor] readonly attribute unsigned short orient;
-    [InitializedByEventConstructor] readonly attribute boolean horizontalOverflow;
-    [InitializedByEventConstructor] readonly attribute boolean verticalOverflow;
+    readonly attribute unsigned short orient;
+    readonly attribute boolean horizontalOverflow;
+    readonly attribute boolean verticalOverflow;
 };
 
+dictionary OverflowEventInit : EventInit {
+    unsigned short orient = 0;
+    boolean horizontalOverflow = false;
+    boolean verticalOverflow = false;
+};
index 72647f5..c824440 100644 (file)
@@ -36,8 +36,8 @@ PageTransitionEvent::PageTransitionEvent(const AtomicString& type, bool persiste
 {
 }
 
-PageTransitionEvent::PageTransitionEvent(const AtomicString& type, const PageTransitionEventInit& initializer)
-    : Event(type, initializer)
+PageTransitionEvent::PageTransitionEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+    : Event(type, initializer, isTrusted)
     , m_persisted(initializer.persisted)
 {
 }
index d39f7cd..65800f5 100644 (file)
 
 namespace WebCore {
 
-struct PageTransitionEventInit : public EventInit {
-    bool persisted { false };
-};
-
 class PageTransitionEvent final : public Event {
 public:
     static Ref<PageTransitionEvent> create(const AtomicString& type, bool persisted)
     {
         return adoptRef(*new PageTransitionEvent(type, persisted));
     }
-    static Ref<PageTransitionEvent> createForBindings(const AtomicString& type, const PageTransitionEventInit& initializer)
+
+    struct Init : EventInit {
+        bool persisted { false };
+    };
+
+    static Ref<PageTransitionEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new PageTransitionEvent(type, initializer));
+        return adoptRef(*new PageTransitionEvent(type, initializer, isTrusted));
     }
 
     virtual ~PageTransitionEvent();
@@ -53,7 +54,7 @@ public:
 
 private:
     PageTransitionEvent(const AtomicString& type, bool persisted);
-    PageTransitionEvent(const AtomicString&, const PageTransitionEventInit&);
+    PageTransitionEvent(const AtomicString&, const Init&, IsTrusted);
 
     bool m_persisted;
 };
index c8cea7f..7f0491e 100644 (file)
  */
 
 [
-    ConstructorTemplate=Event
+    Constructor(DOMString type, optional PageTransitionEventInit eventInitDict),
 ] interface PageTransitionEvent : Event {
-    [InitializedByEventConstructor] readonly attribute boolean persisted;
+    readonly attribute boolean persisted;
 };
 
+dictionary PageTransitionEventInit : EventInit {
+    boolean persisted = false;
+};
index 0f678b1..f065bc1 100644 (file)
@@ -33,9 +33,9 @@
 
 namespace WebCore {
 
-PopStateEvent::PopStateEvent(const AtomicString& type, const PopStateEventInit& initializer)
-    : Event(type, initializer)
-    , m_state(initializer.state)
+PopStateEvent::PopStateEvent(JSC::ExecState& state, const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+    : Event(type, initializer, isTrusted)
+    , m_state(state.vm(), initializer.state)
 {
 }
 
@@ -55,9 +55,9 @@ Ref<PopStateEvent> PopStateEvent::create(RefPtr<SerializedScriptValue>&& seriali
     return adoptRef(*new PopStateEvent(WTFMove(serializedState), history));
 }
 
-Ref<PopStateEvent> PopStateEvent::createForBindings(const AtomicString& type, const PopStateEventInit& initializer)
+Ref<PopStateEvent> PopStateEvent::create(JSC::ExecState& state, const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
 {
-    return adoptRef(*new PopStateEvent(type, initializer));
+    return adoptRef(*new PopStateEvent(state, type, initializer, isTrusted));
 }
 
 Ref<PopStateEvent> PopStateEvent::createForBindings()
index 27430f9..55eb433 100644 (file)
@@ -34,15 +34,16 @@ namespace WebCore {
 class History;
 class SerializedScriptValue;
 
-struct PopStateEventInit : public EventInit {
-    Deprecated::ScriptValue state;
-};
-
 class PopStateEvent final : public Event {
 public:
     virtual ~PopStateEvent();
     static Ref<PopStateEvent> create(RefPtr<SerializedScriptValue>&&, PassRefPtr<History>);
-    static Ref<PopStateEvent> createForBindings(const AtomicString&, const PopStateEventInit&);
+
+    struct Init : EventInit {
+        JSC::JSValue state;
+    };
+
+    static Ref<PopStateEvent> create(JSC::ExecState&, const AtomicString&, const Init&, IsTrusted = IsTrusted::No);
     static Ref<PopStateEvent> createForBindings();
 
     JSC::JSValue state() const { return m_state; }
@@ -56,7 +57,7 @@ public:
 
 private:
     PopStateEvent() = default;
-    PopStateEvent(const AtomicString&, const PopStateEventInit&);
+    PopStateEvent(JSC::ExecState&, const AtomicString&, const Init&, IsTrusted);
     explicit PopStateEvent(PassRefPtr<SerializedScriptValue>, PassRefPtr<History>);
 
     Deprecated::ScriptValue m_state;
index 6ff07df..fc22ba8 100644 (file)
  */
 
 [
-    ConstructorTemplate=Event
+    Constructor(DOMString type, optional PopStateEventInit eventInitDict),
+    ConstructorCallWith=ScriptState,
 ] interface PopStateEvent : Event {
-    [InitializedByEventConstructor, CachedAttribute, CustomGetter] readonly attribute any state;
+    [CachedAttribute, CustomGetter] readonly attribute any state;
+};
+
+dictionary PopStateEventInit : EventInit {
+    any state = null;
 };
 
index 6cefd9e..5a2a666 100644 (file)
 
 namespace WebCore {
 
-struct SecurityPolicyViolationEventInit : public EventInit {
-    String documentURI;
-    String referrer;
-    String blockedURI;
-    String violatedDirective;
-    String effectiveDirective;
-    String originalPolicy;
-    String sourceFile;
-    unsigned short statusCode { 0 };
-    int lineNumber { 0 };
-    int columnNumber { 0 };
-};
-
 class SecurityPolicyViolationEvent final : public Event {
 public:
     static Ref<SecurityPolicyViolationEvent> create(const AtomicString& type, bool canBubble, bool cancelable, const String& documentURI, const String& referrer, const String& blockedURI, const String& violatedDirective, const String& effectiveDirective, const String& originalPolicy, const String& sourceFile, unsigned short statusCode, int lineNumber, int columnNumber)
@@ -55,9 +42,22 @@ public:
         return adoptRef(*new SecurityPolicyViolationEvent());
     }
 
-    static Ref<SecurityPolicyViolationEvent> createForBindings(const AtomicString& type, const SecurityPolicyViolationEventInit& initializer)
+    struct Init : EventInit {
+        String documentURI;
+        String referrer;
+        String blockedURI;
+        String violatedDirective;
+        String effectiveDirective;
+        String originalPolicy;
+        String sourceFile;
+        unsigned short statusCode { 0 };
+        int lineNumber { 0 };
+        int columnNumber { 0 };
+    };
+
+    static Ref<SecurityPolicyViolationEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new SecurityPolicyViolationEvent(type, initializer));
+        return adoptRef(*new SecurityPolicyViolationEvent(type, initializer, isTrusted));
     }
 
     const String& documentURI() const { return m_documentURI; }
@@ -93,8 +93,8 @@ private:
     {
     }
 
-    SecurityPolicyViolationEvent(const AtomicString& type, const SecurityPolicyViolationEventInit& initializer)
-        : Event(type, initializer)
+    SecurityPolicyViolationEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+        : Event(type, initializer, isTrusted)
         , m_documentURI(initializer.documentURI)
         , m_referrer(initializer.referrer)
         , m_blockedURI(initializer.blockedURI)
index df973e9..cab6c52 100644 (file)
  */
 
 [
-    ConstructorTemplate=Event,
+    Constructor(DOMString type, optional SecurityPolicyViolationEventInit eventInitDict),
 ] interface SecurityPolicyViolationEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString documentURI;
-    [InitializedByEventConstructor] readonly attribute DOMString referrer;
-    [InitializedByEventConstructor] readonly attribute DOMString blockedURI;
-    [InitializedByEventConstructor] readonly attribute DOMString violatedDirective;
-    [InitializedByEventConstructor] readonly attribute DOMString effectiveDirective;
-    [InitializedByEventConstructor] readonly attribute DOMString originalPolicy;
-    [InitializedByEventConstructor] readonly attribute DOMString sourceFile;
-    [InitializedByEventConstructor] readonly attribute unsigned short statusCode;
-    [InitializedByEventConstructor] readonly attribute long lineNumber;
-    [InitializedByEventConstructor] readonly attribute long columnNumber;
+    readonly attribute USVString documentURI;
+    readonly attribute DOMString referrer;
+    readonly attribute USVString blockedURI;
+    readonly attribute DOMString violatedDirective;
+    readonly attribute DOMString effectiveDirective;
+    readonly attribute DOMString originalPolicy;
+    readonly attribute USVString sourceFile;
+    readonly attribute unsigned short statusCode;
+    readonly attribute long lineNumber;
+    readonly attribute long columnNumber;
+};
+
+dictionary SecurityPolicyViolationEventInit : EventInit {
+    USVString documentURI = "";
+    DOMString referrer = "";
+    USVString blockedURI = "";
+    DOMString violatedDirective = "";
+    DOMString effectiveDirective = "";
+    DOMString originalPolicy = "";
+    USVString sourceFile = "";
+    unsigned short statusCode = 0;
+    long lineNumber = 0;
+    long columnNumber = 0;
 };
index 84240db..f5cec7c 100644 (file)
@@ -55,8 +55,8 @@ TouchEvent::TouchEvent(TouchList* touches, TouchList* targetTouches,
 {
 }
 
-TouchEvent::TouchEvent(const AtomicString& type, const TouchEventInit& initializer)
-    : MouseRelatedEvent(type, initializer)
+TouchEvent::TouchEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+    : MouseRelatedEvent(type, initializer, isTrusted)
     , m_touches(initializer.touches ? initializer.touches : TouchList::create())
     , m_targetTouches(initializer.targetTouches ? initializer.targetTouches : TouchList::create())
     , m_changedTouches(initializer.changedTouches ? initializer.changedTouches : TouchList::create())
index 66fc3a5..2469775 100644 (file)
 
 namespace WebCore {
 
-struct TouchEventInit : public MouseRelatedEventInit {
-    RefPtr<TouchList> touches;
-    RefPtr<TouchList> targetTouches;
-    RefPtr<TouchList> changedTouches;
-};
-
 class TouchEvent final : public MouseRelatedEvent {
 public:
     virtual ~TouchEvent();
@@ -60,9 +54,16 @@ public:
     {
         return adoptRef(*new TouchEvent);
     }
-    static Ref<TouchEvent> createForBindings(const AtomicString& type, const TouchEventInit& initializer)
+
+    struct Init : MouseRelatedEventInit {
+        RefPtr<TouchList> touches;
+        RefPtr<TouchList> targetTouches;
+        RefPtr<TouchList> changedTouches;
+    };
+
+    static Ref<TouchEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new TouchEvent(type, initializer));
+        return adoptRef(*new TouchEvent(type, initializer, isTrusted));
     }
 
     void initTouchEvent(TouchList* touches, TouchList* targetTouches,
@@ -90,7 +91,7 @@ private:
             DOMWindow*, int screenX, int screenY, int pageX,
             int pageY,
             bool ctrlKey, bool altKey, bool shiftKey, bool metaKey);
-    TouchEvent(const AtomicString&, const TouchEventInit&);
+    TouchEvent(const AtomicString&, const Init&, IsTrusted);
 
     RefPtr<TouchList> m_touches;
     RefPtr<TouchList> m_targetTouches;
index 406336e..8105835 100644 (file)
 
 [
     Conditional=TOUCH_EVENTS,
-    ConstructorTemplate=Event,
+    Constructor(DOMString type, optional TouchEventInit eventInitDict),
 ] interface TouchEvent : UIEvent {
-    [InitializedByEventConstructor] readonly attribute TouchList touches;
-    [InitializedByEventConstructor] readonly attribute TouchList targetTouches;
-    [InitializedByEventConstructor] readonly attribute TouchList changedTouches;
+    readonly attribute TouchList touches;
+    readonly attribute TouchList targetTouches;
+    readonly attribute TouchList changedTouches;
     readonly attribute boolean ctrlKey;
     readonly attribute boolean shiftKey;
     readonly attribute boolean altKey;
@@ -50,3 +50,9 @@
                         optional boolean shiftKey = false,
                         optional boolean metaKey = false);
 };
+
+dictionary TouchEventInit : UIEventInit {
+    TouchList? touches = null;
+    TouchList? targetTouches = null;
+    TouchList? changedTouches = null;
+};
index 827512f..e4a621f 100644 (file)
@@ -39,8 +39,8 @@ TransitionEvent::TransitionEvent(const AtomicString& type, const String& propert
 {
 }
 
-TransitionEvent::TransitionEvent(const AtomicString& type, const TransitionEventInit& initializer)
-    : Event(type, initializer)
+TransitionEvent::TransitionEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+    : Event(type, initializer, isTrusted)
     , m_propertyName(initializer.propertyName)
     , m_elapsedTime(initializer.elapsedTime)
     , m_pseudoElement(initializer.pseudoElement)
index 33e428f..18d6faa 100644 (file)
 
 namespace WebCore {
 
-struct TransitionEventInit : public EventInit {
-    String propertyName;
-    double elapsedTime { 0 };
-    String pseudoElement;
-};
-
 class TransitionEvent final : public Event {
 public:
     static Ref<TransitionEvent> create(const AtomicString& type, const String& propertyName, double elapsedTime, const String& pseudoElement)
     {
         return adoptRef(*new TransitionEvent(type, propertyName, elapsedTime, pseudoElement));
     }
-    static Ref<TransitionEvent> createForBindings(const AtomicString& type, const TransitionEventInit& initializer)
+
+    struct Init : EventInit {
+        String propertyName;
+        double elapsedTime { 0 };
+        String pseudoElement;
+    };
+
+    static Ref<TransitionEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new TransitionEvent(type, initializer));
+        return adoptRef(*new TransitionEvent(type, initializer, isTrusted));
     }
 
     virtual ~TransitionEvent();
@@ -58,7 +59,7 @@ public:
 
 private:
     TransitionEvent(const AtomicString& type, const String& propertyName, double elapsedTime, const String& pseudoElement);
-    TransitionEvent(const AtomicString& type, const TransitionEventInit& initializer);
+    TransitionEvent(const AtomicString& type, const Init& initializer, IsTrusted);
 
     String m_propertyName;
     double m_elapsedTime;
index 02bd07a..03f8ae9 100644 (file)
  */
 
 [
-    ConstructorTemplate=Event
+    Constructor(DOMString type, optional TransitionEventInit transitionEventInitDict),
 ] interface TransitionEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString propertyName;
-    [InitializedByEventConstructor] readonly attribute unrestricted double elapsedTime;
-    [InitializedByEventConstructor] readonly attribute DOMString pseudoElement;
+    readonly attribute DOMString propertyName;
+    readonly attribute double elapsedTime;
+    readonly attribute DOMString pseudoElement;
 };
 
+dictionary TransitionEventInit : EventInit {
+    DOMString propertyName = "";
+    double elapsedTime = 0.0;
+    DOMString pseudoElement = "";
+};
index 05b6751..a7fe7e1 100644 (file)
@@ -30,8 +30,8 @@
 
 namespace WebCore {
 
-WebKitAnimationEvent::WebKitAnimationEvent(const AtomicString& type, const WebKitAnimationEventInit& initializer)
-    : Event(type, initializer)
+WebKitAnimationEvent::WebKitAnimationEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+    : Event(type, initializer, isTrusted)
     , m_animationName(initializer.animationName)
     , m_elapsedTime(initializer.elapsedTime)
 {
index 2856587..4d464f4 100644 (file)
 
 namespace WebCore {
 
-struct WebKitAnimationEventInit : public EventInit {
-    String animationName;
-    double elapsedTime { 0.0 };
-};
-
 class WebKitAnimationEvent final : public Event {
 public:
     static Ref<WebKitAnimationEvent> create(const AtomicString& type, const String& animationName, double elapsedTime)
     {
         return adoptRef(*new WebKitAnimationEvent(type, animationName, elapsedTime));
     }
-    static Ref<WebKitAnimationEvent> createForBindings(const AtomicString& type, const WebKitAnimationEventInit& initializer)
+
+    struct Init : EventInit {
+        String animationName;
+        double elapsedTime { 0.0 };
+    };
+
+    static Ref<WebKitAnimationEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new WebKitAnimationEvent(type, initializer));
+        return adoptRef(*new WebKitAnimationEvent(type, initializer, isTrusted));
     }
 
     virtual ~WebKitAnimationEvent();
@@ -55,7 +56,7 @@ public:
 
 private:
     WebKitAnimationEvent(const AtomicString& type, const String& animationName, double elapsedTime);
-    WebKitAnimationEvent(const AtomicString&, const WebKitAnimationEventInit&);
+    WebKitAnimationEvent(const AtomicString&, const Init&, IsTrusted);
 
     String m_animationName;
     double m_elapsedTime;
index 00b0ad8..7c1bbec 100644 (file)
  */
 
 [
-    ConstructorTemplate=Event
+    Constructor(DOMString type, optional WebKitAnimationEventInit eventInitDict),
 ] interface WebKitAnimationEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString animationName;
-    [InitializedByEventConstructor] readonly attribute unrestricted double elapsedTime;
+    readonly attribute DOMString animationName;
+    readonly attribute double elapsedTime;
 };
 
+dictionary WebKitAnimationEventInit : EventInit {
+    DOMString animationName = "";
+    double elapsedTime = 0;
+};
index 82a7ed7..cc164a1 100644 (file)
@@ -38,8 +38,8 @@ WebKitTransitionEvent::WebKitTransitionEvent(const AtomicString& type, const Str
 {
 }
 
-WebKitTransitionEvent::WebKitTransitionEvent(const AtomicString& type, const WebKitTransitionEventInit& initializer)
-    : Event(type, initializer)
+WebKitTransitionEvent::WebKitTransitionEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+    : Event(type, initializer, isTrusted)
     , m_propertyName(initializer.propertyName)
     , m_elapsedTime(initializer.elapsedTime)
     , m_pseudoElement(initializer.pseudoElement)
index a44744c..914950e 100644 (file)
 
 namespace WebCore {
 
-struct WebKitTransitionEventInit : public EventInit {
-    String propertyName;
-    double elapsedTime { 0 };
-    String pseudoElement;
-};
-
 class WebKitTransitionEvent final : public Event {
 public:
     static Ref<WebKitTransitionEvent> create(const AtomicString& type, const String& propertyName, double elapsedTime, const String& pseudoElement)
     {
         return adoptRef(*new WebKitTransitionEvent(type, propertyName, elapsedTime, pseudoElement));
     }
-    static Ref<WebKitTransitionEvent> createForBindings(const AtomicString& type, const WebKitTransitionEventInit& initializer)
+
+    struct Init : EventInit {
+        String propertyName;
+        double elapsedTime { 0 };
+        String pseudoElement;
+    };
+
+    static Ref<WebKitTransitionEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new WebKitTransitionEvent(type, initializer));
+        return adoptRef(*new WebKitTransitionEvent(type, initializer, isTrusted));
     }
 
     virtual ~WebKitTransitionEvent();
@@ -57,7 +58,7 @@ public:
 
 private:
     WebKitTransitionEvent(const AtomicString& type, const String& propertyName, double elapsedTime, const String& pseudoElement);
-    WebKitTransitionEvent(const AtomicString& type, const WebKitTransitionEventInit& initializer);
+    WebKitTransitionEvent(const AtomicString& type, const Init& initializer, IsTrusted);
 
     String m_propertyName;
     double m_elapsedTime;
index 58aebad..3d57e46 100644 (file)
  */
 
 [
-    ConstructorTemplate=Event
+    Constructor(DOMString type, optional WebKitTransitionEventInit eventInitDict),
 ] interface WebKitTransitionEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString propertyName;
-    [InitializedByEventConstructor] readonly attribute unrestricted double elapsedTime;
-    [InitializedByEventConstructor] readonly attribute DOMString pseudoElement;
+    readonly attribute DOMString propertyName;
+    readonly attribute double elapsedTime;
+    readonly attribute DOMString pseudoElement;
 };
 
+dictionary WebKitTransitionEventInit : EventInit {
+    DOMString propertyName = "";
+    double elapsedTime = 0;
+    DOMString pseudoElement = "";
+};