Update CloseEvent to stop using legacy [ConstructorTemplate=Event]
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 11 Oct 2016 22:03:04 +0000 (22:03 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 11 Oct 2016 22:03:04 +0000 (22:03 +0000)
https://bugs.webkit.org/show_bug.cgi?id=163293

Reviewed by Darin Adler.

Source/WebCore:

Update CloseEvent to stop using legacy [ConstructorTemplate=Event] and
use a regular constructor as in the specification:
- https://html.spec.whatwg.org/multipage/comms.html#the-closeevent-interfaces

No new tests, updated existing test.

* Modules/websockets/CloseEvent.h:
(WebCore::CloseEvent::create):
(WebCore::CloseEvent::CloseEvent):
* Modules/websockets/CloseEvent.idl:

LayoutTests:

Update existing test to reflect a small behavior change. Passing an explicit
undefined as 'reason' members now initializes the attribute to the empty
string (the member's default value) instead of the string "undefined". This
new behavior matches Chrome and Firefox.

* fast/events/constructors/close-event-constructor-expected.txt:
* fast/events/constructors/close-event-constructor.html:

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

LayoutTests/ChangeLog
LayoutTests/fast/events/constructors/close-event-constructor-expected.txt
LayoutTests/fast/events/constructors/close-event-constructor.html
Source/WebCore/ChangeLog
Source/WebCore/Modules/websockets/CloseEvent.h
Source/WebCore/Modules/websockets/CloseEvent.idl

index 0aca72f..bb349bf 100644 (file)
@@ -1,3 +1,18 @@
+2016-10-11  Chris Dumez  <cdumez@apple.com>
+
+        Update CloseEvent to stop using legacy [ConstructorTemplate=Event]
+        https://bugs.webkit.org/show_bug.cgi?id=163293
+
+        Reviewed by Darin Adler.
+
+        Update existing test to reflect a small behavior change. Passing an explicit
+        undefined as 'reason' members now initializes the attribute to the empty
+        string (the member's default value) instead of the string "undefined". This
+        new behavior matches Chrome and Firefox.
+
+        * fast/events/constructors/close-event-constructor-expected.txt:
+        * fast/events/constructors/close-event-constructor.html:
+
 2016-10-11  Alex Christensen  <achristensen@webkit.org>
 
         Enable URLParser by default
index 5c71a10..33cdac4 100644 (file)
@@ -16,7 +16,7 @@ PASS new CloseEvent('eventType', { wasClean: false }).wasClean is false
 PASS new CloseEvent('eventType', { wasClean: true }).wasClean is true
 PASS new CloseEvent('eventType', { reason: 'koakuma' }).reason is "koakuma"
 PASS new CloseEvent('eventType', { reason: '' }).reason is ""
-PASS new CloseEvent('eventType', { reason: undefined }).reason is "undefined"
+PASS new CloseEvent('eventType', { reason: undefined }).reason is ""
 PASS new CloseEvent('eventType', { reason: null }).reason is "null"
 PASS new CloseEvent('eventType', { reason: false }).reason is "false"
 PASS new CloseEvent('eventType', { reason: true }).reason is "true"
index 7e64c91..5efa608 100644 (file)
@@ -33,7 +33,7 @@ shouldBeEqualToString("new CloseEvent('eventType', { reason: 'koakuma' }).reason
 shouldBeEqualToString("new CloseEvent('eventType', { reason: '' }).reason", "");
 
 // Non-strings.
-shouldBeEqualToString("new CloseEvent('eventType', { reason: undefined }).reason", "undefined");
+shouldBeEqualToString("new CloseEvent('eventType', { reason: undefined }).reason", "");
 shouldBeEqualToString("new CloseEvent('eventType', { reason: null }).reason", "null");
 shouldBeEqualToString("new CloseEvent('eventType', { reason: false }).reason", "false");
 shouldBeEqualToString("new CloseEvent('eventType', { reason: true }).reason", "true");
index a00e173..809e2aa 100644 (file)
@@ -1,3 +1,21 @@
+2016-10-11  Chris Dumez  <cdumez@apple.com>
+
+        Update CloseEvent to stop using legacy [ConstructorTemplate=Event]
+        https://bugs.webkit.org/show_bug.cgi?id=163293
+
+        Reviewed by Darin Adler.
+
+        Update CloseEvent to stop using legacy [ConstructorTemplate=Event] and
+        use a regular constructor as in the specification:
+        - https://html.spec.whatwg.org/multipage/comms.html#the-closeevent-interfaces
+
+        No new tests, updated existing test.
+
+        * Modules/websockets/CloseEvent.h:
+        (WebCore::CloseEvent::create):
+        (WebCore::CloseEvent::CloseEvent):
+        * Modules/websockets/CloseEvent.idl:
+
 2016-10-11  Yusuke Suzuki  <utatane.tea@gmail.com>
 
         [DOMJIT] DOMJIT::Patchpoint should have a way to receive constant folded arguments
index 15497ca..65b56c7 100644 (file)
 
 namespace WebCore {
 
-struct CloseEventInit : public EventInit {
-    bool wasClean { false };
-    unsigned short code { 0 };
-    String reason;
-};
-
 class CloseEvent : public Event {
 public:
     static Ref<CloseEvent> create(bool wasClean, unsigned short code, const String& reason)
@@ -49,9 +43,15 @@ public:
         return adoptRef(*new CloseEvent(wasClean, code, reason));
     }
 
-    static Ref<CloseEvent> createForBindings(const AtomicString& type, const CloseEventInit& initializer)
+    struct Init : EventInit {
+        bool wasClean { false };
+        unsigned short code { 0 };
+        String reason;
+    };
+
+    static Ref<CloseEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
     {
-        return adoptRef(*new CloseEvent(type, initializer));
+        return adoptRef(*new CloseEvent(type, initializer, isTrusted));
     }
 
     bool wasClean() const { return m_wasClean; }
@@ -70,8 +70,8 @@ private:
     {
     }
 
-    CloseEvent(const AtomicString& type, const CloseEventInit& initializer)
-        : Event(type, initializer)
+    CloseEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+        : Event(type, initializer, isTrusted)
         , m_wasClean(initializer.wasClean)
         , m_code(initializer.code)
         , m_reason(initializer.reason)
index 757c070..db536c2 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+// FIXME: This should be exposed to workers as well.
 [
-    ConstructorTemplate=Event
+    Constructor(DOMString type, optional CloseEventInit eventInitDict),
 ] interface CloseEvent : Event {
-    [InitializedByEventConstructor] readonly attribute boolean wasClean;
-    [InitializedByEventConstructor] readonly attribute unsigned short code;
-    [InitializedByEventConstructor] readonly attribute USVString reason;
+    readonly attribute boolean wasClean;
+    readonly attribute unsigned short code;
+    readonly attribute USVString reason;
 };
 
+dictionary CloseEventInit : EventInit {
+    boolean wasClean = false;
+    unsigned short code = 0;
+    USVString reason = "";
+};