2009-07-21 Jian Li <jianli@chromium.org>
authorjianli@chromium.org <jianli@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 22 Jul 2009 00:43:21 +0000 (00:43 +0000)
committerjianli@chromium.org <jianli@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 22 Jul 2009 00:43:21 +0000 (00:43 +0000)
        Reviewed by David Levin.

        Implement AbstractWorker::dispatchScriptErrorEvent by generating an ErrorEvent.
        https://bugs.webkit.org/show_bug.cgi?id=27515

        * workers/AbstractWorker.cpp:
        (WebCore::AbstractWorker::dispatchScriptErrorEvent):

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

WebCore/ChangeLog
WebCore/workers/AbstractWorker.cpp

index 85baed3..511c27b 100644 (file)
@@ -1,3 +1,13 @@
+2009-07-21  Jian Li  <jianli@chromium.org>
+
+        Reviewed by David Levin.
+
+        Implement AbstractWorker::dispatchScriptErrorEvent by generating an ErrorEvent.
+        https://bugs.webkit.org/show_bug.cgi?id=27515
+
+        * workers/AbstractWorker.cpp:
+        (WebCore::AbstractWorker::dispatchScriptErrorEvent):
+
 2009-07-21  Eric Seidel  <eric@webkit.org>
 
         Reviewed by Adam Barth.
index a6808fb..d7766b6 100644 (file)
@@ -34,6 +34,7 @@
 
 #include "AbstractWorker.h"
 
+#include "ErrorEvent.h"
 #include "Event.h"
 #include "EventException.h"
 #include "EventNames.h"
@@ -114,10 +115,18 @@ void AbstractWorker::dispatchLoadErrorEvent()
     ASSERT(!ec);
 }
 
-void AbstractWorker::dispatchScriptErrorEvent(const String&, const String&, int)
+void AbstractWorker::dispatchScriptErrorEvent(const String& message, const String& sourceURL, int lineNumber)
 {
-    //FIXME: Generate an ErrorEvent instead of a simple event
-    dispatchLoadErrorEvent();
+    RefPtr<ErrorEvent> event = ErrorEvent::create(message, sourceURL, static_cast<unsigned>(lineNumber));
+    if (m_onErrorListener) {
+        event->setTarget(this);
+        event->setCurrentTarget(this);
+        m_onErrorListener->handleEvent(event.get(), true);
+    }
+
+    ExceptionCode ec = 0;
+    dispatchEvent(event.release(), ec);
+    ASSERT(!ec);
 }
 
 } // namespace WebCore