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

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

Issue 311993006: [WebSocket] bufferedAmount should not decrease inside a task. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
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: Source/modules/websockets/NewWebSocketChannelImpl.cpp
diff --git a/Source/modules/websockets/NewWebSocketChannelImpl.cpp b/Source/modules/websockets/NewWebSocketChannelImpl.cpp
index 4b818517cc3bc2e008a06da7174e846c52575dfc..6d74ff666b699f76782fcf6c7ca5d0345eeaae26 100644
--- a/Source/modules/websockets/NewWebSocketChannelImpl.cpp
+++ b/Source/modules/websockets/NewWebSocketChannelImpl.cpp
@@ -115,7 +115,6 @@ NewWebSocketChannelImpl::NewWebSocketChannelImpl(ExecutionContext* context, WebS
, m_identifier(0)
, m_sendingQuota(0)
, m_receivedDataSizeForFlowControl(receivedDataSizeForFlowControlHighWaterMark * 2) // initial quota
- , m_bufferedAmount(0)
, m_sentSizeOfTopMessage(0)
, m_sourceURLAtConstruction(sourceURL)
, m_lineNumberAtConstruction(lineNumber)
@@ -229,12 +228,6 @@ WebSocketChannel::SendResult NewWebSocketChannelImpl::send(PassOwnPtr<Vector<cha
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());
@@ -305,7 +298,7 @@ NewWebSocketChannelImpl::Message::Message(PassOwnPtr<Vector<char> > vectorData)
void NewWebSocketChannelImpl::sendInternal()
{
ASSERT(m_handle);
- unsigned long bufferedAmount = m_bufferedAmount;
+ unsigned long consumedBufferedAmount = 0;
while (!m_messages.isEmpty() && m_sendingQuota > 0 && !m_blobLoader) {
bool final = false;
Message* message = m_messages.first().get();
@@ -318,6 +311,7 @@ void NewWebSocketChannelImpl::sendInternal()
m_handle->send(final, type, message->text.data() + m_sentSizeOfTopMessage, size);
m_sentSizeOfTopMessage += size;
m_sendingQuota -= size;
+ consumedBufferedAmount += size;
break;
}
case MessageTypeBlob:
@@ -332,6 +326,7 @@ void NewWebSocketChannelImpl::sendInternal()
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: {
@@ -342,6 +337,7 @@ void NewWebSocketChannelImpl::sendInternal()
m_handle->send(final, type, message->vectorData->data() + m_sentSizeOfTopMessage, size);
m_sentSizeOfTopMessage += size;
m_sendingQuota -= size;
+ consumedBufferedAmount += size;
break;
}
}
@@ -350,9 +346,8 @@ void NewWebSocketChannelImpl::sendInternal()
m_sentSizeOfTopMessage = 0;
}
}
- if (m_client && m_bufferedAmount != bufferedAmount) {
- m_client->didUpdateBufferedAmount(m_bufferedAmount);
- }
+ if (m_client && consumedBufferedAmount > 0)
+ m_client->didConsumeBufferedAmount(consumedBufferedAmount);
}
void NewWebSocketChannelImpl::flowControlIfNecessary()
@@ -383,7 +378,7 @@ void NewWebSocketChannelImpl::handleDidClose(bool wasClean, unsigned short code,
m_client = 0;
WebSocketChannelClient::ClosingHandshakeCompletionStatus status =
wasClean ? WebSocketChannelClient::ClosingHandshakeComplete : WebSocketChannelClient::ClosingHandshakeIncomplete;
- client->didClose(m_bufferedAmount, status, code, reason);
+ client->didClose(status, code, reason);
// client->didClose may delete this object.
}

Powered by Google App Engine
This is Rietveld 408576698