Title: [95352] trunk
Revision
95352
Author
commit-qu...@webkit.org
Date
2011-09-16 19:01:29 -0700 (Fri, 16 Sep 2011)

Log Message

Implement an ErrorEvent constructor for JSC
https://bugs.webkit.org/show_bug.cgi?id=68148

Patch by Kentaro Hara <hara...@chromium.org> on 2011-09-16
Reviewed by Sam Weinig.

Source/WebCore:

The spec for the ErrorEvent constructor is here:
http://dev.w3.org/html5/workers/#errorevent

Test: fast/events/constructors/error-event-constructor.html

* bindings/generic/EventConstructors.h: Added a definition for the ErrorEvent constructor.
* bindings/js/JSEventConstructors.cpp: Added #includes for ErrorEvent.
* dom/ErrorEvent.cpp:
(WebCore::ErrorEventInit::ErrorEventInit):
(WebCore::ErrorEvent::ErrorEvent):
(WebCore::ErrorEvent::initErrorEvent):
(WebCore::ErrorEvent::isErrorEvent):
* dom/ErrorEvent.h: Added a definition for ErrorEventInit.
(WebCore::ErrorEvent::create):
(WebCore::ErrorEvent::message):
(WebCore::ErrorEvent::filename):
(WebCore::ErrorEvent::lineno):
* dom/ErrorEvent.idl: Makes ErrorEvent constructible.

LayoutTests:

error-event-constructor.html checks the behavior of the ErrorEvent constructor.

* fast/dom/constructed-objects-prototypes-expected.txt: Now window has ErrorEvent.
* fast/events/constructors/error-event-constructor-expected.txt: Added.
* fast/events/constructors/error-event-constructor.html: Added.
* platform/chromium/test_expectations.txt: Skipped error-event-constructor.html, since V8 does not yet have the ErrorEvent constructor.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (95351 => 95352)


--- trunk/LayoutTests/ChangeLog	2011-09-17 01:47:36 UTC (rev 95351)
+++ trunk/LayoutTests/ChangeLog	2011-09-17 02:01:29 UTC (rev 95352)
@@ -1,3 +1,17 @@
+2011-09-16  Kentaro Hara  <hara...@chromium.org>
+
+        Implement an ErrorEvent constructor for JSC
+        https://bugs.webkit.org/show_bug.cgi?id=68148
+
+        Reviewed by Sam Weinig.
+
+        error-event-constructor.html checks the behavior of the ErrorEvent constructor.
+
+        * fast/dom/constructed-objects-prototypes-expected.txt: Now window has ErrorEvent.
+        * fast/events/constructors/error-event-constructor-expected.txt: Added.
+        * fast/events/constructors/error-event-constructor.html: Added.
+        * platform/chromium/test_expectations.txt: Skipped error-event-constructor.html, since V8 does not yet have the ErrorEvent constructor.
+
 2011-09-16  Adam Barth  <aba...@webkit.org>
 
         CORS images viewed from different domains fail security checks

Modified: trunk/LayoutTests/fast/dom/constructed-objects-prototypes-expected.txt (95351 => 95352)


--- trunk/LayoutTests/fast/dom/constructed-objects-prototypes-expected.txt	2011-09-17 01:47:36 UTC (rev 95351)
+++ trunk/LayoutTests/fast/dom/constructed-objects-prototypes-expected.txt	2011-09-17 02:01:29 UTC (rev 95352)
@@ -9,6 +9,8 @@
 PASS (new inner.CustomEvent()).constructor.isInner is true
 PASS (new inner.DOMParser()).isInner is true
 PASS (new inner.DOMParser()).constructor.isInner is true
+PASS (new inner.ErrorEvent()).isInner is true
+PASS (new inner.ErrorEvent()).constructor.isInner is true
 PASS (new inner.Event()).isInner is true
 PASS (new inner.Event()).constructor.isInner is true
 PASS (new inner.FormData()).isInner is true

Added: trunk/LayoutTests/fast/events/constructors/error-event-constructor-expected.txt (0 => 95352)


--- trunk/LayoutTests/fast/events/constructors/error-event-constructor-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/events/constructors/error-event-constructor-expected.txt	2011-09-17 02:01:29 UTC (rev 95352)
@@ -0,0 +1,71 @@
+This tests the constructor for the ErrorEvent DOM class.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS new ErrorEvent('eventType').bubbles is false
+PASS new ErrorEvent('eventType').cancelable is false
+PASS new ErrorEvent('eventType').message is ""
+PASS new ErrorEvent('eventType').filename is ""
+PASS new ErrorEvent('eventType').lineno is 0
+PASS new ErrorEvent('eventType', { bubbles: false }).bubbles is false
+PASS new ErrorEvent('eventType', { bubbles: true }).bubbles is true
+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: null }).message is "null"
+PASS new ErrorEvent('eventType', { message: false }).message is "false"
+PASS new ErrorEvent('eventType', { message: true }).message is "true"
+PASS new ErrorEvent('eventType', { message: 12345 }).message is "12345"
+PASS new ErrorEvent('eventType', { message: 18446744073709551615 }).message is "18446744073709552000"
+PASS new ErrorEvent('eventType', { message: NaN }).message is "NaN"
+PASS new ErrorEvent('eventType', { message: [] }).message is ""
+PASS new ErrorEvent('eventType', { message: [1, 2, 3] }).message is "1,2,3"
+PASS new ErrorEvent('eventType', { message: {melancholy: 12345} }).message is "[object Object]"
+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: null }).filename is "null"
+PASS new ErrorEvent('eventType', { filename: false }).filename is "false"
+PASS new ErrorEvent('eventType', { filename: true }).filename is "true"
+PASS new ErrorEvent('eventType', { filename: 12345 }).filename is "12345"
+PASS new ErrorEvent('eventType', { filename: 18446744073709551615 }).filename is "18446744073709552000"
+PASS new ErrorEvent('eventType', { filename: NaN }).filename is "NaN"
+PASS new ErrorEvent('eventType', { filename: [] }).filename is ""
+PASS new ErrorEvent('eventType', { filename: [1, 2, 3] }).filename is "1,2,3"
+PASS new ErrorEvent('eventType', { filename: {melancholy: 12345} }).filename is "[object Object]"
+PASS new ErrorEvent('eventType', { filename: {valueOf: function () { return 'melancholy'; } } }).filename is "[object Object]"
+PASS new ErrorEvent('eventType', { lineno: 0 }).lineno is 0
+PASS new ErrorEvent('eventType', { lineno: 1 }).lineno is 1
+PASS new ErrorEvent('eventType', { lineno: 4294967294 }).lineno is 4294967294
+PASS new ErrorEvent('eventType', { lineno: 4294967295 }).lineno is 4294967295
+PASS new ErrorEvent('eventType', { lineno: 9007199254740991 }).lineno is 4294967295
+PASS new ErrorEvent('eventType', { lineno: 18446744073709551615 }).lineno is 0
+PASS new ErrorEvent('eventType', { lineno: 12345678901234567890 }).lineno is 3944679424
+PASS new ErrorEvent('eventType', { lineno: -1 }).lineno is 4294967295
+PASS new ErrorEvent('eventType', { lineno: 123.45 }).lineno is 123
+PASS new ErrorEvent('eventType', { lineno: NaN }).lineno is 0
+PASS new ErrorEvent('eventType', { lineno: undefined }).lineno is 0
+PASS new ErrorEvent('eventType', { lineno: null }).lineno is 0
+PASS new ErrorEvent('eventType', { lineno: '' }).lineno is 0
+PASS new ErrorEvent('eventType', { lineno: '12345' }).lineno is 12345
+PASS new ErrorEvent('eventType', { lineno: '12345a' }).lineno is 0
+PASS new ErrorEvent('eventType', { lineno: 'abc' }).lineno is 0
+PASS new ErrorEvent('eventType', { lineno: [] }).lineno is 0
+PASS new ErrorEvent('eventType', { lineno: [12345] }).lineno is 12345
+PASS new ErrorEvent('eventType', { lineno: [12345, 67890] }).lineno is 0
+PASS new ErrorEvent('eventType', { lineno: {} }).lineno is 0
+PASS new ErrorEvent('eventType', { lineno: {moemoe: 12345} }).lineno is 0
+PASS new ErrorEvent('eventType', { lineno: {valueOf: function () { return 12345; }} }).lineno is 12345
+PASS new ErrorEvent('eventType', { bubbles: true, cancelable: true, message: 'sakuranbo', filename: 'amaenbo', lineno: 12345 }).bubbles is true
+PASS new ErrorEvent('eventType', { bubbles: true, cancelable: true, message: 'sakuranbo', filename: 'amaenbo', lineno: 12345 }).cancelable is true
+PASS new ErrorEvent('eventType', { bubbles: true, cancelable: true, message: 'sakuranbo', filename: 'amaenbo', lineno: 12345 }).message is "sakuranbo"
+PASS new ErrorEvent('eventType', { bubbles: true, cancelable: true, message: 'sakuranbo', filename: 'amaenbo', lineno: 12345 }).filename is "amaenbo"
+PASS new ErrorEvent('eventType', { bubbles: true, cancelable: true, message: 'sakuranbo', filename: 'amaenbo', lineno: 12345 }).lineno is 12345
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/fast/events/constructors/error-event-constructor.html (0 => 95352)


--- trunk/LayoutTests/fast/events/constructors/error-event-constructor.html	                        (rev 0)
+++ trunk/LayoutTests/fast/events/constructors/error-event-constructor.html	2011-09-17 02:01:29 UTC (rev 95352)
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="stylesheet" href=""
+<script src=""
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script>
+
+description("This tests the constructor for the ErrorEvent DOM class.");
+
+// No initializer is passed.
+shouldBe("new ErrorEvent('eventType').bubbles", "false");
+shouldBe("new ErrorEvent('eventType').cancelable", "false");
+shouldBeEqualToString("new ErrorEvent('eventType').message", "");
+shouldBeEqualToString("new ErrorEvent('eventType').filename", "");
+shouldBe("new ErrorEvent('eventType').lineno", "0");
+
+// bubbles is passed.
+shouldBe("new ErrorEvent('eventType', { bubbles: false }).bubbles", "false");
+shouldBe("new ErrorEvent('eventType', { bubbles: true }).bubbles", "true");
+
+// cancelable is passed.
+shouldBe("new ErrorEvent('eventType', { cancelable: false }).cancelable", "false");
+shouldBe("new ErrorEvent('eventType', { cancelable: true }).cancelable", "true");
+
+// message or filename is passed.
+["message", "filename"].forEach(function (attr) {
+    // Strings.
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": 'melancholy' })." + attr, "melancholy");
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": '' })." + attr, "");
+
+    // Non-strings.
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": undefined })." + attr, "undefined");
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": null })." + attr, "null");
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": false })." + attr, "false");
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": true })." + attr, "true");
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": 12345 })." + attr, "12345");
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": 18446744073709551615 })." + attr, "18446744073709552000");
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": NaN })." + attr, "NaN");
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": [] })." + attr, "");
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": [1, 2, 3] })." + attr, "1,2,3");
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": {melancholy: 12345} })." + attr, "[object Object]");
+    shouldBeEqualToString("new ErrorEvent('eventType', { " + attr + ": {valueOf: function () { return 'melancholy'; } } })." + attr, "[object Object]");
+});
+
+// lineno is passed.
+// numbers within the unsigned long range.
+shouldBe("new ErrorEvent('eventType', { lineno: 0 }).lineno", "0");
+shouldBe("new ErrorEvent('eventType', { lineno: 1 }).lineno", "1");
+shouldBe("new ErrorEvent('eventType', { lineno: 4294967294 }).lineno", "4294967294");
+shouldBe("new ErrorEvent('eventType', { lineno: 4294967295 }).lineno", "4294967295");
+
+// numbers out of the unsigned long range.
+// 2^{53}-1, the largest number that can be exactly represented by double.
+shouldBe("new ErrorEvent('eventType', { lineno: 9007199254740991 }).lineno", "4294967295");
+// 2^{64}-1
+shouldBe("new ErrorEvent('eventType', { lineno: 18446744073709551615 }).lineno", "0");
+shouldBe("new ErrorEvent('eventType', { lineno: 12345678901234567890 }).lineno", "3944679424");
+shouldBe("new ErrorEvent('eventType', { lineno: -1 }).lineno", "4294967295");
+shouldBe("new ErrorEvent('eventType', { lineno: 123.45 }).lineno", "123");
+shouldBe("new ErrorEvent('eventType', { lineno: NaN }).lineno", "0");
+
+// Non-numeric values.
+shouldBe("new ErrorEvent('eventType', { lineno: undefined }).lineno", "0");
+shouldBe("new ErrorEvent('eventType', { lineno: null }).lineno", "0");
+shouldBe("new ErrorEvent('eventType', { lineno: '' }).lineno", "0");
+shouldBe("new ErrorEvent('eventType', { lineno: '12345' }).lineno", "12345");
+shouldBe("new ErrorEvent('eventType', { lineno: '12345a' }).lineno", "0");
+shouldBe("new ErrorEvent('eventType', { lineno: 'abc' }).lineno", "0");
+shouldBe("new ErrorEvent('eventType', { lineno: [] }).lineno", "0");
+shouldBe("new ErrorEvent('eventType', { lineno: [12345] }).lineno", "12345");
+shouldBe("new ErrorEvent('eventType', { lineno: [12345, 67890] }).lineno", "0");
+shouldBe("new ErrorEvent('eventType', { lineno: {} }).lineno", "0");
+shouldBe("new ErrorEvent('eventType', { lineno: {moemoe: 12345} }).lineno", "0");
+shouldBe("new ErrorEvent('eventType', { lineno: {valueOf: function () { return 12345; }} }).lineno", "12345");
+
+// All initializers are passed.
+shouldBe("new ErrorEvent('eventType', { bubbles: true, cancelable: true, message: 'sakuranbo', filename: 'amaenbo', lineno: 12345 }).bubbles", "true");
+shouldBe("new ErrorEvent('eventType', { bubbles: true, cancelable: true, message: 'sakuranbo', filename: 'amaenbo', lineno: 12345 }).cancelable", "true");
+shouldBeEqualToString("new ErrorEvent('eventType', { bubbles: true, cancelable: true, message: 'sakuranbo', filename: 'amaenbo', lineno: 12345 }).message", "sakuranbo");
+shouldBeEqualToString("new ErrorEvent('eventType', { bubbles: true, cancelable: true, message: 'sakuranbo', filename: 'amaenbo', lineno: 12345 }).filename", "amaenbo");
+shouldBe("new ErrorEvent('eventType', { bubbles: true, cancelable: true, message: 'sakuranbo', filename: 'amaenbo', lineno: 12345 }).lineno", "12345");
+
+var successfullyParsed = true;
+</script>
+<script src=""
+</body>
+</html>

Modified: trunk/LayoutTests/platform/chromium/test_expectations.txt (95351 => 95352)


--- trunk/LayoutTests/platform/chromium/test_expectations.txt	2011-09-17 01:47:36 UTC (rev 95351)
+++ trunk/LayoutTests/platform/chromium/test_expectations.txt	2011-09-17 02:01:29 UTC (rev 95352)
@@ -60,6 +60,9 @@
 // Implement java testing harness.
 BUGCR36681 SKIP : java = TEXT
 
+// This will soon be fixed after implementing an ErrorEvent constructor for V8.
+BUGWK68148 : fast/events/constructors/error-event-constructor.html = FAIL
+
 // Quota API is not supported in DRT yet.
 BUGCR84572 SKIP : storage/storageinfo-query-usage.html = FAIL
 BUGCR84572 SKIP : storage/storageinfo-request-quota.html = FAIL

Modified: trunk/Source/WebCore/ChangeLog (95351 => 95352)


--- trunk/Source/WebCore/ChangeLog	2011-09-17 01:47:36 UTC (rev 95351)
+++ trunk/Source/WebCore/ChangeLog	2011-09-17 02:01:29 UTC (rev 95352)
@@ -1,3 +1,29 @@
+2011-09-16  Kentaro Hara  <hara...@chromium.org>
+
+        Implement an ErrorEvent constructor for JSC
+        https://bugs.webkit.org/show_bug.cgi?id=68148
+
+        Reviewed by Sam Weinig.
+
+        The spec for the ErrorEvent constructor is here:
+        http://dev.w3.org/html5/workers/#errorevent
+
+        Test: fast/events/constructors/error-event-constructor.html
+
+        * bindings/generic/EventConstructors.h: Added a definition for the ErrorEvent constructor.
+        * bindings/js/JSEventConstructors.cpp: Added #includes for ErrorEvent.
+        * dom/ErrorEvent.cpp:
+        (WebCore::ErrorEventInit::ErrorEventInit):
+        (WebCore::ErrorEvent::ErrorEvent):
+        (WebCore::ErrorEvent::initErrorEvent):
+        (WebCore::ErrorEvent::isErrorEvent):
+        * dom/ErrorEvent.h: Added a definition for ErrorEventInit.
+        (WebCore::ErrorEvent::create):
+        (WebCore::ErrorEvent::message):
+        (WebCore::ErrorEvent::filename):
+        (WebCore::ErrorEvent::lineno):
+        * dom/ErrorEvent.idl: Makes ErrorEvent constructible.
+
 2011-09-16  Kentaro Hara  <hara...@google.com>
 
         Overhangs a ruby by no more than half the width of the neighboring text.

Modified: trunk/Source/WebCore/bindings/generic/EventConstructors.h (95351 => 95352)


--- trunk/Source/WebCore/bindings/generic/EventConstructors.h	2011-09-17 01:47:36 UTC (rev 95351)
+++ trunk/Source/WebCore/bindings/generic/EventConstructors.h	2011-09-17 02:01:29 UTC (rev 95352)
@@ -81,7 +81,16 @@
         FILL_PROPERTY(state) \
     DICTIONARY_END(PopStateEvent)
 
+#define INSTANTIATE_INITIALIZING_CONSTRUCTOR_FOR_ERROR_EVENT(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY) \
+    \
+    DICTIONARY_START(ErrorEvent) \
+        FILL_PARENT_PROPERTIES(Event) \
+        FILL_PROPERTY(message) \
+        FILL_PROPERTY(filename) \
+        FILL_PROPERTY(lineno) \
+    DICTIONARY_END(ErrorEvent)
 
+
 #define INSTANTIATE_ALL_EVENT_INITIALIZING_CONSTRUCTORS(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY) \
     INSTANTIATE_INITIALIZING_CONSTRUCTOR_FOR_EVENT(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY) \
     INSTANTIATE_INITIALIZING_CONSTRUCTOR_FOR_CUSTOM_EVENT(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY) \
@@ -90,6 +99,7 @@
     INSTANTIATE_INITIALIZING_CONSTRUCTOR_FOR_HASH_CHANGE_EVENT(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY) \
     INSTANTIATE_INITIALIZING_CONSTRUCTOR_FOR_PAGE_TRANSITION_EVENT(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY) \
     INSTANTIATE_INITIALIZING_CONSTRUCTOR_FOR_POP_STATE_EVENT(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY) \
+    INSTANTIATE_INITIALIZING_CONSTRUCTOR_FOR_ERROR_EVENT(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY) \
 
 } // namespace WebCore
 

Modified: trunk/Source/WebCore/bindings/js/JSEventConstructors.cpp (95351 => 95352)


--- trunk/Source/WebCore/bindings/js/JSEventConstructors.cpp	2011-09-17 01:47:36 UTC (rev 95351)
+++ trunk/Source/WebCore/bindings/js/JSEventConstructors.cpp	2011-09-17 02:01:29 UTC (rev 95352)
@@ -27,10 +27,12 @@
 #include "EventConstructors.h"
 
 #include "CustomEvent.h"
+#include "ErrorEvent.h"
 #include "Event.h"
 #include "HashChangeEvent.h"
 #include "JSCustomEvent.h"
 #include "JSDictionary.h"
+#include "JSErrorEvent.h"
 #include "JSEvent.h"
 #include "JSHashChangeEvent.h"
 #include "JSPageTransitionEvent.h"

Modified: trunk/Source/WebCore/dom/ErrorEvent.cpp (95351 => 95352)


--- trunk/Source/WebCore/dom/ErrorEvent.cpp	2011-09-17 01:47:36 UTC (rev 95351)
+++ trunk/Source/WebCore/dom/ErrorEvent.cpp	2011-09-17 02:01:29 UTC (rev 95352)
@@ -36,10 +36,25 @@
 
 namespace WebCore {
 
+ErrorEventInit::ErrorEventInit()
+    : message()
+    , filename()
+    , lineno(0)
+{
+}
+
 ErrorEvent::ErrorEvent()
 {
 }
 
+ErrorEvent::ErrorEvent(const AtomicString& type, const ErrorEventInit& initializer)
+    : Event(type, initializer)
+    , m_message(initializer.message)
+    , m_fileName(initializer.filename)
+    , m_lineNumber(initializer.lineno)
+{
+}
+
 ErrorEvent::ErrorEvent(const String& message, const String& fileName, unsigned lineNumber)
     : Event(eventNames().errorEvent, false, true)
     , m_message(message)
@@ -56,15 +71,15 @@
 {
     if (dispatched())
         return;
-        
+
     initEvent(type, canBubble, cancelable);
-    
+
     m_message = message;
     m_fileName = fileName;
     m_lineNumber = lineNumber;
 }
 
-bool ErrorEvent::isErrorEvent() const 
+bool ErrorEvent::isErrorEvent() const
 {
     return true;
 }

Modified: trunk/Source/WebCore/dom/ErrorEvent.h (95351 => 95352)


--- trunk/Source/WebCore/dom/ErrorEvent.h	2011-09-17 01:47:36 UTC (rev 95351)
+++ trunk/Source/WebCore/dom/ErrorEvent.h	2011-09-17 02:01:29 UTC (rev 95352)
@@ -36,35 +36,48 @@
 
 namespace WebCore {
 
-    class ErrorEvent : public Event {
-    public:
-        static PassRefPtr<ErrorEvent> create()
-        {
-            return adoptRef(new ErrorEvent);
-        }
-        static PassRefPtr<ErrorEvent> create(const String& message, const String& fileName, unsigned lineNumber)
-        {
-            return adoptRef(new ErrorEvent(message, fileName, lineNumber));
-        }
-        virtual ~ErrorEvent();
+struct ErrorEventInit : public EventInit {
+    ErrorEventInit();
 
-        void initErrorEvent(const AtomicString& type, bool canBubble, bool cancelable, const String& message, const String& fileName, unsigned lineNumber);
+    String message;
+    String filename;
+    unsigned lineno;
+};
 
-        const String& message() const { return m_message; }
-        const String& filename() const { return m_fileName; }
-        unsigned lineno() const { return m_lineNumber; }
+class ErrorEvent : public Event {
+public:
+    static PassRefPtr<ErrorEvent> create()
+    {
+        return adoptRef(new ErrorEvent);
+    }
+    static PassRefPtr<ErrorEvent> create(const String& message, const String& fileName, unsigned lineNumber)
+    {
+        return adoptRef(new ErrorEvent(message, fileName, lineNumber));
+    }
+    static PassRefPtr<ErrorEvent> create(const AtomicString& type, const ErrorEventInit& initializer)
+    {
+        return adoptRef(new ErrorEvent(type, initializer));
+    }
+    virtual ~ErrorEvent();
 
-        virtual bool isErrorEvent() const;
+    void initErrorEvent(const AtomicString& type, bool canBubble, bool cancelable, const String& message, const String& fileName, unsigned lineNumber);
 
-    private:    
-        ErrorEvent();
-        ErrorEvent(const String& message, const String& fileName, unsigned lineNumber);
+    const String& message() const { return m_message; }
+    const String& filename() const { return m_fileName; }
+    unsigned lineno() const { return m_lineNumber; }
 
-        String m_message;
-        String m_fileName;
-        unsigned m_lineNumber;
-    };
+    virtual bool isErrorEvent() const;
 
+private:
+    ErrorEvent();
+    ErrorEvent(const String& message, const String& fileName, unsigned lineNumber);
+    ErrorEvent(const AtomicString&, const ErrorEventInit&);
+
+    String m_message;
+    String m_fileName;
+    unsigned m_lineNumber;
+};
+
 } // namespace WebCore
 
 #endif // ErrorEvent_h

Modified: trunk/Source/WebCore/dom/ErrorEvent.idl (95351 => 95352)


--- trunk/Source/WebCore/dom/ErrorEvent.idl	2011-09-17 01:47:36 UTC (rev 95351)
+++ trunk/Source/WebCore/dom/ErrorEvent.idl	2011-09-17 02:01:29 UTC (rev 95352)
@@ -31,7 +31,9 @@
 module events {
 
     interface [
-        NoStaticTables
+        NoStaticTables,
+        CanBeConstructed,
+        CustomConstructFunction
     ] ErrorEvent : Event {
 
         readonly attribute DOMString message;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to