Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(384)

Unified Diff: trunk/Source/modules/websockets/NewWebSocketChannelImpl.cpp

Issue 338243006: Revert 176298 "[WebSocket] bufferedAmount should not decrease in..." (Closed) Base URL: svn://svn.chromium.org/blink/
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: trunk/Source/modules/websockets/NewWebSocketChannelImpl.cpp
===================================================================
--- trunk/Source/modules/websockets/NewWebSocketChannelImpl.cpp (revision 176310)
+++ trunk/Source/modules/websockets/NewWebSocketChannelImpl.cpp (working copy)
@@ -115,6 +115,7 @@
, m_identifier(0)
, m_sendingQuota(0)
, m_receivedDataSizeForFlowControl(receivedDataSizeForFlowControlHighWaterMark * 2) // initial quota
+ , m_bufferedAmount(0)
, m_sentSizeOfTopMessage(0)
, m_sourceURLAtConstruction(sourceURL)
, m_lineNumberAtConstruction(lineNumber)
@@ -228,6 +229,12 @@
return SendSuccess;
}
+unsigned long NewWebSocketChannelImpl::bufferedAmount() const
+{
+ WTF_LOG(Network, "NewWebSocketChannelImpl %p bufferedAmount()", this);
+ return m_bufferedAmount;
+}
+
void NewWebSocketChannelImpl::close(int code, const String& reason)
{
WTF_LOG(Network, "NewWebSocketChannelImpl %p close(%d, %s)", this, code, reason.utf8().data());
@@ -298,7 +305,7 @@
void NewWebSocketChannelImpl::sendInternal()
{
ASSERT(m_handle);
- unsigned long consumedBufferedAmount = 0;
+ unsigned long bufferedAmount = m_bufferedAmount;
while (!m_messages.isEmpty() && m_sendingQuota > 0 && !m_blobLoader) {
bool final = false;
Message* message = m_messages.first().get();
@@ -311,7 +318,6 @@
m_handle->send(final, type, message->text.data() + m_sentSizeOfTopMessage, size);
m_sentSizeOfTopMessage += size;
m_sendingQuota -= size;
- consumedBufferedAmount += size;
break;
}
case MessageTypeBlob:
@@ -326,7 +332,6 @@
m_handle->send(final, type, static_cast<const char*>(message->arrayBuffer->data()) + m_sentSizeOfTopMessage, size);
m_sentSizeOfTopMessage += size;
m_sendingQuota -= size;
- consumedBufferedAmount += size;
break;
}
case MessageTypeVector: {
@@ -337,7 +342,6 @@
m_handle->send(final, type, message->vectorData->data() + m_sentSizeOfTopMessage, size);
m_sentSizeOfTopMessage += size;
m_sendingQuota -= size;
- consumedBufferedAmount += size;
break;
}
}
@@ -346,8 +350,9 @@
m_sentSizeOfTopMessage = 0;
}
}
- if (m_client && consumedBufferedAmount > 0)
- m_client->didConsumeBufferedAmount(consumedBufferedAmount);
+ if (m_client && m_bufferedAmount != bufferedAmount) {
+ m_client->didUpdateBufferedAmount(m_bufferedAmount);
+ }
}
void NewWebSocketChannelImpl::flowControlIfNecessary()
@@ -378,7 +383,7 @@
m_client = 0;
WebSocketChannelClient::ClosingHandshakeCompletionStatus status =
wasClean ? WebSocketChannelClient::ClosingHandshakeComplete : WebSocketChannelClient::ClosingHandshakeIncomplete;
- client->didClose(status, code, reason);
+ client->didClose(m_bufferedAmount, status, code, reason);
// client->didClose may delete this object.
}

Powered by Google App Engine
This is Rietveld 408576698