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