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

Unified Diff: third_party/WebKit/Source/modules/presentation/PresentationConnection.cpp

Issue 1878463002: Move DOMArrayBuffer, DOMArrayBufferViews and DataView to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tidy Created 4 years, 8 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/presentation/PresentationConnection.cpp
diff --git a/third_party/WebKit/Source/modules/presentation/PresentationConnection.cpp b/third_party/WebKit/Source/modules/presentation/PresentationConnection.cpp
index 84da834a16b44a23eb366b73c8dcb26d9ad102c6..0bd16cc977916ae94c57afae27f0f6b822450f8f 100644
--- a/third_party/WebKit/Source/modules/presentation/PresentationConnection.cpp
+++ b/third_party/WebKit/Source/modules/presentation/PresentationConnection.cpp
@@ -88,6 +88,37 @@ void throwPresentationDisconnectedError(ExceptionState& exceptionState)
} // namespace
+class PresentationConnection::Message final : public GarbageCollectedFinalized<PresentationConnection::Message> {
+public:
+ Message(const String& text)
+ : type(MessageTypeText)
+ , text(text)
+ {
+ }
+
+ Message(DOMArrayBuffer* arrayBuffer)
+ : type(MessageTypeArrayBuffer)
+ , arrayBuffer(arrayBuffer)
+ {
+ }
+
+ Message(PassRefPtr<BlobDataHandle> blobDataHandle)
+ : type(MessageTypeBlob)
+ , blobDataHandle(blobDataHandle)
+ {
+ }
+
+ DEFINE_INLINE_TRACE()
+ {
+ visitor->trace(arrayBuffer);
+ }
+
+ MessageType type;
+ String text;
+ Member<DOMArrayBuffer> arrayBuffer;
+ RefPtr<BlobDataHandle> blobDataHandle;
+};
+
class PresentationConnection::BlobLoader final : public GarbageCollectedFinalized<PresentationConnection::BlobLoader>, public FileReaderLoaderClient {
public:
BlobLoader(PassRefPtr<BlobDataHandle> blobDataHandle, PresentationConnection* PresentationConnection)
@@ -202,6 +233,7 @@ bool PresentationConnection::addEventListenerInternal(const AtomicString& eventT
DEFINE_TRACE(PresentationConnection)
{
visitor->trace(m_blobLoader);
+ visitor->trace(m_messages);
RefCountedGarbageCollectedEventTargetWithInlineData<PresentationConnection>::trace(visitor);
DOMWindowProperty::trace(visitor);
}
@@ -216,27 +248,27 @@ void PresentationConnection::send(const String& message, ExceptionState& excepti
if (!canSendMessage(exceptionState))
return;
- m_messages.append(adoptPtr(new Message(message)));
+ m_messages.append(new Message(message));
handleMessageQueue();
}
-void PresentationConnection::send(PassRefPtr<DOMArrayBuffer> arrayBuffer, ExceptionState& exceptionState)
+void PresentationConnection::send(DOMArrayBuffer* arrayBuffer, ExceptionState& exceptionState)
{
ASSERT(arrayBuffer && arrayBuffer->buffer());
if (!canSendMessage(exceptionState))
return;
- m_messages.append(adoptPtr(new Message(arrayBuffer)));
+ m_messages.append(new Message(arrayBuffer));
handleMessageQueue();
}
-void PresentationConnection::send(PassRefPtr<DOMArrayBufferView> arrayBufferView, ExceptionState& exceptionState)
+void PresentationConnection::send(DOMArrayBufferView* arrayBufferView, ExceptionState& exceptionState)
{
ASSERT(arrayBufferView);
if (!canSendMessage(exceptionState))
return;
- m_messages.append(adoptPtr(new Message(arrayBufferView->buffer())));
+ m_messages.append(new Message(arrayBufferView->buffer()));
handleMessageQueue();
}
@@ -246,7 +278,7 @@ void PresentationConnection::send(Blob* data, ExceptionState& exceptionState)
if (!canSendMessage(exceptionState))
return;
- m_messages.append(adoptPtr(new Message(data->blobDataHandle())));
+ m_messages.append(new Message(data->blobDataHandle()));
handleMessageQueue();
}
@@ -333,8 +365,8 @@ void PresentationConnection::didReceiveBinaryMessage(const uint8_t* data, size_t
return;
}
case BinaryTypeArrayBuffer:
- RefPtr<DOMArrayBuffer> buffer = DOMArrayBuffer::create(data, length);
- dispatchEvent(MessageEvent::create(buffer.release()));
+ DOMArrayBuffer* buffer = DOMArrayBuffer::create(data, length);
+ dispatchEvent(MessageEvent::create(buffer));
return;
}
ASSERT_NOT_REACHED();
@@ -397,7 +429,7 @@ void PresentationConnection::didClose(WebPresentationConnectionCloseReason reaso
dispatchEvent(PresentationConnectionCloseEvent::create(EventTypeNames::close, connectionCloseReasonToString(reason), message));
}
-void PresentationConnection::didFinishLoadingBlob(PassRefPtr<DOMArrayBuffer> buffer)
+void PresentationConnection::didFinishLoadingBlob(DOMArrayBuffer* buffer)
{
ASSERT(!m_messages.isEmpty() && m_messages.first()->type == MessageTypeBlob);
ASSERT(buffer && buffer->buffer());
@@ -428,10 +460,7 @@ void PresentationConnection::tearDown()
m_blobLoader->cancel();
m_blobLoader.clear();
}
-
- // Clear message queue.
- Deque<OwnPtr<Message>> empty;
- m_messages.swap(empty);
+ m_messages.clear();
}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698