<?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>130748</bug_id>
          
          <creation_ts>2014-03-25 15:26:37 -0700</creation_ts>
          <short_desc>When a node is removed and that changes selection, we don&apos;t notify editor client, and don&apos;t fire selectionchange event</short_desc>
          <delta_ts>2014-03-26 11:50:27 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></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>130727</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>994388</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-03-25 15:26:37 -0700</bug_when>
    <thetext>When a node is removed and that changes selection, we don&apos;t notify editor client, and don&apos;t fire selectionchange event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994603</commentid>
    <comment_count>1</comment_count>
      <attachid>227855</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-03-26 09:56:45 -0700</bug_when>
    <thetext>Created attachment 227855
WIP patch

Attaching a WIP patch. There are still many big issues that may make this impractical for now:

- The patch causes multiple crashes in editing code.
- It only fixes notifications when a removed node contains one of the endpoints, not when a node is removed in the middle of selection.
- It doesn&apos;t fix anything when a node is added in the middle of selection.
- It almost certainly doesn&apos;t fix anything when text content of nodes is manipulated.
- I haven&apos;t even tested what IE does in any of these cases. Maybe it only fires selectionchange event when selecting manually?

One way or another, it&apos;s certainly a problem that we don&apos;t cleanly track selection and composition changes in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994658</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-03-26 11:50:27 -0700</bug_when>
    <thetext>Tested, and IE 11 is pretty bad about dispatching selectionchange for programmatic changes. I got the event when removing a contenteditable div with a range selection inside, but not when removing nodes from a selection.

But we need to track DOM changes somehow to stay in sync with input methods.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227855</attachid>
            <date>2014-03-26 09:56:45 -0700</date>
            <delta_ts>2014-03-26 09:56:45 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>SelectionNotification.txt</filename>
            <type>text/plain</type>
            <size>6568</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lv
biAxNjYyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDI0LDcgKzQyNCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246Om5v
ZGVXaWxsQmVSZW1vdmVkKE4KIHZvaWQgRnJhbWVTZWxlY3Rpb246OnJlc3BvbmRUb05vZGVNb2Rp
ZmljYXRpb24oTm9kZSogbm9kZSwgYm9vbCBiYXNlUmVtb3ZlZCwgYm9vbCBleHRlbnRSZW1vdmVk
LCBib29sIHN0YXJ0UmVtb3ZlZCwgYm9vbCBlbmRSZW1vdmVkKQogewogICAgIGJvb2wgY2xlYXJS
ZW5kZXJUcmVlU2VsZWN0aW9uID0gZmFsc2U7Ci0gICAgYm9vbCBjbGVhckRPTVRyZWVTZWxlY3Rp
b24gPSBmYWxzZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlzaWJsZVNlbGVjdGlvbj4gbmV3U2Vs
ZWN0aW9uOwogCiAgICAgaWYgKHN0YXJ0UmVtb3ZlZCB8fCBlbmRSZW1vdmVkKSB7CiAgICAgICAg
IFBvc2l0aW9uIHN0YXJ0ID0gbV9zZWxlY3Rpb24uc3RhcnQoKTsKQEAgLTQzNiwxMSArNDM2LDEx
IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnJlc3BvbmRUb05vZGVNb2RpZmkKIAogICAgICAgICBp
ZiAoc3RhcnQuaXNOb3ROdWxsKCkgJiYgZW5kLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICBp
ZiAobV9zZWxlY3Rpb24uaXNCYXNlRmlyc3QoKSkKLSAgICAgICAgICAgICAgICBtX3NlbGVjdGlv
bi5zZXRXaXRob3V0VmFsaWRhdGlvbihzdGFydCwgZW5kKTsKKyAgICAgICAgICAgICAgICBuZXdT
ZWxlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFZpc2libGVTZWxlY3Rpb24+KHN0YXJ0LCBlbmQs
IG1fc2VsZWN0aW9uLmFmZmluaXR5KCksIG1fc2VsZWN0aW9uLmlzRGlyZWN0aW9uYWwoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zZWxlY3Rpb24uc2V0V2l0aG91dFZh
bGlkYXRpb24oZW5kLCBzdGFydCk7CisgICAgICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxWaXNpYmxlU2VsZWN0aW9uPihlbmQsIHN0YXJ0LCBtX3NlbGVjdGlvbi5h
ZmZpbml0eSgpLCBtX3NlbGVjdGlvbi5pc0RpcmVjdGlvbmFsKCkpOwogICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIGNsZWFyRE9NVHJlZVNlbGVjdGlvbiA9IHRydWU7CisgICAgICAgICAgICBu
ZXdTZWxlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFZpc2libGVTZWxlY3Rpb24+KCk7CiAKICAg
ICAgICAgY2xlYXJSZW5kZXJUcmVlU2VsZWN0aW9uID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKGJh
c2VSZW1vdmVkIHx8IGV4dGVudFJlbW92ZWQpIHsKQEAgLTQ0OCwxMCArNDQ4LDEyIEBAIHZvaWQg
RnJhbWVTZWxlY3Rpb246OnJlc3BvbmRUb05vZGVNb2RpZmkKICAgICAgICAgLy8gQ2hhbmdlIHRo
ZSBiYXNlIGFuZCBleHRlbnQgdG8gdGhlIHN0YXJ0IGFuZCBlbmQsIGJ1dCBkb24ndCByZS12YWxp
ZGF0ZSB0aGUKICAgICAgICAgLy8gc2VsZWN0aW9uLCBzaW5jZSBkb2luZyBzbyBjb3VsZCBtb3Zl
IHRoZSBzdGFydCBhbmQgZW5kIGludG8gdGhlIG5vZGUKICAgICAgICAgLy8gdGhhdCBpcyBhYm91
dCB0byBiZSByZW1vdmVkLgorICAgICAgICBQb3NpdGlvbiBzdGFydCA9IG1fc2VsZWN0aW9uLnN0
YXJ0KCk7CisgICAgICAgIFBvc2l0aW9uIGVuZCA9IG1fc2VsZWN0aW9uLmVuZCgpOwogICAgICAg
ICBpZiAobV9zZWxlY3Rpb24uaXNCYXNlRmlyc3QoKSkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9u
LnNldFdpdGhvdXRWYWxpZGF0aW9uKG1fc2VsZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmVu
ZCgpKTsKKyAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8VmlzaWJs
ZVNlbGVjdGlvbj4oc3RhcnQsIGVuZCwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSwgbV9zZWxlY3Rp
b24uaXNEaXJlY3Rpb25hbCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zZWxlY3Rp
b24uc2V0V2l0aG91dFZhbGlkYXRpb24obV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLnN0
YXJ0KCkpOworICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxWaXNp
YmxlU2VsZWN0aW9uPihlbmQsIHN0YXJ0LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpLCBtX3NlbGVj
dGlvbi5pc0RpcmVjdGlvbmFsKCkpOwogICAgIH0gZWxzZSBpZiAoUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IG1fc2VsZWN0aW9uLmZpcnN0UmFuZ2UoKSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICAgICAgUmFuZ2U6OkNvbXBhcmVSZXN1bHRzIGNvbXBhcmVSZXN1bHQgPSByYW5n
ZS0+Y29tcGFyZU5vZGUobm9kZSwgZWMpOwpAQCAtNDY3LDggKzQ2OSw4IEBAIHZvaWQgRnJhbWVT
ZWxlY3Rpb246OnJlc3BvbmRUb05vZGVNb2RpZmkKICAgICBpZiAoY2xlYXJSZW5kZXJUcmVlU2Vs
ZWN0aW9uKQogICAgICAgICBjbGVhclJlbmRlclZpZXdTZWxlY3Rpb24obV9zZWxlY3Rpb24uc3Rh
cnQoKSk7CiAKLSAgICBpZiAoY2xlYXJET01UcmVlU2VsZWN0aW9uKQotICAgICAgICBzZXRTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbigpLCBEb05vdFNldEZvY3VzKTsKKyAgICBpZiAobmV3U2Vs
ZWN0aW9uKQorICAgICAgICBzZXRTZWxlY3Rpb24oKm5ld1NlbGVjdGlvbiwgRG9Ob3RTZXRGb2N1
cyk7CiB9CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZVBvc2l0aW9uQWZ0ZXJBZG9wdGluZ1RleHRSZXBs
YWNlbWVudChQb3NpdGlvbiYgcG9zaXRpb24sIENoYXJhY3RlckRhdGEqIG5vZGUsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgb2xkTGVuZ3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpCkluZGV4OiBM
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Rpb25jaGFuZ2Utb24tbm9kZS1yZW1v
dmFsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2Vs
ZWN0aW9uY2hhbmdlLW9uLW5vZGUtcmVtb3ZhbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0aW9uY2hhbmdlLW9uLW5vZGUtcmVtb3ZhbC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5U
ZXN0IHRoYXQgc2VsZWN0aW9uY2hhbmdlZXZlbnQgaXMgZGlzcGF0Y2hlZCB3aGVuIHJlbW92aW5n
IGEgbm9kZS48L3A+Cis8ZGl2IGlkPWNvbnNvbGU+PC9kaXY+Cis8c2NyaXB0PgorCitqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKwordGVzdFJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKK3Rlc3RSb290LmlkID0gInRlc3RSb290IjsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
dGVzdFJvb3QpOworCitmdW5jdGlvbiBwcmVwYXJlVGVzdCgpCit7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZCh0ZXN0Um9vdCk7CisgICAgdGVzdFJvb3QuaW5uZXJIVE1MID0gImFhYTxz
cGFuIGlkPSdjaGlsZDEnPmJiYjwvc3Bhbj48c3BhbiBpZD0nY2hpbGQyJz5jY2M8L3NwYW4+PC9z
cGFuPiI7IAorICAgIGNoaWxkMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKTsK
KyAgICBjaGlsZDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIik7Cit9CisKK3Zh
ciB0ZXN0U3RlcHMgPSBbCisgICAgInByZXBhcmVUZXN0KCk7IGdldFNlbGVjdGlvbigpLnNlbGVj
dEFsbENoaWxkcmVuKHRlc3RSb290KSIsCisgICAgWyAidGVzdFJvb3QuZmlyc3RDaGlsZCIsIDAs
ICJjaGlsZDIuZmlyc3RDaGlsZCIsIDMgXSwKKyAgICAiZG9jdW1lbnQuYm9keS5yZW1vdmVDaGls
ZCh0ZXN0Um9vdCkiLAorICAgIFsgInRlc3RSb290LmZpcnN0Q2hpbGQiLCAwLCAidGVzdFJvb3Qu
Zmlyc3RDaGlsZCIsIDAgXSwKKyAgICAicHJlcGFyZVRlc3QoKTsgZ2V0U2VsZWN0aW9uKCkuc2V0
QmFzZUFuZEV4dGVudCh0ZXN0Um9vdCwgMSwgdGVzdFJvb3QsIDIpIiwKKyAgICBbICJjaGlsZDEu
Zmlyc3RDaGlsZCIsIDAsICJjaGlsZDEuZmlyc3RDaGlsZCIsIDMgXSwKKyAgICAiY2hpbGQxLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQxKSIsCisgICAgWyAidGVzdFJvb3QuZmlyc3RDaGls
ZCIsIDMsICJ0ZXN0Um9vdC5maXJzdENoaWxkIiwgMyBdLAorICAgICJwcmVwYXJlVGVzdCgpOyBn
ZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRlc3RSb290LmZpcnN0Q2hpbGQsIDEsIGNo
aWxkMS5maXJzdENoaWxkLCAxKSIsCisgICAgWyAidGVzdFJvb3QuZmlyc3RDaGlsZCIsIDEsICJj
aGlsZDEuZmlyc3RDaGlsZCIsIDEgXSwKKyAgICAiY2hpbGQxLnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQoY2hpbGQxKSIsCisgICAgWyAidGVzdFJvb3QuZmlyc3RDaGlsZCIsIDEsICJ0ZXN0Um9vdC5m
aXJzdENoaWxkIiwgMyBdLAorICAgICJwcmVwYXJlVGVzdCgpOyBnZXRTZWxlY3Rpb24oKS5zZXRC
YXNlQW5kRXh0ZW50KHRlc3RSb290LmZpcnN0Q2hpbGQsIDEsIGNoaWxkMi5maXJzdENoaWxkLCAx
KSIsCisgICAgWyAidGVzdFJvb3QuZmlyc3RDaGlsZCIsIDEsICJjaGlsZDIuZmlyc3RDaGlsZCIs
IDEgXSwKKyAgICAiY2hpbGQxLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQxKSIsCisgICAg
WyAidGVzdFJvb3QuZmlyc3RDaGlsZCIsIDEsICJjaGlsZDIuZmlyc3RDaGlsZCIsIDEgXSwKK107
Cit2YXIgY3VycmVudFRlc3RTdGVwID0gMDsKKworYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9u
Y2hhbmdlIiwgZGlkQ2hhbmdlU2VsZWN0aW9uLCB0cnVlKTsKKworZGVidWcodGVzdFN0ZXBzWzBd
KTsKK2V2YWwodGVzdFN0ZXBzW2N1cnJlbnRUZXN0U3RlcCsrXSk7CisKK2Z1bmN0aW9uIGRpZENo
YW5nZVNlbGVjdGlvbigpCit7CisgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKKyAgICBpZiAodHlwZW9mIHRlc3RTdGVwc1tjdXJyZW50VGVzdFN0ZXBdID09PSAic3Ry
aW5nIikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChzZWxlY3Rpb24uYW5jaG9yTm9kZSAhPSBl
dmFsKHRlc3RTdGVwc1tjdXJyZW50VGVzdFN0ZXBdWzBdKQorICAgICAgICB8fCBzZWxlY3Rpb24u
YW5jaG9yT2Zmc2V0ICE9IGV2YWwodGVzdFN0ZXBzW2N1cnJlbnRUZXN0U3RlcF1bMV0pCisgICAg
ICAgIHx8IHNlbGVjdGlvbi5mb2N1c05vZGUgIT0gZXZhbCh0ZXN0U3RlcHNbY3VycmVudFRlc3RT
dGVwXVsyXSkKKyAgICAgICAgfHwgc2VsZWN0aW9uLmZvY3VzT2Zmc2V0ICE9IGV2YWwodGVzdFN0
ZXBzW2N1cnJlbnRUZXN0U3RlcF1bM10pKQorICAgICAgICByZXR1cm47CisKKyAgICB0ZXN0UGFz
c2VkKHNlbGVjdGlvbi5hbmNob3JOb2RlICsgKHNlbGVjdGlvbi5hbmNob3JOb2RlID8gIiAoIiAr
IHNlbGVjdGlvbi5hbmNob3JOb2RlLnBhcmVudE5vZGUuaWQgKyAiKTogIiA6ICI6ICIpICsgc2Vs
ZWN0aW9uLmFuY2hvck9mZnNldCArICIsICIgKyBzZWxlY3Rpb24uZm9jdXNOb2RlICsgKHNlbGVj
dGlvbi5mb2N1c05vZGUgPyAiICgiICsgc2VsZWN0aW9uLmZvY3VzTm9kZS5wYXJlbnROb2RlLmlk
ICsgIik6ICIgOiAiOiAiKSArIHNlbGVjdGlvbi5mb2N1c09mZnNldCk7CisKKyAgICBpZiAoKytj
dXJyZW50VGVzdFN0ZXAgPT0gdGVzdFN0ZXBzLmxlbmd0aCkgeworICAgICAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKHRlc3RSb290KTsKKyAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcigi
c2VsZWN0aW9uY2hhbmdlIiwgZGlkQ2hhbmdlU2VsZWN0aW9uLCB0cnVlKTsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZGVidWcodGVzdFN0ZXBzW2N1cnJl
bnRUZXN0U3RlcF0pOworICAgICAgICAgICAgZXZhbCh0ZXN0U3RlcHNbY3VycmVudFRlc3RTdGVw
KytdKTsKKyAgICAgICAgfSwgMCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L3NlbGVjdGlvbmNoYW5nZS1vbi1ub2RlLXJlbW92YWwuaHRtbApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQvaHRtbApcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>