Title: [273892] trunk/Source/WebKit
Revision
273892
Author
you...@apple.com
Date
2021-03-04 09:48:56 -0800 (Thu, 04 Mar 2021)

Log Message

REGRESSION (r273732): ASSERTION FAILED: Completion handler should always be called under WebKit::RemoteRealtimeMediaSourceProxy::~RemoteRealtimeMediaSourceProxy
https://bugs.webkit.org/show_bug.cgi?id=222691
<rdar://problem/75006211>

Reviewed by Eric Carlson.

Make sure to return a ApplyConstraints completed message in all cases.
Call completion handler when source gets destroyed.
Covered by existing tests.

* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::applyConstraints):
* WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp:
(WebKit::RemoteRealtimeMediaSourceProxy::~RemoteRealtimeMediaSourceProxy):
* WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.h:
* WebProcess/cocoa/RemoteRealtimeVideoSource.cpp:
(WebKit::RemoteRealtimeVideoSource::gpuProcessConnectionDidClose):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (273891 => 273892)


--- trunk/Source/WebKit/ChangeLog	2021-03-04 16:44:16 UTC (rev 273891)
+++ trunk/Source/WebKit/ChangeLog	2021-03-04 17:48:56 UTC (rev 273892)
@@ -1,5 +1,25 @@
 2021-03-04  Youenn Fablet  <you...@apple.com>
 
+        REGRESSION (r273732): ASSERTION FAILED: Completion handler should always be called under WebKit::RemoteRealtimeMediaSourceProxy::~RemoteRealtimeMediaSourceProxy
+        https://bugs.webkit.org/show_bug.cgi?id=222691
+        <rdar://problem/75006211>
+
+        Reviewed by Eric Carlson.
+
+        Make sure to return a ApplyConstraints completed message in all cases.
+        Call completion handler when source gets destroyed.
+        Covered by existing tests.
+
+        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
+        (WebKit::UserMediaCaptureManagerProxy::applyConstraints):
+        * WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp:
+        (WebKit::RemoteRealtimeMediaSourceProxy::~RemoteRealtimeMediaSourceProxy):
+        * WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.h:
+        * WebProcess/cocoa/RemoteRealtimeVideoSource.cpp:
+        (WebKit::RemoteRealtimeVideoSource::gpuProcessConnectionDidClose):
+
+2021-03-04  Youenn Fablet  <you...@apple.com>
+
         Update camera and microphone capture state control WKWebView API
         https://bugs.webkit.org/show_bug.cgi?id=222166
 

Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp (273891 => 273892)


--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp	2021-03-04 16:44:16 UTC (rev 273891)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp	2021-03-04 17:48:56 UTC (rev 273892)
@@ -325,8 +325,10 @@
 void UserMediaCaptureManagerProxy::applyConstraints(RealtimeMediaSourceIdentifier id, const WebCore::MediaConstraints& constraints)
 {
     auto* proxy = m_proxies.get(id);
-    if (!proxy)
+    if (!proxy) {
+        m_connectionProxy->connection().send(Messages::UserMediaCaptureManager::ApplyConstraintsFailed(id, { }, "Unknown source"_s), 0);
         return;
+    }
 
     auto& source = proxy->source();
     auto result = source.applyConstraints(constraints);

Modified: trunk/Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp (273891 => 273892)


--- trunk/Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp	2021-03-04 16:44:16 UTC (rev 273891)
+++ trunk/Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp	2021-03-04 17:48:56 UTC (rev 273892)
@@ -44,6 +44,11 @@
 using namespace PAL;
 using namespace WebCore;
 
+RemoteRealtimeMediaSourceProxy::~RemoteRealtimeMediaSourceProxy()
+{
+    failApplyConstraintCallbacks("Source terminated"_s);
+}
+
 IPC::Connection* RemoteRealtimeMediaSourceProxy::connection()
 {
     ASSERT(isMainThread());

Modified: trunk/Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.h (273891 => 273892)


--- trunk/Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.h	2021-03-04 16:44:16 UTC (rev 273891)
+++ trunk/Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.h	2021-03-04 17:48:56 UTC (rev 273892)
@@ -46,6 +46,7 @@
 class RemoteRealtimeMediaSourceProxy {
 public:
     RemoteRealtimeMediaSourceProxy(WebCore::RealtimeMediaSourceIdentifier, const WebCore::CaptureDevice&, bool shouldCaptureInGPUProcess, const WebCore::MediaConstraints*);
+    ~RemoteRealtimeMediaSourceProxy();
 
     IPC::Connection* connection();
     WebCore::RealtimeMediaSourceIdentifier identifier() const { return m_identifier; }

Modified: trunk/Source/WebKit/WebProcess/cocoa/RemoteRealtimeVideoSource.cpp (273891 => 273892)


--- trunk/Source/WebKit/WebProcess/cocoa/RemoteRealtimeVideoSource.cpp	2021-03-04 16:44:16 UTC (rev 273891)
+++ trunk/Source/WebKit/WebProcess/cocoa/RemoteRealtimeVideoSource.cpp	2021-03-04 17:48:56 UTC (rev 273892)
@@ -214,6 +214,7 @@
     m_proxy.resetReady();
     createRemoteMediaSource();
 
+    m_proxy.failApplyConstraintCallbacks("GPU Process terminated"_s);
     if (m_sizeConstraints)
         m_proxy.applyConstraints(*m_sizeConstraints, [](auto) { });
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to