Title: [264604] trunk
- Revision
- 264604
- Author
- [email protected]
- Date
- 2020-07-20 09:58:12 -0700 (Mon, 20 Jul 2020)
Log Message
GenerateCertificateAsync should be called on signaling thread
https://bugs.webkit.org/show_bug.cgi?id=214447
Reviewed by Geoffrey Garen.
Source/WebCore:
As per debug assert, GenerateCertificateAsync is expected to be called in the signaling thread.
Covered by unskipped test.
* Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp:
(WebCore::LibWebRTCCertificateGenerator::generateCertificate):
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::LibWebRTCProvider::prepareCertificateGenerator):
We can pass generator to a background thread as it is allocated once and does not get freed.
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
LayoutTests:
* platform/mac-wk2/TestExpectations:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (264603 => 264604)
--- trunk/LayoutTests/ChangeLog 2020-07-20 16:26:54 UTC (rev 264603)
+++ trunk/LayoutTests/ChangeLog 2020-07-20 16:58:12 UTC (rev 264604)
@@ -1,3 +1,12 @@
+2020-07-20 Youenn Fablet <[email protected]>
+
+ GenerateCertificateAsync should be called on signaling thread
+ https://bugs.webkit.org/show_bug.cgi?id=214447
+
+ Reviewed by Geoffrey Garen.
+
+ * platform/mac-wk2/TestExpectations:
+
2020-07-20 Commit Queue <[email protected]>
Unreviewed, reverting r264596.
Modified: trunk/LayoutTests/platform/mac-wk2/TestExpectations (264603 => 264604)
--- trunk/LayoutTests/platform/mac-wk2/TestExpectations 2020-07-20 16:26:54 UTC (rev 264603)
+++ trunk/LayoutTests/platform/mac-wk2/TestExpectations 2020-07-20 16:58:12 UTC (rev 264604)
@@ -1077,6 +1077,5 @@
webkit.org/b/214478 [ Debug ] storage/indexeddb/structured-clone-private.html [ Skip ]
webkit.org/b/214478 [ Debug ] storage/indexeddb/structured-clone.html [ Skip ]
webkit.org/b/214478 [ Debug ] tiled-drawing/scrolling/fast-scroll-iframe-latched-select.html [ Skip ]
-webkit.org/b/214478 [ Debug ] webrtc/certificates-indexeddb.html [ Skip ]
webkit.org/b/214478 [ Debug ] webrtc/h265.html [ Skip ]
webkit.org/b/214478 [ Debug ] webrtc/simulcast-h264.html [ Skip ]
Modified: trunk/Source/WebCore/ChangeLog (264603 => 264604)
--- trunk/Source/WebCore/ChangeLog 2020-07-20 16:26:54 UTC (rev 264603)
+++ trunk/Source/WebCore/ChangeLog 2020-07-20 16:58:12 UTC (rev 264604)
@@ -1,3 +1,20 @@
+2020-07-20 Youenn Fablet <[email protected]>
+
+ GenerateCertificateAsync should be called on signaling thread
+ https://bugs.webkit.org/show_bug.cgi?id=214447
+
+ Reviewed by Geoffrey Garen.
+
+ As per debug assert, GenerateCertificateAsync is expected to be called in the signaling thread.
+ Covered by unskipped test.
+
+ * Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp:
+ (WebCore::LibWebRTCCertificateGenerator::generateCertificate):
+ * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
+ (WebCore::LibWebRTCProvider::prepareCertificateGenerator):
+ We can pass generator to a background thread as it is allocated once and does not get freed.
+ * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
+
2020-07-20 Commit Queue <[email protected]>
Unreviewed, reverting r264596.
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp (264603 => 264604)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp 2020-07-20 16:26:54 UTC (rev 264603)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp 2020-07-20 16:58:12 UTC (rev 264604)
@@ -114,7 +114,9 @@
if (info.expires)
expiresMs = static_cast<uint64_t>(*info.expires);
- provider.certificateGenerator().GenerateCertificateAsync(keyParamsFromCertificateType(info), expiresMs, WTFMove(callback));
+ provider.prepareCertificateGenerator([info, expiresMs, callback = WTFMove(callback)](auto& generator) mutable {
+ generator.GenerateCertificateAsync(keyParamsFromCertificateType(info), expiresMs, WTFMove(callback));
+ });
}
} // namespace LibWebRTCCertificateGenerator
Modified: trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp (264603 => 264604)
--- trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp 2020-07-20 16:26:54 UTC (rev 264603)
+++ trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp 2020-07-20 16:58:12 UTC (rev 264604)
@@ -362,13 +362,16 @@
return m_factory->CreatePeerConnection(configuration, WTFMove(dependencies));
}
-rtc::RTCCertificateGenerator& LibWebRTCProvider::certificateGenerator()
+void LibWebRTCProvider::prepareCertificateGenerator(Function<void(rtc::RTCCertificateGenerator&)>&& callback)
{
auto& factoryAndThreads = getStaticFactoryAndThreads(m_useNetworkThreadWithSocketServer);
if (!factoryAndThreads.certificateGenerator)
factoryAndThreads.certificateGenerator = makeUniqueWithoutFastMallocCheck<rtc::RTCCertificateGenerator>(factoryAndThreads.signalingThread.get(), factoryAndThreads.networkThread.get());
- return *factoryAndThreads.certificateGenerator;
+ auto& generator = *factoryAndThreads.certificateGenerator;
+ callOnWebRTCSignalingThread([&generator, callback = WTFMove(callback)]() mutable {
+ callback(generator);
+ });
}
static inline Optional<cricket::MediaType> typeFromKind(const String& kind)
Modified: trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h (264603 => 264604)
--- trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h 2020-07-20 16:26:54 UTC (rev 264603)
+++ trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h 2020-07-20 16:58:12 UTC (rev 264604)
@@ -111,7 +111,8 @@
bool isSupportingVP9() const { return m_supportsVP9; }
virtual void disableNonLocalhostConnections() { m_disableNonLocalhostConnections = true; }
- rtc::RTCCertificateGenerator& certificateGenerator();
+ // Callback is executed on a background thread.
+ void prepareCertificateGenerator(Function<void(rtc::RTCCertificateGenerator&)>&&);
Optional<RTCRtpCapabilities> receiverCapabilities(const String& kind);
Optional<RTCRtpCapabilities> senderCapabilities(const String& kind);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes