Changeset 216938 in webkit


Ignore:
Timestamp:
May 16, 2017 11:27:31 AM (7 years ago)
Author:
eric.carlson@apple.com
Message:

[MediaStream] Return default device list until user gives permission to capture
https://bugs.webkit.org/show_bug.cgi?id=172168
<rdar://problem/31816884>

Reviewed by Youenn Fablet.

Source/WebCore:

Test: fast/mediastream/media-devices-enumerate-devices.html

  • Modules/mediastream/MediaDevicesRequest.cpp:

(WebCore::MediaDevicesRequest::filterDeviceList): Remove all but the "default" number of
devices of each type.
(WebCore::MediaDevicesRequest::start): Call filterDeviceList.

  • Modules/mediastream/MediaDevicesRequest.h:

LayoutTests:

  • fast/mediastream/MediaDevices-enumerateDevices-expected.txt: Removed.
  • fast/mediastream/MediaDevices-enumerateDevices.html: Removed.
  • fast/mediastream/media-devices-enumerate-devices-expected.txt: Added.
  • fast/mediastream/media-devices-enumerate-devices.html: Added.
Location:
trunk
Files:
2 added
2 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r216935 r216938  
     12017-05-16  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [MediaStream] Return default device list until user gives permission to capture
     4        https://bugs.webkit.org/show_bug.cgi?id=172168
     5        <rdar://problem/31816884>
     6
     7        Reviewed by Youenn Fablet.
     8
     9        * fast/mediastream/MediaDevices-enumerateDevices-expected.txt: Removed.
     10        * fast/mediastream/MediaDevices-enumerateDevices.html: Removed.
     11        * fast/mediastream/media-devices-enumerate-devices-expected.txt: Added.
     12        * fast/mediastream/media-devices-enumerate-devices.html: Added.
     13
    1142017-05-16  Tim Horton  <timothy_horton@apple.com>
    215
  • trunk/Source/WebCore/ChangeLog

    r216937 r216938  
     12017-05-16  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [MediaStream] Return default device list until user gives permission to capture
     4        https://bugs.webkit.org/show_bug.cgi?id=172168
     5        <rdar://problem/31816884>
     6
     7        Reviewed by Youenn Fablet.
     8
     9        Test: fast/mediastream/media-devices-enumerate-devices.html
     10
     11        * Modules/mediastream/MediaDevicesRequest.cpp:
     12        (WebCore::MediaDevicesRequest::filterDeviceList): Remove all but the "default" number of
     13        devices of each type.
     14        (WebCore::MediaDevicesRequest::start): Call filterDeviceList.
     15        * Modules/mediastream/MediaDevicesRequest.h:
     16
    1172017-05-16  Claudio Saavedra  <csaavedra@igalia.com>
    218
  • trunk/Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp

    r215929 r216938  
    7777}
    7878
     79void MediaDevicesRequest::filterDeviceList(Vector<RefPtr<MediaDeviceInfo>>& devices)
     80{
     81#if !PLATFORM(COCOA)
     82    UNUSED_PARAM(devices);
     83#else
     84
     85#if PLATFORM(IOS)
     86    static const int defaultCameraCount = 2;
     87#endif
     88#if PLATFORM(MAC)
     89    static const int defaultCameraCount = 1;
     90#endif
     91    static const int defaultMicrophoneCount = 1;
     92
     93    int cameraCount = 0;
     94    int microphoneCount = 0;
     95    devices.removeAllMatching([&](const RefPtr<MediaDeviceInfo>& device) -> bool {
     96        if (device->kind() == MediaDeviceInfo::Kind::Videoinput && ++cameraCount > defaultCameraCount)
     97            return true;
     98        if (device->kind() == MediaDeviceInfo::Kind::Audioinput && ++microphoneCount > defaultMicrophoneCount)
     99            return true;
     100
     101        return false;
     102    });
     103
     104#endif
     105}
     106
    79107void MediaDevicesRequest::start()
    80108{
     
    105133        }
    106134
     135        if (!originHasPersistentAccess && !document.hasHadActiveMediaStreamTrack())
     136            filterDeviceList(devices);
     137
    107138        callOnMainThread([protectedThis = makeRef(*this), devices = WTFMove(devices)]() mutable {
    108139            protectedThis->m_promise.resolve(devices);
  • trunk/Source/WebCore/Modules/mediastream/MediaDevicesRequest.h

    r215929 r216938  
    5252    void contextDestroyed() final;
    5353
     54    void filterDeviceList(Vector<RefPtr<MediaDeviceInfo>>&);
     55
    5456    MediaDevices::EnumerateDevicesPromise m_promise;
    5557    RefPtr<MediaDevicesRequest> m_protector;
Note: See TracChangeset for help on using the changeset viewer.