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

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 7b056012a46a1b31e2b628f282b8c0e9336ebfc1..cef32c2c3fd6ec283ddb50f3b079ec87cdb38596 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)
@@ -241,12 +240,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());
@@ -317,7 +310,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();
@@ -330,6 +323,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:
@@ -344,6 +338,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: {
@@ -354,6 +349,7 @@ void NewWebSocketChannelImpl::sendInternal()
m_handle->send(final, type, message->vectorData->data() + m_sentSizeOfTopMessage, size);
m_sentSizeOfTopMessage += size;
m_sendingQuota -= size;
+ consumedBufferedAmount += size;
break;
}
}
@@ -362,9 +358,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()
@@ -395,7 +390,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