Title: [245935] branches/safari-607-branch/Source/WebKit
Revision
245935
Author
[email protected]
Date
2019-05-30 17:33:35 -0700 (Thu, 30 May 2019)

Log Message

Apply patch. rdar://problem/51264770

Modified Paths


Diff

Modified: branches/safari-607-branch/Source/WebKit/ChangeLog (245934 => 245935)


--- branches/safari-607-branch/Source/WebKit/ChangeLog	2019-05-31 00:30:39 UTC (rev 245934)
+++ branches/safari-607-branch/Source/WebKit/ChangeLog	2019-05-31 00:33:35 UTC (rev 245935)
@@ -1,5 +1,35 @@
 2019-05-30  Kocsen Chung  <[email protected]>
 
+        Apply patch. rdar://problem/51264770
+
+    2019-05-30  Youenn Fablet  <[email protected]>
+
+            UserMediaCaptureManager should remove a source from its map once the source is ended
+            https://bugs.webkit.org/show_bug.cgi?id=198337
+
+            When the source is stopped, for instance using MediaStreamTrack.stop,
+            remove the source from UserMediaCaptureManager sources map.
+            This makes sure the map will not grow over time.
+            Add an if check to ensure that the source is still there before processing an incoming IPC call.
+
+            When UIProcess tells us the capture is finished (typically capture failed), remove the entry on WebProcess side as well.
+
+            * WebProcess/cocoa/UserMediaCaptureManager.cpp:
+            (WebKit::UserMediaCaptureManager::createCaptureSource):
+            (WebKit::UserMediaCaptureManager::sourceStopped):
+            (WebKit::UserMediaCaptureManager::captureFailed):
+            (WebKit::UserMediaCaptureManager::sourceMutedChanged):
+            (WebKit::UserMediaCaptureManager::sourceSettingsChanged):
+            (WebKit::UserMediaCaptureManager::storageChanged):
+            (WebKit::UserMediaCaptureManager::ringBufferFrameBoundsChanged):
+            (WebKit::UserMediaCaptureManager::audioSamplesAvailable):
+            (WebKit::UserMediaCaptureManager::remoteVideoSampleAvailable):
+            (WebKit::UserMediaCaptureManager::sourceEnded):
+            (WebKit::UserMediaCaptureManager::applyConstraintsSucceeded):
+            (WebKit::UserMediaCaptureManager::applyConstraintsFailed):
+
+2019-05-30  Kocsen Chung  <[email protected]>
+
         Apply patch. rdar://problem/51264847
 
     2019-05-30  Chris Dumez  <[email protected]>

Modified: branches/safari-607-branch/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp (245934 => 245935)


--- branches/safari-607-branch/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp	2019-05-31 00:30:39 UTC (rev 245934)
+++ branches/safari-607-branch/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp	2019-05-31 00:33:35 UTC (rev 245935)
@@ -253,59 +253,59 @@
     auto type = device.type() == CaptureDevice::DeviceType::Microphone ? WebCore::RealtimeMediaSource::Type::Audio : WebCore::RealtimeMediaSource::Type::Video;
     auto source = adoptRef(*new Source(String::number(id), type, String { settings.label() }, WTFMove(hashSalt), id, *this));
     source->setSettings(WTFMove(settings));
-    m_sources.set(id, source.copyRef());
+    m_sources.add(id, source.copyRef());
     return WebCore::CaptureSourceOrError(WTFMove(source));
 }
 
 void UserMediaCaptureManager::sourceStopped(uint64_t id)
 {
-    ASSERT(m_sources.contains(id));
-    m_sources.get(id)->stop();
+    if (auto source = m_sources.get(id))
+        source->stop();
 }
 
 void UserMediaCaptureManager::captureFailed(uint64_t id)
 {
-    ASSERT(m_sources.contains(id));
-    m_sources.get(id)->captureFailed();
+    if (auto source = m_sources.get(id))
+        source->captureFailed();
 }
 
 void UserMediaCaptureManager::sourceMutedChanged(uint64_t id, bool muted)
 {
-    ASSERT(m_sources.contains(id));
-    m_sources.get(id)->setMuted(muted);
+    if (auto source = m_sources.get(id))
+        source->setMuted(muted);
 }
 
 void UserMediaCaptureManager::sourceSettingsChanged(uint64_t id, const RealtimeMediaSourceSettings& settings)
 {
-    ASSERT(m_sources.contains(id));
-    m_sources.get(id)->setSettings(RealtimeMediaSourceSettings(settings));
+    if (auto source = m_sources.get(id))
+        source->setSettings(RealtimeMediaSourceSettings(settings));
 }
 
 void UserMediaCaptureManager::storageChanged(uint64_t id, const SharedMemory::Handle& handle, const WebCore::CAAudioStreamDescription& description, uint64_t numberOfFrames)
 {
-    ASSERT(m_sources.contains(id));
-    m_sources.get(id)->setStorage(handle, description, numberOfFrames);
+    if (auto source = m_sources.get(id))
+        source->setStorage(handle, description, numberOfFrames);
 }
 
 void UserMediaCaptureManager::ringBufferFrameBoundsChanged(uint64_t id, uint64_t startFrame, uint64_t endFrame)
 {
-    ASSERT(m_sources.contains(id));
-    m_sources.get(id)->setRingBufferFrameBounds(startFrame, endFrame);
+    if (auto source = m_sources.get(id))
+        source->setRingBufferFrameBounds(startFrame, endFrame);
 }
 
 void UserMediaCaptureManager::audioSamplesAvailable(uint64_t id, MediaTime time, uint64_t numberOfFrames, uint64_t startFrame, uint64_t endFrame)
 {
-    ASSERT(m_sources.contains(id));
-    auto& source = *m_sources.get(id);
-    source.setRingBufferFrameBounds(startFrame, endFrame);
-    source.audioSamplesAvailable(time, numberOfFrames);
+    if (auto source = m_sources.get(id)) {
+        source->setRingBufferFrameBounds(startFrame, endFrame);
+        source->audioSamplesAvailable(time, numberOfFrames);
+    }
 }
 
 #if HAVE(IOSURFACE)
 void UserMediaCaptureManager::remoteVideoSampleAvailable(uint64_t id, RemoteVideoSample&& sample)
 {
-    ASSERT(m_sources.contains(id));
-    m_sources.get(id)->remoteVideoSampleAvailable(WTFMove(sample));
+    if (auto source = m_sources.get(id))
+        source->remoteVideoSampleAvailable(WTFMove(sample));
 }
 #else
 NO_RETURN_DUE_TO_ASSERT void UserMediaCaptureManager::remoteVideoSampleAvailable(uint64_t, RemoteVideoSample&&)
@@ -343,16 +343,14 @@
 
 void UserMediaCaptureManager::applyConstraintsSucceeded(uint64_t id, const WebCore::RealtimeMediaSourceSettings& settings)
 {
-    ASSERT(m_sources.contains(id));
-    auto& source = *m_sources.get(id);
-    source.applyConstraintsSucceeded(settings);
+    if (auto source = m_sources.get(id))
+        source->applyConstraintsSucceeded(settings);
 }
 
 void UserMediaCaptureManager::applyConstraintsFailed(uint64_t id, const String& failedConstraint, const String& message)
 {
-    ASSERT(m_sources.contains(id));
-    auto& source = *m_sources.get(id);
-    source.applyConstraintsFailed(failedConstraint, message);
+    if (auto source = m_sources.get(id))
+        source->applyConstraintsFailed(failedConstraint, message);
 }
 
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to