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

Unified Diff: third_party/WebKit/Source/modules/mediastream/RTCDataChannel.cpp

Issue 1634073003: Remove references between RTCPeerConnection and RTCDataChannel. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove RTCPeerConnection reference from RTCDataChannel Created 4 years, 11 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/mediastream/RTCDataChannel.cpp
diff --git a/third_party/WebKit/Source/modules/mediastream/RTCDataChannel.cpp b/third_party/WebKit/Source/modules/mediastream/RTCDataChannel.cpp
index 1114ae62c28dee6d702e387969072b78c517d335..ad474ad7430119692b6e050980a21891d8132821 100644
--- a/third_party/WebKit/Source/modules/mediastream/RTCDataChannel.cpp
+++ b/third_party/WebKit/Source/modules/mediastream/RTCDataChannel.cpp
@@ -51,30 +51,28 @@ static void throwNoBlobSupportException(ExceptionState& exceptionState)
exceptionState.throwDOMException(NotSupportedError, "Blob support not implemented yet");
}
-RTCDataChannel* RTCDataChannel::create(ExecutionContext* context, RTCPeerConnection* connection, PassOwnPtr<WebRTCDataChannelHandler> handler)
+RTCDataChannel* RTCDataChannel::create(ExecutionContext* context, PassOwnPtr<WebRTCDataChannelHandler> handler)
{
ASSERT(handler);
- return new RTCDataChannel(context, connection, handler);
+ return new RTCDataChannel(context, handler);
}
-RTCDataChannel* RTCDataChannel::create(ExecutionContext* context, RTCPeerConnection* connection, WebRTCPeerConnectionHandler* peerConnectionHandler, const String& label, const WebRTCDataChannelInit& init, ExceptionState& exceptionState)
+RTCDataChannel* RTCDataChannel::create(ExecutionContext* context, WebRTCPeerConnectionHandler* peerConnectionHandler, const String& label, const WebRTCDataChannelInit& init, ExceptionState& exceptionState)
{
OwnPtr<WebRTCDataChannelHandler> handler = adoptPtr(peerConnectionHandler->createDataChannel(label, init));
if (!handler) {
exceptionState.throwDOMException(NotSupportedError, "RTCDataChannel is not supported");
return nullptr;
}
- return new RTCDataChannel(context, connection, handler.release());
+ return new RTCDataChannel(context, handler.release());
}
-RTCDataChannel::RTCDataChannel(ExecutionContext* context, RTCPeerConnection* connection, PassOwnPtr<WebRTCDataChannelHandler> handler)
+RTCDataChannel::RTCDataChannel(ExecutionContext* context, PassOwnPtr<WebRTCDataChannelHandler> handler)
: m_executionContext(context)
, m_handler(handler)
- , m_stopped(false)
, m_readyState(ReadyStateConnecting)
, m_binaryType(BinaryTypeArrayBuffer)
, m_scheduledEventTimer(this, &RTCDataChannel::scheduledEventTimerFired)
- , m_connection(connection)
, m_bufferedAmountLowThreshold(0U)
{
m_handler->setClient(this);
@@ -82,11 +80,8 @@ RTCDataChannel::RTCDataChannel(ExecutionContext* context, RTCPeerConnection* con
RTCDataChannel::~RTCDataChannel()
{
- // If the peer connection and the data channel die in the same
- // GC cycle stop has not been called and we need to notify the
- // client that the channel is gone.
- if (!m_stopped)
- m_handler->setClient(0);
+ // Notify the client that the channel is gone.
+ m_handler->setClient(0);
}
RTCDataChannel::ReadyState RTCDataChannel::getHandlerState() const
@@ -235,15 +230,12 @@ void RTCDataChannel::send(Blob* data, ExceptionState& exceptionState)
void RTCDataChannel::close()
{
- if (m_stopped)
- return;
-
m_handler->close();
}
void RTCDataChannel::didChangeReadyState(WebRTCDataChannelHandlerClient::ReadyState newState)
{
- if (m_stopped || m_readyState == ReadyStateClosed)
+ if (m_readyState == ReadyStateClosed)
return;
m_readyState = newState;
@@ -270,17 +262,11 @@ void RTCDataChannel::didDecreaseBufferedAmount(unsigned previousAmount)
void RTCDataChannel::didReceiveStringData(const WebString& text)
{
- if (m_stopped)
- return;
-
scheduleDispatchEvent(MessageEvent::create(text));
}
void RTCDataChannel::didReceiveRawData(const char* data, size_t dataLength)
{
- if (m_stopped)
- return;
-
if (m_binaryType == BinaryTypeBlob) {
// FIXME: Implement.
return;
@@ -295,9 +281,6 @@ void RTCDataChannel::didReceiveRawData(const char* data, size_t dataLength)
void RTCDataChannel::didDetectError()
{
- if (m_stopped)
- return;
-
scheduleDispatchEvent(Event::create(EventTypeNames::error));
}
@@ -311,14 +294,6 @@ ExecutionContext* RTCDataChannel::executionContext() const
return m_executionContext;
}
-void RTCDataChannel::stop()
-{
- m_stopped = true;
- m_readyState = ReadyStateClosed;
- m_handler->setClient(0);
- m_executionContext = 0;
-}
-
void RTCDataChannel::scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event> event)
{
m_scheduledEvents.append(event);
@@ -329,9 +304,6 @@ void RTCDataChannel::scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event> event)
void RTCDataChannel::scheduledEventTimerFired(Timer<RTCDataChannel>*)
{
- if (m_stopped)
- return;
-
WillBeHeapVector<RefPtrWillBeMember<Event>> events;
events.swap(m_scheduledEvents);
@@ -342,19 +314,10 @@ void RTCDataChannel::scheduledEventTimerFired(Timer<RTCDataChannel>*)
events.clear();
}
-void RTCDataChannel::clearWeakMembers(Visitor* visitor)
-{
- if (Heap::isHeapObjectAlive(m_connection))
- return;
- stop();
- m_connection = nullptr;
-}
-
DEFINE_TRACE(RTCDataChannel)
{
visitor->trace(m_executionContext);
visitor->trace(m_scheduledEvents);
- visitor->template registerWeakMembers<RTCDataChannel, &RTCDataChannel::clearWeakMembers>(this);
RefCountedGarbageCollectedEventTargetWithInlineData<RTCDataChannel>::trace(visitor);
}

Powered by Google App Engine
This is Rietveld 408576698