⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 245935 in webkit


Ignore:
Timestamp:
May 30, 2019, 5:33:35 PM (7 years ago)
Author:
Alan Coon
Message:

Apply patch. rdar://problem/51264770

Location:
branches/safari-607-branch/Source/WebKit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-607-branch/Source/WebKit/ChangeLog

    r245931 r245935  
     12019-05-30  Kocsen Chung  <kocsen_chung@apple.com>
     2
     3        Apply patch. rdar://problem/51264770
     4
     5    2019-05-30  Youenn Fablet  <youenn@apple.com>
     6
     7            UserMediaCaptureManager should remove a source from its map once the source is ended
     8            https://bugs.webkit.org/show_bug.cgi?id=198337
     9
     10            When the source is stopped, for instance using MediaStreamTrack.stop,
     11            remove the source from UserMediaCaptureManager sources map.
     12            This makes sure the map will not grow over time.
     13            Add an if check to ensure that the source is still there before processing an incoming IPC call.
     14
     15            When UIProcess tells us the capture is finished (typically capture failed), remove the entry on WebProcess side as well.
     16
     17            * WebProcess/cocoa/UserMediaCaptureManager.cpp:
     18            (WebKit::UserMediaCaptureManager::createCaptureSource):
     19            (WebKit::UserMediaCaptureManager::sourceStopped):
     20            (WebKit::UserMediaCaptureManager::captureFailed):
     21            (WebKit::UserMediaCaptureManager::sourceMutedChanged):
     22            (WebKit::UserMediaCaptureManager::sourceSettingsChanged):
     23            (WebKit::UserMediaCaptureManager::storageChanged):
     24            (WebKit::UserMediaCaptureManager::ringBufferFrameBoundsChanged):
     25            (WebKit::UserMediaCaptureManager::audioSamplesAvailable):
     26            (WebKit::UserMediaCaptureManager::remoteVideoSampleAvailable):
     27            (WebKit::UserMediaCaptureManager::sourceEnded):
     28            (WebKit::UserMediaCaptureManager::applyConstraintsSucceeded):
     29            (WebKit::UserMediaCaptureManager::applyConstraintsFailed):
     30
    1312019-05-30  Kocsen Chung  <kocsen_chung@apple.com>
    232
  • branches/safari-607-branch/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp

    r239427 r245935  
    254254    auto source = adoptRef(*new Source(String::number(id), type, String { settings.label() }, WTFMove(hashSalt), id, *this));
    255255    source->setSettings(WTFMove(settings));
    256     m_sources.set(id, source.copyRef());
     256    m_sources.add(id, source.copyRef());
    257257    return WebCore::CaptureSourceOrError(WTFMove(source));
    258258}
     
    260260void UserMediaCaptureManager::sourceStopped(uint64_t id)
    261261{
    262     ASSERT(m_sources.contains(id));
    263     m_sources.get(id)->stop();
     262    if (auto source = m_sources.get(id))
     263        source->stop();
    264264}
    265265
    266266void UserMediaCaptureManager::captureFailed(uint64_t id)
    267267{
    268     ASSERT(m_sources.contains(id));
    269     m_sources.get(id)->captureFailed();
     268    if (auto source = m_sources.get(id))
     269        source->captureFailed();
    270270}
    271271
    272272void UserMediaCaptureManager::sourceMutedChanged(uint64_t id, bool muted)
    273273{
    274     ASSERT(m_sources.contains(id));
    275     m_sources.get(id)->setMuted(muted);
     274    if (auto source = m_sources.get(id))
     275        source->setMuted(muted);
    276276}
    277277
    278278void UserMediaCaptureManager::sourceSettingsChanged(uint64_t id, const RealtimeMediaSourceSettings& settings)
    279279{
    280     ASSERT(m_sources.contains(id));
    281     m_sources.get(id)->setSettings(RealtimeMediaSourceSettings(settings));
     280    if (auto source = m_sources.get(id))
     281        source->setSettings(RealtimeMediaSourceSettings(settings));
    282282}
    283283
    284284void UserMediaCaptureManager::storageChanged(uint64_t id, const SharedMemory::Handle& handle, const WebCore::CAAudioStreamDescription& description, uint64_t numberOfFrames)
    285285{
    286     ASSERT(m_sources.contains(id));
    287     m_sources.get(id)->setStorage(handle, description, numberOfFrames);
     286    if (auto source = m_sources.get(id))
     287        source->setStorage(handle, description, numberOfFrames);
    288288}
    289289
    290290void UserMediaCaptureManager::ringBufferFrameBoundsChanged(uint64_t id, uint64_t startFrame, uint64_t endFrame)
    291291{
    292     ASSERT(m_sources.contains(id));
    293     m_sources.get(id)->setRingBufferFrameBounds(startFrame, endFrame);
     292    if (auto source = m_sources.get(id))
     293        source->setRingBufferFrameBounds(startFrame, endFrame);
    294294}
    295295
    296296void UserMediaCaptureManager::audioSamplesAvailable(uint64_t id, MediaTime time, uint64_t numberOfFrames, uint64_t startFrame, uint64_t endFrame)
    297297{
    298     ASSERT(m_sources.contains(id));
    299     auto& source = *m_sources.get(id);
    300     source.setRingBufferFrameBounds(startFrame, endFrame);
    301     source.audioSamplesAvailable(time, numberOfFrames);
     298    if (auto source = m_sources.get(id)) {
     299        source->setRingBufferFrameBounds(startFrame, endFrame);
     300        source->audioSamplesAvailable(time, numberOfFrames);
     301    }
    302302}
    303303
     
    305305void UserMediaCaptureManager::remoteVideoSampleAvailable(uint64_t id, RemoteVideoSample&& sample)
    306306{
    307     ASSERT(m_sources.contains(id));
    308     m_sources.get(id)->remoteVideoSampleAvailable(WTFMove(sample));
     307    if (auto source = m_sources.get(id))
     308        source->remoteVideoSampleAvailable(WTFMove(sample));
    309309}
    310310#else
     
    344344void UserMediaCaptureManager::applyConstraintsSucceeded(uint64_t id, const WebCore::RealtimeMediaSourceSettings& settings)
    345345{
    346     ASSERT(m_sources.contains(id));
    347     auto& source = *m_sources.get(id);
    348     source.applyConstraintsSucceeded(settings);
     346    if (auto source = m_sources.get(id))
     347        source->applyConstraintsSucceeded(settings);
    349348}
    350349
    351350void UserMediaCaptureManager::applyConstraintsFailed(uint64_t id, const String& failedConstraint, const String& message)
    352351{
    353     ASSERT(m_sources.contains(id));
    354     auto& source = *m_sources.get(id);
    355     source.applyConstraintsFailed(failedConstraint, message);
     352    if (auto source = m_sources.get(id))
     353        source->applyConstraintsFailed(failedConstraint, message);
    356354}
    357355
Note: See TracChangeset for help on using the changeset viewer.