<?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>145308</bug_id>
          
          <creation_ts>2015-05-22 05:01:42 -0700</creation_ts>
          <short_desc>MediaDevices.getUserMedia should put promises in resolve/reject state synchronously</short_desc>
          <delta_ts>2015-06-10 01:51:33 -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>WebCore Misc.</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>143211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>adam.bergkvist</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1096850</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-22 05:01:42 -0700</bug_when>
    <thetext>The current implementation calls callOnMainThread to reject/resolve the returned promise.
It might be better to reject/resolve directly, still ensuring that webkitGetUserMedia callbacks are called asynchronously, either using promise mechanism or using postTask directly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098409</commentid>
    <comment_count>1</comment_count>
      <attachid>253979</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-31 08:59:58 -0700</bug_when>
    <thetext>Created attachment 253979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098411</commentid>
    <comment_count>2</comment_count>
      <attachid>253979</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-31 09:10:53 -0700</bug_when>
    <thetext>Comment on attachment 253979
Patch

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

&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:86
&gt;      return UserMediaRequest::create(context, controller, options, WTF::move(resolveCallback), WTF::move(rejectCallback), ec);

After looking at current implementation, I think resolveCallback and rejectCallback are currently always called asynchronously, which is necessary for webkitGetUserMedia implementation.
But code might change and may break this assumption.
An ASSERT would be ideal here.
Or we can ensure that handleEvent calls are made asynchronous using postTask.
Any thought?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098475</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-06-01 04:33:21 -0700</bug_when>
    <thetext>As you say above, the scheduling of calls to handleEvent() must done in the webkitGetUserMedia() case. But I&apos;m a bit confused since this patch removes the &quot;always schedule&quot; case (which is good), but never adds any conditional scheduling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098764</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-02 02:20:55 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; As you say above, the scheduling of calls to handleEvent() must done in the
&gt; webkitGetUserMedia() case. But I&apos;m a bit confused since this patch removes
&gt; the &quot;always schedule&quot; case (which is good), but never adds any conditional
&gt; scheduling.

I checked again and it seems I was indeed partially wrong.

The success callback is always called asynchronously: the user permission is always requested and it is done inside a callOnMainThread.

But it seems that some error cases in the constraints validation may call the failure callback synchronously.

A slightly sub-optimal but simple approach may be to call handleEvent for error cases inside a postTask. For HandleEvent success callback, we do not need postTask (although it may be safer if code changes a lot).

How about that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099117</commentid>
    <comment_count>5</comment_count>
      <attachid>254165</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-03 03:30:44 -0700</bug_when>
    <thetext>Created attachment 254165
Emulating promise resolution with postTask</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099118</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-03 03:33:10 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created attachment 254165 [details]
&gt; Emulating promise resolution with postTask

I changed my mind and went the safe way, using postTask for both success and error callbacks.
There is no real point in trying to optimize an API (webkitGetUerMedia) that is in the process of being replaced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099412</commentid>
    <comment_count>7</comment_count>
      <attachid>254165</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-03 23:07:16 -0700</bug_when>
    <thetext>Comment on attachment 254165
Emulating promise resolution with postTask

Clearing flags on attachment: 254165

Committed r185191: &lt;http://trac.webkit.org/changeset/185191&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099413</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-03 23:07:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099448</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-06-04 00:36:32 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Created attachment 254165 [details]
&gt; &gt; Emulating promise resolution with postTask
&gt; 
&gt; I changed my mind and went the safe way, using postTask for both success and
&gt; error callbacks.

Sounds reasonable. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099452</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-06-04 00:41:17 -0700</bug_when>
    <thetext>Thanks for taking the time to improve the Promise handling here. :) The RTCPeerConnection API will use Promises as well (together with callbacks for legacy interop) so it&apos;s great to get these in better shape.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100949</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-10 01:51:33 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Thanks for taking the time to improve the Promise handling here. :) The
&gt; RTCPeerConnection API will use Promises as well (together with callbacks for
&gt; legacy interop) so it&apos;s great to get these in better shape.

I worked on some additional Promise support improvement lately.
I hope to enable automatic binding generation for AudioContext promise API.
Please have a look at it when starting RTCPeerConnection API implementation.

The case of &quot;Promise + callbacks-for-legacy&quot; APIs may not be as straightforward though.
There is also the case of exceptions rejecting promises that might need some specific support.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253979</attachid>
            <date>2015-05-31 08:59:58 -0700</date>
            <delta_ts>2015-06-03 03:30:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145308-20150531175937.patch</filename>
            <type>text/plain</type>
            <size>8127</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg4MzA4MWNhNTEzMGE3
NzcwMzdlMTMzNzk1Nzk1MzZjNjc1M2JkNi4uNGEyMGZlZjNiYzUyMjNkNzA5ZTVmNWZlZjIxMDE4
ZmRmMTM3MWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA1LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgTWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSBzaG91bGQgcHV0IHByb21pc2VzIGluIHJlc29sdmUvcmVqZWN0
IHN0YXRlIHN5bmNocm9ub3VzbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NTMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZWQgdGhlIGNhbGxzIHRvIGNhbGxUb01haW5UaHJlYWQgaW4gd2hp
Y2ggd2VyZSByZXNvbHZlZCBhbmQgcmVqZWN0ZWQgcHJvbWlzZXMuCisgICAgICAgIENsZWFuZWQg
dXAgdGhlIGNvZGUgdG8gcmVtb3ZlIHVubmVlZGVkIGNhbGxiYWNrIGNvcGllcy4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpVc2Vy
TWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENy
ZWF0ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpmYWlsZWRU
b0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlVz
ZXJNZWRpYVJlcXVlc3Q6OmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aFBlcm1pc3Npb25FcnJvcik6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0Lmg6CisKIDIw
MTUtMDUtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBbQ29udGVudCBFeHRlbnNpb25zXSBEZWNyZWFzZSBtYXhORkFTaXplCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmNwcAppbmRleCA3ZDYwNjRjMWExMWMwNTJjODg4YmY1ZmI2ZTNkYTQwMzgyOTI1YjZhLi5mYzAy
OWUxZjNiMTRjOTE1N2RjY2RiNzlhMjhiNDllODYwMGQwYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAg
LTg2LDcgKzg2LDcgQEAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IFVzZXJNZWRpYVJlcXVlc3Q6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICByZXR1cm4gVXNlck1l
ZGlhUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIGNvbnRyb2xsZXIsIG9wdGlvbnMsIFdURjo6bW92
ZShyZXNvbHZlQ2FsbGJhY2spLCBXVEY6Om1vdmUocmVqZWN0Q2FsbGJhY2spLCBlYyk7CiB9CiAK
LVJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxl
ciwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTWVkaWFEZXZpY2VzOjpSZXNvbHZlQ2FsbGJh
Y2sgcmVzb2x2ZUNhbGxiYWNrLCBNZWRpYURldmljZXM6OlJlamVjdENhbGxiYWNrIHJlamVjdENh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2Vy
TWVkaWFSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNl
ck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywg
TWVkaWFEZXZpY2VzOjpSZXNvbHZlQ2FsbGJhY2smJiByZXNvbHZlQ2FsbGJhY2ssIE1lZGlhRGV2
aWNlczo6UmVqZWN0Q2FsbGJhY2smJiByZWplY3RDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgQVNTRVJUKHJlc29sdmVDYWxsYmFjayAmJiByZWplY3RDYWxsYmFjayk7CiAKQEAg
LTEwNCwxMyArMTA0LDEzIEBAIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1
ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVzdChjb250ZXh0LCBjb250cm9sbGVyLCBhdWRpb0Nv
bnN0cmFpbnRzLnJlbGVhc2UoKSwgdmlkZW9Db25zdHJhaW50cy5yZWxlYXNlKCksIFdURjo6bW92
ZShyZXNvbHZlQ2FsbGJhY2spLCBXVEY6Om1vdmUocmVqZWN0Q2FsbGJhY2spKSk7CiB9CiAKLVVz
ZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UmVzb2x2ZUNhbGxiYWNrIHJlc29s
dmVDYWxsYmFjaywgTWVkaWFEZXZpY2VzOjpSZWplY3RDYWxsYmFjayByZWplY3RDYWxsYmFjaykK
K1VzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UmVzb2x2ZUNhbGxiYWNrJiYg
cmVzb2x2ZUNhbGxiYWNrLCBNZWRpYURldmljZXM6OlJlamVjdENhbGxiYWNrJiYgcmVqZWN0Q2Fs
bGJhY2spCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQogICAgICwg
bV9hdWRpb0NvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWludHMpCiAgICAgLCBtX3ZpZGVvQ29uc3Ry
YWludHModmlkZW9Db25zdHJhaW50cykKICAgICAsIG1fY29udHJvbGxlcihjb250cm9sbGVyKQot
ICAgICwgbV9yZXNvbHZlQ2FsbGJhY2socmVzb2x2ZUNhbGxiYWNrKQotICAgICwgbV9yZWplY3RD
YWxsYmFjayhyZWplY3RDYWxsYmFjaykKKyAgICAsIG1fcmVzb2x2ZUNhbGxiYWNrKFdURjo6bW92
ZShyZXNvbHZlQ2FsbGJhY2spKQorICAgICwgbV9yZWplY3RDYWxsYmFjayhXVEY6Om1vdmUocmVq
ZWN0Q2FsbGJhY2spKQogewogfQogCkBAIC0xNjgsMTcgKzE2OCwxNCBAQCB2b2lkIFVzZXJNZWRp
YVJlcXVlc3Q6OmRpZENyZWF0ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4g
cHJpdmF0ZVN0cgogICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcml2YXRlU3RyZWFtXSB7
Ci0gICAgICAgIC8vIDQgLSBDcmVhdGUgdGhlIE1lZGlhU3RyZWFtIGFuZCBwYXNzIGl0IHRvIHRo
ZSBzdWNjZXNzIGNhbGxiYWNrLgotICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9
IE1lZGlhU3RyZWFtOjpjcmVhdGUoKnByb3RlY3RlZFRoaXMtPm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgcHJpdmF0ZVN0cmVhbSk7Ci0gICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0t
PmdldEF1ZGlvVHJhY2tzKCkpCi0gICAgICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cyhw
cm90ZWN0ZWRUaGlzLT5tX2F1ZGlvQ29uc3RyYWludHMpOwotICAgICAgICBmb3IgKGF1dG8mIHRy
YWNrIDogc3RyZWFtLT5nZXRWaWRlb1RyYWNrcygpKQotICAgICAgICAgICAgdHJhY2stPmFwcGx5
Q29uc3RyYWludHMocHJvdGVjdGVkVGhpcy0+bV92aWRlb0NvbnN0cmFpbnRzKTsKLQotICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5tX3Jlc29sdmVDYWxsYmFjaygqc3RyZWFtKTsKLSAgICB9KTsKKyAg
ICAvLyA0IC0gQ3JlYXRlIHRoZSBNZWRpYVN0cmVhbSBhbmQgcGFzcyBpdCB0byB0aGUgc3VjY2Vz
cyBjYWxsYmFjay4KKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IE1lZGlhU3RyZWFt
OjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHJpdmF0ZVN0cmVhbSk7CisgICAg
Zm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkKKyAgICAgICAgdHJh
Y2stPmFwcGx5Q29uc3RyYWludHMobV9hdWRpb0NvbnN0cmFpbnRzKTsKKyAgICBmb3IgKGF1dG8m
IHRyYWNrIDogc3RyZWFtLT5nZXRWaWRlb1RyYWNrcygpKQorICAgICAgICB0cmFjay0+YXBwbHlD
b25zdHJhaW50cyhtX3ZpZGVvQ29uc3RyYWludHMpOworCisgICAgbV9yZXNvbHZlQ2FsbGJhY2so
KnN0cmVhbSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZmFpbGVkVG9DcmVhdGVTdHJl
YW1XaXRoQ29uc3RyYWludHNFcnJvcihjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnROYW1lKQpAQCAt
MTg3LDExICsxODQsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmZhaWxlZFRvQ3JlYXRlU3Ry
ZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoY29uc3QgU3RyaW5nJiBjbwogICAgIGlmICghbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8VXNlck1l
ZGlhUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSZWZQdHI8TmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3I+IGVycm9yID0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OmNyZWF0ZShOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvcjo6Y29uc3RyYWludE5vdFNhdGlzZmllZEVycm9yTmFtZSgpLCBj
b25zdHJhaW50TmFtZSk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgZXJy
b3JdIHsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9yZWplY3RDYWxsYmFjaygqZXJyb3IpOwot
ICAgIH0pOworICAgIG1fcmVqZWN0Q2FsbGJhY2soTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OmNy
ZWF0ZShOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcjo6Y29uc3RyYWludE5vdFNhdGlzZmllZEVycm9y
TmFtZSgpLCBjb25zdHJhaW50TmFtZSkuZ2V0KCkpOwogfQogCiB2b2lkIFVzZXJNZWRpYVJlcXVl
c3Q6OmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aFBlcm1pc3Npb25FcnJvcigpCkBAIC0xOTksMTIg
KzE5Miw4IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRo
UGVybWlzc2lvbkVycm9yKCkKICAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAgICAgLy8gRklYTUU6IFJlcGxhY2UgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3Ig
d2l0aCBNZWRpYVN0cmVhbUVycm9yIChzZWUgYnVnIDE0MzMzNSkKLSAgICBSZWZQdHI8TmF2aWdh
dG9yVXNlck1lZGlhRXJyb3I+IGVycm9yID0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OmNyZWF0
ZShOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcjo6cGVybWlzc2lvbkRlbmllZEVycm9yTmFtZSgpLCBl
bXB0eVN0cmluZygpKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBlcnJv
cl0gewotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3JlamVjdENhbGxiYWNrKCplcnJvcik7Ci0g
ICAgfSk7CisgICAgbV9yZWplY3RDYWxsYmFjayhOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcjo6Y3Jl
YXRlKE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpwZXJtaXNzaW9uRGVuaWVkRXJyb3JOYW1lKCks
IGVtcHR5U3RyaW5nKCkpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpjb250ZXh0RGVz
dHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggZTM1OWE5MTM0M2E2ZjEzMzBhODEwZTMyOTU5ZWUzNTRm
OTk3NzY2NS4uZjM1MzlkYjI3OWJhY2Y1MDVhNzNiYzRhNmVmNjM1MzkwYjZhODBjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1
ZXN0LmgKQEAgLTU5LDcgKzU5LDcgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIGNsYXNz
IFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCwgcHVi
bGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
UHRyPFVzZXJNZWRpYVJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNl
ck1lZGlhQ29udHJvbGxlciosIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIFBhc3NSZWZQdHI8
TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyBSZWZQ
dHI8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2Vy
TWVkaWFDb250cm9sbGVyKiwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTWVkaWFEZXZpY2Vz
OjpSZXNvbHZlQ2FsbGJhY2ssIE1lZGlhRGV2aWNlczo6UmVqZWN0Q2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIGNvbnN0IERpY3Rpb25h
cnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UmVzb2x2ZUNhbGxiYWNrJiYsIE1lZGlhRGV2aWNl
czo6UmVqZWN0Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIH5Vc2VyTWVkaWFSZXF1
ZXN0KCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmln
aW4oKSBjb25zdDsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVxdWlyZXNW
aWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Db25zdHJhaW50czsgfQogCiBwcml2YXRlOgot
ICAgIFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNv
bnRyb2xsZXIqLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMs
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZp
Y2VzOjpSZXNvbHZlQ2FsbGJhY2ssIE1lZGlhRGV2aWNlczo6UmVqZWN0Q2FsbGJhY2spOworICAg
IFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRy
b2xsZXIqLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2Vz
OjpSZXNvbHZlQ2FsbGJhY2smJiwgTWVkaWFEZXZpY2VzOjpSZWplY3RDYWxsYmFjayYmKTsKIAog
ICAgIC8vIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgY29uc3Ry
YWludHNWYWxpZGF0ZWQoKSBvdmVycmlkZSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254165</attachid>
            <date>2015-06-03 03:30:44 -0700</date>
            <delta_ts>2015-06-03 23:07:16 -0700</delta_ts>
            <desc>Emulating promise resolution with postTask</desc>
            <filename>bug-145308-20150603123021.patch</filename>
            <type>text/plain</type>
            <size>9190</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg4MzA4MWNhNTEzMGE3
NzcwMzdlMTMzNzk1Nzk1MzZjNjc1M2JkNi4uNGEyMGZlZjNiYzUyMjNkNzA5ZTVmNWZlZjIxMDE4
ZmRmMTM3MWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA1LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgTWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSBzaG91bGQgcHV0IHByb21pc2VzIGluIHJlc29sdmUvcmVqZWN0
IHN0YXRlIHN5bmNocm9ub3VzbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NTMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZWQgdGhlIGNhbGxzIHRvIGNhbGxUb01haW5UaHJlYWQgaW4gd2hp
Y2ggd2VyZSByZXNvbHZlZCBhbmQgcmVqZWN0ZWQgcHJvbWlzZXMuCisgICAgICAgIENsZWFuZWQg
dXAgdGhlIGNvZGUgdG8gcmVtb3ZlIHVubmVlZGVkIGNhbGxiYWNrIGNvcGllcy4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpVc2Vy
TWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENy
ZWF0ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpmYWlsZWRU
b0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlVz
ZXJNZWRpYVJlcXVlc3Q6OmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aFBlcm1pc3Npb25FcnJvcik6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0Lmg6CisKIDIw
MTUtMDUtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBbQ29udGVudCBFeHRlbnNpb25zXSBEZWNyZWFzZSBtYXhORkFTaXplCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmNwcAppbmRleCA3ZDYwNjRjMWExMWMwNTJjODg4YmY1ZmI2ZTNkYTQwMzgyOTI1YjZhLi5jYmNl
ODEwZjEzMWIwMjlmZDNjMmMxZDRiNTJiYzkxYWMwZWNkMzRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAg
LTc1LDE4ICs3NSwyOSBAQCBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gVXNlck1lZGlhUmVxdWVz
dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogewogICAgIEFTU0VSVChz
dWNjZXNzQ2FsbGJhY2spOwogCi0gICAgYXV0byByZXNvbHZlQ2FsbGJhY2sgPSBbc3VjY2Vzc0Nh
bGxiYWNrXShNZWRpYVN0cmVhbSYgc3RyZWFtKSBtdXRhYmxlIHsKLSAgICAgICAgc3VjY2Vzc0Nh
bGxiYWNrLT5oYW5kbGVFdmVudCgmc3RyZWFtKTsKKyAgICBhdXRvIHJlc29sdmVDYWxsYmFjayA9
IFtzdWNjZXNzQ2FsbGJhY2ssIGNvbnRleHRdKE1lZGlhU3RyZWFtJiBzdHJlYW0pIG11dGFibGUg
eworICAgICAgICBBU1NFUlQoY29udGV4dCk7CisKKyAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFt
PiBtZWRpYVN0cmVhbSA9ICZzdHJlYW07CisgICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKFtzdWNj
ZXNzQ2FsbGJhY2ssIG1lZGlhU3RyZWFtXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
ICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChtZWRpYVN0cmVhbS5nZXQoKSk7
CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0byByZWplY3RDYWxsYmFjayA9IFtlcnJvckNh
bGxiYWNrXShOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvciYgZXJyb3IpIG11dGFibGUgewotICAgICAg
ICBpZiAoZXJyb3JDYWxsYmFjaykKLSAgICAgICAgICAgIGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2
ZW50KCZlcnJvcik7CisgICAgYXV0byByZWplY3RDYWxsYmFjayA9IFtlcnJvckNhbGxiYWNrLCBj
b250ZXh0XShOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvciYgZXJyb3IpIG11dGFibGUgeworICAgICAg
ICBBU1NFUlQoY29udGV4dCk7CisKKyAgICAgICAgaWYgKGVycm9yQ2FsbGJhY2spIHsKKyAgICAg
ICAgICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcj4gZXZlbnRFcnJvciA9ICZlcnJv
cjsKKyAgICAgICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKFtlcnJvckNhbGxiYWNrLCBldmVudEVy
cm9yXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgICAgICAgICAgICAgIGVycm9yQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KGV2ZW50RXJyb3IuZ2V0KCkpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0KICAgICB9OwogCiAgICAgcmV0dXJuIFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShj
b250ZXh0LCBjb250cm9sbGVyLCBvcHRpb25zLCBXVEY6Om1vdmUocmVzb2x2ZUNhbGxiYWNrKSwg
V1RGOjptb3ZlKHJlamVjdENhbGxiYWNrKSwgZWMpOwogfQogCi1SZWZQdHI8VXNlck1lZGlhUmVx
dWVzdD4gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIGNvbnN0IERpY3Rpb25hcnkm
IG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UmVzb2x2ZUNhbGxiYWNrIHJlc29sdmVDYWxsYmFjaywg
TWVkaWFEZXZpY2VzOjpSZWplY3RDYWxsYmFjayByZWplY3RDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYgZWMpCitSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UmVzb2x2
ZUNhbGxiYWNrJiYgcmVzb2x2ZUNhbGxiYWNrLCBNZWRpYURldmljZXM6OlJlamVjdENhbGxiYWNr
JiYgcmVqZWN0Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChyZXNv
bHZlQ2FsbGJhY2sgJiYgcmVqZWN0Q2FsbGJhY2spOwogCkBAIC0xMDQsMTMgKzExNSwxMyBAQCBS
ZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJNZWRp
YVJlcXVlc3QoY29udGV4dCwgY29udHJvbGxlciwgYXVkaW9Db25zdHJhaW50cy5yZWxlYXNlKCks
IHZpZGVvQ29uc3RyYWludHMucmVsZWFzZSgpLCBXVEY6Om1vdmUocmVzb2x2ZUNhbGxiYWNrKSwg
V1RGOjptb3ZlKHJlamVjdENhbGxiYWNrKSkpOwogfQogCi1Vc2VyTWVkaWFSZXF1ZXN0OjpVc2Vy
TWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFVzZXJNZWRpYUNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9D
b25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRz
LCBNZWRpYURldmljZXM6OlJlc29sdmVDYWxsYmFjayByZXNvbHZlQ2FsbGJhY2ssIE1lZGlhRGV2
aWNlczo6UmVqZWN0Q2FsbGJhY2sgcmVqZWN0Q2FsbGJhY2spCitVc2VyTWVkaWFSZXF1ZXN0OjpV
c2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFVzZXJNZWRp
YUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVk
aW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFp
bnRzLCBNZWRpYURldmljZXM6OlJlc29sdmVDYWxsYmFjayYmIHJlc29sdmVDYWxsYmFjaywgTWVk
aWFEZXZpY2VzOjpSZWplY3RDYWxsYmFjayYmIHJlamVjdENhbGxiYWNrKQogICAgIDogQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKICAgICAsIG1fYXVkaW9Db25zdHJhaW50cyhh
dWRpb0NvbnN0cmFpbnRzKQogICAgICwgbV92aWRlb0NvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWlu
dHMpCiAgICAgLCBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKLSAgICAsIG1fcmVzb2x2ZUNhbGxi
YWNrKHJlc29sdmVDYWxsYmFjaykKLSAgICAsIG1fcmVqZWN0Q2FsbGJhY2socmVqZWN0Q2FsbGJh
Y2spCisgICAgLCBtX3Jlc29sdmVDYWxsYmFjayhXVEY6Om1vdmUocmVzb2x2ZUNhbGxiYWNrKSkK
KyAgICAsIG1fcmVqZWN0Q2FsbGJhY2soV1RGOjptb3ZlKHJlamVjdENhbGxiYWNrKSkKIHsKIH0K
IApAQCAtMTY4LDE3ICsxNzksMTQgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpkaWRDcmVhdGVT
dHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+IHByaXZhdGVTdHIKICAgICBpZiAo
IW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRy
PFVzZXJNZWRpYVJlcXVlc3Q+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkVGhpcywgcHJpdmF0ZVN0cmVhbV0gewotICAgICAgICAvLyA0IC0gQ3Jl
YXRlIHRoZSBNZWRpYVN0cmVhbSBhbmQgcGFzcyBpdCB0byB0aGUgc3VjY2VzcyBjYWxsYmFjay4K
LSAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRl
KCpwcm90ZWN0ZWRUaGlzLT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHByaXZhdGVTdHJlYW0p
OwotICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpKQot
ICAgICAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMocHJvdGVjdGVkVGhpcy0+bV9hdWRp
b0NvbnN0cmFpbnRzKTsKLSAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0Vmlk
ZW9UcmFja3MoKSkKLSAgICAgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKHByb3RlY3Rl
ZFRoaXMtPm1fdmlkZW9Db25zdHJhaW50cyk7Ci0KLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9y
ZXNvbHZlQ2FsbGJhY2soKnN0cmVhbSk7Ci0gICAgfSk7CisgICAgLy8gNCAtIENyZWF0ZSB0aGUg
TWVkaWFTdHJlYW0gYW5kIHBhc3MgaXQgdG8gdGhlIHN1Y2Nlc3MgY2FsbGJhY2suCisgICAgUmVm
UHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIHByaXZhdGVTdHJlYW0pOworICAgIGZvciAoYXV0byYgdHJhY2sgOiBz
dHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkpCisgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRz
KG1fYXVkaW9Db25zdHJhaW50cyk7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0
VmlkZW9UcmFja3MoKSkKKyAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMobV92aWRlb0Nv
bnN0cmFpbnRzKTsKKworICAgIG1fcmVzb2x2ZUNhbGxiYWNrKCpzdHJlYW0pOwogfQogCiB2b2lk
IFVzZXJNZWRpYVJlcXVlc3Q6OmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJy
b3IoY29uc3QgU3RyaW5nJiBjb25zdHJhaW50TmFtZSkKQEAgLTE4NywxMSArMTk1LDcgQEAgdm9p
ZCBVc2VyTWVkaWFSZXF1ZXN0OjpmYWlsZWRUb0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vy
cm9yKGNvbnN0IFN0cmluZyYgY28KICAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHByb3RlY3Rl
ZFRoaXModGhpcyk7Ci0gICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yPiBlcnJvciA9
IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpjcmVhdGUoTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6
OmNvbnN0cmFpbnROb3RTYXRpc2ZpZWRFcnJvck5hbWUoKSwgY29uc3RyYWludE5hbWUpOwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMsIGVycm9yXSB7Ci0gICAgICAgIHByb3Rl
Y3RlZFRoaXMtPm1fcmVqZWN0Q2FsbGJhY2soKmVycm9yKTsKLSAgICB9KTsKKyAgICBtX3JlamVj
dENhbGxiYWNrKE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpjcmVhdGUoTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3I6OmNvbnN0cmFpbnROb3RTYXRpc2ZpZWRFcnJvck5hbWUoKSwgY29uc3RyYWludE5h
bWUpLmdldCgpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpmYWlsZWRUb0NyZWF0ZVN0
cmVhbVdpdGhQZXJtaXNzaW9uRXJyb3IoKQpAQCAtMTk5LDEyICsyMDMsOCBAQCB2b2lkIFVzZXJN
ZWRpYVJlcXVlc3Q6OmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aFBlcm1pc3Npb25FcnJvcigpCiAg
ICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIC8vIEZJ
WE1FOiBSZXBsYWNlIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yIHdpdGggTWVkaWFTdHJlYW1FcnJv
ciAoc2VlIGJ1ZyAxNDMzMzUpCi0gICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yPiBl
cnJvciA9IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpjcmVhdGUoTmF2aWdhdG9yVXNlck1lZGlh
RXJyb3I6OnBlcm1pc3Npb25EZW5pZWRFcnJvck5hbWUoKSwgZW1wdHlTdHJpbmcoKSk7Ci0gICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgZXJyb3JdIHsKLSAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9yZWplY3RDYWxsYmFjaygqZXJyb3IpOwotICAgIH0pOworICAgIG1fcmVqZWN0
Q2FsbGJhY2soTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OmNyZWF0ZShOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvcjo6cGVybWlzc2lvbkRlbmllZEVycm9yTmFtZSgpLCBlbXB0eVN0cmluZygpKSk7CiB9
CiAKIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y29udGV4dERlc3Ryb3llZCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmlu
ZGV4IGUzNTlhOTEzNDNhNmYxMzMwYTgxMGUzMjk1OWVlMzU0Zjk5Nzc2NjUuLmYzNTM5ZGIyNzli
YWNmNTA1YTczYmM0YTZlZjYzNTM5MGI2YTgwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCkBAIC01OSw3ICs1OSw3
IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDog
cHVibGljIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBj
b25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1
Y2Nlc3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFj
az4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNlczo6UmVzb2x2ZUNhbGxiYWNrLCBN
ZWRpYURldmljZXM6OlJlamVjdENhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGlj
IFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBNZWRpYURl
dmljZXM6OlJlc29sdmVDYWxsYmFjayYmLCBNZWRpYURldmljZXM6OlJlamVjdENhbGxiYWNrJiYs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB+VXNlck1lZGlhUmVxdWVzdCgpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CkBAIC03Miw3
ICs3Miw3IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVzVmlkZW8oKSBjb25zdCB7IHJldHVy
biBtX3ZpZGVvQ29uc3RyYWludHM7IH0KIAogcHJpdmF0ZToKLSAgICBVc2VyTWVkaWFSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDb250cm9sbGVyKiwgUGFzc1JlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UmVzb2x2ZUNhbGxiYWNr
LCBNZWRpYURldmljZXM6OlJlamVjdENhbGxiYWNrKTsKKyAgICBVc2VyTWVkaWFSZXF1ZXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDb250cm9sbGVyKiwgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UmVzb2x2ZUNhbGxiYWNrJiYs
IE1lZGlhRGV2aWNlczo6UmVqZWN0Q2FsbGJhY2smJik7CiAKICAgICAvLyBNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGNvbnN0cmFpbnRzVmFsaWRhdGVkKCkgb3Zl
cnJpZGUgZmluYWw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>