Title: [131721] trunk/Source/WebCore
Revision
131721
Author
[email protected]
Date
2012-10-18 03:23:44 -0700 (Thu, 18 Oct 2012)

Log Message

MediaStream API: Add better RTCPeerConnectionHandler creation logic
https://bugs.webkit.org/show_bug.cgi?id=99308

Reviewed by Adam Barth.

This patch makes sure that if the RTCPeerConnectionHandler can't be fully initialized/created
the RTCPeerConnection constructor throws an exception.

Not full testable, existing tests cover the normal case though.

* platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:
(WebCore::RTCPeerConnectionHandler::create):
(WebCore::RTCPeerConnectionHandlerChromium::RTCPeerConnectionHandlerChromium):
(WebCore::RTCPeerConnectionHandlerChromium::createWebHandler):
(WebCore::RTCPeerConnectionHandlerChromium::initialize):
(WebCore::RTCPeerConnectionHandlerChromium::createOffer):
(WebCore::RTCPeerConnectionHandlerChromium::createAnswer):
(WebCore::RTCPeerConnectionHandlerChromium::setLocalDescription):
(WebCore::RTCPeerConnectionHandlerChromium::setRemoteDescription):
(WebCore::RTCPeerConnectionHandlerChromium::updateIce):
(WebCore::RTCPeerConnectionHandlerChromium::addIceCandidate):
(WebCore::RTCPeerConnectionHandlerChromium::localDescription):
(WebCore::RTCPeerConnectionHandlerChromium::remoteDescription):
(WebCore::RTCPeerConnectionHandlerChromium::addStream):
(WebCore::RTCPeerConnectionHandlerChromium::removeStream):
(WebCore::RTCPeerConnectionHandlerChromium::getStats):
(WebCore::RTCPeerConnectionHandlerChromium::openDataChannel):
(WebCore::RTCPeerConnectionHandlerChromium::sendStringData):
(WebCore::RTCPeerConnectionHandlerChromium::sendRawData):
(WebCore::RTCPeerConnectionHandlerChromium::closeDataChannel):
(WebCore::RTCPeerConnectionHandlerChromium::stop):
* platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:
(RTCPeerConnectionHandlerChromium):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (131720 => 131721)


--- trunk/Source/WebCore/ChangeLog	2012-10-18 09:48:06 UTC (rev 131720)
+++ trunk/Source/WebCore/ChangeLog	2012-10-18 10:23:44 UTC (rev 131721)
@@ -1,3 +1,39 @@
+2012-10-18  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Add better RTCPeerConnectionHandler creation logic
+        https://bugs.webkit.org/show_bug.cgi?id=99308
+
+        Reviewed by Adam Barth.
+
+        This patch makes sure that if the RTCPeerConnectionHandler can't be fully initialized/created
+        the RTCPeerConnection constructor throws an exception.
+
+        Not full testable, existing tests cover the normal case though.
+
+        * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:
+        (WebCore::RTCPeerConnectionHandler::create):
+        (WebCore::RTCPeerConnectionHandlerChromium::RTCPeerConnectionHandlerChromium):
+        (WebCore::RTCPeerConnectionHandlerChromium::createWebHandler):
+        (WebCore::RTCPeerConnectionHandlerChromium::initialize):
+        (WebCore::RTCPeerConnectionHandlerChromium::createOffer):
+        (WebCore::RTCPeerConnectionHandlerChromium::createAnswer):
+        (WebCore::RTCPeerConnectionHandlerChromium::setLocalDescription):
+        (WebCore::RTCPeerConnectionHandlerChromium::setRemoteDescription):
+        (WebCore::RTCPeerConnectionHandlerChromium::updateIce):
+        (WebCore::RTCPeerConnectionHandlerChromium::addIceCandidate):
+        (WebCore::RTCPeerConnectionHandlerChromium::localDescription):
+        (WebCore::RTCPeerConnectionHandlerChromium::remoteDescription):
+        (WebCore::RTCPeerConnectionHandlerChromium::addStream):
+        (WebCore::RTCPeerConnectionHandlerChromium::removeStream):
+        (WebCore::RTCPeerConnectionHandlerChromium::getStats):
+        (WebCore::RTCPeerConnectionHandlerChromium::openDataChannel):
+        (WebCore::RTCPeerConnectionHandlerChromium::sendStringData):
+        (WebCore::RTCPeerConnectionHandlerChromium::sendRawData):
+        (WebCore::RTCPeerConnectionHandlerChromium::closeDataChannel):
+        (WebCore::RTCPeerConnectionHandlerChromium::stop):
+        * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:
+        (RTCPeerConnectionHandlerChromium):
+
 2012-10-19  Zeno Albisser  <[email protected]>
 
         Temporarily disable use of QCocoaNativeInterface in GraphicsSurfaceMac.

Modified: trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp (131720 => 131721)


--- trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp	2012-10-18 09:48:06 UTC (rev 131720)
+++ trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp	2012-10-18 10:23:44 UTC (rev 131721)
@@ -64,155 +64,112 @@
 
 PassOwnPtr<RTCPeerConnectionHandler> RTCPeerConnectionHandler::create(RTCPeerConnectionHandlerClient* client)
 {
-    return adoptPtr(new RTCPeerConnectionHandlerChromium(client));
+    ASSERT(client);
+    OwnPtr<RTCPeerConnectionHandlerChromium> handler = adoptPtr(new RTCPeerConnectionHandlerChromium(client));
+
+    if (!handler->createWebHandler())
+        return nullptr;
+
+    return handler.release();
 }
 
 RTCPeerConnectionHandlerChromium::RTCPeerConnectionHandlerChromium(RTCPeerConnectionHandlerClient* client)
     : m_client(client)
 {
-    ASSERT(m_client);
-    m_webHandler = adoptPtr(WebKit::Platform::current()->createRTCPeerConnectionHandler(this));
 }
 
 RTCPeerConnectionHandlerChromium::~RTCPeerConnectionHandlerChromium()
 {
 }
 
-bool RTCPeerConnectionHandlerChromium::initialize(PassRefPtr<RTCConfiguration> configuration, PassRefPtr<MediaConstraints> constraints)
+bool RTCPeerConnectionHandlerChromium::createWebHandler()
 {
-    if (!m_webHandler)
-        return false;
+    m_webHandler = adoptPtr(WebKit::Platform::current()->createRTCPeerConnectionHandler(this));
+    return m_webHandler;
+}
 
+bool RTCPeerConnectionHandlerChromium::initialize(PassRefPtr<RTCConfiguration> configuration, PassRefPtr<MediaConstraints> constraints)
+{
     return m_webHandler->initialize(configuration, constraints);
 }
 
 void RTCPeerConnectionHandlerChromium::createOffer(PassRefPtr<RTCSessionDescriptionRequest> request, PassRefPtr<MediaConstraints> constraints)
 {
-    // FIXME: Should the error callback be triggered here?
-    if (!m_webHandler)
-        return;
-
     m_webHandler->createOffer(request, constraints);
 }
 
 void RTCPeerConnectionHandlerChromium::createAnswer(PassRefPtr<RTCSessionDescriptionRequest> request, PassRefPtr<MediaConstraints> constraints)
 {
-    // FIXME: Should the error callback be triggered here?
-    if (!m_webHandler)
-        return;
-
     m_webHandler->createAnswer(request, constraints);
 }
 
 void RTCPeerConnectionHandlerChromium::setLocalDescription(PassRefPtr<RTCVoidRequest> request, PassRefPtr<RTCSessionDescriptionDescriptor> sessionDescription)
 {
-    if (!m_webHandler)
-        return;
-
     m_webHandler->setLocalDescription(request, sessionDescription);
 }
 
 void RTCPeerConnectionHandlerChromium::setRemoteDescription(PassRefPtr<RTCVoidRequest> request, PassRefPtr<RTCSessionDescriptionDescriptor> sessionDescription)
 {
-    if (!m_webHandler)
-        return;
-
     m_webHandler->setRemoteDescription(request, sessionDescription);
 }
 
 bool RTCPeerConnectionHandlerChromium::updateIce(PassRefPtr<RTCConfiguration> configuration, PassRefPtr<MediaConstraints> constraints)
 {
-    if (!m_webHandler)
-        return false;
-
     return m_webHandler->updateICE(configuration, constraints);
 }
 
 bool RTCPeerConnectionHandlerChromium::addIceCandidate(PassRefPtr<RTCIceCandidateDescriptor> iceCandidate)
 {
-    if (!m_webHandler)
-        return false;
-
     return m_webHandler->addICECandidate(iceCandidate);
 }
 
 PassRefPtr<RTCSessionDescriptionDescriptor> RTCPeerConnectionHandlerChromium::localDescription()
 {
-    if (!m_webHandler)
-        return 0;
-
     return m_webHandler->localDescription();
 }
 
 PassRefPtr<RTCSessionDescriptionDescriptor> RTCPeerConnectionHandlerChromium::remoteDescription()
 {
-    if (!m_webHandler)
-        return 0;
-
     return m_webHandler->remoteDescription();
 }
 
 bool RTCPeerConnectionHandlerChromium::addStream(PassRefPtr<MediaStreamDescriptor> mediaStream, PassRefPtr<MediaConstraints> constraints)
 {
-    if (!m_webHandler)
-        return false;
-
     return m_webHandler->addStream(mediaStream, constraints);
 }
 
 void RTCPeerConnectionHandlerChromium::removeStream(PassRefPtr<MediaStreamDescriptor> mediaStream)
 {
-    if (!m_webHandler)
-        return;
-
     m_webHandler->removeStream(mediaStream);
 }
 
 void RTCPeerConnectionHandlerChromium::getStats(PassRefPtr<RTCStatsRequest> request)
 {
-    if (!m_webHandler)
-        return;
-
     m_webHandler->getStats(request);
 }
 
 bool RTCPeerConnectionHandlerChromium::openDataChannel(PassRefPtr<RTCDataChannelDescriptor> dataChannel)
 {
-    if (!m_webHandler)
-        return false;
-
     return m_webHandler->openDataChannel(dataChannel);
 }
 
 bool RTCPeerConnectionHandlerChromium::sendStringData(PassRefPtr<RTCDataChannelDescriptor> dataChannel, const String& data)
 {
-    if (!m_webHandler)
-        return false;
-
     return m_webHandler->sendStringData(dataChannel, data);
 }
 
 bool RTCPeerConnectionHandlerChromium::sendRawData(PassRefPtr<RTCDataChannelDescriptor> dataChannel, const char* data, size_t dataLength)
 {
-    if (!m_webHandler)
-        return false;
-
     return m_webHandler->sendRawData(dataChannel, data, dataLength);
 }
 
 void RTCPeerConnectionHandlerChromium::closeDataChannel(PassRefPtr<RTCDataChannelDescriptor> dataChannel)
 {
-    if (!m_webHandler)
-        return;
-
     return m_webHandler->closeDataChannel(dataChannel);
 }
 
 void RTCPeerConnectionHandlerChromium::stop()
 {
-    if (!m_webHandler)
-        return;
-
     m_webHandler->stop();
 }
 

Modified: trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h (131720 => 131721)


--- trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h	2012-10-18 09:48:06 UTC (rev 131720)
+++ trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h	2012-10-18 10:23:44 UTC (rev 131721)
@@ -52,6 +52,8 @@
     explicit RTCPeerConnectionHandlerChromium(RTCPeerConnectionHandlerClient*);
     virtual ~RTCPeerConnectionHandlerChromium();
 
+    bool createWebHandler();
+
     virtual bool initialize(PassRefPtr<RTCConfiguration>, PassRefPtr<MediaConstraints>) OVERRIDE;
 
     virtual void createOffer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr<MediaConstraints>) OVERRIDE;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to