Title: [270394] trunk/Source/WebCore
- Revision
- 270394
- Author
- [email protected]
- Date
- 2020-12-03 09:15:41 -0800 (Thu, 03 Dec 2020)
Log Message
MediaSessionHelper::setSharedHelper() hangs when "media in the GPU process" is enabled
https://bugs.webkit.org/show_bug.cgi?id=219466
<rdar://problem/71566601>
Reviewed by Chris Dumez.
The WebProcess will attempt to set a RemoteMediaSessionHelper as the sharedHelper, but calling
MediaSessionHelper::setSharedHelper() will cause a MediaSessionHelperIOS to be created, which in
turn tries to talk to AVSystemController.sharedAVSystemController, which fails due to sandbox
restrictions.
Refactor sharedHelperInstance() to not create a MediaSessionHelperIOS by default, which allows
setSharedHelper to assign a new helper without creating one by default.
* platform/audio/ios/MediaSessionHelperIOS.mm:
(sharedHelperInstance):
(MediaSessionHelper::sharedHelper):
(MediaSessionHelper::resetSharedHelper):
(MediaSessionHelper::setSharedHelper):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (270393 => 270394)
--- trunk/Source/WebCore/ChangeLog 2020-12-03 14:08:10 UTC (rev 270393)
+++ trunk/Source/WebCore/ChangeLog 2020-12-03 17:15:41 UTC (rev 270394)
@@ -1,3 +1,25 @@
+2020-12-03 Jer Noble <[email protected]>
+
+ MediaSessionHelper::setSharedHelper() hangs when "media in the GPU process" is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=219466
+ <rdar://problem/71566601>
+
+ Reviewed by Chris Dumez.
+
+ The WebProcess will attempt to set a RemoteMediaSessionHelper as the sharedHelper, but calling
+ MediaSessionHelper::setSharedHelper() will cause a MediaSessionHelperIOS to be created, which in
+ turn tries to talk to AVSystemController.sharedAVSystemController, which fails due to sandbox
+ restrictions.
+
+ Refactor sharedHelperInstance() to not create a MediaSessionHelperIOS by default, which allows
+ setSharedHelper to assign a new helper without creating one by default.
+
+ * platform/audio/ios/MediaSessionHelperIOS.mm:
+ (sharedHelperInstance):
+ (MediaSessionHelper::sharedHelper):
+ (MediaSessionHelper::resetSharedHelper):
+ (MediaSessionHelper::setSharedHelper):
+
2020-12-03 Andres Gonzalez <[email protected]>
Fix for crash handling NSAccessibilityInsertionPointLineNumberAttribute for text fields in isolated tree mode.
Modified: trunk/Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm (270393 => 270394)
--- trunk/Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm 2020-12-03 14:08:10 UTC (rev 270393)
+++ trunk/Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm 2020-12-03 17:15:41 UTC (rev 270394)
@@ -126,25 +126,30 @@
#endif
};
-static UniqueRef<MediaSessionHelper>& sharedHelperInstance()
+static std::unique_ptr<MediaSessionHelper>& sharedHelperInstance()
{
- static NeverDestroyed<UniqueRef<MediaSessionHelper>> helper = makeUniqueRef<MediaSessionHelperiOS>();
+ static NeverDestroyed<std::unique_ptr<MediaSessionHelper>> helper;
return helper;
}
MediaSessionHelper& MediaSessionHelper::sharedHelper()
{
- return sharedHelperInstance();
+ auto& helper = sharedHelperInstance();
+ if (!helper)
+ resetSharedHelper();
+
+ ASSERT(helper);
+ return *helper;
}
void MediaSessionHelper::resetSharedHelper()
{
- sharedHelperInstance() = makeUniqueRef<MediaSessionHelperiOS>();
+ sharedHelperInstance() = makeUnique<MediaSessionHelperiOS>();
}
void MediaSessionHelper::setSharedHelper(UniqueRef<MediaSessionHelper>&& helper)
{
- sharedHelperInstance() = WTFMove(helper);
+ sharedHelperInstance() = helper.moveToUniquePtr();
}
void MediaSessionHelper::addClient(MediaSessionHelperClient& client)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes