<?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>168984</bug_id>
          
          <creation_ts>2017-02-28 12:52:30 -0800</creation_ts>
          <short_desc>Web Inspector: DOMTreeManager dispatches DocumentUpdated twice when the document is cleared</short_desc>
          <delta_ts>2017-03-09 09:40:13 -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>Web Inspector</component>
          <version>WebKit 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="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>inspector-bugzilla-changes</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1281881</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-02-28 12:52:30 -0800</bug_when>
    <thetext>Summary:
DOMTreeManager dispatches DocumentUpdated twice when the document is cleared.

Note:
The backend is dispatching two DOM.documentUpdated events, which seems odd, but the frontend should handle it gracefully regardless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281918</commentid>
    <comment_count>1</comment_count>
      <attachid>302974</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-02-28 13:38:25 -0800</bug_when>
    <thetext>Created attachment 302974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281922</commentid>
    <comment_count>2</comment_count>
      <attachid>302977</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-02-28 13:46:33 -0800</bug_when>
    <thetext>Created attachment 302977
[Test] LayoutTests/inspector/dom/dom-document-updated-event.html

The layout test intended for this patch times out. It looks like the DocumentUpdated event is never dispatched.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281925</commentid>
    <comment_count>3</comment_count>
      <attachid>302974</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-02-28 13:47:20 -0800</bug_when>
    <thetext>Comment on attachment 302974
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js:209
&gt; +        if (this._document === newDocument)

I might be wrong about this, but I thought that comparing Objects doesn&apos;t work unless both variables literally hold the same object.  As such, wouldn&apos;t this if statement never trigger?

let a = {x: 1, y: 2};
let b = {x: 1, y: 2};
console.log(a === b); // false</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281926</commentid>
    <comment_count>4</comment_count>
      <attachid>302978</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-02-28 13:47:54 -0800</bug_when>
    <thetext>Created attachment 302978
[Test] LayoutTests/inspector/dom/dom-document-updated-event.html

Fix typo in test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281928</commentid>
    <comment_count>5</comment_count>
      <attachid>302974</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-02-28 13:49:11 -0800</bug_when>
    <thetext>Comment on attachment 302974
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js:209
&gt;&gt; +        if (this._document === newDocument)
&gt; 
&gt; I might be wrong about this, but I thought that comparing Objects doesn&apos;t work unless both variables literally hold the same object.  As such, wouldn&apos;t this if statement never trigger?
&gt; 
&gt; let a = {x: 1, y: 2};
&gt; let b = {x: 1, y: 2};
&gt; console.log(a === b); // false

You are correct. This addresses the case where the document is null, and being set to null again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284116</commentid>
    <comment_count>6</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-03-06 18:53:57 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created attachment 302977 [details]
&gt; [Test] LayoutTests/inspector/dom/dom-document-updated-event.html
&gt; 
&gt; The layout test intended for this patch times out. It looks like the
&gt; DocumentUpdated event is never dispatched.

The backend only dispatches DocumentUpdated is the document has been requested. Rewriting test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285336</commentid>
    <comment_count>7</comment_count>
      <attachid>302974</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2017-03-09 09:12:43 -0800</bug_when>
    <thetext>Comment on attachment 302974
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js:209
&gt;&gt;&gt; +        if (this._document === newDocument)
&gt;&gt; 
&gt;&gt; I might be wrong about this, but I thought that comparing Objects doesn&apos;t work unless both variables literally hold the same object.  As such, wouldn&apos;t this if statement never trigger?
&gt;&gt; 
&gt;&gt; let a = {x: 1, y: 2};
&gt;&gt; let b = {x: 1, y: 2};
&gt;&gt; console.log(a === b); // false
&gt; 
&gt; You are correct. This addresses the case where the document is null, and being set to null again.

Matt is right. This would also just start working in the future if `new WebInspector.DOMNode` started returning the same (cached) object with the same node id.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285349</commentid>
    <comment_count>8</comment_count>
      <attachid>302974</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 09:40:09 -0800</bug_when>
    <thetext>Comment on attachment 302974
Patch

Clearing flags on attachment: 302974

Committed r213644: &lt;http://trac.webkit.org/changeset/213644&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285350</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 09:40:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302974</attachid>
            <date>2017-02-28 13:38:25 -0800</date>
            <delta_ts>2017-03-09 09:40:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168984-20170228133533.patch</filename>
            <type>text/plain</type>
            <size>2077</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
NDQyNGI1MTNjMThiMmQxYjVlN2M0OTcyZWY1OTc4YzM5ZWUyYjYwLi5lMTFiNzI2ZTVmZjA1NDYw
MDViNjgwZWJiNzg5YTQ2MGQ2ZTY1Mzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNy0wMi0yOCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRE9NVHJlZU1hbmFnZXIgZGlzcGF0Y2hlcyBEb2N1
bWVudFVwZGF0ZWQgdHdpY2Ugd2hlbiB0aGUgZG9jdW1lbnQgaXMgY2xlYXJlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4OTg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRy
ZWVNYW5hZ2VyLnByb3RvdHlwZS5fc2V0RG9jdW1lbnQpOgorICAgICAgICBDb21wYXJlIG9sZCBh
bmQgbmV3IGRvY3VtZW50IHZhbHVlcyBiZWZvcmUgZGlzcGF0Y2hpbmcgbWVzc2FnZS4KKwogMjAx
Ny0wMi0yNSAgRGV2aW4gUm91c3NvICA8ZGNyb3Vzc28rd2Via2l0QGdtYWlsLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBSVEw6IGFkZCBzdXBwb3J0IGZvciBDb2xvciBQaWNrZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0RPTVRyZWVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKaW5kZXggYzdjNDAwM2RlNDMzMjk4NGFlNDU4
YzAxOWFhMzljNWYyZmU1YjRmNi4uYzAwMGUwZmU5MzA3Y2I1ZGUyZTU3YTkyNDI2MDFkMTllNmU5
YWY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKQEAgLTIwMSwxMSArMjAx
LDE2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlciA9IGNsYXNzIERPTVRyZWVNYW5hZ2Vy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgIF9zZXREb2N1bWVudChwYXlsb2FkKQog
ICAgIHsKICAgICAgICAgdGhpcy5faWRUb0RPTU5vZGUgPSB7fTsKKworICAgICAgICBsZXQgbmV3
RG9jdW1lbnQgPSBudWxsOwogICAgICAgICBpZiAocGF5bG9hZCAmJiAibm9kZUlkIiBpbiBwYXls
b2FkKQotICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTU5v
ZGUodGhpcywgbnVsbCwgZmFsc2UsIHBheWxvYWQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0aGlzLl9kb2N1bWVudCA9IG51bGw7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Eb2N1bWVudFVwZGF0ZWQs
IHRoaXMuX2RvY3VtZW50KTsKKyAgICAgICAgICAgIG5ld0RvY3VtZW50ID0gbmV3IFdlYkluc3Bl
Y3Rvci5ET01Ob2RlKHRoaXMsIG51bGwsIGZhbHNlLCBwYXlsb2FkKTsKKworICAgICAgICBpZiAo
dGhpcy5fZG9jdW1lbnQgPT09IG5ld0RvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRoaXMuX2RvY3VtZW50ID0gbmV3RG9jdW1lbnQ7CisgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Eb2N1
bWVudFVwZGF0ZWQsIHtkb2N1bWVudDogdGhpcy5fZG9jdW1lbnR9KTsKICAgICB9CiAKICAgICBf
c2V0RGV0YWNoZWRSb290KHBheWxvYWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>302977</attachid>
            <date>2017-02-28 13:46:33 -0800</date>
            <delta_ts>2017-02-28 13:47:54 -0800</delta_ts>
            <desc>[Test] LayoutTests/inspector/dom/dom-document-updated-event.html</desc>
            <filename>dom-document-updated-event.html</filename>
            <type>text/html</type>
            <size>1135</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxodG1sPgo8aGVhZD4KPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CjxzY3Jp
cHQ+CmZ1bmN0aW9uIHRlc3QoKQp7CiAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0
ZUFzeW5jU3VpdGUoIkRPTS5Eb2N1bWVudFVwZGF0ZWQiKTsKCiAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CiAgICAgICAgbmFtZTogIkNoZWNrRG9jdW1lbnRVcGRhdGVkQWZ0ZXJSZWxvYWRpbmciLAog
ICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB0aGUgZG9jdW1lbnQgaXMgb25seSBjbGVh
cmVkIG9uY2UgZHVyaW5nIHJlbG9hZC4iLAogICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7
CiAgICAgICAgICAgIGxldCBkb2N1bWVudENsZWFyZWRDb3VudCA9IGZhbHNlOwogICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuRG9jdW1lbnRVcGRhdGVkLCAoZXZlbnQpID0+IHsKICAg
ICAgICAgICAgICAgIGRvY3VtZW50Q2xlYXJlZENvdW50Kys7CiAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiRG9jdW1lbnQgY2xlYXJlZC4iKTsKCiAgICAgICAgICAgICAgICBpZiAo
ZXZlbnQuZG9jdW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKGRvY3VtZW50Q2xlYXJlZENvdW50LCAxLCAiRG9jdW1lbnQgc2hvdWxkIGJlIGNsZWFy
ZWQgZXhhY3RseSBvbmNlLiIpOwogICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoK
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKCk7CiAgICAgICAgfQogICAgfSk7
CgogICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cn0KPC9zY3JpcHQ+CjwvaGVhZD4K
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgo8cD5UZXN0IGZvciBXZWJJbnNwZWN0b3IuRE9NVHJl
ZU1hbmFnZXIuRXZlbnQuRG9jdW1lbnRVcGRhdGVkLjwvcD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>302978</attachid>
            <date>2017-02-28 13:47:54 -0800</date>
            <delta_ts>2017-02-28 13:47:54 -0800</delta_ts>
            <desc>[Test] LayoutTests/inspector/dom/dom-document-updated-event.html</desc>
            <filename>dom-document-updated-event.html</filename>
            <type>text/html</type>
            <size>1131</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxodG1sPgo8aGVhZD4KPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CjxzY3Jp
cHQ+CmZ1bmN0aW9uIHRlc3QoKQp7CiAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0
ZUFzeW5jU3VpdGUoIkRPTS5Eb2N1bWVudFVwZGF0ZWQiKTsKCiAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CiAgICAgICAgbmFtZTogIkNoZWNrRG9jdW1lbnRVcGRhdGVkQWZ0ZXJSZWxvYWRpbmciLAog
ICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB0aGUgZG9jdW1lbnQgaXMgb25seSBjbGVh
cmVkIG9uY2UgZHVyaW5nIHJlbG9hZC4iLAogICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7
CiAgICAgICAgICAgIGxldCBkb2N1bWVudENsZWFyZWRDb3VudCA9IDA7CiAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
T01UcmVlTWFuYWdlci5FdmVudC5Eb2N1bWVudFVwZGF0ZWQsIChldmVudCkgPT4gewogICAgICAg
ICAgICAgICAgZG9jdW1lbnRDbGVhcmVkQ291bnQrKzsKICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJEb2N1bWVudCBjbGVhcmVkLiIpOwoKICAgICAgICAgICAgICAgIGlmIChldmVu
dC5kb2N1bWVudCkgewogICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwoZG9jdW1lbnRDbGVhcmVkQ291bnQsIDEsICJEb2N1bWVudCBzaG91bGQgYmUgY2xlYXJlZCBl
eGFjdGx5IG9uY2UuIik7CiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UoKTsKICAgICAgICB9CiAgICB9KTsKCiAg
ICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKfQo8L3NjcmlwdD4KPC9oZWFkPgo8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+CjxwPlRlc3QgZm9yIFdlYkluc3BlY3Rvci5ET01UcmVlTWFu
YWdlci5FdmVudC5Eb2N1bWVudFVwZGF0ZWQuPC9wPgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>