Title: [100162] trunk/Source/WebKit/chromium
Revision
100162
Author
[email protected]
Date
2011-11-14 10:06:35 -0800 (Mon, 14 Nov 2011)

Log Message

[chromium] MediaStream API: Allow for null WebPeerConnectionHandler
https://bugs.webkit.org/show_bug.cgi?id=72114

Fixing crash if WebKitPlatformSupport returns a null WebPeerConnectionHandler
to PeerConnectionHandlerInternal.

Patch by Tommy Widenflycht <[email protected]> on 2011-11-14
Reviewed by Adam Barth.

* bridge/PeerConnectionHandlerInternal.cpp:
(WebCore::PeerConnectionHandlerInternal::PeerConnectionHandlerInternal):
(WebCore::PeerConnectionHandlerInternal::produceInitialOffer):
(WebCore::PeerConnectionHandlerInternal::handleInitialOffer):
(WebCore::PeerConnectionHandlerInternal::processSDP):
(WebCore::PeerConnectionHandlerInternal::processPendingStreams):
(WebCore::PeerConnectionHandlerInternal::sendDataStreamMessage):
(WebCore::PeerConnectionHandlerInternal::stop):
(WebCore::PeerConnectionHandlerInternal::didCompleteICEProcessing):
(WebCore::PeerConnectionHandlerInternal::didGenerateSDP):
(WebCore::PeerConnectionHandlerInternal::didReceiveDataStreamMessage):
(WebCore::PeerConnectionHandlerInternal::didAddRemoteStream):
(WebCore::PeerConnectionHandlerInternal::didRemoveRemoteStream):
* public/WebKitPlatformSupport.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/chromium/ChangeLog (100161 => 100162)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-11-14 17:59:20 UTC (rev 100161)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-11-14 18:06:35 UTC (rev 100162)
@@ -1,3 +1,28 @@
+2011-11-14  Tommy Widenflycht  <[email protected]>
+
+        [chromium] MediaStream API: Allow for null WebPeerConnectionHandler
+        https://bugs.webkit.org/show_bug.cgi?id=72114
+
+        Fixing crash if WebKitPlatformSupport returns a null WebPeerConnectionHandler
+        to PeerConnectionHandlerInternal.
+
+        Reviewed by Adam Barth.
+
+        * bridge/PeerConnectionHandlerInternal.cpp:
+        (WebCore::PeerConnectionHandlerInternal::PeerConnectionHandlerInternal):
+        (WebCore::PeerConnectionHandlerInternal::produceInitialOffer):
+        (WebCore::PeerConnectionHandlerInternal::handleInitialOffer):
+        (WebCore::PeerConnectionHandlerInternal::processSDP):
+        (WebCore::PeerConnectionHandlerInternal::processPendingStreams):
+        (WebCore::PeerConnectionHandlerInternal::sendDataStreamMessage):
+        (WebCore::PeerConnectionHandlerInternal::stop):
+        (WebCore::PeerConnectionHandlerInternal::didCompleteICEProcessing):
+        (WebCore::PeerConnectionHandlerInternal::didGenerateSDP):
+        (WebCore::PeerConnectionHandlerInternal::didReceiveDataStreamMessage):
+        (WebCore::PeerConnectionHandlerInternal::didAddRemoteStream):
+        (WebCore::PeerConnectionHandlerInternal::didRemoveRemoteStream):
+        * public/WebKitPlatformSupport.h:
+
 2011-11-14  Jonathan Backer  <[email protected]>
 
         [chromium] Plumb through partial swap

Modified: trunk/Source/WebKit/chromium/bridge/PeerConnectionHandlerInternal.cpp (100161 => 100162)


--- trunk/Source/WebKit/chromium/bridge/PeerConnectionHandlerInternal.cpp	2011-11-14 17:59:20 UTC (rev 100161)
+++ trunk/Source/WebKit/chromium/bridge/PeerConnectionHandlerInternal.cpp	2011-11-14 18:06:35 UTC (rev 100162)
@@ -44,7 +44,10 @@
 {
     ASSERT(m_client);
     m_webHandler = adoptPtr(WebKit::webKitPlatformSupport()->createPeerConnectionHandler(this));
-    m_webHandler->initialize(serverConfiguration, securityOrigin);
+    // FIXME: When there is some error reporting avaliable in the PeerConnection object report
+    // if we didn't get a WebPeerConnectionHandler instance.
+    if (m_webHandler)
+        m_webHandler->initialize(serverConfiguration, securityOrigin);
 }
 
 PeerConnectionHandlerInternal::~PeerConnectionHandlerInternal()
@@ -53,57 +56,68 @@
 
 void PeerConnectionHandlerInternal::produceInitialOffer(const MediaStreamDescriptorVector& pendingAddStreams)
 {
-    m_webHandler->produceInitialOffer(pendingAddStreams);
+    if (m_webHandler)
+        m_webHandler->produceInitialOffer(pendingAddStreams);
 }
 
 void PeerConnectionHandlerInternal::handleInitialOffer(const String& sdp)
 {
-    m_webHandler->handleInitialOffer(sdp);
+    if (m_webHandler)
+        m_webHandler->handleInitialOffer(sdp);
 }
 
 void PeerConnectionHandlerInternal::processSDP(const String& sdp)
 {
-    m_webHandler->processSDP(sdp);
+    if (m_webHandler)
+        m_webHandler->processSDP(sdp);
 }
 
 void PeerConnectionHandlerInternal::processPendingStreams(const MediaStreamDescriptorVector& pendingAddStreams, const MediaStreamDescriptorVector& pendingRemoveStreams)
 {
-    m_webHandler->processPendingStreams(pendingAddStreams, pendingRemoveStreams);
+    if (m_webHandler)
+        m_webHandler->processPendingStreams(pendingAddStreams, pendingRemoveStreams);
 }
 
 void PeerConnectionHandlerInternal::sendDataStreamMessage(const char* data, size_t length)
 {
-    m_webHandler->sendDataStreamMessage(data, length);
+    if (m_webHandler)
+        m_webHandler->sendDataStreamMessage(data, length);
 }
 
 void PeerConnectionHandlerInternal::stop()
 {
-    m_webHandler->stop();
+    if (m_webHandler)
+        m_webHandler->stop();
 }
 
 void PeerConnectionHandlerInternal::didCompleteICEProcessing()
 {
-    m_client->didCompleteICEProcessing();
+    if (m_webHandler)
+        m_client->didCompleteICEProcessing();
 }
 
 void PeerConnectionHandlerInternal::didGenerateSDP(const WebKit::WebString& sdp)
 {
-    m_client->didGenerateSDP(sdp);
+    if (m_webHandler)
+        m_client->didGenerateSDP(sdp);
 }
 
 void PeerConnectionHandlerInternal::didReceiveDataStreamMessage(const char* data, size_t length)
 {
-    m_client->didReceiveDataStreamMessage(data, length);
+    if (m_webHandler)
+        m_client->didReceiveDataStreamMessage(data, length);
 }
 
 void PeerConnectionHandlerInternal::didAddRemoteStream(const WebKit::WebMediaStreamDescriptor& webMediaStreamDescriptor)
 {
-    m_client->didAddRemoteStream(webMediaStreamDescriptor);
+    if (m_webHandler)
+        m_client->didAddRemoteStream(webMediaStreamDescriptor);
 }
 
 void PeerConnectionHandlerInternal::didRemoveRemoteStream(const WebKit::WebMediaStreamDescriptor& webMediaStreamDescriptor)
 {
-    m_client->didRemoveRemoteStream(webMediaStreamDescriptor);
+    if (m_webHandler)
+        m_client->didRemoveRemoteStream(webMediaStreamDescriptor);
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebKit/chromium/public/WebKitPlatformSupport.h (100161 => 100162)


--- trunk/Source/WebKit/chromium/public/WebKitPlatformSupport.h	2011-11-14 17:59:20 UTC (rev 100161)
+++ trunk/Source/WebKit/chromium/public/WebKitPlatformSupport.h	2011-11-14 18:06:35 UTC (rev 100162)
@@ -325,6 +325,7 @@
 
     // WebRTC ----------------------------------------------------------
 
+    // May return null if WebRTC functionality is not avaliable or out of resources.
     virtual WebPeerConnectionHandler* createPeerConnectionHandler(WebPeerConnectionHandlerClient*) { return 0; }
 
 protected:
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to