<?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>152296</bug_id>
          
          <creation_ts>2015-12-15 00:05:01 -0800</creation_ts>
          <short_desc>webkitGetUserMedia built-in should use @then and not then</short_desc>
          <delta_ts>2016-01-05 05:58:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>EasyFix, GoodFirstBug</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="John Wilander">wilander</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1149231</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-12-15 00:05:01 -0800</bug_when>
    <thetext>webkitGetUserMedia is implemented as a JS built-in.
As such it should not use public promise APIs which may be controlled by user scripts.
@then should be used instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152422</commentid>
    <comment_count>1</comment_count>
      <attachid>268209</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-01-04 11:41:32 -0800</bug_when>
    <thetext>Created attachment 268209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152459</commentid>
    <comment_count>2</comment_count>
      <attachid>268209</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-01-04 12:48:54 -0800</bug_when>
    <thetext>Comment on attachment 268209
Patch

Very nice! r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152498</commentid>
    <comment_count>3</comment_count>
      <attachid>268209</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-04 13:38:36 -0800</bug_when>
    <thetext>Comment on attachment 268209
Patch

Clearing flags on attachment: 268209

Committed r194554: &lt;http://trac.webkit.org/changeset/194554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152499</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-04 13:38:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152672</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-01-05 00:20:21 -0800</bug_when>
    <thetext>Good to see this fixed :)

FWIW, there are similar bugs in Source/WebCore/Modules//mediastream/RTCPeerConnection.js and RTCPeerConnectionInternals.js.
I do not know how testable WebRTC is currently though.

On another point, I think the added test could be improved a bit.

It is generally good to have a expected.txt containing a simple message like &quot;PASS&quot; or &quot;FAIL&quot;.
Libraries such as testharness.js or js-test-pre.js/js-test-post.js may help on that.
Using console.log(...) may not be js-test best friend. This may trigger more often rebasing of the expected.txt file whenever doing edits on the test.

Related specifically to that test, setting &quot;{ audio: false, video: false }&quot;  leads to automatic rejection of the promise without any user interaction.

The test could be improved as follow:
- Add a testResult variable, equal to &quot;PASS&quot; by default
- testResult is set to &quot;FAIL&quot; in successCallback and new Promise.prototype.then
- In errorCallback (and successCallback), output the value of testResult
- Call webkitGetUserMedia with &quot;{ audio: false, video: false }&quot;

Since callbacks are asynchronously called, the test needs to be turned into an asynchronous one and ended when either errorCallback or successCallback is called. Note that it is important to handle properly successCallback to ensure the test does not timeout in error case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152700</commentid>
    <comment_count>6</comment_count>
      <attachid>268209</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-01-05 05:58:14 -0800</bug_when>
    <thetext>Comment on attachment 268209
Patch

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

&gt; LayoutTests/ChangeLog:9
&gt; +        * streams/webkitGetUserMedia-shadowing-then.html: Added.

I forgot this one: the location of the test is probably not appropriate.
Could you move it from LayoutTests/streams to LayoutTests/fast/mediastream?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268209</attachid>
            <date>2016-01-04 11:41:32 -0800</date>
            <delta_ts>2016-01-04 13:38:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152296-20160104114059.patch</filename>
            <type>text/plain</type>
            <size>4039</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NDUzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAxLTA0ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIHdlYmtpdEdldFVzZXJNZWRp
YSBidWlsdC1pbiBzaG91bGQgdXNlIEB0aGVuIGFuZCBub3QgdGhlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMjk2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogc3RyZWFtcy93ZWJraXRHZXRV
c2VyTWVkaWEtc2hhZG93aW5nLXRoZW4uaHRtbAorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWEuanM6CisgICAgICAgICh3ZWJraXRHZXRVc2VyTWVkaWEp
OiBNb2RpZmllZCB0byB1c2UgQHRoZW4gc3ludGF4LgorCiAyMDE2LTAxLTA0ICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIENsZWFuIHVwIHNvbWUg
V2luZG93cyBXZWJDb3JlIGZpbGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYS5qcwkocmV2aXNpb24gMTk0
Mzc3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2Vy
TWVkaWEuanMJKHdvcmtpbmcgY29weSkKQEAgLTQyLDUgKzQyLDUgQEAgZnVuY3Rpb24gd2Via2l0
R2V0VXNlck1lZGlhKG9wdGlvbnMsIHN1YwogICAgIGlmICh0eXBlb2YgZXJyb3JDYWxsYmFjayAh
PT0gImZ1bmN0aW9uIikKICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFyZ3VtZW50IDMg
KCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJl
IGEgZnVuY3Rpb24iKTsKIAotICAgIHRoaXMubWVkaWFEZXZpY2VzLkBnZXRVc2VyTWVkaWFGcm9t
SlMob3B0aW9ucykudGhlbihzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworICAgIHRo
aXMubWVkaWFEZXZpY2VzLkBnZXRVc2VyTWVkaWFGcm9tSlMob3B0aW9ucykuQHRoZW4oc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NDM3NykK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE2LTAxLTA0ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIHdlYmtpdEdldFVzZXJNZWRpYSBidWlsdC1pbiBzaG91bGQgdXNlIEB0aGVuIGFuZCBub3Qg
dGhlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
dHJlYW1zL3dlYmtpdEdldFVzZXJNZWRpYS1zaGFkb3dpbmctdGhlbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVhbXMvd2Via2l0R2V0VXNlck1lZGlhLXNoYWRvd2luZy10aGVu
Lmh0bWw6IEFkZGVkLgorCiAyMDE1LTEyLTIyICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNh
bHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1N0cmVhbXMgQVBJXSBGaXggY29zbWV0aWMg
dGhpbmdzIGFmdGVyIGltcG9ydGluZyBzcGVjIHRlc3RzCkluZGV4OiBMYXlvdXRUZXN0cy9zdHJl
YW1zL3dlYmtpdEdldFVzZXJNZWRpYS1zaGFkb3dpbmctdGhlbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvc3RyZWFtcy93ZWJraXRHZXRVc2VyTWVkaWEtc2hhZG93aW5n
LXRoZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RyZWFtcy93
ZWJraXRHZXRVc2VyTWVkaWEtc2hhZG93aW5nLXRoZW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMiBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgZG9lcyBub3QgdXNlIHB1Ymxp
YyBwcm9taXNlIEFQSXMuIFRlc3QgcGFzc2VzIGlmIG5vIG1lc3NhZ2UgYWJvdXQgYSBzaGFkb3dl
ZCBwdWJsaWMgLnRoZW4oKSBpcyBwcmludGVkLgorCkluZGV4OiBMYXlvdXRUZXN0cy9zdHJlYW1z
L3dlYmtpdEdldFVzZXJNZWRpYS1zaGFkb3dpbmctdGhlbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N0cmVhbXMvd2Via2l0R2V0VXNlck1lZGlhLXNoYWRvd2luZy10aGVuLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdHJlYW1zL3dlYmtpdEdldFVzZXJNZWRpYS1z
aGFkb3dpbmctdGhlbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0i
VVRGLTgiPgorICAgIDx0aXRsZT5TaGFkb3dpbmcgdGhlbigpPC90aXRsZT4KKzwvaGVhZD4KKzxi
b2R5PgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEgZG9lcyBub3QgdXNlIHB1YmxpYyBwcm9taXNlIEFQSXMu
IFRlc3QgcGFzc2VzIGlmIG5vIG1lc3NhZ2UgYWJvdXQgYSBzaGFkb3dlZCBwdWJsaWMgLnRoZW4o
KSBpcyBwcmludGVkLgorPHAgaWQ9Im91dHB1dCI+PC9wPgorPHNjcmlwdD4KKyAgICAvLyBTaGFk
b3cgUHJvbWlzZS5wcm90b3R5cGUudGhlbgorICAgIFByb21pc2UucHJvdG90eXBlLnRoZW4gPSAo
ZnVuY3Rpb24gKCkgeworICAgICAgICBjb25zdCByZWFsVGhlbiA9IFByb21pc2UucHJvdG90eXBl
LnRoZW47CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0Iiku
dGV4dENvbnRlbnQgPSAiRXhlY3V0ZWQgc2hhZG93ZWQsIHB1YmxpYyAudGhlbigpIjsKKyAgICAg
ICAgICAgIHJlYWxUaGVuLmNhbGwodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKKyAgICAgICAgfQorICAgIH0pKCk7CisKKyAgICBmdW5jdGlvbiBnb3RVc2VyTWVkaWEobWVk
aWFTdHJlYW0pIHsKKyAgICAgICAgY29uc29sZS5sb2coIkdvdCB1c2VyIG1lZGlhIik7CisgICAg
fQorCisgICAgZnVuY3Rpb24gdXNlck1lZGlhRXJyb3IoZXJyb3IpIHsKKyAgICAgICAgY29uc29s
ZS5sb2coZXJyb3IpOworICAgIH0KKworICAgIHZhciBvcHRpb25zID0geyBhdWRpbzogZmFsc2Us
IHZpZGVvOiB0cnVlIH07CisgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShvcHRpb25z
LCBnb3RVc2VyTWVkaWEsIHVzZXJNZWRpYUVycm9yKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>