<!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>[200566] 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/200566">200566</a></dd>
<dt>Author</dt> <dd>mattbaker@apple.com</dd>
<dt>Date</dt> <dd>2016-05-08 16:57:44 -0700 (Sun, 08 May 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: Add Breakpoints and Scripts folders to Debugger sidebar
https://bugs.webkit.org/show_bug.cgi?id=151119
&lt;rdar://problem/23488916&gt;

Reviewed by Timothy Hatcher.

Add a collapsible Sources section to the Debugger beneath the existing
Breakpoints section.

* UserInterface/Views/DebuggerSidebarPanel.css:
Remove unused CSS class names.

(.sidebar &gt; .panel.navigation.debugger .details-section.scripts:not(.collapsed)):
Hide scripts section bottom border when expanded. As the last
section, a border only adds visual clutter.

(.sidebar &gt; .panel.navigation.debugger .details-section.scripts): Deleted.
(.sidebar &gt; .panel.navigation.debugger.paused .details-section.scripts): Deleted.
(.sidebar &gt; .panel.navigation.debugger .details-section.scripts .header): Deleted.
(.sidebar &gt; .panel.navigation.debugger.paused .details-section.scripts .header): Deleted.
(.sidebar &gt; .panel.navigation.debugger .details-section.scripts.collapsed &gt; .content): Deleted.
(.sidebar &gt; .panel.navigation.debugger.paused .details-section.scripts.collapsed &gt; .content): Deleted.
No longer needed.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel):
Create separate &quot;Breakpoints&quot; and &quot;Sources&quot; sections, and make filter
placeholder text generic. Remove unused class from breakpoints tree.

(WebInspector.DebuggerSidebarPanel.prototype.treeElementForRepresentedObject):
Check both breakpoint and scripts tree outlines.

(WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint):
(WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToTreeOutline):
Make helper function generic.

(WebInspector.DebuggerSidebarPanel.prototype._addResource):
(WebInspector.DebuggerSidebarPanel.prototype._mainResourceDidChange):
(WebInspector.DebuggerSidebarPanel.prototype._addScript):
Add resources to the scripts tree.

(WebInspector.DebuggerSidebarPanel.prototype._scriptsCleared):
Clear the scripts tree.

(WebInspector.DebuggerSidebarPanel.prototype._removeDebuggerTreeElement):
Remove script element when last breakpoint is removed.

(WebInspector.DebuggerSidebarPanel.prototype._addIssue):
(WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToContentTreeOutline): Deleted.
Renamed _addTreeElementForSourceCodeToTreeOutline.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUILocalizationsenlprojlocalizedStringsjs">trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsDebuggerSidebarPanelcss">trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.css</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsDebuggerSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (200565 => 200566)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2016-05-08 23:55:53 UTC (rev 200565)
+++ trunk/Source/WebInspectorUI/ChangeLog        2016-05-08 23:57:44 UTC (rev 200566)
</span><span class="lines">@@ -1,5 +1,58 @@
</span><span class="cx"> 2016-05-08  Matt Baker  &lt;mattbaker@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Web Inspector: Add Breakpoints and Scripts folders to Debugger sidebar
+        https://bugs.webkit.org/show_bug.cgi?id=151119
+        &lt;rdar://problem/23488916&gt;
+
+        Reviewed by Timothy Hatcher.
+
+        Add a collapsible Sources section to the Debugger beneath the existing
+        Breakpoints section.
+
+        * UserInterface/Views/DebuggerSidebarPanel.css:
+        Remove unused CSS class names.
+
+        (.sidebar &gt; .panel.navigation.debugger .details-section.scripts:not(.collapsed)):
+        Hide scripts section bottom border when expanded. As the last
+        section, a border only adds visual clutter.
+
+        (.sidebar &gt; .panel.navigation.debugger .details-section.scripts): Deleted.
+        (.sidebar &gt; .panel.navigation.debugger.paused .details-section.scripts): Deleted.
+        (.sidebar &gt; .panel.navigation.debugger .details-section.scripts .header): Deleted.
+        (.sidebar &gt; .panel.navigation.debugger.paused .details-section.scripts .header): Deleted.
+        (.sidebar &gt; .panel.navigation.debugger .details-section.scripts.collapsed &gt; .content): Deleted.
+        (.sidebar &gt; .panel.navigation.debugger.paused .details-section.scripts.collapsed &gt; .content): Deleted.
+        No longer needed.
+
+        * UserInterface/Views/DebuggerSidebarPanel.js:
+        (WebInspector.DebuggerSidebarPanel):
+        Create separate &quot;Breakpoints&quot; and &quot;Sources&quot; sections, and make filter
+        placeholder text generic. Remove unused class from breakpoints tree.
+
+        (WebInspector.DebuggerSidebarPanel.prototype.treeElementForRepresentedObject):
+        Check both breakpoint and scripts tree outlines.
+
+        (WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint):
+        (WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToTreeOutline):
+        Make helper function generic.
+
+        (WebInspector.DebuggerSidebarPanel.prototype._addResource):
+        (WebInspector.DebuggerSidebarPanel.prototype._mainResourceDidChange):
+        (WebInspector.DebuggerSidebarPanel.prototype._addScript):
+        Add resources to the scripts tree.
+
+        (WebInspector.DebuggerSidebarPanel.prototype._scriptsCleared):
+        Clear the scripts tree.
+
+        (WebInspector.DebuggerSidebarPanel.prototype._removeDebuggerTreeElement):
+        Remove script element when last breakpoint is removed.
+
+        (WebInspector.DebuggerSidebarPanel.prototype._addIssue):
+        (WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToContentTreeOutline): Deleted.
+        Renamed _addTreeElementForSourceCodeToTreeOutline.
+
+2016-05-08  Matt Baker  &lt;mattbaker@apple.com&gt;
+
</ins><span class="cx">         Web Inspector: SourceCodeTextEditor issue widgets/line styles should reset when log is cleared
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=157460
</span><span class="cx">         &lt;rdar://problem/26159633&gt;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUILocalizationsenlprojlocalizedStringsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js (200565 => 200566)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js        2016-05-08 23:55:53 UTC (rev 200565)
+++ trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js        2016-05-08 23:57:44 UTC (rev 200566)
</span><span class="lines">@@ -110,6 +110,7 @@
</span><span class="cx"> localizedStrings[&quot;Box Shadow&quot;] = &quot;Box Shadow&quot;;
</span><span class="cx"> localizedStrings[&quot;Breakdown&quot;] = &quot;Breakdown&quot;;
</span><span class="cx"> localizedStrings[&quot;Breakdown of each memory category at the end of the selected time range&quot;] = &quot;Breakdown of each memory category at the end of the selected time range&quot;;
</span><ins>+localizedStrings[&quot;Breakpoints&quot;] = &quot;Breakpoints&quot;;
</ins><span class="cx"> localizedStrings[&quot;Bubbling&quot;] = &quot;Bubbling&quot;;
</span><span class="cx"> localizedStrings[&quot;Busy&quot;] = &quot;Busy&quot;;
</span><span class="cx"> localizedStrings[&quot;CSP Hash&quot;] = &quot;CSP Hash&quot;;
</span><span class="lines">@@ -319,8 +320,8 @@
</span><span class="cx"> localizedStrings[&quot;Fill&quot;] = &quot;Fill&quot;;
</span><span class="cx"> localizedStrings[&quot;Fill Mode&quot;] = &quot;Fill Mode&quot;;
</span><span class="cx"> localizedStrings[&quot;Filter %s&quot;] = &quot;Filter %s&quot;;
</span><del>-localizedStrings[&quot;Filter Breakpoint List&quot;] = &quot;Filter Breakpoint List&quot;;
</del><span class="cx"> localizedStrings[&quot;Filter Console Log&quot;] = &quot;Filter Console Log&quot;;
</span><ins>+localizedStrings[&quot;Filter List&quot;] = &quot;Filter List&quot;;
</ins><span class="cx"> localizedStrings[&quot;Filter Records&quot;] = &quot;Filter Records&quot;;
</span><span class="cx"> localizedStrings[&quot;Filter Resource List&quot;] = &quot;Filter Resource List&quot;;
</span><span class="cx"> localizedStrings[&quot;Filter Search Results&quot;] = &quot;Filter Search Results&quot;;
</span><span class="lines">@@ -657,6 +658,7 @@
</span><span class="cx"> localizedStrings[&quot;Sockets&quot;] = &quot;Sockets&quot;;
</span><span class="cx"> localizedStrings[&quot;Sort Ascending&quot;] = &quot;Sort Ascending&quot;;
</span><span class="cx"> localizedStrings[&quot;Sort Descending&quot;] = &quot;Sort Descending&quot;;
</span><ins>+localizedStrings[&quot;Sources&quot;] = &quot;Sources&quot;;
</ins><span class="cx"> localizedStrings[&quot;Spacing&quot;] = &quot;Spacing&quot;;
</span><span class="cx"> localizedStrings[&quot;Specificity: (%d, %d, %d)&quot;] = &quot;Specificity: (%d, %d, %d)&quot;;
</span><span class="cx"> localizedStrings[&quot;Specificity: No value for selected element&quot;] = &quot;Specificity: No value for selected element&quot;;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsDebuggerSidebarPanelcss"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.css (200565 => 200566)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.css        2016-05-08 23:55:53 UTC (rev 200565)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.css        2016-05-08 23:57:44 UTC (rev 200566)
</span><span class="lines">@@ -66,26 +66,6 @@
</span><span class="cx">     display: block;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-.sidebar &gt; .panel.navigation.debugger .details-section.scripts {
</del><ins>+.sidebar &gt; .panel.navigation.debugger .details-section.scripts:not(.collapsed) {
</ins><span class="cx">     border-bottom: none;
</span><span class="cx"> }
</span><del>-
-.sidebar &gt; .panel.navigation.debugger.paused .details-section.scripts {
-    border-bottom: 1px solid var(--border-color);
-}
-
-.sidebar &gt; .panel.navigation.debugger .details-section.scripts .header {
-    display: none;
-}
-
-.sidebar &gt; .panel.navigation.debugger.paused .details-section.scripts .header {
-    display: block;
-}
-
-.sidebar &gt; .panel.navigation.debugger .details-section.scripts.collapsed &gt; .content {
-    display: block;
-}
-
-.sidebar &gt; .panel.navigation.debugger.paused .details-section.scripts.collapsed &gt; .content {
-    display: none;
-}
</del></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsDebuggerSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js (200565 => 200566)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js        2016-05-08 23:55:53 UTC (rev 200565)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js        2016-05-08 23:57:44 UTC (rev 200566)
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx">         this._allUncaughtExceptionsBreakpointTreeElement = new WebInspector.BreakpointTreeElement(WebInspector.debuggerManager.allUncaughtExceptionsBreakpoint, WebInspector.DebuggerSidebarPanel.ExceptionIconStyleClassName, WebInspector.UIString(&quot;All Uncaught Exceptions&quot;));
</span><span class="cx">         this.suppressFilteringOnTreeElements([this._globalBreakpointsFolderTreeElement, this._allExceptionsBreakpointTreeElement, this._allUncaughtExceptionsBreakpointTreeElement]);
</span><span class="cx"> 
</span><del>-        this.filterBar.placeholder = WebInspector.UIString(&quot;Filter Breakpoint List&quot;);
</del><ins>+        this.filterBar.placeholder = WebInspector.UIString(&quot;Filter List&quot;);
</ins><span class="cx"> 
</span><span class="cx">         function showResourcesWithIssuesOnlyFilterFunction(treeElement)
</span><span class="cx">         {
</span><span class="lines">@@ -130,10 +130,9 @@
</span><span class="cx">         breakpointsRow.element.appendChild(this._breakpointsContentTreeOutline.element);
</span><span class="cx"> 
</span><span class="cx">         let breakpointsGroup = new WebInspector.DetailsSectionGroup([breakpointsRow]);
</span><del>-        let breakpointsSection = new WebInspector.DetailsSection(&quot;scripts&quot;, WebInspector.UIString(&quot;Scripts&quot;), [breakpointsGroup]);
</del><ins>+        let breakpointsSection = new WebInspector.DetailsSection(&quot;breakpoints&quot;, WebInspector.UIString(&quot;Breakpoints&quot;), [breakpointsGroup]);
</ins><span class="cx">         this.contentView.element.appendChild(breakpointsSection.element);
</span><span class="cx"> 
</span><del>-        this._breakpointsContentTreeOutline.element.classList.add(&quot;breakpoints&quot;);
</del><span class="cx">         this._breakpointsContentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange, this._treeSelectionDidChange, this);
</span><span class="cx">         this._breakpointsContentTreeOutline.ondelete = this._breakpointTreeOutlineDeleteTreeElement.bind(this);
</span><span class="cx">         this._breakpointsContentTreeOutline.oncontextmenu = this._breakpointTreeOutlineContextMenuTreeElement.bind(this);
</span><span class="lines">@@ -143,6 +142,16 @@
</span><span class="cx">         this._globalBreakpointsFolderTreeElement.appendChild(this._allUncaughtExceptionsBreakpointTreeElement);
</span><span class="cx">         this._globalBreakpointsFolderTreeElement.expand();
</span><span class="cx"> 
</span><ins>+        this._scriptsContentTreeOutline = this.createContentTreeOutline(true);
+        this._scriptsContentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange, this._treeSelectionDidChange, this);
+
+        let scriptsRow = new WebInspector.DetailsSectionRow;
+        scriptsRow.element.appendChild(this._scriptsContentTreeOutline.element);
+
+        let scriptsGroup = new WebInspector.DetailsSectionGroup([scriptsRow]);
+        this._scriptsSection = new WebInspector.DetailsSection(&quot;scripts&quot;, WebInspector.UIString(&quot;Sources&quot;), [scriptsGroup]);
+        this.contentView.element.appendChild(this._scriptsSection.element);
+
</ins><span class="cx">         this._callStackContentTreeOutline = this.createContentTreeOutline(true, true);
</span><span class="cx">         this._callStackContentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange, this._treeSelectionDidChange, this);
</span><span class="cx"> 
</span><span class="lines">@@ -157,8 +166,7 @@
</span><span class="cx">         this._pauseReasonLinkContainerElement = document.createElement(&quot;span&quot;);
</span><span class="cx">         this._pauseReasonTextRow = new WebInspector.DetailsSectionTextRow;
</span><span class="cx">         this._pauseReasonGroup = new WebInspector.DetailsSectionGroup([this._pauseReasonTextRow]);
</span><del>-        this._pauseReasonSection = new WebInspector.DetailsSection(&quot;paused-reason&quot;, null, [this._pauseReasonGroup], this._pauseReasonLinkContainerElement);
-        this._pauseReasonSection.title = WebInspector.UIString(&quot;Pause Reason&quot;);
</del><ins>+        this._pauseReasonSection = new WebInspector.DetailsSection(&quot;paused-reason&quot;, WebInspector.UIString(&quot;Pause Reason&quot;), [this._pauseReasonGroup], this._pauseReasonLinkContainerElement);
</ins><span class="cx"> 
</span><span class="cx">         WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.DisplayLocationDidChange, this._handleDebuggerObjectDisplayLocationDidChange, this);
</span><span class="cx">         WebInspector.IssueMessage.addEventListener(WebInspector.IssueMessage.Event.DisplayLocationDidChange, this._handleDebuggerObjectDisplayLocationDidChange, this);
</span><span class="lines">@@ -208,7 +216,10 @@
</span><span class="cx">         if (representedObject instanceof WebInspector.Frame)
</span><span class="cx">             representedObject = representedObject.mainResource;
</span><span class="cx"> 
</span><del>-        let treeElement = this.contentTreeOutline.findTreeElement(representedObject);
</del><ins>+        let treeElement = this._breakpointsContentTreeOutline.findTreeElement(representedObject);
+        if (!treeElement)
+            treeElement = this._scriptsContentTreeOutline.findTreeElement(representedObject);
+
</ins><span class="cx">         if (treeElement)
</span><span class="cx">             return treeElement;
</span><span class="cx"> 
</span><span class="lines">@@ -315,7 +326,7 @@
</span><span class="cx">         if (!sourceCode)
</span><span class="cx">             return null;
</span><span class="cx"> 
</span><del>-        var parentTreeElement = this._addTreeElementForSourceCodeToContentTreeOutline(sourceCode);
</del><ins>+        let parentTreeElement = this._addTreeElementForSourceCodeToTreeOutline(sourceCode, this._breakpointsContentTreeOutline);
</ins><span class="cx"> 
</span><span class="cx">         // Mark disabled breakpoints as resolved if there is source code loaded with that URL.
</span><span class="cx">         // This gives the illusion the breakpoint was resolved, but since we don't send disabled
</span><span class="lines">@@ -345,9 +356,9 @@
</span><span class="cx">             this._addIssue(issue);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _addTreeElementForSourceCodeToContentTreeOutline(sourceCode)
</del><ins>+    _addTreeElementForSourceCodeToTreeOutline(sourceCode, treeOutline)
</ins><span class="cx">     {
</span><del>-        var treeElement = this._breakpointsContentTreeOutline.getCachedTreeElement(sourceCode);
</del><ins>+        let treeElement = treeOutline.getCachedTreeElement(sourceCode);
</ins><span class="cx">         if (!treeElement) {
</span><span class="cx">             if (sourceCode instanceof WebInspector.SourceMapResource)
</span><span class="cx">                 treeElement = new WebInspector.SourceMapResourceTreeElement(sourceCode);
</span><span class="lines">@@ -366,7 +377,7 @@
</span><span class="cx">             treeElement.hasChildren = false;
</span><span class="cx">             treeElement.expand();
</span><span class="cx"> 
</span><del>-            this._breakpointsContentTreeOutline.insertChild(treeElement, insertionIndexForObjectInListSortedByFunction(treeElement, this._breakpointsContentTreeOutline.children, this._compareTopLevelTreeElements.bind(this)));
</del><ins>+            treeOutline.insertChild(treeElement, insertionIndexForObjectInListSortedByFunction(treeElement, treeOutline.children, this._compareTopLevelTreeElements.bind(this)));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         return treeElement;
</span><span class="lines">@@ -393,7 +404,7 @@
</span><span class="cx">         if (![WebInspector.Resource.Type.Document, WebInspector.Resource.Type.Script].includes(resource.type))
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        let treeElement = this._addTreeElementForSourceCodeToContentTreeOutline(resource);
</del><ins>+        let treeElement = this._addTreeElementForSourceCodeToTreeOutline(resource, this._scriptsContentTreeOutline);
</ins><span class="cx">         this._addBreakpointsForSourceCode(resource);
</span><span class="cx">         this._addIssuesForSourceCode(resource);
</span><span class="cx"> 
</span><span class="lines">@@ -412,7 +423,7 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         var resource = event.target.mainResource;
</span><del>-        this._addTreeElementForSourceCodeToContentTreeOutline(resource);
</del><ins>+        this._addTreeElementForSourceCodeToTreeOutline(resource, this._scriptsContentTreeOutline);
</ins><span class="cx">         this._addBreakpointsForSourceCode(resource);
</span><span class="cx">         this._addIssuesForSourceCode(resource);
</span><span class="cx">     }
</span><span class="lines">@@ -460,7 +471,7 @@
</span><span class="cx">         if (script.resource)
</span><span class="cx">             return null;
</span><span class="cx"> 
</span><del>-        let treeElement = this._addTreeElementForSourceCodeToContentTreeOutline(script);
</del><ins>+        let treeElement = this._addTreeElementForSourceCodeToTreeOutline(script, this._scriptsContentTreeOutline);
</ins><span class="cx">         this._addBreakpointsForSourceCode(script);
</span><span class="cx">         this._addIssuesForSourceCode(script);
</span><span class="cx"> 
</span><span class="lines">@@ -489,6 +500,8 @@
</span><span class="cx"> 
</span><span class="cx">             this._breakpointsContentTreeOutline.removeChildAtIndex(i, true, true);
</span><span class="cx">         }
</span><ins>+
+        this._scriptsContentTreeOutline.removeChildren();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     _breakpointAdded(event)
</span><span class="lines">@@ -544,6 +557,10 @@
</span><span class="cx">         parentTreeElement.removeChild(debuggerTreeElement);
</span><span class="cx"> 
</span><span class="cx">         console.assert(parentTreeElement.parent === this._breakpointsContentTreeOutline);
</span><ins>+        if (parentTreeElement.children.length)
+            return;
+
+        parentTreeElement.treeOutline.removeChild(parentTreeElement);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     _debuggerCallFramesDidChange()
</span><span class="lines">@@ -849,7 +866,7 @@
</span><span class="cx"> 
</span><span class="cx">     _addIssue(issueMessage)
</span><span class="cx">     {
</span><del>-        var parentTreeElement = this._addTreeElementForSourceCodeToContentTreeOutline(issueMessage.sourceCodeLocation.sourceCode);
</del><ins>+        let parentTreeElement = this._addTreeElementForSourceCodeToTreeOutline(issueMessage.sourceCodeLocation.sourceCode, this._scriptsContentTreeOutline);
</ins><span class="cx">         if (!parentTreeElement)
</span><span class="cx">             return null;
</span><span class="cx"> 
</span><span class="lines">@@ -889,11 +906,9 @@
</span><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-WebInspector.DebuggerSidebarPanel.OffsetSectionsStyleClassName = &quot;offset-sections&quot;;
</del><span class="cx"> WebInspector.DebuggerSidebarPanel.DebuggerPausedStyleClassName = &quot;paused&quot;;
</span><span class="cx"> WebInspector.DebuggerSidebarPanel.ExceptionIconStyleClassName = &quot;breakpoint-exception-icon&quot;;
</span><span class="cx"> WebInspector.DebuggerSidebarPanel.PausedBreakpointIconStyleClassName = &quot;breakpoint-paused-icon&quot;;
</span><del>-WebInspector.DebuggerSidebarPanel.GlobalIconStyleClassName = &quot;global-breakpoints-icon&quot;;
</del><span class="cx"> 
</span><span class="cx"> WebInspector.DebuggerSidebarPanel.SelectedAllExceptionsCookieKey = &quot;debugger-sidebar-panel-all-exceptions-breakpoint&quot;;
</span><span class="cx"> WebInspector.DebuggerSidebarPanel.SelectedAllUncaughtExceptionsCookieKey = &quot;debugger-sidebar-panel-all-uncaught-exceptions-breakpoint&quot;;
</span></span></pre>
</div>
</div>

</body>
</html>