<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>209417</bug_id>
          
          <creation_ts>2020-03-23 03:44:42 -0700</creation_ts>
          <short_desc>MediaDevices::refreshDevices should take device type into account</short_desc>
          <delta_ts>2020-04-01 09:59:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>milen.yordanov</cc>
    
    <cc>M.Tjioe</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>y.sugiura.0316</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1632784</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-23 03:44:42 -0700</bug_when>
    <thetext>MediaDevices::refreshDevices should take device type into account</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632785</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-23 03:44:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/60521332&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632786</commentid>
    <comment_count>2</comment_count>
      <attachid>394251</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-23 03:46:44 -0700</bug_when>
    <thetext>Created attachment 394251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632824</commentid>
    <comment_count>3</comment_count>
      <attachid>394251</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-03-23 06:58:41 -0700</bug_when>
    <thetext>Comment on attachment 394251
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=394251&amp;action=review

&gt; Source/WebCore/Modules/mediastream/MediaDevices.cpp:186
&gt; +        auto deviceKind = newDevice.type() == CaptureDevice::DeviceType::Microphone ? MediaDeviceInfo::Kind::Audioinput : MediaDeviceInfo::Kind::Videoinput;
&gt; +        auto index = m_devices.findMatching([deviceKind, &amp;newDevice](auto&amp; oldDevice) {
&gt; +            return oldDevice-&gt;deviceId() == newDevice.persistentId() &amp;&amp; oldDevice-&gt;kind() == deviceKind;

How does this help the case where there is more than one device of a given type? Or is that not an issue because we have device IDs if `newDevices` has more than one device of any type?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632830</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-23 07:21:34 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #3)
&gt; Comment on attachment 394251 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=394251&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaDevices.cpp:186
&gt; &gt; +        auto deviceKind = newDevice.type() == CaptureDevice::DeviceType::Microphone ? MediaDeviceInfo::Kind::Audioinput : MediaDeviceInfo::Kind::Videoinput;
&gt; &gt; +        auto index = m_devices.findMatching([deviceKind, &amp;newDevice](auto&amp; oldDevice) {
&gt; &gt; +            return oldDevice-&gt;deviceId() == newDevice.persistentId() &amp;&amp; oldDevice-&gt;kind() == deviceKind;
&gt; 
&gt; How does this help the case where there is more than one device of a given
&gt; type? Or is that not an issue because we have device IDs if `newDevices` has
&gt; more than one device of any type?

UIProcess is filtering if needed to only expose 1 device of each type.
The issue is that we will have two devices of two different type but with the same ID (the empty string).
In that case, when calling enumerateDevices again, we will confuse the audioinput device with the videoinput device, which will lead to expose two audio input devices instead of 1 audio input and 1 video input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632832</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-23 07:24:24 -0700</bug_when>
    <thetext>Committed r258837: &lt;https://trac.webkit.org/changeset/258837&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394251.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634229</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-26 00:13:34 -0700</bug_when>
    <thetext>*** Bug 209580 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635496</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-30 07:26:41 -0700</bug_when>
    <thetext>*** Bug 209739 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636549</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-04-01 09:59:44 -0700</bug_when>
    <thetext>*** Bug 209708 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394251</attachid>
            <date>2020-03-23 03:46:44 -0700</date>
            <delta_ts>2020-03-23 07:24:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209417-20200323114643.patch</filename>
            <type>text/plain</type>
            <size>4975</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZiYWI0MGM0NjNlMjBh
MTQ3ZDZkMjY3MzM0ODg0OWFjN2E5YjRmNS4uYzFmZTg2ZjliYjI4ZmY3YmJiZmYzY2JlZDljZGU5
N2VjOWIwYTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAzLTIzICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYURldmljZXM6OnJl
ZnJlc2hEZXZpY2VzIHNob3VsZCB0YWtlIGRldmljZSB0eXBlIGludG8gYWNjb3VudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDE3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MDUyMTMzMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBOb3cgdGhhdCB3ZSBzZXQgZGV2aWNlSWQgdG8gdGhlIGVtcHR5
IHN0cmluZyB3aGVuIG1lZGlhIGNhcHR1cmUgaXMgbm90IGdyYW50ZWQsCisgICAgICAgIHdlIGNh
biBoYXZlIHR3byBkZXZpY2VzIHdpdGggdGhlIHNhbWUgSUQuIFdlIGFsc28gbmVlZCB0byBoYW5k
bGUgdGhlIGRldmljZSB0eXBlLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpyZWZyZXNoRGV2
aWNlcyk6CisKIDIwMjAtMDMtMjMgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbmFtZSBibGFua1VSTCB0byBhYm91dEJsYW5rVVJMCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5kZXggNmVh
YTkwYmRjOTA3MWY5OWMxZDExOGFkZDQ5ZjU5MTU3ZmVkNGRjNi4uOWIxODAzZDEyNGExZTJiNjlm
MDQ4OGQxYjJmZmNlZmE2YWE5ZjNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMTgxLDE2ICsxODEsMTYgQEAgdm9p
ZCBNZWRpYURldmljZXM6OnJlZnJlc2hEZXZpY2VzKGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNl
PiYgbmV3RGV2aWNlcykKICAgICAgICAgaWYgKCFjYW5BY2Nlc3NDYW1lcmEgJiYgbmV3RGV2aWNl
LnR5cGUoKSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGluZGV4ID0gbV9kZXZpY2VzLmZpbmRNYXRjaGlu
ZyhbJm5ld0RldmljZV0oYXV0byYgb2xkRGV2aWNlKSB7Ci0gICAgICAgICAgICByZXR1cm4gb2xk
RGV2aWNlLT5kZXZpY2VJZCgpID09IG5ld0RldmljZS5wZXJzaXN0ZW50SWQoKTsKKyAgICAgICAg
YXV0byBkZXZpY2VLaW5kID0gbmV3RGV2aWNlLnR5cGUoKSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlOjpNaWNyb3Bob25lID8gTWVkaWFEZXZpY2VJbmZvOjpLaW5kOjpBdWRpb2lucHV0IDog
TWVkaWFEZXZpY2VJbmZvOjpLaW5kOjpWaWRlb2lucHV0OworICAgICAgICBhdXRvIGluZGV4ID0g
bV9kZXZpY2VzLmZpbmRNYXRjaGluZyhbZGV2aWNlS2luZCwgJm5ld0RldmljZV0oYXV0byYgb2xk
RGV2aWNlKSB7CisgICAgICAgICAgICByZXR1cm4gb2xkRGV2aWNlLT5kZXZpY2VJZCgpID09IG5l
d0RldmljZS5wZXJzaXN0ZW50SWQoKSAmJiBvbGREZXZpY2UtPmtpbmQoKSA9PSBkZXZpY2VLaW5k
OwogICAgICAgICB9KTsKICAgICAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7CiAgICAgICAg
ICAgICBkZXZpY2VzLmFwcGVuZChtX2RldmljZXNbaW5kZXhdLmNvcHlSZWYoKSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gZGV2aWNlVHlwZSA9IG5l
d0RldmljZS50eXBlKCkgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSA/
IE1lZGlhRGV2aWNlSW5mbzo6S2luZDo6QXVkaW9pbnB1dCA6IE1lZGlhRGV2aWNlSW5mbzo6S2lu
ZDo6VmlkZW9pbnB1dDsKLSAgICAgICAgZGV2aWNlcy5hcHBlbmQoTWVkaWFEZXZpY2VJbmZvOjpj
cmVhdGUobmV3RGV2aWNlLmxhYmVsKCksIG5ld0RldmljZS5wZXJzaXN0ZW50SWQoKSwgbmV3RGV2
aWNlLmdyb3VwSWQoKSwgZGV2aWNlVHlwZSkpOworICAgICAgICBkZXZpY2VzLmFwcGVuZChNZWRp
YURldmljZUluZm86OmNyZWF0ZShuZXdEZXZpY2UubGFiZWwoKSwgbmV3RGV2aWNlLnBlcnNpc3Rl
bnRJZCgpLCBuZXdEZXZpY2UuZ3JvdXBJZCgpLCBkZXZpY2VLaW5kKSk7CiAgICAgfQogICAgIG1f
ZGV2aWNlcyA9IFdURk1vdmUoZGV2aWNlcyk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjE0YTRhMDBlZGE5ZjZkMzRh
MDQ0OGJmMGVjYWUwYWMwNDRmZDgzNS4uNGY0NmY4MGM1OTNiYzZlMjFhM2ZmMTlkYTczMTM1YWQ5
NDUxMTg1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAzLTIzICB5b3Vlbm4gZmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYURldmljZXM6OnJlZnJlc2hEZXZp
Y2VzIHNob3VsZCB0YWtlIGRldmljZSB0eXBlIGludG8gYWNjb3VudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDE3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MDUyMTMzMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vbWVkaWEtZGV2aWNlLWluZm8tZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vbWVkaWEtZGV2aWNlLWluZm8uaHRtbDoK
KwogMjAyMC0wMy0yMiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAg
ICAgIERvY3VtZW50VGltZWxpbmUgLyBDU1NUcmFuc2l0aW9uIG9iamVjdHMgYXJlIGxlYWtpbmcg
b24gQ05OLmNvbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9tZWRp
YS1kZXZpY2UtaW5mby1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L21lZGlhLWRldmljZS1pbmZvLWV4cGVjdGVkLnR4dAppbmRleCBmNGVhNmY4MTA1OTBkMDVmMmU2
YWQzZjI4ZDY4ZjIyOGQxNjI1N2EzLi45ZjcxOTVmYzRlYTcyNmUzYTRjMDU3M2VjOTYwOWE5M2Rl
NzBjZjMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL21lZGlhLWRl
dmljZS1pbmZvLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L21lZGlhLWRldmljZS1pbmZvLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDQgQEAKIAogUEFTUyBU
ZXN0IHByb3BlcnRpZXMgb2YgTWVkaWFEZXZpY2VJbmZvIAorUEFTUyBFbnN1cmUgZW51bWVyYXRl
RGV2aWNlcyBleHBvc2VzIGJvdGggbWljcm9waG9uZSBhbmQgY2FtZXJhIAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL21lZGlhLWRldmljZS1pbmZvLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL21lZGlhLWRldmljZS1pbmZvLmh0bWwKaW5kZXgg
YmNmODRlOTFiODU5YzBhZTdkZTM2MzEzZmYzZDlmMjhkNjFiN2U2NC4uZTRjYTY3NzIwMDdkMDg1
Y2UxZDU0ZDBjZWM2ZjI0NDg3Yzg0NzVmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9tZWRpYS1kZXZpY2UtaW5mby5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vbWVkaWEtZGV2aWNlLWluZm8uaHRtbApAQCAtNiwxMSArNiw2IEBACiAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdD4KLSAgICB2YXIgZGV2aWNlcyA9IFtdOwotCi0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Np
b24odHJ1ZSk7Ci0KICAgICBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKICAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpCiAgICAgICAgICAgICAu
dGhlbigoZGV2aWNlcykgPT4gewpAQCAtMzMsNiArMjgsMTMgQEAKICAgICAgICAgICAgIH0pOwog
ICAgIH0sICJUZXN0IHByb3BlcnRpZXMgb2YgTWVkaWFEZXZpY2VJbmZvIik7CiAKKyAgICBwcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICAgICAgYXdhaXQgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCk7CisgICAgICAgIGNvbnN0IGRldmljZXMgPSBhd2Fp
dCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhkZXZpY2VzLmxlbmd0aCwgMik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZGV2
aWNlc1swXS5raW5kLCAiYXVkaW9pbnB1dCIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRldmlj
ZXNbMV0ua2luZCwgInZpZGVvaW5wdXQiKTsKKyAgICB9LCAiRW5zdXJlIGVudW1lcmF0ZURldmlj
ZXMgZXhwb3NlcyBib3RoIG1pY3JvcGhvbmUgYW5kIGNhbWVyYSIpOwogICAgIDwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>