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

Unified Diff: third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannel.cpp

Issue 1964183004: Revert of Move DOMArrayBuffer, DOMArrayBufferViews and DataView to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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: third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannel.cpp
diff --git a/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannel.cpp b/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannel.cpp
index 25a282a876770d37c1db07e879c9b56e9f92bc47..d833cf38afc67928b282e188d9f1a499bbda6e5f 100644
--- a/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannel.cpp
+++ b/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannel.cpp
@@ -83,31 +83,6 @@
FileReaderLoader m_loader;
};
-class DocumentWebSocketChannel::Message : public GarbageCollectedFinalized<DocumentWebSocketChannel::Message> {
-public:
- explicit Message(const CString&);
- explicit Message(PassRefPtr<BlobDataHandle>);
- explicit Message(DOMArrayBuffer*);
- // For WorkerWebSocketChannel
- explicit Message(PassOwnPtr<Vector<char>>, MessageType);
- // Close message
- Message(unsigned short code, const String& reason);
-
- DEFINE_INLINE_TRACE()
- {
- visitor->trace(arrayBuffer);
- }
-
- MessageType type;
-
- CString text;
- RefPtr<BlobDataHandle> blobDataHandle;
- Member<DOMArrayBuffer> arrayBuffer;
- OwnPtr<Vector<char>> vectorData;
- unsigned short code;
- String reason;
-};
-
DocumentWebSocketChannel::BlobLoader::BlobLoader(PassRefPtr<BlobDataHandle> blobDataHandle, DocumentWebSocketChannel* channel)
: m_channel(channel)
, m_loader(FileReaderLoader::ReadAsArrayBuffer, this)
@@ -197,7 +172,7 @@
// FIXME: Change the inspector API to show the entire message instead
// of individual frames.
InspectorInstrumentation::didSendWebSocketFrame(document(), m_identifier, WebSocketFrame::OpCodeText, true, message.data(), message.length());
- m_messages.append(new Message(message));
+ m_messages.append(adoptPtr(new Message(message)));
processSendQueue();
}
@@ -210,7 +185,7 @@
// Since Binary data are not displayed in Inspector, this does not
// affect actual behavior.
InspectorInstrumentation::didSendWebSocketFrame(document(), m_identifier, WebSocketFrame::OpCodeBinary, true, "", 0);
- m_messages.append(new Message(blobDataHandle));
+ m_messages.append(adoptPtr(new Message(blobDataHandle)));
processSendQueue();
}
@@ -223,7 +198,7 @@
// buffer.slice copies its contents.
// FIXME: Reduce copy by sending the data immediately when we don't need to
// queue the data.
- m_messages.append(new Message(buffer.slice(byteOffset, byteOffset + byteLength)));
+ m_messages.append(adoptPtr(new Message(buffer.slice(byteOffset, byteOffset + byteLength))));
processSendQueue();
}
@@ -233,7 +208,7 @@
// FIXME: Change the inspector API to show the entire message instead
// of individual frames.
InspectorInstrumentation::didSendWebSocketFrame(document(), m_identifier, WebSocketFrame::OpCodeText, true, data->data(), data->size());
- m_messages.append(new Message(data, MessageTypeTextAsCharVector));
+ m_messages.append(adoptPtr(new Message(data, MessageTypeTextAsCharVector)));
processSendQueue();
}
@@ -243,7 +218,7 @@
// FIXME: Change the inspector API to show the entire message instead
// of individual frames.
InspectorInstrumentation::didSendWebSocketFrame(document(), m_identifier, WebSocketFrame::OpCodeBinary, true, data->data(), data->size());
- m_messages.append(new Message(data, MessageTypeBinaryAsCharVector));
+ m_messages.append(adoptPtr(new Message(data, MessageTypeBinaryAsCharVector)));
processSendQueue();
}
@@ -252,7 +227,7 @@
WTF_LOG(Network, "DocumentWebSocketChannel %p close(%d, %s)", this, code, reason.utf8().data());
ASSERT(m_handle);
unsigned short codeToSend = static_cast<unsigned short>(code == CloseEventCodeNotSpecified ? CloseEventCodeNoStatusRcvd : code);
- m_messages.append(new Message(codeToSend, reason));
+ m_messages.append(adoptPtr(new Message(codeToSend, reason)));
processSendQueue();
}
@@ -294,7 +269,7 @@
: type(MessageTypeBlob)
, blobDataHandle(blobDataHandle) { }
-DocumentWebSocketChannel::Message::Message(DOMArrayBuffer* arrayBuffer)
+DocumentWebSocketChannel::Message::Message(PassRefPtr<DOMArrayBuffer> arrayBuffer)
: type(MessageTypeArrayBuffer)
, arrayBuffer(arrayBuffer) { }
@@ -554,14 +529,14 @@
m_client->didStartClosingHandshake();
}
-void DocumentWebSocketChannel::didFinishLoadingBlob(DOMArrayBuffer* buffer)
+void DocumentWebSocketChannel::didFinishLoadingBlob(PassRefPtr<DOMArrayBuffer> buffer)
{
m_blobLoader.clear();
ASSERT(m_handle);
// The loaded blob is always placed on m_messages[0].
ASSERT(m_messages.size() > 0 && m_messages.first()->type == MessageTypeBlob);
// We replace it with the loaded blob.
- m_messages.first() = new Message(buffer);
+ m_messages.first() = adoptPtr(new Message(buffer));
processSendQueue();
}
@@ -580,7 +555,6 @@
DEFINE_TRACE(DocumentWebSocketChannel)
{
visitor->trace(m_blobLoader);
- visitor->trace(m_messages);
visitor->trace(m_client);
WebSocketChannel::trace(visitor);
ContextLifecycleObserver::trace(visitor);

Powered by Google App Engine
This is Rietveld 408576698