<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[242318] trunk/Source/WebInspectorUI</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/242318">242318</a></dd>
<dt>Author</dt> <dd>drousso@apple.com</dd>
<dt>Date</dt> <dd>2019-03-02 14:40:43 -0800 (Sat, 02 Mar 2019)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: Debugger: DOM, URL, and Event breakpoints don't grey out when all breakpoints are disabled
https://bugs.webkit.org/show_bug.cgi?id=195170
<rdar://problem/48478193>

Reviewed by Joseph Pecoraro.

* UserInterface/Views/DOMBreakpointTreeElement.js:
(WI.DOMBreakpointTreeElement):
(WI.DOMBreakpointTreeElement.prototype.onattach):
(WI.DOMBreakpointTreeElement.prototype.ondetach):
(WI.DOMBreakpointTreeElement.prototype._updateStatus):
* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement):
(WI.EventBreakpointTreeElement.prototype.onattach):
(WI.EventBreakpointTreeElement.prototype.ondetach):
(WI.EventBreakpointTreeElement.prototype._updateStatus):
* UserInterface/Views/URLBreakpointTreeElement.js:
(WI.URLBreakpointTreeElement):
(WI.URLBreakpointTreeElement.prototype.onattach):
(WI.URLBreakpointTreeElement.prototype.ondetach):
(WI.URLBreakpointTreeElement.prototype._updateStatus):
Remove the `"resolved"` class when the global "breakpoints enabled" state is changed.

* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager):
(WI.DOMDebuggerManager.prototype._handleDOMBreakpointDisabledStateChanged): Added.
(WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged): Added.
(WI.DOMDebuggerManager.prototype._handleURLBreakpointDisabledStateChanged): Added.
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint):
(WI.DOMDebuggerManager.prototype._updateURLBreakpoint):
(WI.DOMDebuggerManager.prototype._resolveEventBreakpoint):
(WI.DOMDebuggerManager.prototype._resolveURLBreakpoint):
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint.breakpointUpdated): Deleted.
(WI.DOMDebuggerManager.prototype._updateURLBreakpoint.breakpointUpdated): Deleted.
* UserInterface/Models/DOMBreakpoint.js:
(WI.DOMBreakpoint):
(WI.DOMBreakpoint.deserialize): Added.
(WI.DOMBreakpoint.prototype.set disabled):
(WI.DOMBreakpoint.prototype.set domNodeIdentifier):
* UserInterface/Models/EventBreakpoint.js:
(WI.EventBreakpoint.deserialize): Added.
(WI.EventBreakpoint.prototype.set disabled):
(WI.EventBreakpoint.fromPayload): Deleted.
* UserInterface/Models/URLBreakpoint.js:
(WI.URLBreakpoint.deserialize): Added.
(WI.URLBreakpoint.prototype.set disabled):
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
(WI.DOMTreeContentView.prototype._handleDOMBreakpointDisabledStateChanged): Added.
(WI.DOMTreeContentView.prototype._handleDOMBreakpointDOMNodeChanged): Added.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._handleDOMBreakpointResolvedStateChanged): Added.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._handleDOMBreakpointResolvedStateChanged): Added.
Drive-by: rename all events with the name `*DidChange` to `*Changed`.
Drive-by: create static `deserialize` helper functions.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceControllersDOMDebuggerManagerjs">trunk/Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsDOMBreakpointjs">trunk/Source/WebInspectorUI/UserInterface/Models/DOMBreakpoint.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsEventBreakpointjs">trunk/Source/WebInspectorUI/UserInterface/Models/EventBreakpoint.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsURLBreakpointjs">trunk/Source/WebInspectorUI/UserInterface/Models/URLBreakpoint.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsDOMBreakpointTreeElementjs">trunk/Source/WebInspectorUI/UserInterface/Views/DOMBreakpointTreeElement.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsDOMTreeContentViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsDebuggerSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsEventBreakpointTreeElementjs">trunk/Source/WebInspectorUI/UserInterface/Views/EventBreakpointTreeElement.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsSourcesNavigationSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsURLBreakpointTreeElementjs">trunk/Source/WebInspectorUI/UserInterface/Views/URLBreakpointTreeElement.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (242317 => 242318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog    2019-03-02 21:50:43 UTC (rev 242317)
+++ trunk/Source/WebInspectorUI/ChangeLog       2019-03-02 22:40:43 UTC (rev 242318)
</span><span class="lines">@@ -1,5 +1,65 @@
</span><span class="cx"> 2019-03-02  Devin Rousso  <drousso@apple.com>
</span><span class="cx"> 
</span><ins>+        Web Inspector: Debugger: DOM, URL, and Event breakpoints don't grey out when all breakpoints are disabled
+        https://bugs.webkit.org/show_bug.cgi?id=195170
+        <rdar://problem/48478193>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/DOMBreakpointTreeElement.js:
+        (WI.DOMBreakpointTreeElement):
+        (WI.DOMBreakpointTreeElement.prototype.onattach):
+        (WI.DOMBreakpointTreeElement.prototype.ondetach):
+        (WI.DOMBreakpointTreeElement.prototype._updateStatus):
+        * UserInterface/Views/EventBreakpointTreeElement.js:
+        (WI.EventBreakpointTreeElement):
+        (WI.EventBreakpointTreeElement.prototype.onattach):
+        (WI.EventBreakpointTreeElement.prototype.ondetach):
+        (WI.EventBreakpointTreeElement.prototype._updateStatus):
+        * UserInterface/Views/URLBreakpointTreeElement.js:
+        (WI.URLBreakpointTreeElement):
+        (WI.URLBreakpointTreeElement.prototype.onattach):
+        (WI.URLBreakpointTreeElement.prototype.ondetach):
+        (WI.URLBreakpointTreeElement.prototype._updateStatus):
+        Remove the `"resolved"` class when the global "breakpoints enabled" state is changed.
+
+        * UserInterface/Controllers/DOMDebuggerManager.js:
+        (WI.DOMDebuggerManager):
+        (WI.DOMDebuggerManager.prototype._handleDOMBreakpointDisabledStateChanged): Added.
+        (WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged): Added.
+        (WI.DOMDebuggerManager.prototype._handleURLBreakpointDisabledStateChanged): Added.
+        (WI.DOMDebuggerManager.prototype._updateEventBreakpoint):
+        (WI.DOMDebuggerManager.prototype._updateURLBreakpoint):
+        (WI.DOMDebuggerManager.prototype._resolveEventBreakpoint):
+        (WI.DOMDebuggerManager.prototype._resolveURLBreakpoint):
+        (WI.DOMDebuggerManager.prototype._updateEventBreakpoint.breakpointUpdated): Deleted.
+        (WI.DOMDebuggerManager.prototype._updateURLBreakpoint.breakpointUpdated): Deleted.
+        * UserInterface/Models/DOMBreakpoint.js:
+        (WI.DOMBreakpoint):
+        (WI.DOMBreakpoint.deserialize): Added.
+        (WI.DOMBreakpoint.prototype.set disabled):
+        (WI.DOMBreakpoint.prototype.set domNodeIdentifier):
+        * UserInterface/Models/EventBreakpoint.js:
+        (WI.EventBreakpoint.deserialize): Added.
+        (WI.EventBreakpoint.prototype.set disabled):
+        (WI.EventBreakpoint.fromPayload): Deleted.
+        * UserInterface/Models/URLBreakpoint.js:
+        (WI.URLBreakpoint.deserialize): Added.
+        (WI.URLBreakpoint.prototype.set disabled):
+        * UserInterface/Views/DOMTreeContentView.js:
+        (WI.DOMTreeContentView):
+        (WI.DOMTreeContentView.prototype._handleDOMBreakpointDisabledStateChanged): Added.
+        (WI.DOMTreeContentView.prototype._handleDOMBreakpointDOMNodeChanged): Added.
+        * UserInterface/Views/DebuggerSidebarPanel.js:
+        (WI.DebuggerSidebarPanel.prototype._handleDOMBreakpointResolvedStateChanged): Added.
+        * UserInterface/Views/SourcesNavigationSidebarPanel.js:
+        (WI.SourcesNavigationSidebarPanel):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDOMBreakpointResolvedStateChanged): Added.
+        Drive-by: rename all events with the name `*DidChange` to `*Changed`.
+        Drive-by: create static `deserialize` helper functions.
+
+2019-03-02  Devin Rousso  <drousso@apple.com>
+
</ins><span class="cx">         Web Inspector: Sources: breakpoints should be disabled when an audit is running
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=195105
</span><span class="cx">         <rdar://problem/48441373>
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceControllersDOMDebuggerManagerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js (242317 => 242318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js      2019-03-02 21:50:43 UTC (rev 242317)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js 2019-03-02 22:40:43 UTC (rev 242318)
</span><span class="lines">@@ -40,11 +40,13 @@
</span><span class="cx">         this._urlBreakpoints = [];
</span><span class="cx">         this._allRequestsBreakpointEnabledSetting = new WI.Setting("break-on-all-requests", false);
</span><span class="cx"> 
</span><del>-        this._allRequestsBreakpoint = new WI.URLBreakpoint(null, null, !this._allRequestsBreakpointEnabledSetting.value);
</del><ins>+        this._allRequestsBreakpoint = new WI.URLBreakpoint(WI.URLBreakpoint.Type.Text, "", {
+            disabled: !this._allRequestsBreakpointEnabledSetting.value,
+        });
</ins><span class="cx"> 
</span><del>-        WI.DOMBreakpoint.addEventListener(WI.DOMBreakpoint.Event.DisabledStateDidChange, this._domBreakpointDisabledStateDidChange, this);
-        WI.EventBreakpoint.addEventListener(WI.EventBreakpoint.Event.DisabledStateDidChange, this._eventBreakpointDisabledStateDidChange, this);
-        WI.URLBreakpoint.addEventListener(WI.URLBreakpoint.Event.DisabledStateDidChange, this._urlBreakpointDisabledStateDidChange, this);
</del><ins>+        WI.DOMBreakpoint.addEventListener(WI.DOMBreakpoint.Event.DisabledStateChanged, this._handleDOMBreakpointDisabledStateChanged, this);
+        WI.EventBreakpoint.addEventListener(WI.EventBreakpoint.Event.DisabledStateChanged, this._handleEventBreakpointDisabledStateChanged, this);
+        WI.URLBreakpoint.addEventListener(WI.URLBreakpoint.Event.DisabledStateChanged, this._handleURLBreakpointDisabledStateChanged, this);
</ins><span class="cx"> 
</span><span class="cx">         WI.domManager.addEventListener(WI.DOMManager.Event.NodeRemoved, this._nodeRemoved, this);
</span><span class="cx">         WI.domManager.addEventListener(WI.DOMManager.Event.NodeInserted, this._nodeInserted, this);
</span><span class="lines">@@ -57,18 +59,14 @@
</span><span class="cx">         if (this.supported) {
</span><span class="cx">             this._restoringBreakpoints = true;
</span><span class="cx"> 
</span><del>-            for (let cookie of this._domBreakpointsSetting.value) {
-                let breakpoint = new WI.DOMBreakpoint(cookie, cookie.type, cookie.disabled);
-                this.addDOMBreakpoint(breakpoint);
-            }
</del><ins>+            for (let serializedInfo of this._domBreakpointsSetting.value)
+                this.addDOMBreakpoint(WI.DOMBreakpoint.deserialize(serializedInfo));
</ins><span class="cx"> 
</span><del>-            for (let payload of this._eventBreakpointSetting.value)
-                this.addEventBreakpoint(WI.EventBreakpoint.fromPayload(payload));
</del><ins>+            for (let serializedInfo of this._eventBreakpointSetting.value)
+                this.addEventBreakpoint(WI.EventBreakpoint.deserialize(serializedInfo));
</ins><span class="cx"> 
</span><del>-            for (let cookie of this._urlBreakpointsSetting.value) {
-                let breakpoint = new WI.URLBreakpoint(cookie.type, cookie.url, cookie.disabled);
-                this.addURLBreakpoint(breakpoint);
-            }
</del><ins>+            for (let serializedInfo of this._urlBreakpointsSetting.value)
+                this.addURLBreakpoint(WI.URLBreakpoint.deserialize(serializedInfo));
</ins><span class="cx"> 
</span><span class="cx">             this._restoringBreakpoints = false;
</span><span class="cx">             this._speculativelyResolveBreakpoints();
</span><span class="lines">@@ -466,60 +464,42 @@
</span><span class="cx">             DOMDebuggerAgent.setDOMBreakpoint(nodeIdentifier, breakpoint.type, breakpointUpdated);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _updateEventBreakpoint(breakpoint, callback)
</del><ins>+    _updateEventBreakpoint(breakpoint)
</ins><span class="cx">     {
</span><del>-        function breakpointUpdated(error)
-        {
-            if (error)
-                console.error(error);
-
-            if (callback)
-                callback(error);
-        }
-
</del><span class="cx">         // Compatibility (iOS 12): DOMDebuggerAgent.removeEventBreakpoint did not exist.
</span><span class="cx">         if (!WI.DOMDebuggerManager.supportsEventBreakpoints()) {
</span><span class="cx">             console.assert(breakpoint.type === WI.EventBreakpoint.Type.Listener);
</span><span class="cx">             if (breakpoint.disabled)
</span><del>-                DOMDebuggerAgent.removeEventListenerBreakpoint(breakpoint.eventName, breakpointUpdated);
</del><ins>+                DOMDebuggerAgent.removeEventListenerBreakpoint(breakpoint.eventName);
</ins><span class="cx">             else
</span><del>-                DOMDebuggerAgent.setEventListenerBreakpoint(breakpoint.eventName, breakpointUpdated);
</del><ins>+                DOMDebuggerAgent.setEventListenerBreakpoint(breakpoint.eventName);
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (breakpoint.disabled)
</span><del>-            DOMDebuggerAgent.removeEventBreakpoint(breakpoint.type, breakpoint.eventName, breakpointUpdated);
</del><ins>+            DOMDebuggerAgent.removeEventBreakpoint(breakpoint.type, breakpoint.eventName);
</ins><span class="cx">         else
</span><del>-            DOMDebuggerAgent.setEventBreakpoint(breakpoint.type, breakpoint.eventName, breakpointUpdated);
</del><ins>+            DOMDebuggerAgent.setEventBreakpoint(breakpoint.type, breakpoint.eventName);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _updateURLBreakpoint(breakpoint, callback)
</del><ins>+    _updateURLBreakpoint(breakpoint)
</ins><span class="cx">     {
</span><del>-        function breakpointUpdated(error)
-        {
-            if (error)
-                console.error(error);
-
-            if (callback && typeof callback === "function")
-                callback(error);
-        }
-
</del><span class="cx">         // Compatibility (iOS 12.1): DOMDebuggerAgent.removeURLBreakpoint did not exist.
</span><span class="cx">         if (!WI.DOMDebuggerManager.supportsURLBreakpoints()) {
</span><span class="cx">             if (breakpoint.disabled)
</span><del>-                DOMDebuggerAgent.removeXHRBreakpoint(breakpoint.url, breakpointUpdated);
</del><ins>+                DOMDebuggerAgent.removeXHRBreakpoint(breakpoint.url);
</ins><span class="cx">             else {
</span><span class="cx">                 let isRegex = breakpoint.type === WI.URLBreakpoint.Type.RegularExpression;
</span><del>-                DebuggerAgent.setXHRBreakpoint(breakpoint.url, isRegex, breakpointUpdated);
</del><ins>+                DebuggerAgent.setXHRBreakpoint(breakpoint.url, isRegex);
</ins><span class="cx">             }
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (breakpoint.disabled)
</span><del>-            DOMDebuggerAgent.removeURLBreakpoint(breakpoint.url, breakpointUpdated);
</del><ins>+            DOMDebuggerAgent.removeURLBreakpoint(breakpoint.url);
</ins><span class="cx">         else {
</span><span class="cx">             let isRegex = breakpoint.type === WI.URLBreakpoint.Type.RegularExpression;
</span><del>-            DOMDebuggerAgent.setURLBreakpoint(breakpoint.url, isRegex, breakpointUpdated);
</del><ins>+            DOMDebuggerAgent.setURLBreakpoint(breakpoint.url, isRegex);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -528,9 +508,7 @@
</span><span class="cx">         if (breakpoint.disabled)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        this._updateEventBreakpoint(breakpoint, () => {
-            breakpoint.dispatchEventToListeners(WI.EventBreakpoint.Event.ResolvedStateDidChange);
-        });
</del><ins>+        this._updateEventBreakpoint(breakpoint);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     _resolveURLBreakpoint(breakpoint)
</span><span class="lines">@@ -538,9 +516,7 @@
</span><span class="cx">         if (breakpoint.disabled)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        this._updateURLBreakpoint(breakpoint, () => {
-            breakpoint.dispatchEventToListeners(WI.URLBreakpoint.Event.ResolvedStateDidChange);
-        });
</del><ins>+        this._updateURLBreakpoint(breakpoint);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     _saveDOMBreakpoints()
</span><span class="lines">@@ -571,7 +547,7 @@
</span><span class="cx">         this._urlBreakpointsSetting.value = this._urlBreakpoints.map((breakpoint) => breakpoint.serializableInfo);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _domBreakpointDisabledStateDidChange(event)
</del><ins>+    _handleDOMBreakpointDisabledStateChanged(event)
</ins><span class="cx">     {
</span><span class="cx">         let breakpoint = event.target;
</span><span class="cx">         this._updateDOMBreakpoint(breakpoint);
</span><span class="lines">@@ -578,7 +554,7 @@
</span><span class="cx">         this._saveDOMBreakpoints();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _eventBreakpointDisabledStateDidChange(event)
</del><ins>+    _handleEventBreakpointDisabledStateChanged(event)
</ins><span class="cx">     {
</span><span class="cx">         let breakpoint = event.target;
</span><span class="cx">         this._updateEventBreakpoint(breakpoint);
</span><span class="lines">@@ -585,7 +561,7 @@
</span><span class="cx">         this._saveEventBreakpoints();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _urlBreakpointDisabledStateDidChange(event)
</del><ins>+    _handleURLBreakpointDisabledStateChanged(event)
</ins><span class="cx">     {
</span><span class="cx">         let breakpoint = event.target;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsDOMBreakpointjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/DOMBreakpoint.js (242317 => 242318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/DOMBreakpoint.js        2019-03-02 21:50:43 UTC (rev 242317)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/DOMBreakpoint.js   2019-03-02 22:40:43 UTC (rev 242318)
</span><span class="lines">@@ -25,9 +25,10 @@
</span><span class="cx"> 
</span><span class="cx"> WI.DOMBreakpoint = class DOMBreakpoint extends WI.Object
</span><span class="cx"> {
</span><del>-    constructor(domNodeOrInfo, type, disabled)
</del><ins>+    constructor(domNodeOrInfo, type, {disabled} = {})
</ins><span class="cx">     {
</span><del>-        console.assert(domNodeOrInfo, "Missing DOMNode or info.");
</del><ins>+        console.assert(domNodeOrInfo instanceof WI.DOMNode || typeof domNodeOrInfo === "object", domNodeOrInfo);
+        console.assert(Object.values(WI.DOMBreakpoint.Type).includes(type), type);
</ins><span class="cx"> 
</span><span class="cx">         super();
</span><span class="cx"> 
</span><span class="lines">@@ -46,6 +47,15 @@
</span><span class="cx">         this._disabled = disabled || false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    // Static
+
+    static deserialize(serializedInfo)
+    {
+        return new WI.DOMBreakpoint(serializedInfo, serializedInfo.type, {
+            disabled: !!serializedInfo.disabled,
+        });
+    }
+
</ins><span class="cx">     // Public
</span><span class="cx"> 
</span><span class="cx">     get type() { return this._type; }
</span><span class="lines">@@ -64,7 +74,7 @@
</span><span class="cx"> 
</span><span class="cx">         this._disabled = disabled;
</span><span class="cx"> 
</span><del>-        this.dispatchEventToListeners(WI.DOMBreakpoint.Event.DisabledStateDidChange);
</del><ins>+        this.dispatchEventToListeners(WI.DOMBreakpoint.Event.DisabledStateChanged);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     get domNodeIdentifier()
</span><span class="lines">@@ -83,7 +93,7 @@
</span><span class="cx"> 
</span><span class="cx">         this._domNodeIdentifier = nodeIdentifier;
</span><span class="cx"> 
</span><del>-        this.dispatchEventToListeners(WI.DOMBreakpoint.Event.ResolvedStateDidChange, data);
</del><ins>+        this.dispatchEventToListeners(WI.DOMBreakpoint.Event.DOMNodeChanged, data);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     get serializableInfo()
</span><span class="lines">@@ -114,6 +124,6 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> WI.DOMBreakpoint.Event = {
</span><del>-    DisabledStateDidChange: "dom-breakpoint-disabled-state-did-change",
-    ResolvedStateDidChange: "dom-breakpoint-resolved-state-did-change",
</del><ins>+    DOMNodeChanged: "dom-breakpoint-dom-node-changed",
+    DisabledStateChanged: "dom-breakpoint-disabled-state-changed",
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsEventBreakpointjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/EventBreakpoint.js (242317 => 242318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/EventBreakpoint.js      2019-03-02 21:50:43 UTC (rev 242317)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/EventBreakpoint.js 2019-03-02 22:40:43 UTC (rev 242318)
</span><span class="lines">@@ -25,27 +25,25 @@
</span><span class="cx"> 
</span><span class="cx"> WI.EventBreakpoint = class EventBreakpoint extends WI.Object
</span><span class="cx"> {
</span><del>-    constructor(type, eventName, {disabled, eventListener} = {})
</del><ins>+    constructor(type, eventName, {eventListener, disabled} = {})
</ins><span class="cx">     {
</span><span class="cx">         super();
</span><span class="cx"> 
</span><del>-        console.assert(typeof type === "string");
-        console.assert(Object.values(WI.EventBreakpoint.Type).includes(type));
-        console.assert(typeof eventName === "string");
</del><ins>+        console.assert(Object.values(WI.EventBreakpoint.Type).includes(type), type);
+        console.assert(typeof eventName === "string", eventName);
</ins><span class="cx"> 
</span><span class="cx">         this._type = type;
</span><span class="cx">         this._eventName = eventName;
</span><del>-
</del><ins>+        this._eventListener = eventListener || null;
</ins><span class="cx">         this._disabled = disabled || false;
</span><del>-        this._eventListener = eventListener || null;
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Static
</span><span class="cx"> 
</span><del>-    static fromPayload(payload)
</del><ins>+    static deserialize(serializedInfo)
</ins><span class="cx">     {
</span><del>-        return new WI.EventBreakpoint(payload.type, payload.eventName, {
-            disabled: !!payload.disabled,
</del><ins>+        return new WI.EventBreakpoint(serializedInfo.type, serializedInfo.eventName, {
+            disabled: !!serializedInfo.disabled,
</ins><span class="cx">         });
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -67,7 +65,7 @@
</span><span class="cx"> 
</span><span class="cx">         this._disabled = disabled;
</span><span class="cx"> 
</span><del>-        this.dispatchEventToListeners(WI.EventBreakpoint.Event.DisabledStateDidChange);
</del><ins>+        this.dispatchEventToListeners(WI.EventBreakpoint.Event.DisabledStateChanged);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     get serializableInfo()
</span><span class="lines">@@ -99,6 +97,5 @@
</span><span class="cx"> WI.EventBreakpoint.EventNameCookieKey = "event-breakpoint-event-name";
</span><span class="cx"> 
</span><span class="cx"> WI.EventBreakpoint.Event = {
</span><del>-    DisabledStateDidChange: "event-breakpoint-disabled-state-did-change",
-    ResolvedStateDidChange: "event-breakpoint-resolved-state-did-change",
</del><ins>+    DisabledStateChanged: "event-breakpoint-disabled-state-changed",
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsURLBreakpointjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/URLBreakpoint.js (242317 => 242318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/URLBreakpoint.js        2019-03-02 21:50:43 UTC (rev 242317)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/URLBreakpoint.js   2019-03-02 22:40:43 UTC (rev 242318)
</span><span class="lines">@@ -25,15 +25,27 @@
</span><span class="cx"> 
</span><span class="cx"> WI.URLBreakpoint = class URLBreakpoint extends WI.Object
</span><span class="cx"> {
</span><del>-    constructor(type, url, disabled)
</del><ins>+    constructor(type, url, {disabled} = {})
</ins><span class="cx">     {
</span><ins>+        console.assert(Object.values(WI.URLBreakpoint.Type).includes(type), type);
+        console.assert(typeof url === "string", url);
+
</ins><span class="cx">         super();
</span><span class="cx"> 
</span><del>-        this._type = type || WI.URLBreakpoint.Type.Text;
-        this._url = url || "";
</del><ins>+        this._type = type;
+        this._url = url;
</ins><span class="cx">         this._disabled = disabled || false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    // Static
+
+    static deserialize(serializedInfo)
+    {
+        return new WI.URLBreakpoint(serializedInfo.type, serializedInfo.url, {
+            disabled: !!serializedInfo.disabled,
+        });
+    }
+
</ins><span class="cx">     // Public
</span><span class="cx"> 
</span><span class="cx">     get type() { return this._type; }
</span><span class="lines">@@ -51,7 +63,7 @@
</span><span class="cx"> 
</span><span class="cx">         this._disabled = disabled;
</span><span class="cx"> 
</span><del>-        this.dispatchEventToListeners(WI.URLBreakpoint.Event.DisabledStateDidChange);
</del><ins>+        this.dispatchEventToListeners(WI.URLBreakpoint.Event.DisabledStateChanged);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     get serializableInfo()
</span><span class="lines">@@ -70,8 +82,7 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> WI.URLBreakpoint.Event = {
</span><del>-    DisabledStateDidChange: "url-breakpoint-disabled-state-did-change",
-    ResolvedStateDidChange: "url-breakpoint-resolved-state-did-change",
</del><ins>+    DisabledStateChanged: "url-breakpoint-disabled-state-changed",
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> WI.URLBreakpoint.Type = {
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsDOMBreakpointTreeElementjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DOMBreakpointTreeElement.js (242317 => 242318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/DOMBreakpointTreeElement.js      2019-03-02 21:50:43 UTC (rev 242317)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DOMBreakpointTreeElement.js 2019-03-02 22:40:43 UTC (rev 242318)
</span><span class="lines">@@ -39,13 +39,9 @@
</span><span class="cx">         super(["breakpoint", "dom", className], title, subtitle, breakpoint);
</span><span class="cx"> 
</span><span class="cx">         this.status = WI.ImageUtilities.useSVGSymbol("Images/Breakpoint.svg");
</span><del>-        this.status.classList.add("status-image", "resolved");
</del><ins>+        this.status.className = WI.BreakpointTreeElement.StatusImageElementStyleClassName;
</ins><span class="cx"> 
</span><span class="cx">         this.tooltipHandledSeparately = true;
</span><del>-
-        breakpoint.addEventListener(WI.DOMBreakpoint.Event.DisabledStateDidChange, this._updateStatus, this);
-
-        this._updateStatus();
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Static
</span><span class="lines">@@ -71,6 +67,9 @@
</span><span class="cx">     {
</span><span class="cx">         super.onattach();
</span><span class="cx"> 
</span><ins>+        this.representedObject.addEventListener(WI.DOMBreakpoint.Event.DisabledStateChanged, this._updateStatus, this);
+        WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.BreakpointsEnabledDidChange, this._updateStatus, this);
+
</ins><span class="cx">         this._boundStatusImageElementClicked = this._statusImageElementClicked.bind(this);
</span><span class="cx">         this._boundStatusImageElementFocused = this._statusImageElementFocused.bind(this);
</span><span class="cx">         this._boundStatusImageElementMouseDown = this._statusImageElementMouseDown.bind(this);
</span><span class="lines">@@ -78,6 +77,8 @@
</span><span class="cx">         this.status.addEventListener("click", this._boundStatusImageElementClicked);
</span><span class="cx">         this.status.addEventListener("focus", this._boundStatusImageElementFocused);
</span><span class="cx">         this.status.addEventListener("mousedown", this._boundStatusImageElementMouseDown);
</span><ins>+
+        this._updateStatus();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ondetach()
</span><span class="lines">@@ -84,6 +85,9 @@
</span><span class="cx">     {
</span><span class="cx">         super.ondetach();
</span><span class="cx"> 
</span><ins>+        this.representedObject.removeEventListener(null, null, this);
+        WI.debuggerManager.removeEventListener(null, null, this);
+
</ins><span class="cx">         this.status.removeEventListener("click", this._boundStatusImageElementClicked);
</span><span class="cx">         this.status.removeEventListener("focus", this._boundStatusImageElementFocused);
</span><span class="cx">         this.status.removeEventListener("mousedown", this._boundStatusImageElementMouseDown);
</span><span class="lines">@@ -154,6 +158,10 @@
</span><span class="cx"> 
</span><span class="cx">     _updateStatus()
</span><span class="cx">     {
</span><del>-        this.status.classList.toggle("disabled", this.representedObject.disabled);
</del><ins>+        if (!this.status)
+            return;
+
+        this.status.classList.toggle(WI.BreakpointTreeElement.StatusImageDisabledStyleClassName, this.representedObject.disabled);
+        this.status.classList.toggle(WI.BreakpointTreeElement.StatusImageResolvedStyleClassName, WI.debuggerManager.breakpointsEnabled);
</ins><span class="cx">     }
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsDOMTreeContentViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js (242317 => 242318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js    2019-03-02 21:50:43 UTC (rev 242317)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js       2019-03-02 22:40:43 UTC (rev 242318)
</span><span class="lines">@@ -95,8 +95,8 @@
</span><span class="cx">             WI.domDebuggerManager.addEventListener(WI.DOMDebuggerManager.Event.DOMBreakpointAdded, this._domBreakpointAddedOrRemoved, this);
</span><span class="cx">             WI.domDebuggerManager.addEventListener(WI.DOMDebuggerManager.Event.DOMBreakpointRemoved, this._domBreakpointAddedOrRemoved, this);
</span><span class="cx"> 
</span><del>-            WI.DOMBreakpoint.addEventListener(WI.DOMBreakpoint.Event.DisabledStateDidChange, this._domBreakpointDisabledStateDidChange, this);
-            WI.DOMBreakpoint.addEventListener(WI.DOMBreakpoint.Event.ResolvedStateDidChange, this._domBreakpointResolvedStateDidChange, this);
</del><ins>+            WI.DOMBreakpoint.addEventListener(WI.DOMBreakpoint.Event.DisabledStateChanged, this._handleDOMBreakpointDisabledStateChanged, this);
+            WI.DOMBreakpoint.addEventListener(WI.DOMBreakpoint.Event.DOMNodeChanged, this._handleDOMBreakpointDOMNodeChanged, this);
</ins><span class="cx"> 
</span><span class="cx">             this._breakpointsEnabledDidChange();
</span><span class="cx">         }
</span><span class="lines">@@ -745,13 +745,13 @@
</span><span class="cx">         this._updateBreakpointStatus(breakpoint.domNodeIdentifier);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _domBreakpointDisabledStateDidChange(event)
</del><ins>+    _handleDOMBreakpointDisabledStateChanged(event)
</ins><span class="cx">     {
</span><span class="cx">         let breakpoint = event.target;
</span><span class="cx">         this._updateBreakpointStatus(breakpoint.domNodeIdentifier);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _domBreakpointResolvedStateDidChange(event)
</del><ins>+    _handleDOMBreakpointDOMNodeChanged(event)
</ins><span class="cx">     {
</span><span class="cx">         let breakpoint = event.target;
</span><span class="cx">         let nodeIdentifier = breakpoint.domNodeIdentifier || event.data.oldNodeIdentifier;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsDebuggerSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js (242317 => 242318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js  2019-03-02 21:50:43 UTC (rev 242317)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js     2019-03-02 22:40:43 UTC (rev 242318)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx">         WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.ActiveCallFrameDidChange, this._debuggerActiveCallFrameDidChange, this);
</span><span class="cx">         WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.WaitingToPause, this._debuggerWaitingToPause, this);
</span><span class="cx"> 
</span><del>-        WI.DOMBreakpoint.addEventListener(WI.DOMBreakpoint.Event.ResolvedStateDidChange, this._domBreakpointResolvedStateDidChange, this);
</del><ins>+        WI.DOMBreakpoint.addEventListener(WI.DOMBreakpoint.Event.DOMNodeChanged, this._handleDOMBreakpointDOMNodeChanged, this);
</ins><span class="cx"> 
</span><span class="cx">         WI.timelineManager.addEventListener(WI.TimelineManager.Event.CapturingWillStart, this._timelineCapturingWillStart, this);
</span><span class="cx">         WI.timelineManager.addEventListener(WI.TimelineManager.Event.CapturingStopped, this._timelineCapturingStopped, this);
</span><span class="lines">@@ -1368,7 +1368,7 @@
</span><span class="cx">         return issueTreeElement;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _domBreakpointResolvedStateDidChange(event)
</del><ins>+    _handleDOMBreakpointDOMNodeChanged(event)
</ins><span class="cx">     {
</span><span class="cx">         let breakpoint = event.target;
</span><span class="cx">         if (breakpoint.domNodeIdentifier)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsEventBreakpointTreeElementjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/EventBreakpointTreeElement.js (242317 => 242318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/EventBreakpointTreeElement.js    2019-03-02 21:50:43 UTC (rev 242317)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/EventBreakpointTreeElement.js       2019-03-02 22:40:43 UTC (rev 242318)
</span><span class="lines">@@ -40,13 +40,9 @@
</span><span class="cx">         super(classNames, title, subtitle, breakpoint);
</span><span class="cx"> 
</span><span class="cx">         this.status = WI.ImageUtilities.useSVGSymbol("Images/Breakpoint.svg");
</span><del>-        this.status.classList.add("status-image", "resolved");
</del><ins>+        this.status.className = WI.BreakpointTreeElement.StatusImageElementStyleClassName;
</ins><span class="cx"> 
</span><span class="cx">         this.tooltipHandledSeparately = true;
</span><del>-
-        breakpoint.addEventListener(WI.EventBreakpoint.Event.DisabledStateDidChange, this._updateStatus, this);
-
-        this._updateStatus();
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Protected
</span><span class="lines">@@ -55,6 +51,9 @@
</span><span class="cx">     {
</span><span class="cx">         super.onattach();
</span><span class="cx"> 
</span><ins>+        this.representedObject.addEventListener(WI.EventBreakpoint.Event.DisabledStateChanged, this._updateStatus, this);
+        WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.BreakpointsEnabledDidChange, this._updateStatus, this);
+
</ins><span class="cx">         this._boundStatusImageElementClicked = this._statusImageElementClicked.bind(this);
</span><span class="cx">         this._boundStatusImageElementFocused = this._statusImageElementFocused.bind(this);
</span><span class="cx">         this._boundStatusImageElementMouseDown = this._statusImageElementMouseDown.bind(this);
</span><span class="lines">@@ -62,6 +61,8 @@
</span><span class="cx">         this.status.addEventListener("click", this._boundStatusImageElementClicked);
</span><span class="cx">         this.status.addEventListener("focus", this._boundStatusImageElementFocused);
</span><span class="cx">         this.status.addEventListener("mousedown", this._boundStatusImageElementMouseDown);
</span><ins>+
+        this._updateStatus();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ondetach()
</span><span class="lines">@@ -68,6 +69,9 @@
</span><span class="cx">     {
</span><span class="cx">         super.ondetach();
</span><span class="cx"> 
</span><ins>+        this.representedObject.removeEventListener(null, null, this);
+        WI.debuggerManager.removeEventListener(null, null, this);
+
</ins><span class="cx">         this.status.removeEventListener("click", this._boundStatusImageElementClicked);
</span><span class="cx">         this.status.removeEventListener("focus", this._boundStatusImageElementFocused);
</span><span class="cx">         this.status.removeEventListener("mousedown", this._boundStatusImageElementMouseDown);
</span><span class="lines">@@ -152,6 +156,10 @@
</span><span class="cx"> 
</span><span class="cx">     _updateStatus()
</span><span class="cx">     {
</span><del>-        this.status.classList.toggle("disabled", this.representedObject.disabled);
</del><ins>+        if (!this.status)
+            return;
+
+        this.status.classList.toggle(WI.BreakpointTreeElement.StatusImageDisabledStyleClassName, this.representedObject.disabled);
+        this.status.classList.toggle(WI.BreakpointTreeElement.StatusImageResolvedStyleClassName, WI.debuggerManager.breakpointsEnabled);
</ins><span class="cx">     }
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsSourcesNavigationSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js (242317 => 242318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js 2019-03-02 21:50:43 UTC (rev 242317)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js    2019-03-02 22:40:43 UTC (rev 242318)
</span><span class="lines">@@ -249,7 +249,7 @@
</span><span class="cx">         WI.Breakpoint.addEventListener(WI.Breakpoint.Event.DisplayLocationDidChange, this._handleDebuggerObjectDisplayLocationDidChange, this);
</span><span class="cx">         WI.IssueMessage.addEventListener(WI.IssueMessage.Event.DisplayLocationDidChange, this._handleDebuggerObjectDisplayLocationDidChange, this);
</span><span class="cx"> 
</span><del>-        WI.DOMBreakpoint.addEventListener(WI.DOMBreakpoint.Event.ResolvedStateDidChange, this._handleDOMBreakpointResolvedStateDidChange, this);
</del><ins>+        WI.DOMBreakpoint.addEventListener(WI.DOMBreakpoint.Event.DOMNodeChanged, this._handleDOMBreakpointDOMNodeChanged, this);
</ins><span class="cx"> 
</span><span class="cx">         WI.consoleManager.addEventListener(WI.ConsoleManager.Event.IssueAdded, this._handleConsoleIssueAdded, this);
</span><span class="cx">         WI.consoleManager.addEventListener(WI.ConsoleManager.Event.Cleared, this._handleConsoleCleared, this);
</span><span class="lines">@@ -1585,7 +1585,7 @@
</span><span class="cx">             newDebuggerTreeElement.revealAndSelect(true, false, true);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _handleDOMBreakpointResolvedStateDidChange(event)
</del><ins>+    _handleDOMBreakpointDOMNodeChanged(event)
</ins><span class="cx">     {
</span><span class="cx">         let breakpoint = event.target;
</span><span class="cx">         if (breakpoint.domNodeIdentifier)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsURLBreakpointTreeElementjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/URLBreakpointTreeElement.js (242317 => 242318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/URLBreakpointTreeElement.js      2019-03-02 21:50:43 UTC (rev 242317)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/URLBreakpointTreeElement.js 2019-03-02 22:40:43 UTC (rev 242318)
</span><span class="lines">@@ -44,13 +44,9 @@
</span><span class="cx">         super(["breakpoint", "url", className], title, subtitle, breakpoint);
</span><span class="cx"> 
</span><span class="cx">         this.status = WI.ImageUtilities.useSVGSymbol("Images/Breakpoint.svg");
</span><del>-        this.status.classList.add("status-image", "resolved");
</del><ins>+        this.status.className = WI.BreakpointTreeElement.StatusImageElementStyleClassName;
</ins><span class="cx"> 
</span><span class="cx">         this.tooltipHandledSeparately = true;
</span><del>-
-        breakpoint.addEventListener(WI.URLBreakpoint.Event.DisabledStateDidChange, this._updateStatus, this);
-
-        this._updateStatus();
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Protected
</span><span class="lines">@@ -59,6 +55,9 @@
</span><span class="cx">     {
</span><span class="cx">         super.onattach();
</span><span class="cx"> 
</span><ins>+        this.representedObject.addEventListener(WI.URLBreakpoint.Event.DisabledStateChanged, this._updateStatus, this);
+        WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.BreakpointsEnabledDidChange, this._updateStatus, this);
+
</ins><span class="cx">         this._boundStatusImageElementClicked = this._statusImageElementClicked.bind(this);
</span><span class="cx">         this._boundStatusImageElementFocused = this._statusImageElementFocused.bind(this);
</span><span class="cx">         this._boundStatusImageElementMouseDown = this._statusImageElementMouseDown.bind(this);
</span><span class="lines">@@ -66,6 +65,8 @@
</span><span class="cx">         this.status.addEventListener("click", this._boundStatusImageElementClicked);
</span><span class="cx">         this.status.addEventListener("focus", this._boundStatusImageElementFocused);
</span><span class="cx">         this.status.addEventListener("mousedown", this._boundStatusImageElementMouseDown);
</span><ins>+
+        this._updateStatus();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ondetach()
</span><span class="lines">@@ -72,6 +73,9 @@
</span><span class="cx">     {
</span><span class="cx">         super.ondetach();
</span><span class="cx"> 
</span><ins>+        this.representedObject.removeEventListener(null, null, this);
+        WI.debuggerManager.removeEventListener(null, null, this);
+
</ins><span class="cx">         this.status.removeEventListener("click", this._boundStatusImageElementClicked);
</span><span class="cx">         this.status.removeEventListener("focus", this._boundStatusImageElementFocused);
</span><span class="cx">         this.status.removeEventListener("mousedown", this._boundStatusImageElementMouseDown);
</span><span class="lines">@@ -143,6 +147,10 @@
</span><span class="cx"> 
</span><span class="cx">     _updateStatus()
</span><span class="cx">     {
</span><del>-        this.status.classList.toggle("disabled", this.representedObject.disabled);
</del><ins>+        if (!this.status)
+            return;
+
+        this.status.classList.toggle(WI.BreakpointTreeElement.StatusImageDisabledStyleClassName, this.representedObject.disabled);
+        this.status.classList.toggle(WI.BreakpointTreeElement.StatusImageResolvedStyleClassName, WI.debuggerManager.breakpointsEnabled);
</ins><span class="cx">     }
</span><span class="cx"> };
</span></span></pre>
</div>
</div>

</body>
</html>