<?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>32332</bug_id>
          
          <creation_ts>2009-12-09 11:15:59 -0800</creation_ts>
          <short_desc>WebSocket events should be dispatched synchronously</short_desc>
          <delta_ts>2009-12-09 19:33:08 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ian</cc>
    
    <cc>ukai</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>170064</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-12-09 11:15:59 -0800</bug_when>
    <thetext>As per recent WhatWG discussion, everywhere the spec says &quot;queue a task to dispatch an event&quot;, it actually means &quot;dispatch the event synchronously&quot;. We should update the code accordingly, and make readyState checks in websocket/tests/simple test strict again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170070</commentid>
    <comment_count>1</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-12-09 11:27:03 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; As per recent WhatWG discussion, everywhere the spec says &quot;queue a task to
&gt; dispatch an event&quot;, it actually means &quot;dispatch the event synchronously&quot;.

That&apos;s only true if the code that would be queueing the task is itself a task that was queued. In which case, the task in question is simply the task that was queued. (In other words, it&apos;s not the case if the code that would be dispatching the event is actually running on another thread.)

That is, where the spec says:

   On another thread, if X, queue a task on the main thread that does Y and Z.

...it is fine to implement this as:

   Queue a task on the main thread that, if X, does Y and Z.

...but it&apos;s not fine to implement it as:

   On another thread, if X, do Y and Z.


The spec has changed to make the readyState attribute change at the same time as the events are dispatched (as part of the same task).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170073</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-12-09 11:31:49 -0800</bug_when>
    <thetext>In WebKit, all code that handles events from network layer is &quot;a task that was queued&quot;. I suspect that&apos;s true of most/all other browser engines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170153</commentid>
    <comment_count>3</comment_count>
      <attachid>44560</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-12-09 13:51:42 -0800</bug_when>
    <thetext>Created attachment 44560
proposed patch

Ian, do the ChangeLog comment and test changes look right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170154</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-09 13:56:11 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44560 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170297</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-12-09 19:33:08 -0800</bug_when>
    <thetext>Committed revision 51935.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44560</attachid>
            <date>2009-12-09 13:51:42 -0800</date>
            <delta_ts>2009-12-09 18:28:27 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>WSSyncDispatch.txt</filename>
            <type>text/plain</type>
            <size>5709</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTkxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMTItMDkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMzMyCisgICAgICAgIFdl
YlNvY2tldCBldmVudHMgc2hvdWxkIGJlIGRpc3BhdGNoZWQgc3luY2hyb25vdXNseQorCisgICAg
ICAgIFdoZW4gV2ViIFNvY2tldHMgQVBJIHNheXMgdGhhdCBldmVudHMgc2hvdWxkIGJlIHF1ZXVl
ZCBmb3IgYXN5bmMgZGlzcGF0Y2gsIGl0IG1lYW5zIHNvbWV0aGluZworICAgICAgICBkaWZmZXJl
bnQuIFdlIHNob3VsZCBrZWVwIHRoaXMgaW4gbWluZCB3aGVuIGRlYWxpbmcgd2l0aCBvdGhlciBI
VE1MNS1yZWxhdGVkIHNwZWNzLgorCisgICAgICAgIFRoZSBtb2RlbCBmb3IgSFRNTDUgaXMgdGhh
dCBjb2RlIHJ1bm5pbmcgaW4gcmVzcG9uc2UgdG8gbmV0d29yayBldmVudHMgKGUuZy4gV2ViU29j
a2VldCBvcgorICAgICAgICBYTUxIdHRwUmVxdWVzdCBhbGdvcml0aG1zKSBydW5zIGluIGEgc2Vw
YXJhdGUgdGhyZWFkIG9mIGV4ZWN1dGlvbiwgYW5kIHRodXMgbmVlZHMgdG8gcG9zdAorICAgICAg
ICBhc3luYyBldmVudHMgYXMgaXRzIG9ubHkgd2F5IHRvIGNvbW11bmljYXRlIHdpdGggY2xpZW50
IGNvZGUuIEFzIGxvbmcgYXMgbmV0d29yayBldmVudHMgYXJlCisgICAgICAgIHF1ZXVlZCB0aGVt
c2VsdmVzIChhcyB0aGV5IGFyZSBpbiBXZWJLaXQpLCB0aGVyZSBpcyBubyBuZWVkIHRvIHF1ZXVl
IEpTIGV2ZW50cyBmb3IgYXN5bmMKKyAgICAgICAgZGlzcGF0Y2guCisKKyAgICAgICAgKiB3ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENsb3NlKToKKwogMjAwOS0xMi0wOSAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cyBDYXJsc3Nvbi4KSW5kZXg6IFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCShyZXZpc2lvbiA1MTkw
OCkKKysrIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCwyOSArNDgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFByb2Nlc3NX
ZWJTb2NrZXRFdmVudFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7
Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkIChXZWJTb2NrZXQ6OipNZXRob2QpKEV2ZW50Kik7
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzaz4gY3JlYXRl
KFBhc3NSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrKHdl
YlNvY2tldCwgZXZlbnQpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopCi0gICAgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICAgICAgbV93ZWJTb2NrZXQtPmRpc3BhdGNoRXZlbnQobV9ldmVudC5nZXQoKSwgZWMp
OwotICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICBQcm9jZXNz
V2ViU29ja2V0RXZlbnRUYXNrKFBhc3NSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQsIFBhc3NS
ZWZQdHI8RXZlbnQ+IGV2ZW50KQotICAgICAgICA6IG1fd2ViU29ja2V0KHdlYlNvY2tldCkKLSAg
ICAgICAgLCBtX2V2ZW50KGV2ZW50KSB7IH0KLQotICAgIFJlZlB0cjxXZWJTb2NrZXQ+IG1fd2Vi
U29ja2V0OwotICAgIFJlZlB0cjxFdmVudD4gbV9ldmVudDsKLX07Ci0KIHN0YXRpYyBib29sIGlz
VmFsaWRQcm90b2NvbFN0cmluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHByb3RvY29sKQogewog
ICAgIGlmIChwcm90b2NvbC5pc051bGwoKSkKQEAgLTIwNiw3ICsxODMsNyBAQCB2b2lkIFdlYlNv
Y2tldDo6ZGlkQ29ubmVjdCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9zdGF0ZSA9
IE9QRU47Ci0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhQcm9jZXNzV2Vi
U29ja2V0RXZlbnRUYXNrOjpjcmVhdGUodGhpcywgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
b3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKSk7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCiB2b2lkIFdl
YlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpCkBAIC0yMTcsMTUg
KzE5NCwxNCBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgCiAgICAg
UmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoKTsKICAgICAv
LyBGSVhNRTogb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBtZXNzYWdlUG9ydC4KICAgICBl
dnQtPmluaXRNZXNzYWdlRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZh
bHNlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShtc2cpLCAiIiwgIiIsIDAsIDApOwot
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2
ZW50VGFzazo6Y3JlYXRlKHRoaXMsIGV2dCkpOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0KTsKIH0K
IAogdm9pZCBXZWJTb2NrZXQ6OmRpZENsb3NlKCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNv
Y2tldCAlcCBkaWRDbG9zZSIsIHRoaXMpOwogICAgIG1fc3RhdGUgPSBDTE9TRUQ7Ci0gICAgaWYg
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5wb3N0VGFzayhQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpjcmVhdGUodGhpcywgRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKSkpOworICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFs
c2UsIGZhbHNlKSk7CiB9CiAKIEV2ZW50VGFyZ2V0RGF0YSogV2ViU29ja2V0OjpldmVudFRhcmdl
dERhdGEoKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTE5MTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0xMi0wOSAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzIzMzIKKyAgICAgICAgV2ViU29ja2V0IGV2ZW50cyBzaG91bGQgYmUgZGlzcGF0Y2hlZCBz
eW5jaHJvbm91c2x5CisKKyAgICAgICAgKiB3ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL3Np
bXBsZS5qczoKKyAgICAgICAgKiB3ZWJzb2NrZXQvdGVzdHMvc2ltcGxlLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgSXQncyBhZnRlciBhbGwgZ3VhcmFudGVlZCB0aGF0IHJlYWR5U3RhdGUgaXMgMSBp
biBvcGVuIGFuZCBtZXNzYWdlIGV2ZW50IGhhbmRsZXJzLgorCiAyMDA5LTEyLTA5ICBDc2FiYSBP
c3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICBbUXRdIFNraXAgYSBmYWls
aW5nIHRlc3QgaW50cm9kdWNlZCBpbiByNTE4NzcuCkluZGV4OiBMYXlvdXRUZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvc2ltcGxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93
ZWJzb2NrZXQvdGVzdHMvc2ltcGxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTE5MDgpCisrKyBM
YXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2ltcGxlLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMyw4ICszLDggQEAgU2ltcGxlIFdlYiBTb2NrZXQgdGVzdAogT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgogCiBDcmVhdGVkIGEgc29ja2V0IHRvICd3czovLzEyNy4wLjAuMTo4ODgw
L3dlYnNvY2tldC90ZXN0cy9zaW1wbGUnOyByZWFkeVN0YXRlIDAuCi1Db25uZWN0ZWQ7IHJlYWR5
U3RhdGUgPj0gMC4KLVJlY2VpdmVkOiAnSGVsbG8gZnJvbSBTaW1wbGUgV1NILic7IHJlYWR5U3Rh
dGUgPj0gMS4KK0Nvbm5lY3RlZDsgcmVhZHlTdGF0ZSAxCitSZWNlaXZlZDogJ0hlbGxvIGZyb20g
U2ltcGxlIFdTSC4nOyByZWFkeVN0YXRlIDEKIENsb3NlZDsgcmVhZHlTdGF0ZSAyLgogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy93ZWJzb2NrZXQv
dGVzdHMvc2NyaXB0LXRlc3RzL3NpbXBsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93
ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL3NpbXBsZS5qcwkocmV2aXNpb24gNTE5MDgpCisr
KyBMYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL3NpbXBsZS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMTgsMTIgKzE4LDEyIEBAIGRlYnVnKCJDcmVhdGVkIGEgc29ja2V0IHRv
ICciICsgd3MuVVJMICsKIAogd3Mub25vcGVuID0gZnVuY3Rpb24oKQogewotICAgIGRlYnVnKCJD
b25uZWN0ZWQ7IHJlYWR5U3RhdGUgIiArICgod3MucmVhZHlTdGF0ZSA+PSAwKSA/ICI+PSAwLiIg
OiB3cy5yZWFkeVN0YXRlKSk7CisgICAgZGVidWcoIkNvbm5lY3RlZDsgcmVhZHlTdGF0ZSAiICsg
d3MucmVhZHlTdGF0ZSk7CiB9OwogCiB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlRXZl
bnQpCiB7Ci0gICAgZGVidWcoIlJlY2VpdmVkOiAnIiArIG1lc3NhZ2VFdmVudC5kYXRhICsgIic7
IHJlYWR5U3RhdGUgIiArICgod3MucmVhZHlTdGF0ZSA+PSAxKSA/ICI+PSAxLiIgOiB3cy5yZWFk
eVN0YXRlKSk7CisgICAgZGVidWcoIlJlY2VpdmVkOiAnIiArIG1lc3NhZ2VFdmVudC5kYXRhICsg
Iic7IHJlYWR5U3RhdGUgIiArIHdzLnJlYWR5U3RhdGUpOwogfTsKIAogd3Mub25jbG9zZSA9IGZ1
bmN0aW9uKCkK
</data>
<flag name="review"
          id="26447"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>