<!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>[185454] 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/185454">185454</a></dd>
<dt>Author</dt> <dd>mattbaker@apple.com</dd>
<dt>Date</dt> <dd>2015-06-11 08:24:55 -0700 (Thu, 11 Jun 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: Wrong overview graph shown after switching from Frames to Timelines
https://bugs.webkit.org/show_bug.cgi?id=145778

Reviewed by Timothy Hatcher.

TimelineSidebarPanel stores a reference to the selected timeline before switching to the Rendering Frames view,
which is used to restore the tree selection, overview graph, and content views when switching back to the
standard Timelines view. However if another recording is created before switching, the previously selected
timeline tracked by the sidebar cannot be restored, since it doesn't belong to the active recording.

This is addressed by storing the previously selected timeline type, rather than the timeline object itself.
The type is also updated whenever the selected timeline in the tree outline changes, ensuring that the correct
timeline will always be restored.

* UserInterface/Views/TimelineSidebarPanel.js:
(WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.get if.get if):
(WebInspector.TimelineSidebarPanel.get else): Deleted.
(WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.get if): Deleted.
(WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject): Deleted.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsTimelineSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (185453 => 185454)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2015-06-11 15:21:07 UTC (rev 185453)
+++ trunk/Source/WebInspectorUI/ChangeLog        2015-06-11 15:24:55 UTC (rev 185454)
</span><span class="lines">@@ -1,3 +1,25 @@
</span><ins>+2015-06-11  Matt Baker  &lt;mattbaker@apple.com&gt;
+
+        Web Inspector: Wrong overview graph shown after switching from Frames to Timelines
+        https://bugs.webkit.org/show_bug.cgi?id=145778
+
+        Reviewed by Timothy Hatcher.
+
+        TimelineSidebarPanel stores a reference to the selected timeline before switching to the Rendering Frames view,
+        which is used to restore the tree selection, overview graph, and content views when switching back to the
+        standard Timelines view. However if another recording is created before switching, the previously selected
+        timeline tracked by the sidebar cannot be restored, since it doesn't belong to the active recording.
+
+        This is addressed by storing the previously selected timeline type, rather than the timeline object itself.
+        The type is also updated whenever the selected timeline in the tree outline changes, ensuring that the correct
+        timeline will always be restored.
+
+        * UserInterface/Views/TimelineSidebarPanel.js:
+        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.get if.get if):
+        (WebInspector.TimelineSidebarPanel.get else): Deleted.
+        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.get if): Deleted.
+        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject): Deleted.
+
</ins><span class="cx"> 2015-06-08  Matt Baker  &lt;mattbaker@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Clearing active Timeline recording should stop capturing
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsTimelineSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js (185453 => 185454)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js        2015-06-11 15:21:07 UTC (rev 185453)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js        2015-06-11 15:24:55 UTC (rev 185454)
</span><span class="lines">@@ -490,6 +490,8 @@
</span><span class="cx">         console.assert(timeline instanceof WebInspector.Timeline, timeline);
</span><span class="cx">         console.assert(this._displayedRecording.timelines.get(timeline.type) === timeline, timeline);
</span><span class="cx"> 
</span><ins>+        this._previousSelectedTimelineType = timeline.type;
+
</ins><span class="cx">         this._displayedContentView.showTimelineViewForTimeline(timeline);
</span><span class="cx">         this.contentBrowser.showContentView(this._displayedContentView);
</span><span class="cx">     }
</span><span class="lines">@@ -741,15 +743,16 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (selectedByUser) {
</span><ins>+            var timelineType = this._previousSelectedTimelineType;
</ins><span class="cx">             if (this._viewMode === WebInspector.TimelineSidebarPanel.ViewMode.RenderingFrames) {
</span><span class="cx">                 if (this._timelinesTreeOutline.selectedTreeElement)
</span><del>-                    this._previousTimelineSelection = this._timelinesTreeOutline.selectedTreeElement.representedObject;
</del><ins>+                    this._previousSelectedTimelineType = this._timelinesTreeOutline.selectedTreeElement.representedObject.type;
+                timelineType = WebInspector.TimelineRecord.Type.RenderingFrame;
+            }
</ins><span class="cx"> 
</span><del>-                console.assert(this._displayedRecording);
-                this.showTimelineViewForTimeline(this._displayedRecording.timelines.get(WebInspector.TimelineRecord.Type.RenderingFrame));
-            } else if (this._previousTimelineSelection) {
-                this.showTimelineViewForTimeline(this._previousTimelineSelection);
-                this._previousTimelineSelection = null;
</del><ins>+            if (timelineType) {
+                console.assert(this._displayedRecording.timelines.has(timelineType), timelineType);
+                this.showTimelineViewForTimeline(this._displayedRecording.timelines.get(timelineType));
</ins><span class="cx">             } else
</span><span class="cx">                 this.showTimelineOverview();
</span><span class="cx">         }
</span></span></pre>
</div>
</div>

</body>
</html>