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

Unified Diff: trunk/Source/modules/websockets/MainThreadWebSocketChannel.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/MainThreadWebSocketChannel.cpp
===================================================================
--- trunk/Source/modules/websockets/MainThreadWebSocketChannel.cpp (revision 176310)
+++ trunk/Source/modules/websockets/MainThreadWebSocketChannel.cpp (working copy)
@@ -72,11 +72,11 @@
, m_closingTimer(this, &MainThreadWebSocketChannel::closingTimerFired)
, m_state(ChannelIdle)
, m_shouldDiscardReceivedData(false)
+ , m_unhandledBufferedAmount(0)
, m_identifier(0)
, m_hasContinuousFrame(false)
, m_closeEventCode(CloseEventCodeAbnormalClosure)
, m_outgoingFrameQueueStatus(OutgoingFrameQueueOpen)
- , m_numConsumedBytesInCurrentFrame(0)
, m_blobLoaderStatus(BlobLoaderNotStarted)
, m_sourceURLAtConstruction(sourceURL)
, m_lineNumberAtConstruction(lineNumber)
@@ -160,6 +160,14 @@
return WebSocketChannel::SendSuccess;
}
+unsigned long MainThreadWebSocketChannel::bufferedAmount() const
+{
+ WTF_LOG(Network, "MainThreadWebSocketChannel %p bufferedAmount()", this);
+ ASSERT(m_handle);
+ ASSERT(!m_suspended);
+ return m_handle->bufferedAmount();
+}
+
void MainThreadWebSocketChannel::close(int code, const String& reason)
{
WTF_LOG(Network, "MainThreadWebSocketChannel %p close() code=%d reason='%s'", this, code, reason.utf8().data());
@@ -288,12 +296,13 @@
if (m_outgoingFrameQueueStatus != OutgoingFrameQueueClosed)
abortOutgoingFrameQueue();
if (m_handle) {
+ m_unhandledBufferedAmount = m_handle->bufferedAmount();
WebSocketChannelClient* client = m_client;
m_client = 0;
clearDocument();
m_handle = nullptr;
if (client)
- client->didClose(m_receivedClosingHandshake ? WebSocketChannelClient::ClosingHandshakeComplete : WebSocketChannelClient::ClosingHandshakeIncomplete, m_closeEventCode, m_closeEventReason);
+ client->didClose(m_unhandledBufferedAmount, m_receivedClosingHandshake ? WebSocketChannelClient::ClosingHandshakeComplete : WebSocketChannelClient::ClosingHandshakeIncomplete, m_closeEventCode, m_closeEventReason);
}
deref();
}
@@ -324,35 +333,10 @@
processBuffer();
}
-void MainThreadWebSocketChannel::didConsumeBufferedAmount(SocketStreamHandle*, size_t consumed)
+void MainThreadWebSocketChannel::didUpdateBufferedAmount(SocketStreamHandle*, size_t bufferedAmount)
{
- if (m_framingOverheadQueue.isEmpty()) {
- // Ignore the handshake consumption.
- return;
- }
- if (!m_client || m_state == ChannelClosed)
- return;
- size_t remain = consumed;
- while (remain > 0) {
- ASSERT(!m_framingOverheadQueue.isEmpty());
- const FramingOverhead& frame = m_framingOverheadQueue.first();
-
- ASSERT(m_numConsumedBytesInCurrentFrame <= frame.frameDataSize());
- size_t consumedInThisFrame = std::min(remain, frame.frameDataSize() - m_numConsumedBytesInCurrentFrame);
- remain -= consumedInThisFrame;
- m_numConsumedBytesInCurrentFrame += consumedInThisFrame;
-
- if (m_numConsumedBytesInCurrentFrame == frame.frameDataSize()) {
- if (m_client && WebSocketFrame::isNonControlOpCode(frame.opcode())) {
- // FIXME: As |consumed| is the number of possibly compressed
- // bytes, we can't determine the number of consumed original
- // bytes in the middle of a frame.
- m_client->didConsumeBufferedAmount(frame.originalPayloadLength());
- }
- m_framingOverheadQueue.takeFirst();
- m_numConsumedBytesInCurrentFrame = 0;
- }
- }
+ if (m_client)
+ m_client->didUpdateBufferedAmount(bufferedAmount);
}
void MainThreadWebSocketChannel::didFailSocketStream(SocketStreamHandle* handle, const SocketStreamError& error)
@@ -861,7 +845,6 @@
Vector<char> frameData;
frame.makeFrameData(frameData);
- m_framingOverheadQueue.append(FramingOverhead(opCode, frameData.size(), dataLength));
m_perMessageDeflate.resetDeflateBuffer();
return m_handle->send(frameData.data(), frameData.size());

Powered by Google App Engine
This is Rietveld 408576698