Title: [101507] trunk/Source/WebCore
Revision
101507
Author
[email protected]
Date
2011-11-30 06:47:07 -0800 (Wed, 30 Nov 2011)

Log Message

Add didUpdateBufferedAmount() callback to SocketStreamHandleClient
and WebSocketChannelClient.
https://bugs.webkit.org/show_bug.cgi?id=73290

Patch by Takashi Toyoshima <[email protected]> on 2011-11-30
Reviewed by Kent Tamura.

No new tests because this callback is not used in WebCore.

* platform/network/SocketStreamHandleBase.cpp: Invoke new callback.
(WebCore::SocketStreamHandleBase::send):
(WebCore::SocketStreamHandleBase::sendPendingData):
* platform/network/SocketStreamHandleBase.h: Change returning value type.
(WebCore::SocketStreamHandleBase::bufferedAmount):
* platform/network/SocketStreamHandleClient.h: Add new callback definition.
(WebCore::SocketStreamHandleClient::didUpdateBufferedAmount):
* websockets/ThreadableWebSocketChannelClientWrapper.cpp: Add new callback handling.
(WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount):
(WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmountCallback):
* websockets/ThreadableWebSocketChannelClientWrapper.h: Add new callback inheritance and its helper method.
* websockets/WebSocket.cpp: Add new callback handling.
(WebCore::WebSocket::didUpdateBufferedAmount):
* websockets/WebSocket.h: Add new callback inheritance.
* websockets/WebSocketChannel.cpp: Add new callback handling.
(WebCore::WebSocketChannel::didUpdateBufferedAmount):
* websockets/WebSocketChannel.h: Add new callback inheritacne.
* websockets/WebSocketChannelClient.h: Add new callback definition.
(WebCore::WebSocketChannelClient::didUpdateBufferedAmount):
* websockets/WorkerThreadableWebSocketChannel.cpp: Add new callback handling.
(WebCore::workerContextDidUpdateBufferedAmount):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didUpdateBufferedAmount):
* websockets/WorkerThreadableWebSocketChannel.h: Add new callback inheritance and its helper method.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (101506 => 101507)


--- trunk/Source/WebCore/ChangeLog	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/ChangeLog	2011-11-30 14:47:07 UTC (rev 101507)
@@ -1,3 +1,37 @@
+2011-11-30  Takashi Toyoshima  <[email protected]>
+
+        Add didUpdateBufferedAmount() callback to SocketStreamHandleClient
+        and WebSocketChannelClient.
+        https://bugs.webkit.org/show_bug.cgi?id=73290
+
+        Reviewed by Kent Tamura.
+
+        No new tests because this callback is not used in WebCore.
+
+        * platform/network/SocketStreamHandleBase.cpp: Invoke new callback.
+        (WebCore::SocketStreamHandleBase::send):
+        (WebCore::SocketStreamHandleBase::sendPendingData):
+        * platform/network/SocketStreamHandleBase.h: Change returning value type.
+        (WebCore::SocketStreamHandleBase::bufferedAmount):
+        * platform/network/SocketStreamHandleClient.h: Add new callback definition.
+        (WebCore::SocketStreamHandleClient::didUpdateBufferedAmount):
+        * websockets/ThreadableWebSocketChannelClientWrapper.cpp: Add new callback handling.
+        (WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount):
+        (WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmountCallback):
+        * websockets/ThreadableWebSocketChannelClientWrapper.h: Add new callback inheritance and its helper method.
+        * websockets/WebSocket.cpp: Add new callback handling.
+        (WebCore::WebSocket::didUpdateBufferedAmount):
+        * websockets/WebSocket.h: Add new callback inheritance.
+        * websockets/WebSocketChannel.cpp: Add new callback handling.
+        (WebCore::WebSocketChannel::didUpdateBufferedAmount):
+        * websockets/WebSocketChannel.h: Add new callback inheritacne.
+        * websockets/WebSocketChannelClient.h: Add new callback definition.
+        (WebCore::WebSocketChannelClient::didUpdateBufferedAmount):
+        * websockets/WorkerThreadableWebSocketChannel.cpp: Add new callback handling.
+        (WebCore::workerContextDidUpdateBufferedAmount):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didUpdateBufferedAmount):
+        * websockets/WorkerThreadableWebSocketChannel.h: Add new callback inheritance and its helper method.
+
 2011-11-30  Kentaro Hara  <[email protected]>
 
         [Refactoring] In preprocessor.pm, remove double quotations from $defines

Modified: trunk/Source/WebCore/platform/network/SocketStreamHandleBase.cpp (101506 => 101507)


--- trunk/Source/WebCore/platform/network/SocketStreamHandleBase.cpp	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/platform/network/SocketStreamHandleBase.cpp	2011-11-30 14:47:07 UTC (rev 101507)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc.  All rights reserved.
+ * Copyright (C) 2009, 2011 Google Inc.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -60,6 +60,8 @@
             return false;
         }
         m_buffer.append(data, length);
+        if (m_client)
+            m_client->didUpdateBufferedAmount(static_cast<SocketStreamHandle*>(this), bufferedAmount());
         return true;
     }
     int bytesWritten = 0;
@@ -71,8 +73,11 @@
         // FIXME: report error to indicate that buffer has no more space.
         return false;
     }
-    if (bytesWritten < length)
+    if (bytesWritten < length) {
         m_buffer.append(data + bytesWritten, length - bytesWritten);
+        if (m_client)
+            m_client->didUpdateBufferedAmount(static_cast<SocketStreamHandle*>(this), bufferedAmount());
+    }
     return true;
 }
 
@@ -119,6 +124,8 @@
     ASSERT(m_buffer.size() - bytesWritten <= bufferSize);
     remainingData.append(m_buffer.data() + bytesWritten, m_buffer.size() - bytesWritten);
     m_buffer.swap(remainingData);
+    if (m_client)
+        m_client->didUpdateBufferedAmount(static_cast<SocketStreamHandle*>(this), bufferedAmount());
     return true;
 }
 

Modified: trunk/Source/WebCore/platform/network/SocketStreamHandleBase.h (101506 => 101507)


--- trunk/Source/WebCore/platform/network/SocketStreamHandleBase.h	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/platform/network/SocketStreamHandleBase.h	2011-11-30 14:47:07 UTC (rev 101507)
@@ -50,7 +50,7 @@
         bool send(const char* data, int length);
         void close(); // Disconnect after all data in buffer are sent.
         void disconnect();
-        int bufferedAmount() const { return m_buffer.size(); }
+        size_t bufferedAmount() const { return m_buffer.size(); }
 
         SocketStreamHandleClient* client() const { return m_client; }
         void setClient(SocketStreamHandleClient*);

Modified: trunk/Source/WebCore/platform/network/SocketStreamHandleClient.h (101506 => 101507)


--- trunk/Source/WebCore/platform/network/SocketStreamHandleClient.h	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/platform/network/SocketStreamHandleClient.h	2011-11-30 14:47:07 UTC (rev 101507)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2009 Apple Inc. All rights reserved.
- * Copyright (C) 2009 Google Inc.  All rights reserved.
+ * Copyright (C) 2009, 2011 Google Inc.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -46,6 +46,7 @@
         virtual void didOpenSocketStream(SocketStreamHandle*) { }
         virtual void didCloseSocketStream(SocketStreamHandle*) { }
         virtual void didReceiveSocketStreamData(SocketStreamHandle*, const char* /*data*/, int /*length*/) { }
+        virtual void didUpdateBufferedAmount(SocketStreamHandle*, size_t bufferedAmount) { }
 
         virtual void didFailSocketStream(SocketStreamHandle*, const SocketStreamError&) { }
 

Modified: trunk/Source/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.cpp (101506 => 101507)


--- trunk/Source/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.cpp	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.cpp	2011-11-30 14:47:07 UTC (rev 101507)
@@ -143,6 +143,13 @@
         processPendingTasks();
 }
 
+void ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount(unsigned long bufferedAmount)
+{
+    m_pendingTasks.append(createCallbackTask(&ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmountCallback, AllowCrossThreadAccess(this), bufferedAmount));
+    if (!m_suspended)
+        processPendingTasks();
+}
+
 void ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake()
 {
     m_pendingTasks.append(createCallbackTask(&ThreadableWebSocketChannelClientWrapper::didStartClosingHandshakeCallback, AllowCrossThreadAccess(this)));
@@ -198,6 +205,13 @@
         wrapper->m_client->didReceiveBinaryData(binaryData);
 }
 
+void ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmountCallback(ScriptExecutionContext* context, ThreadableWebSocketChannelClientWrapper* wrapper, unsigned long bufferedAmount)
+{
+    ASSERT_UNUSED(context, !context);
+    if (wrapper->m_client)
+        wrapper->m_client->didUpdateBufferedAmount(bufferedAmount);
+}
+
 void ThreadableWebSocketChannelClientWrapper::didStartClosingHandshakeCallback(ScriptExecutionContext* context, ThreadableWebSocketChannelClientWrapper* wrapper)
 {
     ASSERT_UNUSED(context, !context);

Modified: trunk/Source/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.h (101506 => 101507)


--- trunk/Source/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.h	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.h	2011-11-30 14:47:07 UTC (rev 101507)
@@ -74,6 +74,7 @@
     void didConnect();
     void didReceiveMessage(const String& message);
     void didReceiveBinaryData(PassOwnPtr<Vector<char> >);
+    void didUpdateBufferedAmount(unsigned long bufferedAmount);
     void didStartClosingHandshake();
     void didClose(unsigned long unhandledBufferedAmount, WebSocketChannelClient::ClosingHandshakeCompletionStatus, unsigned short code, const String& reason);
 
@@ -87,6 +88,7 @@
     static void didConnectCallback(ScriptExecutionContext*, ThreadableWebSocketChannelClientWrapper*);
     static void didReceiveMessageCallback(ScriptExecutionContext*, ThreadableWebSocketChannelClientWrapper*, const String& message);
     static void didReceiveBinaryDataCallback(ScriptExecutionContext*, ThreadableWebSocketChannelClientWrapper*, PassOwnPtr<Vector<char> >);
+    static void didUpdateBufferedAmountCallback(ScriptExecutionContext*, ThreadableWebSocketChannelClientWrapper*, unsigned long bufferedAmount);
     static void didStartClosingHandshakeCallback(ScriptExecutionContext*, ThreadableWebSocketChannelClientWrapper*);
     static void didCloseCallback(ScriptExecutionContext*, ThreadableWebSocketChannelClientWrapper*, unsigned long unhandledBufferedAmount, WebSocketChannelClient::ClosingHandshakeCompletionStatus, unsigned short code, const String& reason);
 

Modified: trunk/Source/WebCore/websockets/WebSocket.cpp (101506 => 101507)


--- trunk/Source/WebCore/websockets/WebSocket.cpp	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/websockets/WebSocket.cpp	2011-11-30 14:47:07 UTC (rev 101507)
@@ -505,6 +505,11 @@
     dispatchEvent(Event::create(eventNames().errorEvent, false, false));
 }
 
+void WebSocket::didUpdateBufferedAmount(unsigned long bufferedAmount)
+{
+    LOG(Network, "WebSocket %p didUpdateBufferedAmount %lu", this, bufferedAmount);
+}
+
 void WebSocket::didStartClosingHandshake()
 {
     LOG(Network, "WebSocket %p didStartClosingHandshake", this);

Modified: trunk/Source/WebCore/websockets/WebSocket.h (101506 => 101507)


--- trunk/Source/WebCore/websockets/WebSocket.h	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/websockets/WebSocket.h	2011-11-30 14:47:07 UTC (rev 101507)
@@ -106,6 +106,7 @@
     virtual void didReceiveMessage(const String& message);
     virtual void didReceiveBinaryData(PassOwnPtr<Vector<char> >);
     virtual void didReceiveMessageError();
+    virtual void didUpdateBufferedAmount(unsigned long bufferedAmount);
     virtual void didStartClosingHandshake();
     virtual void didClose(unsigned long unhandledBufferedAmount, ClosingHandshakeCompletionStatus, unsigned short code, const String& reason);
 

Modified: trunk/Source/WebCore/websockets/WebSocketChannel.cpp (101506 => 101507)


--- trunk/Source/WebCore/websockets/WebSocketChannel.cpp	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/websockets/WebSocketChannel.cpp	2011-11-30 14:47:07 UTC (rev 101507)
@@ -325,6 +325,12 @@
             break;
 }
 
+void WebSocketChannel::didUpdateBufferedAmount(SocketStreamHandle* handle, size_t bufferedAmount)
+{
+    if (m_client)
+        m_client->didUpdateBufferedAmount(bufferedAmount);
+}
+
 void WebSocketChannel::didFailSocketStream(SocketStreamHandle* handle, const SocketStreamError& error)
 {
     LOG(Network, "WebSocketChannel %p didFailSocketStream", this);

Modified: trunk/Source/WebCore/websockets/WebSocketChannel.h (101506 => 101507)


--- trunk/Source/WebCore/websockets/WebSocketChannel.h	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/websockets/WebSocketChannel.h	2011-11-30 14:47:07 UTC (rev 101507)
@@ -81,6 +81,7 @@
     virtual void didOpenSocketStream(SocketStreamHandle*);
     virtual void didCloseSocketStream(SocketStreamHandle*);
     virtual void didReceiveSocketStreamData(SocketStreamHandle*, const char*, int);
+    virtual void didUpdateBufferedAmount(SocketStreamHandle*, size_t bufferedAmount);
     virtual void didFailSocketStream(SocketStreamHandle*, const SocketStreamError&);
     virtual void didReceiveAuthenticationChallenge(SocketStreamHandle*, const AuthenticationChallenge&);
     virtual void didCancelAuthenticationChallenge(SocketStreamHandle*, const AuthenticationChallenge&);

Modified: trunk/Source/WebCore/websockets/WebSocketChannelClient.h (101506 => 101507)


--- trunk/Source/WebCore/websockets/WebSocketChannelClient.h	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/websockets/WebSocketChannelClient.h	2011-11-30 14:47:07 UTC (rev 101507)
@@ -46,6 +46,7 @@
         virtual void didReceiveMessage(const String&) { }
         virtual void didReceiveBinaryData(PassOwnPtr<Vector<char> >) { }
         virtual void didReceiveMessageError() { }
+        virtual void didUpdateBufferedAmount(unsigned long bufferedAmount) { }
         virtual void didStartClosingHandshake() { }
         enum ClosingHandshakeCompletionStatus {
             ClosingHandshakeIncomplete,

Modified: trunk/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp (101506 => 101507)


--- trunk/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp	2011-11-30 14:47:07 UTC (rev 101507)
@@ -299,6 +299,18 @@
     m_loaderProxy.postTaskForModeToWorkerContext(createCallbackTask(&workerContextDidReceiveBinaryData, m_workerClientWrapper, binaryData), m_taskMode);
 }
 
+static void workerContextDidUpdateBufferedAmount(ScriptExecutionContext* context, PassRefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper, unsigned long bufferedAmount)
+{
+    ASSERT_UNUSED(context, context->isWorkerContext());
+    workerClientWrapper->didUpdateBufferedAmount(bufferedAmount);
+}
+
+void WorkerThreadableWebSocketChannel::Peer::didUpdateBufferedAmount(unsigned long bufferedAmount)
+{
+    ASSERT(isMainThread());
+    m_loaderProxy.postTaskForModeToWorkerContext(createCallbackTask(&workerContextDidUpdateBufferedAmount, m_workerClientWrapper, bufferedAmount), m_taskMode);
+}
+
 static void workerContextDidStartClosingHandshake(ScriptExecutionContext* context, PassRefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper)
 {
     ASSERT_UNUSED(context, context->isWorkerContext());

Modified: trunk/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.h (101506 => 101507)


--- trunk/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.h	2011-11-30 14:33:40 UTC (rev 101506)
+++ trunk/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.h	2011-11-30 14:47:07 UTC (rev 101507)
@@ -107,6 +107,7 @@
         virtual void didConnect();
         virtual void didReceiveMessage(const String& message);
         virtual void didReceiveBinaryData(PassOwnPtr<Vector<char> >);
+        virtual void didUpdateBufferedAmount(unsigned long bufferedAmount);
         virtual void didStartClosingHandshake();
         virtual void didClose(unsigned long unhandledBufferedAmount, ClosingHandshakeCompletionStatus, unsigned short code, const String& reason);
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to