Title: [87139] trunk/Source/WebCore
Revision
87139
Author
[email protected]
Date
2011-05-24 02:15:49 -0700 (Tue, 24 May 2011)

Log Message

2011-05-24  Yuta Kitamura  <[email protected]>

        Reviewed by Kent Tamura.

        WebSocket: Add fail() to WebSocketChannel and its family
        https://bugs.webkit.org/show_bug.cgi?id=61277

        This is the first part of refactoring effort described in bug 61115.
        Existing error reports will be modified to use fail() in a later patch.

        No change in behavior, thus no new tests.

        * websockets/ThreadableWebSocketChannel.h:
        * websockets/WebSocketChannel.cpp:
        (WebCore::WebSocketChannel::fail):
        * websockets/WebSocketChannel.h:
        * websockets/WorkerThreadableWebSocketChannel.cpp:
        (WebCore::WorkerThreadableWebSocketChannel::fail):
        (WebCore::WorkerThreadableWebSocketChannel::Peer::fail):
        (WebCore::WorkerThreadableWebSocketChannel::mainThreadFail):
        (WebCore::WorkerThreadableWebSocketChannel::Bridge::fail):
        * websockets/WorkerThreadableWebSocketChannel.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (87138 => 87139)


--- trunk/Source/WebCore/ChangeLog	2011-05-24 09:05:20 UTC (rev 87138)
+++ trunk/Source/WebCore/ChangeLog	2011-05-24 09:15:49 UTC (rev 87139)
@@ -1,3 +1,26 @@
+2011-05-24  Yuta Kitamura  <[email protected]>
+
+        Reviewed by Kent Tamura.
+
+        WebSocket: Add fail() to WebSocketChannel and its family
+        https://bugs.webkit.org/show_bug.cgi?id=61277
+
+        This is the first part of refactoring effort described in bug 61115.
+        Existing error reports will be modified to use fail() in a later patch.
+
+        No change in behavior, thus no new tests.
+
+        * websockets/ThreadableWebSocketChannel.h:
+        * websockets/WebSocketChannel.cpp:
+        (WebCore::WebSocketChannel::fail):
+        * websockets/WebSocketChannel.h:
+        * websockets/WorkerThreadableWebSocketChannel.cpp:
+        (WebCore::WorkerThreadableWebSocketChannel::fail):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::fail):
+        (WebCore::WorkerThreadableWebSocketChannel::mainThreadFail):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::fail):
+        * websockets/WorkerThreadableWebSocketChannel.h:
+
 2011-05-24  Andras Becsi  <[email protected]>
 
         Reviewed by Csaba Osztrogonác.

Modified: trunk/Source/WebCore/websockets/ThreadableWebSocketChannel.h (87138 => 87139)


--- trunk/Source/WebCore/websockets/ThreadableWebSocketChannel.h	2011-05-24 09:05:20 UTC (rev 87138)
+++ trunk/Source/WebCore/websockets/ThreadableWebSocketChannel.h	2011-05-24 09:15:49 UTC (rev 87139)
@@ -53,6 +53,8 @@
     virtual bool send(const String& message) = 0;
     virtual unsigned long bufferedAmount() const = 0;
     virtual void close() = 0;
+    // Log the reason text and close the connection. Will call didClose().
+    virtual void fail(const String& reason) = 0;
     virtual void disconnect() = 0; // Will suppress didClose().
 
     virtual void suspend() = 0;

Modified: trunk/Source/WebCore/websockets/WebSocketChannel.cpp (87138 => 87139)


--- trunk/Source/WebCore/websockets/WebSocketChannel.cpp	2011-05-24 09:05:20 UTC (rev 87138)
+++ trunk/Source/WebCore/websockets/WebSocketChannel.cpp	2011-05-24 09:15:49 UTC (rev 87139)
@@ -121,6 +121,16 @@
         m_handle->close();  // will call didClose()
 }
 
+void WebSocketChannel::fail(const String& reason)
+{
+    LOG(Network, "WebSocketChannel %p fail: %s", this, reason.utf8().data());
+    ASSERT(!m_suspended);
+    if (m_context)
+        m_context->addMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, reason, 0, m_handshake.clientOrigin(), 0);
+    if (m_handle)
+        m_handle->close(); // Will call didClose().
+}
+
 void WebSocketChannel::disconnect()
 {
     LOG(Network, "WebSocketChannel %p disconnect", this);

Modified: trunk/Source/WebCore/websockets/WebSocketChannel.h (87138 => 87139)


--- trunk/Source/WebCore/websockets/WebSocketChannel.h	2011-05-24 09:05:20 UTC (rev 87138)
+++ trunk/Source/WebCore/websockets/WebSocketChannel.h	2011-05-24 09:15:49 UTC (rev 87139)
@@ -58,7 +58,8 @@
         virtual bool send(const String& message);
         virtual unsigned long bufferedAmount() const;
         virtual void close();
-        virtual void disconnect(); // Will suppress didClose().
+        virtual void fail(const String& reason);
+        virtual void disconnect();
 
         virtual void suspend();
         virtual void resume();

Modified: trunk/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp (87138 => 87139)


--- trunk/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp	2011-05-24 09:05:20 UTC (rev 87138)
+++ trunk/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp	2011-05-24 09:15:49 UTC (rev 87139)
@@ -88,6 +88,12 @@
         m_bridge->close();
 }
 
+void WorkerThreadableWebSocketChannel::fail(const String& reason)
+{
+    if (m_bridge)
+        m_bridge->fail(reason);
+}
+
 void WorkerThreadableWebSocketChannel::disconnect()
 {
     m_bridge->disconnect();
@@ -171,6 +177,14 @@
     m_mainWebSocketChannel = 0;
 }
 
+void WorkerThreadableWebSocketChannel::Peer::fail(const String& reason)
+{
+    ASSERT(isMainThread());
+    if (!m_mainWebSocketChannel)
+        return;
+    m_mainWebSocketChannel->fail(reason);
+}
+
 void WorkerThreadableWebSocketChannel::Peer::disconnect()
 {
     ASSERT(isMainThread());
@@ -286,8 +300,7 @@
 {
     ASSERT(m_workerClientWrapper);
     ASSERT(m_peer);
-    m_loaderProxy.postTaskToLoader(
-        createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadConnect, AllowCrossThreadAccess(m_peer)));
+    m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadConnect, AllowCrossThreadAccess(m_peer)));
 }
 
 void WorkerThreadableWebSocketChannel::mainThreadSend(ScriptExecutionContext* context, Peer* peer, const String& message)
@@ -305,9 +318,7 @@
         return false;
     ASSERT(m_peer);
     setMethodNotCompleted();
-    m_loaderProxy.postTaskToLoader(
-        createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadSend,
-                           AllowCrossThreadAccess(m_peer), message));
+    m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadSend, AllowCrossThreadAccess(m_peer), message));
     RefPtr<Bridge> protect(this);
     waitForMethodCompletion();
     ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
@@ -329,8 +340,7 @@
         return 0;
     ASSERT(m_peer);
     setMethodNotCompleted();
-    m_loaderProxy.postTaskToLoader(
-        createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadBufferedAmount, AllowCrossThreadAccess(m_peer)));
+    m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadBufferedAmount, AllowCrossThreadAccess(m_peer)));
     RefPtr<Bridge> protect(this);
     waitForMethodCompletion();
     ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
@@ -351,10 +361,24 @@
 void WorkerThreadableWebSocketChannel::Bridge::close()
 {
     ASSERT(m_peer);
-    m_loaderProxy.postTaskToLoader(
-        createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadClose, AllowCrossThreadAccess(m_peer)));
+    m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadClose, AllowCrossThreadAccess(m_peer)));
 }
 
+void WorkerThreadableWebSocketChannel::mainThreadFail(ScriptExecutionContext* context, Peer* peer, const String& reason)
+{
+    ASSERT(isMainThread());
+    ASSERT_UNUSED(context, context->isDocument());
+    ASSERT(peer);
+
+    peer->fail(reason);
+}
+
+void WorkerThreadableWebSocketChannel::Bridge::fail(const String& reason)
+{
+    ASSERT(m_peer);
+    m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadFail, AllowCrossThreadAccess(m_peer), reason));
+}
+
 void WorkerThreadableWebSocketChannel::mainThreadDestroy(ScriptExecutionContext* context, Peer* peer)
 {
     ASSERT(isMainThread());
@@ -370,8 +394,7 @@
     if (m_peer) {
         Peer* peer = m_peer;
         m_peer = 0;
-        m_loaderProxy.postTaskToLoader(
-            createCallbackTask(&mainThreadDestroy, AllowCrossThreadAccess(peer)));
+        m_loaderProxy.postTaskToLoader(createCallbackTask(&mainThreadDestroy, AllowCrossThreadAccess(peer)));
     }
     m_workerContext = 0;
 }
@@ -388,8 +411,7 @@
 void WorkerThreadableWebSocketChannel::Bridge::suspend()
 {
     ASSERT(m_peer);
-    m_loaderProxy.postTaskToLoader(
-        createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadSuspend, AllowCrossThreadAccess(m_peer)));
+    m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadSuspend, AllowCrossThreadAccess(m_peer)));
 }
 
 void WorkerThreadableWebSocketChannel::mainThreadResume(ScriptExecutionContext* context, Peer* peer)
@@ -404,8 +426,7 @@
 void WorkerThreadableWebSocketChannel::Bridge::resume()
 {
     ASSERT(m_peer);
-    m_loaderProxy.postTaskToLoader(
-        createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadResume, AllowCrossThreadAccess(m_peer)));
+    m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadResume, AllowCrossThreadAccess(m_peer)));
 }
 
 void WorkerThreadableWebSocketChannel::Bridge::clearClientWrapper()

Modified: trunk/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.h (87138 => 87139)


--- trunk/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.h	2011-05-24 09:05:20 UTC (rev 87138)
+++ trunk/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.h	2011-05-24 09:15:49 UTC (rev 87139)
@@ -64,6 +64,7 @@
     virtual bool send(const String& message);
     virtual unsigned long bufferedAmount() const;
     virtual void close();
+    virtual void fail(const String& reason);
     virtual void disconnect(); // Will suppress didClose().
     virtual void suspend();
     virtual void resume();
@@ -91,6 +92,7 @@
         void send(const String& message);
         void bufferedAmount();
         void close();
+        void fail(const String& reason);
         void disconnect();
         void suspend();
         void resume();
@@ -120,6 +122,7 @@
         bool send(const String& message);
         unsigned long bufferedAmount();
         void close();
+        void fail(const String& reason);
         void disconnect();
         void suspend();
         void resume();
@@ -154,6 +157,7 @@
     static void mainThreadSend(ScriptExecutionContext*, Peer*, const String& message);
     static void mainThreadBufferedAmount(ScriptExecutionContext*, Peer*);
     static void mainThreadClose(ScriptExecutionContext*, Peer*);
+    static void mainThreadFail(ScriptExecutionContext*, Peer*, const String& reason);
     static void mainThreadDestroy(ScriptExecutionContext*, Peer*);
     static void mainThreadSuspend(ScriptExecutionContext*, Peer*);
     static void mainThreadResume(ScriptExecutionContext*, Peer*);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to