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

Unified Diff: trunk/Source/modules/websockets/WebSocket.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
« no previous file with comments | « trunk/Source/modules/websockets/WebSocket.h ('k') | trunk/Source/modules/websockets/WebSocketChannel.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: trunk/Source/modules/websockets/WebSocket.cpp
===================================================================
--- trunk/Source/modules/websockets/WebSocket.cpp (revision 176310)
+++ trunk/Source/modules/websockets/WebSocket.cpp (working copy)
@@ -228,13 +228,11 @@
: ActiveDOMObject(context)
, m_state(CONNECTING)
, m_bufferedAmount(0)
- , m_consumedBufferedAmount(0)
, m_bufferedAmountAfterClose(0)
, m_binaryType(BinaryTypeBlob)
, m_subprotocol("")
, m_extensions("")
, m_eventQueue(EventQueue::create(this))
- , m_bufferedAmountConsumeTimer(this, &WebSocket::reflectBufferedAmountConsumption)
{
ScriptWrappable::init(this);
}
@@ -375,15 +373,6 @@
logError("WebSocket is already in CLOSING or CLOSED state.");
}
-void WebSocket::reflectBufferedAmountConsumption(Timer<WebSocket>*)
-{
- ASSERT(m_bufferedAmount >= m_consumedBufferedAmount);
- WTF_LOG(Network, "WebSocket %p reflectBufferedAmountConsumption() %lu => %lu", this, m_bufferedAmount, m_bufferedAmount - m_consumedBufferedAmount);
-
- m_bufferedAmount -= m_consumedBufferedAmount;
- m_consumedBufferedAmount = 0;
-}
-
void WebSocket::releaseChannel()
{
ASSERT(m_channel);
@@ -404,7 +393,6 @@
return;
}
ASSERT(m_channel);
- m_bufferedAmount += message.utf8().length();
handleSendResult(m_channel->send(message), exceptionState, WebSocketSendTypeString);
}
@@ -421,7 +409,6 @@
return;
}
ASSERT(m_channel);
- m_bufferedAmount += binaryData->byteLength();
handleSendResult(m_channel->send(*binaryData, 0, binaryData->byteLength()), exceptionState, WebSocketSendTypeArrayBuffer);
}
@@ -438,7 +425,6 @@
return;
}
ASSERT(m_channel);
- m_bufferedAmount += arrayBufferView->byteLength();
RefPtr<ArrayBuffer> arrayBuffer(arrayBufferView->buffer());
handleSendResult(m_channel->send(*arrayBuffer, arrayBufferView->byteOffset(), arrayBufferView->byteLength()), exceptionState, WebSocketSendTypeArrayBufferView);
}
@@ -455,7 +441,6 @@
updateBufferedAmountAfterClose(static_cast<unsigned long>(binaryData->size()));
return;
}
- m_bufferedAmount += binaryData->size();
ASSERT(m_channel);
handleSendResult(m_channel->send(binaryData->blobDataHandle()), exceptionState, WebSocketSendTypeBlob);
}
@@ -655,15 +640,12 @@
m_eventQueue->dispatch(Event::create(EventTypeNames::error));
}
-void WebSocket::didConsumeBufferedAmount(unsigned long consumed)
+void WebSocket::didUpdateBufferedAmount(unsigned long bufferedAmount)
{
- ASSERT(m_bufferedAmount >= consumed);
- WTF_LOG(Network, "WebSocket %p didConsumeBufferedAmount(%lu)", this, consumed);
+ WTF_LOG(Network, "WebSocket %p didUpdateBufferedAmount() New bufferedAmount is %lu", this, bufferedAmount);
if (m_state == CLOSED)
return;
- m_consumedBufferedAmount += consumed;
- if (!m_bufferedAmountConsumeTimer.isActive())
- m_bufferedAmountConsumeTimer.startOneShot(0, FROM_HERE);
+ m_bufferedAmount = bufferedAmount;
}
void WebSocket::didStartClosingHandshake()
@@ -672,15 +654,15 @@
m_state = CLOSING;
}
-void WebSocket::didClose(ClosingHandshakeCompletionStatus closingHandshakeCompletion, unsigned short code, const String& reason)
+void WebSocket::didClose(unsigned long unhandledBufferedAmount, ClosingHandshakeCompletionStatus closingHandshakeCompletion, unsigned short code, const String& reason)
{
WTF_LOG(Network, "WebSocket %p didClose()", this);
if (!m_channel)
return;
- bool hasAllDataConsumed = m_bufferedAmount == m_consumedBufferedAmount;
- bool wasClean = m_state == CLOSING && hasAllDataConsumed && closingHandshakeCompletion == ClosingHandshakeComplete && code != WebSocketChannel::CloseEventCodeAbnormalClosure;
- m_state = CLOSED;
+ bool wasClean = m_state == CLOSING && !unhandledBufferedAmount && closingHandshakeCompletion == ClosingHandshakeComplete && code != WebSocketChannel::CloseEventCodeAbnormalClosure;
+ m_state = CLOSED;
+ m_bufferedAmount = unhandledBufferedAmount;
m_eventQueue->dispatch(CloseEvent::create(wasClean, code, reason));
releaseChannel();
}
« no previous file with comments | « trunk/Source/modules/websockets/WebSocket.h ('k') | trunk/Source/modules/websockets/WebSocketChannel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698