<!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>[183331] 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/183331">183331</a></dd>
<dt>Author</dt> <dd>timothy@apple.com</dd>
<dt>Date</dt> <dd>2015-04-25 18:20:59 -0700 (Sat, 25 Apr 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: Make showing a content view work in the tab world
https://bugs.webkit.org/show_bug.cgi?id=144110

Reviewed by Joseph Pecoraro.

* UserInterface/Base/Main.js:
(WebInspector.loaded):
(WebInspector.hideSplitConsole):
(WebInspector.showSourceCodeLocation):
(WebInspector.showOriginalUnformattedSourceCodeLocation):
(WebInspector.showOriginalOrFormattedSourceCodeLocation):
(WebInspector.showOriginalOrFormattedSourceCodeTextRange):
(WebInspector.showResourceRequest):
(WebInspector.debuggerToggleBreakpoints):
(WebInspector.debuggerPauseResumeToggle):
(WebInspector.debuggerStepOver):
(WebInspector.debuggerStepInto):
(WebInspector.debuggerStepOut):
(WebInspector._focusChanged):
(WebInspector._mouseWasClicked):
(WebInspector._dragOver):
(WebInspector._captureDidStart):
(WebInspector._debuggerDidPause):
(WebInspector._debuggerDidResume):
(WebInspector._frameWasAdded):
(WebInspector._undock):
(WebInspector._updateDockNavigationItems):
* UserInterface/Models/Breakpoint.js:
(WebInspector.Breakpoint.prototype.appendContextMenuItems.revealOriginalSourceCodeLocation):
(WebInspector.Breakpoint.prototype.appendContextMenuItems):
* UserInterface/Protocol/InspectorFrontendAPI.js:
(InspectorFrontendAPI.showMainResourceForFrame):
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WebInspector.ComputedStyleDetailsPanel.prototype._goToRegionFlowArrowWasClicked):
(WebInspector.ComputedStyleDetailsPanel.prototype._goToContentFlowArrowWasClicked):
(WebInspector.ComputedStyleDetailsPanel):
* UserInterface/Views/ContentBrowser.js:
(WebInspector.ContentBrowser.prototype.updateHierarchicalPathForCurrentContentView):
* UserInterface/Views/ContentView.js:
(WebInspector.ContentView):
* UserInterface/Views/DOMTreeContentView.js:
(WebInspector.DOMTreeContentView.prototype.restoreFromCookie):
* UserInterface/Views/DOMTreeDataGridNode.js:
(WebInspector.DOMTreeDataGridNode.prototype._goToArrowWasClicked):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype.showDefaultContentView):
(WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToContentTreeOutline):
(WebInspector.DebuggerSidebarPanel.prototype._treeElementSelected):
(WebInspector.DebuggerSidebarPanel.prototype._addIssue):
(WebInspector.DebuggerSidebarPanel.prototype._handleIssueAdded):
* UserInterface/Views/LayerTreeDataGridNode.js:
(WebInspector.LayerTreeDataGridNode.prototype._goToArrowWasClicked):
* UserInterface/Views/LayoutTimelineView.js:
(WebInspector.LayoutTimelineView.prototype._treeElementSelected):
* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype.get contentBrowser):
(WebInspector.NavigationSidebarPanel.prototype.set contentBrowser):
(WebInspector.NavigationSidebarPanel.prototype._updateFilter):
* UserInterface/Views/NetworkTimelineView.js:
(WebInspector.NetworkTimelineView.prototype._treeElementSelected):
* UserInterface/Views/ObjectTreeBaseTreeElement.js:
(WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
(WebInspector.ObjectTreeBaseTreeElement):
* UserInterface/Views/OverviewTimelineView.js:
(WebInspector.OverviewTimelineView.prototype._treeElementSelected):
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel.prototype._goToRequestDataClicked):
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel):
(WebInspector.ResourceSidebarPanel.prototype.showDefaultContentView):
(WebInspector.ResourceSidebarPanel.prototype._mainFrameDidChange):
(WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange.delayedWork):
(WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange):
(WebInspector.ResourceSidebarPanel.prototype._treeElementSelected):
(WebInspector.ResourceSidebarPanel.prototype._storageCleared):
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype._goToResource):
* UserInterface/Views/ScriptTimelineView.js:
(WebInspector.ScriptTimelineView.prototype._treeElementSelected):
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
* UserInterface/Views/TimelineDataGrid.js:
(WebInspector.TimelineDataGrid.prototype._popoverCallStackTreeElementSelected):
* UserInterface/Views/TimelineSidebarPanel.js:
(WebInspector.TimelineSidebarPanel):
(WebInspector.TimelineSidebarPanel.prototype.shown):
(WebInspector.TimelineSidebarPanel.showTimelineViewForTimeline):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceBaseMainjs">trunk/Source/WebInspectorUI/UserInterface/Base/Main.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsBreakpointjs">trunk/Source/WebInspectorUI/UserInterface/Models/Breakpoint.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceProtocolInspectorFrontendAPIjs">trunk/Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsCSSStyleDeclarationTextEditorjs">trunk/Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsComputedStyleDetailsPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/ComputedStyleDetailsPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsContentBrowserjs">trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowser.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsContentViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/ContentView.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsDOMTreeContentViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsDOMTreeDataGridNodejs">trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeDataGridNode.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsDebuggerSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsLayerTreeDataGridNodejs">trunk/Source/WebInspectorUI/UserInterface/Views/LayerTreeDataGridNode.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsNavigationSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsNetworkTimelineViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTimelineView.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsObjectTreeBaseTreeElementjs">trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeBaseTreeElement.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsOverviewTimelineViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/OverviewTimelineView.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsRenderingFrameTimelineViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineView.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsResourceDetailsSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/ResourceDetailsSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsResourceSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsResourceTimelineDataGridNodejs">trunk/Source/WebInspectorUI/UserInterface/Views/ResourceTimelineDataGridNode.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsScriptTimelineViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/ScriptTimelineView.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsSourceCodeTextEditorjs">trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsTimelineDataGridjs">trunk/Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsTimelineSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsTimelineViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/TimelineView.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/ChangeLog        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -1,3 +1,95 @@
</span><ins>+2015-04-23  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+        Web Inspector: Make showing a content view work in the tab world
+        https://bugs.webkit.org/show_bug.cgi?id=144110
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Base/Main.js:
+        (WebInspector.loaded):
+        (WebInspector.hideSplitConsole):
+        (WebInspector.showSourceCodeLocation):
+        (WebInspector.showOriginalUnformattedSourceCodeLocation):
+        (WebInspector.showOriginalOrFormattedSourceCodeLocation):
+        (WebInspector.showOriginalOrFormattedSourceCodeTextRange):
+        (WebInspector.showResourceRequest):
+        (WebInspector.debuggerToggleBreakpoints):
+        (WebInspector.debuggerPauseResumeToggle):
+        (WebInspector.debuggerStepOver):
+        (WebInspector.debuggerStepInto):
+        (WebInspector.debuggerStepOut):
+        (WebInspector._focusChanged):
+        (WebInspector._mouseWasClicked):
+        (WebInspector._dragOver):
+        (WebInspector._captureDidStart):
+        (WebInspector._debuggerDidPause):
+        (WebInspector._debuggerDidResume):
+        (WebInspector._frameWasAdded):
+        (WebInspector._undock):
+        (WebInspector._updateDockNavigationItems):
+        * UserInterface/Models/Breakpoint.js:
+        (WebInspector.Breakpoint.prototype.appendContextMenuItems.revealOriginalSourceCodeLocation):
+        (WebInspector.Breakpoint.prototype.appendContextMenuItems):
+        * UserInterface/Protocol/InspectorFrontendAPI.js:
+        (InspectorFrontendAPI.showMainResourceForFrame):
+        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
+        (WebInspector.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
+        * UserInterface/Views/ComputedStyleDetailsPanel.js:
+        (WebInspector.ComputedStyleDetailsPanel.prototype._goToRegionFlowArrowWasClicked):
+        (WebInspector.ComputedStyleDetailsPanel.prototype._goToContentFlowArrowWasClicked):
+        (WebInspector.ComputedStyleDetailsPanel):
+        * UserInterface/Views/ContentBrowser.js:
+        (WebInspector.ContentBrowser.prototype.updateHierarchicalPathForCurrentContentView):
+        * UserInterface/Views/ContentView.js:
+        (WebInspector.ContentView):
+        * UserInterface/Views/DOMTreeContentView.js:
+        (WebInspector.DOMTreeContentView.prototype.restoreFromCookie):
+        * UserInterface/Views/DOMTreeDataGridNode.js:
+        (WebInspector.DOMTreeDataGridNode.prototype._goToArrowWasClicked):
+        * UserInterface/Views/DebuggerSidebarPanel.js:
+        (WebInspector.DebuggerSidebarPanel.prototype.showDefaultContentView):
+        (WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToContentTreeOutline):
+        (WebInspector.DebuggerSidebarPanel.prototype._treeElementSelected):
+        (WebInspector.DebuggerSidebarPanel.prototype._addIssue):
+        (WebInspector.DebuggerSidebarPanel.prototype._handleIssueAdded):
+        * UserInterface/Views/LayerTreeDataGridNode.js:
+        (WebInspector.LayerTreeDataGridNode.prototype._goToArrowWasClicked):
+        * UserInterface/Views/LayoutTimelineView.js:
+        (WebInspector.LayoutTimelineView.prototype._treeElementSelected):
+        * UserInterface/Views/NavigationSidebarPanel.js:
+        (WebInspector.NavigationSidebarPanel.prototype.get contentBrowser):
+        (WebInspector.NavigationSidebarPanel.prototype.set contentBrowser):
+        (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
+        * UserInterface/Views/NetworkTimelineView.js:
+        (WebInspector.NetworkTimelineView.prototype._treeElementSelected):
+        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
+        (WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
+        (WebInspector.ObjectTreeBaseTreeElement):
+        * UserInterface/Views/OverviewTimelineView.js:
+        (WebInspector.OverviewTimelineView.prototype._treeElementSelected):
+        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
+        (WebInspector.ResourceDetailsSidebarPanel.prototype._goToRequestDataClicked):
+        * UserInterface/Views/ResourceSidebarPanel.js:
+        (WebInspector.ResourceSidebarPanel):
+        (WebInspector.ResourceSidebarPanel.prototype.showDefaultContentView):
+        (WebInspector.ResourceSidebarPanel.prototype._mainFrameDidChange):
+        (WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange.delayedWork):
+        (WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange):
+        (WebInspector.ResourceSidebarPanel.prototype._treeElementSelected):
+        (WebInspector.ResourceSidebarPanel.prototype._storageCleared):
+        * UserInterface/Views/ResourceTimelineDataGridNode.js:
+        (WebInspector.ResourceTimelineDataGridNode.prototype._goToResource):
+        * UserInterface/Views/ScriptTimelineView.js:
+        (WebInspector.ScriptTimelineView.prototype._treeElementSelected):
+        * UserInterface/Views/SourceCodeTextEditor.js:
+        (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
+        * UserInterface/Views/TimelineDataGrid.js:
+        (WebInspector.TimelineDataGrid.prototype._popoverCallStackTreeElementSelected):
+        * UserInterface/Views/TimelineSidebarPanel.js:
+        (WebInspector.TimelineSidebarPanel):
+        (WebInspector.TimelineSidebarPanel.prototype.shown):
+        (WebInspector.TimelineSidebarPanel.showTimelineViewForTimeline):
+
</ins><span class="cx"> 2015-04-22  Timothy Hatcher  &lt;timothy@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Make debugger keyboard shortcuts global
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceBaseMainjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Main.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Base/Main.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Main.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -128,6 +128,7 @@
</span><span class="cx">     this.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.InspectModeStateChanged, this._inspectModeStateChanged, this);
</span><span class="cx">     this.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.DOMNodeWasInspected, this._domNodeWasInspected, this);
</span><span class="cx">     this.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.MainFrameDidChange, this._mainFrameDidChange, this);
</span><ins>+    this.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.FrameWasAdded, this._frameWasAdded, this);
</ins><span class="cx"> 
</span><span class="cx">     WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange, this._mainResourceDidChange, this);
</span><span class="cx"> 
</span><span class="lines">@@ -547,7 +548,7 @@
</span><span class="cx">     var resource = frame.url === url ? frame.mainResource : frame.resourceForURL(url, searchChildFrames);
</span><span class="cx">     if (resource) {
</span><span class="cx">         var position = new WebInspector.SourceCodePosition(lineNumber, 0);
</span><del>-        this.resourceSidebarPanel.showSourceCode(resource, position);
</del><ins>+        this.showSourceCode(resource, position);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -732,6 +733,141 @@
</span><span class="cx">     this.detailsSidebar.collapsed = false;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+WebInspector.tabContentViewClassForRepresentedObject = function(representedObject)
+{
+    if (representedObject instanceof WebInspector.DOMTree)
+        return WebInspector.ElementsTabContentView;
+
+    if (representedObject instanceof WebInspector.TimelineRecording)
+        return WebInspector.TimelineTabContentView;
+
+    // We only support one console tab right now. So this isn't an instanceof check.
+    if (representedObject === this._consoleRepresentedObject)
+        return WebInspector.ConsoleTabContentView;
+
+    if (WebInspector.debuggerManager.paused) {
+        if (representedObject instanceof WebInspector.Script)
+            return WebInspector.DebuggerTabContentView;
+
+        if (representedObject instanceof WebInspector.Resource &amp;&amp; (representedObject.type === WebInspector.Resource.Type.Document || representedObject.type === WebInspector.Resource.Type.Script))
+            return WebInspector.DebuggerTabContentView;
+    }
+
+    if (representedObject instanceof WebInspector.Frame || representedObject instanceof WebInspector.Resource || representedObject instanceof WebInspector.Script)
+        return WebInspector.ResourcesTabContentView;
+
+    // FIXME: Move Content Flows to the Elements tab?
+    if (representedObject instanceof WebInspector.ContentFlow)
+        return WebInspector.ResourcesTabContentView;
+
+    // FIXME: Move these to a Storage tab.
+    if (representedObject instanceof WebInspector.DOMStorageObject || representedObject instanceof WebInspector.CookieStorageObject ||
+        representedObject instanceof WebInspector.DatabaseTableObject || representedObject instanceof WebInspector.DatabaseObject ||
+        representedObject instanceof WebInspector.ApplicationCacheFrame || representedObject instanceof WebInspector.IndexedDatabaseObjectStore ||
+        representedObject instanceof WebInspector.IndexedDatabaseObjectStoreIndex)
+        return WebInspector.ResourcesTabContentView;
+
+    return null;
+};
+
+WebInspector.tabContentViewForRepresentedObject = function(representedObject)
+{
+    var tabContentView = this.tabBrowser.bestTabContentViewForRepresentedObject(representedObject);
+    if (tabContentView)
+        return tabContentView;
+
+    var tabContentViewClass = this.tabContentViewClassForRepresentedObject(representedObject);
+    if (!tabContentViewClass) {
+        console.error(&quot;Unknown representedObject, couldn't create TabContentView.&quot;, representedObject);
+        return null;
+    }
+
+    tabContentView = new tabContentViewClass;
+
+    this.tabBrowser.addTabForContentView(tabContentView);
+
+    return tabContentView;
+};
+
+WebInspector.showRepresentedObject = function(representedObject, cookie, forceShowTab)
+{
+    var tabContentView = this.tabContentViewForRepresentedObject(representedObject);
+    console.assert(tabContentView);
+    if (!tabContentView)
+        return;
+
+    if (window.event || forceShowTab)
+        this.tabBrowser.showTabForContentView(tabContentView);
+
+    tabContentView.showRepresentedObject(representedObject, cookie);
+};
+
+WebInspector.showMainFrameDOMTree = function(nodeToSelect, forceShowTab)
+{
+    console.assert(WebInspector.frameResourceManager.mainFrame);
+    if (!WebInspector.frameResourceManager.mainFrame)
+        return;
+    this.showRepresentedObject(WebInspector.frameResourceManager.mainFrame.domTree, {nodeToSelect}, forceShowTab);
+};
+
+WebInspector.showContentFlowDOMTree = function(contentFlow, nodeToSelect, forceShowTab)
+{
+    this.showRepresentedObject(contentFlow, {nodeToSelect}, forceShowTab);
+};
+
+WebInspector.showSourceCodeForFrame = function(frameIdentifier, forceShowTab)
+{
+    var frame = WebInspector.frameResourceManager.frameForIdentifier(frameIdentifier);
+    if (!frame) {
+        this._frameIdentifierToShowSourceCodeWhenAvailable = frameIdentifier;
+        return;
+    }
+
+    this._frameIdentifierToShowSourceCodeWhenAvailable = undefined;
+
+    this.showRepresentedObject(frame, null, forceShowTab);
+};
+
+WebInspector.showSourceCode = function(sourceCode, positionToReveal, textRangeToSelect, forceUnformatted, forceShowTab)
+{
+    console.assert(!positionToReveal || positionToReveal instanceof WebInspector.SourceCodePosition, positionToReveal);
+    var representedObject = sourceCode;
+
+    if (representedObject instanceof WebInspector.Script) {
+        // A script represented by a resource should always show the resource.
+        representedObject = representedObject.resource || representedObject;
+    }
+
+    var cookie = positionToReveal ? {lineNumber: positionToReveal.lineNumber, columnNumber: positionToReveal.columnNumber} : {};
+    this.showRepresentedObject(representedObject, cookie, forceShowTab);
+};
+
+WebInspector.showSourceCodeLocation = function(sourceCodeLocation, forceShowTab)
+{
+    this.showSourceCode(sourceCodeLocation.displaySourceCode, sourceCodeLocation.displayPosition(), null, false, forceShowTab);
+};
+
+WebInspector.showOriginalUnformattedSourceCodeLocation = function(sourceCodeLocation, forceShowTab)
+{
+    this.showSourceCode(sourceCodeLocation.sourceCode, sourceCodeLocation.position(), null, true);
+};
+
+WebInspector.showOriginalOrFormattedSourceCodeLocation = function(sourceCodeLocation, forceShowTab)
+{
+    this.showSourceCode(sourceCodeLocation.sourceCode, sourceCodeLocation.formattedPosition(), null, false, forceShowTab);
+};
+
+WebInspector.showOriginalOrFormattedSourceCodeTextRange = function(sourceCodeTextRange, forceShowTab)
+{
+    var textRangeToSelect = sourceCodeTextRange.formattedTextRange;
+    this.showSourceCode(sourceCodeTextRange.sourceCode, textRangeToSelect.startPosition(), textRangeToSelect, false, forceShowTab);
+};
+
+WebInspector.showResourceRequest = function(resource, forceShowTab)
+{
+    this.showRepresentedObject(resource, {[WebInspector.ResourceClusterContentView.ContentViewIdentifierCookieKey]: WebInspector.ResourceClusterContentView.RequestIdentifier}, forceShowTab);
+};
+
</ins><span class="cx"> WebInspector.debuggerToggleBreakpoints = function(event)
</span><span class="cx"> {
</span><span class="cx">     WebInspector.debuggerManager.breakpointsEnabled = !WebInspector.debuggerManager.breakpointsEnabled;
</span><span class="lines">@@ -833,6 +969,18 @@
</span><span class="cx">     this.dashboardContainer.closeDashboardViewForRepresentedObject(this.dashboardManager.dashboards.debugger);
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+WebInspector._frameWasAdded = function(event)
+{
+    if (!this._frameIdentifierToShowSourceCodeWhenAvailable)
+        return;
+
+    var frame = event.data.frame;
+    if (frame.id !== this._frameIdentifierToShowSourceCodeWhenAvailable)
+        return;
+
+    this.showSourceCodeForFrame(frame.id);
+};
+
</ins><span class="cx"> WebInspector._mainFrameDidChange = function(event)
</span><span class="cx"> {
</span><span class="cx">     this.updateWindowTitle();
</span><span class="lines">@@ -1696,9 +1844,9 @@
</span><span class="cx">         event.preventDefault();
</span><span class="cx"> 
</span><span class="cx">         if (event.metaKey)
</span><del>-            this.resourceSidebarPanel.showOriginalUnformattedSourceCodeLocation(sourceCodeLocation);
</del><ins>+            this.showOriginalUnformattedSourceCodeLocation(sourceCodeLocation);
</ins><span class="cx">         else
</span><del>-            this.resourceSidebarPanel.showSourceCodeLocation(sourceCodeLocation);
</del><ins>+            this.showSourceCodeLocation(sourceCodeLocation);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     var linkElement = document.createElement(&quot;a&quot;);
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsBreakpointjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/Breakpoint.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/Breakpoint.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/Breakpoint.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -241,7 +241,7 @@
</span><span class="cx"> 
</span><span class="cx">         function revealOriginalSourceCodeLocation()
</span><span class="cx">         {
</span><del>-            WebInspector.resourceSidebarPanel.showOriginalOrFormattedSourceCodeLocation(this._sourceCodeLocation);
</del><ins>+            WebInspector.showOriginalOrFormattedSourceCodeLocation(this._sourceCodeLocation);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (WebInspector.debuggerManager.isBreakpointEditable(this))
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceProtocolInspectorFrontendAPIjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -92,8 +92,7 @@
</span><span class="cx">     showMainResourceForFrame: function(frameIdentifier)
</span><span class="cx">     {
</span><span class="cx">         WebInspector.ignoreLastContentCookie = true;
</span><del>-        WebInspector.navigationSidebar.selectedSidebarPanel = WebInspector.resourceSidebarPanel;
-        WebInspector.resourceSidebarPanel.showSourceCodeForFrame(frameIdentifier, true);
</del><ins>+        WebInspector.showSourceCodeForFrame(frameIdentifier, true);
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     contextMenuItemSelected: function(id)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsCSSStyleDeclarationTextEditorjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -993,7 +993,7 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        WebInspector.resourceSidebarPanel.showSourceCodeLocation(sourceCodeLocation);
</del><ins>+        WebInspector.showSourceCodeLocation(sourceCodeLocation);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     tokenTrackingControllerNewHighlightCandidate(tokenTrackingController, candidate)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsComputedStyleDetailsPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ComputedStyleDetailsPanel.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ComputedStyleDetailsPanel.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ComputedStyleDetailsPanel.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -204,12 +204,12 @@
</span><span class="cx"> 
</span><span class="cx">     _goToRegionFlowArrowWasClicked()
</span><span class="cx">     {
</span><del>-        WebInspector.resourceSidebarPanel.showContentFlowDOMTree(this._regionFlow);
</del><ins>+        WebInspector.showContentFlowDOMTree(this._regionFlow);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     _goToContentFlowArrowWasClicked()
</span><span class="cx">     {
</span><del>-        WebInspector.resourceSidebarPanel.showContentFlowDOMTree(this._contentFlow, this.nodeStyles.node, true);
</del><ins>+        WebInspector.showContentFlowDOMTree(this._contentFlow, this.nodeStyles.node, true);
</ins><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsContentBrowserjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowser.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowser.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowser.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -187,6 +187,12 @@
</span><span class="cx">         return this._contentViewContainer.contentViewForRepresentedObject(representedObject, onlyExisting, extraArguments);
</span><span class="cx">     },
</span><span class="cx"> 
</span><ins>+    updateHierarchicalPathForCurrentContentView: function()
+    {
+        var currentContentView = this.currentContentView;
+        this._updateHierarchicalPathNavigationItem(currentContentView ? currentContentView.representedObject : null);
+    },
+
</ins><span class="cx">     canGoBack: function()
</span><span class="cx">     {
</span><span class="cx">         var currentContentView = this.currentContentView;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsContentViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ContentView.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ContentView.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ContentView.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx">         console.assert(representedObject);
</span><span class="cx"> 
</span><span class="cx">         if (representedObject instanceof WebInspector.Frame)
</span><del>-            return new WebInspector.FrameContentView(representedObject, extraArguments);
</del><ins>+            return new WebInspector.ResourceClusterContentView(representedObject.mainResource, extraArguments);
</ins><span class="cx"> 
</span><span class="cx">         if (representedObject instanceof WebInspector.Resource)
</span><span class="cx">             return new WebInspector.ResourceClusterContentView(representedObject, extraArguments);
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsDOMTreeContentViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -140,6 +140,18 @@
</span><span class="cx">         return pathComponents;
</span><span class="cx">     },
</span><span class="cx"> 
</span><ins>+    restoreFromCookie: function(cookie)
+    {
+        if (!cookie || !cookie.nodeToSelect)
+            return;
+
+        this.selectAndRevealDOMNode(cookie.nodeToSelect);
+
+        // Because nodeToSelect is ephemeral, we don't want to keep
+        // it around in the back-forward history entries.
+        cookie.nodeToSelect = undefined;
+    },
+
</ins><span class="cx">     selectAndRevealDOMNode: function(domNode, preventFocusChange)
</span><span class="cx">     {
</span><span class="cx">         this._domTreeOutline.selectDOMNode(domNode, !preventFocusChange);
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsDOMTreeDataGridNodejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeDataGridNode.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeDataGridNode.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeDataGridNode.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -83,6 +83,6 @@
</span><span class="cx"> 
</span><span class="cx">     _goToArrowWasClicked: function()
</span><span class="cx">     {
</span><del>-        WebInspector.resourceSidebarPanel.showMainFrameDOMTree(this._domNode, true);
</del><ins>+        WebInspector.showMainFrameDOMTree(this._domNode);
</ins><span class="cx">     }
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsDebuggerSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -25,10 +25,12 @@
</span><span class="cx"> 
</span><span class="cx"> WebInspector.DebuggerSidebarPanel = class DebuggerSidebarPanel extends WebInspector.NavigationSidebarPanel
</span><span class="cx"> {
</span><del>-    constructor()
</del><ins>+    constructor(contentBrowser)
</ins><span class="cx">     {
</span><span class="cx">         super(&quot;debugger&quot;, WebInspector.UIString(&quot;Debugger&quot;), true);
</span><span class="cx"> 
</span><ins>+        this.contentBrowser = contentBrowser;
+
</ins><span class="cx">         WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange, this._mainResourceChanged, this);
</span><span class="cx">         WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ResourceWasAdded, this._resourceAdded, this);
</span><span class="cx"> 
</span><span class="lines">@@ -179,7 +181,15 @@
</span><span class="cx"> 
</span><span class="cx">     showDefaultContentView()
</span><span class="cx">     {
</span><del>-        WebInspector.resourceSidebarPanel.showDefaultContentView();
</del><ins>+        var currentTreeElement = this._contentTreeOutline.children[0];
+        while (currentTreeElement &amp;&amp; !currentTreeElement.root) {
+            if (currentTreeElement instanceof WebInspector.ResourceTreeElement || currentTreeElement instanceof WebInspector.ScriptTreeElement) {
+                currentTreeElement.revealAndSelect();
+                return;
+            }
+
+            currentTreeElement = currentTreeElement.traverseNextTreeElement(false, null, true);
+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     treeElementForRepresentedObject(representedObject)
</span><span class="lines">@@ -306,6 +316,11 @@
</span><span class="cx">                 treeElement = new WebInspector.ScriptTreeElement(sourceCode);
</span><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        if (!treeElement) {
+            console.error(&quot;Unknown sourceCode instance&quot;, sourceCode);
+            return;
+        }
+
</ins><span class="cx">         if (!treeElement.parent) {
</span><span class="cx">             treeElement.hasChildren = false;
</span><span class="cx">             treeElement.expand();
</span><span class="lines">@@ -578,7 +593,7 @@
</span><span class="cx">         if (treeElement instanceof WebInspector.ResourceTreeElement || treeElement instanceof WebInspector.ScriptTreeElement) {
</span><span class="cx">             deselectCallStackContentTreeElements.call(this);
</span><span class="cx">             deselectPauseReasonContentTreeElements.call(this);
</span><del>-            WebInspector.resourceSidebarPanel.showSourceCode(treeElement.representedObject);
</del><ins>+            WebInspector.showSourceCode(treeElement.representedObject);
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -589,14 +604,14 @@
</span><span class="cx"> 
</span><span class="cx">             var callFrame = treeElement.callFrame;
</span><span class="cx">             WebInspector.debuggerManager.activeCallFrame = callFrame;
</span><del>-            WebInspector.resourceSidebarPanel.showSourceCodeLocation(callFrame.sourceCodeLocation);
</del><ins>+            WebInspector.showSourceCodeLocation(callFrame.sourceCodeLocation);
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (treeElement instanceof WebInspector.IssueTreeElement) {
</span><span class="cx">             deselectCallStackContentTreeElements.call(this);
</span><span class="cx">             deselectPauseReasonContentTreeElements.call(this);
</span><del>-            WebInspector.resourceSidebarPanel.showSourceCodeLocation(treeElement.issueMessage.sourceCodeLocation);
</del><ins>+            WebInspector.showSourceCodeLocation(treeElement.issueMessage.sourceCodeLocation);
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -613,7 +628,7 @@
</span><span class="cx"> 
</span><span class="cx">         var breakpoint = treeElement.breakpoint;
</span><span class="cx">         if (treeElement.treeOutline === this._pauseReasonTreeOutline) {
</span><del>-            WebInspector.resourceSidebarPanel.showSourceCodeLocation(breakpoint.sourceCodeLocation);
</del><ins>+            WebInspector.showSourceCodeLocation(breakpoint.sourceCodeLocation);
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -624,7 +639,7 @@
</span><span class="cx">         if (!(treeElement.parent.representedObject instanceof WebInspector.SourceCode))
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        WebInspector.resourceSidebarPanel.showSourceCodeLocation(breakpoint.sourceCodeLocation);
</del><ins>+        WebInspector.showSourceCodeLocation(breakpoint.sourceCodeLocation);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     _compareTopLevelTreeElements(a, b)
</span><span class="lines">@@ -761,6 +776,9 @@
</span><span class="cx">     _addIssue(issueMessage)
</span><span class="cx">     {
</span><span class="cx">         var parentTreeElement = this._addTreeElementForSourceCodeToContentTreeOutline(issueMessage.sourceCodeLocation.sourceCode);
</span><ins>+        if (!parentTreeElement)
+            return null;
+
</ins><span class="cx">         var issueTreeElement = new WebInspector.IssueTreeElement(issueMessage);
</span><span class="cx"> 
</span><span class="cx">         parentTreeElement.insertChild(issueTreeElement, insertionIndexForObjectInListSortedByFunction(issueTreeElement, parentTreeElement.children, this._compareDebuggerTreeElements));
</span><span class="lines">@@ -775,7 +793,7 @@
</span><span class="cx">         var issue = event.data.issue;
</span><span class="cx"> 
</span><span class="cx">         // We only want to show issues originating from JavaScript source code.
</span><del>-        if (!issue.lineNumber || (issue.source !== &quot;javascript&quot; &amp;&amp; issue.source !== &quot;console-api&quot;))
</del><ins>+        if (!issue.sourceCodeLocation || !issue.sourceCodeLocation.sourceCode || (issue.source !== &quot;javascript&quot; &amp;&amp; issue.source !== &quot;console-api&quot;))
</ins><span class="cx">             return;
</span><span class="cx"> 
</span><span class="cx">         this._addIssue(issue);
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsLayerTreeDataGridNodejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/LayerTreeDataGridNode.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/LayerTreeDataGridNode.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/LayerTreeDataGridNode.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -162,7 +162,7 @@
</span><span class="cx">     _goToArrowWasClicked: function()
</span><span class="cx">     {
</span><span class="cx">         var domNode = WebInspector.domTreeManager.nodeForId(this._layer.nodeId);
</span><del>-        WebInspector.resourceSidebarPanel.showMainFrameDOMTree(domNode, true);
</del><ins>+        WebInspector.showMainFrameDOMTree(domNode);
</ins><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsNavigationSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -76,6 +76,16 @@
</span><span class="cx"> 
</span><span class="cx">     // Public
</span><span class="cx"> 
</span><ins>+    get contentBrowser()
+    {
+        return this._contentBrowser;
+    }
+
+    set contentBrowser(contentBrowser)
+    {
+        this._contentBrowser = contentBrowser || null;
+    }
+
</ins><span class="cx">     get contentTreeOutlineElement()
</span><span class="cx">     {
</span><span class="cx">         return this._contentTreeOutline.element;
</span><span class="lines">@@ -477,8 +487,9 @@
</span><span class="cx">         this._updateContentOverflowShadowVisibility();
</span><span class="cx"> 
</span><span class="cx">         // Filter may have hidden the selected resource in the timeline view, which should now notify its listeners.
</span><ins>+        // FIXME: This is a layering violation. This should at least be in TimelineSidebarPanel.
</ins><span class="cx">         if (selectedTreeElement &amp;&amp; selectedTreeElement.hidden !== selectionWasHidden) {
</span><del>-            var currentContentView = WebInspector.contentBrowser.currentContentView;
</del><ins>+            var currentContentView = this.contentBrowser.currentContentView;
</ins><span class="cx">             if (currentContentView instanceof WebInspector.TimelineRecordingContentView &amp;&amp; typeof currentContentView.currentTimelineView.filterUpdated === &quot;function&quot;)
</span><span class="cx">                 currentContentView.currentTimelineView.filterUpdated();
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsNetworkTimelineViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTimelineView.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTimelineView.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTimelineView.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx">     showContentViewForTreeElement: function(treeElement)
</span><span class="cx">     {
</span><span class="cx">         if (treeElement instanceof WebInspector.ResourceTreeElement || treeElement instanceof WebInspector.ScriptTreeElement) {
</span><del>-            WebInspector.resourceSidebarPanel.showSourceCode(treeElement.representedObject);
</del><ins>+            WebInspector.showSourceCode(treeElement.representedObject);
</ins><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsObjectTreeBaseTreeElementjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeBaseTreeElement.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeBaseTreeElement.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeBaseTreeElement.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -223,7 +223,7 @@
</span><span class="cx">                             return;
</span><span class="cx"> 
</span><span class="cx">                         var sourceCodeLocation = sourceCode.createSourceCodeLocation(location.lineNumber, location.columnNumber || 0);
</span><del>-                        WebInspector.resourceSidebarPanel.showSourceCodeLocation(sourceCodeLocation);
</del><ins>+                        WebInspector.showSourceCodeLocation(sourceCodeLocation);
</ins><span class="cx">                     });
</span><span class="cx">                 });
</span><span class="cx">             }
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsOverviewTimelineViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/OverviewTimelineView.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/OverviewTimelineView.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/OverviewTimelineView.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -340,7 +340,7 @@
</span><span class="cx">             return;
</span><span class="cx"> 
</span><span class="cx">         if (treeElement instanceof WebInspector.ResourceTreeElement || treeElement instanceof WebInspector.ScriptTreeElement) {
</span><del>-            WebInspector.resourceSidebarPanel.showSourceCode(treeElement.representedObject);
</del><ins>+            WebInspector.showSourceCode(treeElement.representedObject);
</ins><span class="cx">             this._updateTreeElementWithCloseButton(treeElement);
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="lines">@@ -356,7 +356,7 @@
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        WebInspector.resourceSidebarPanel.showOriginalOrFormattedSourceCodeLocation(treeElement.sourceCodeTimeline.sourceCodeLocation);
</del><ins>+        WebInspector.showOriginalOrFormattedSourceCodeLocation(treeElement.sourceCodeTimeline.sourceCodeLocation);
</ins><span class="cx">         this._updateTreeElementWithCloseButton(treeElement);
</span><span class="cx">     },
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsRenderingFrameTimelineViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineView.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineView.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineView.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -157,7 +157,7 @@
</span><span class="cx">     showContentViewForTreeElement: function(treeElement)
</span><span class="cx">     {
</span><span class="cx">         if (treeElement instanceof WebInspector.ProfileNodeTreeElement &amp;&amp; treeElement.profileNode.sourceCodeLocation) {
</span><del>-            WebInspector.resourceSidebarPanel.showOriginalOrFormattedSourceCodeLocation(treeElement.profileNode.sourceCodeLocation);
</del><ins>+            WebInspector.showOriginalOrFormattedSourceCodeLocation(treeElement.profileNode.sourceCodeLocation);
</ins><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsResourceDetailsSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ResourceDetailsSidebarPanel.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ResourceDetailsSidebarPanel.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ResourceDetailsSidebarPanel.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -398,7 +398,7 @@
</span><span class="cx"> 
</span><span class="cx">     _goToRequestDataClicked()
</span><span class="cx">     {
</span><del>-        WebInspector.resourceSidebarPanel.showResourceRequest(this._resource);
</del><ins>+        WebInspector.showResourceRequest(this._resource);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     _refreshRequestDataSection()
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsResourceSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -25,10 +25,12 @@
</span><span class="cx"> 
</span><span class="cx"> WebInspector.ResourceSidebarPanel = class ResourceSidebarPanel extends WebInspector.NavigationSidebarPanel
</span><span class="cx"> {
</span><del>-    constructor()
</del><ins>+    constructor(contentBrowser)
</ins><span class="cx">     {
</span><span class="cx">         super(&quot;resource&quot;, WebInspector.UIString(&quot;Resources&quot;), true, true);
</span><span class="cx"> 
</span><ins>+        this.contentBrowser = contentBrowser;
+
</ins><span class="cx">         var searchElement = document.createElement(&quot;div&quot;);
</span><span class="cx">         searchElement.classList.add(&quot;search-bar&quot;);
</span><span class="cx">         this.element.appendChild(searchElement);
</span><span class="lines">@@ -79,10 +81,7 @@
</span><span class="cx">         WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.FrameManifestRemoved, this._frameManifestRemoved, this);
</span><span class="cx"> 
</span><span class="cx">         WebInspector.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.MainFrameDidChange, this._mainFrameDidChange, this);
</span><del>-        WebInspector.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.FrameWasAdded, this._frameWasAdded, this);
</del><span class="cx"> 
</span><del>-        WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.DOMNodeWasInspected, this._domNodeWasInspected, this);
-
</del><span class="cx">         WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptAdded, this._scriptWasAdded, this);
</span><span class="cx">         WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptsCleared, this._scriptsCleared, this);
</span><span class="cx"> 
</span><span class="lines">@@ -105,7 +104,7 @@
</span><span class="cx">     showDefaultContentView()
</span><span class="cx">     {
</span><span class="cx">         if (WebInspector.frameResourceManager.mainFrame) {
</span><del>-            this.showMainFrame();
</del><ins>+            this.contentBrowser.showContentViewForRepresentedObject(WebInspector.frameResourceManager.mainFrame);
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -119,129 +118,15 @@
</span><span class="cx">         return this._searchContentTreeOutline;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    showMainFrame(nodeToSelect, preventFocusChange)
-    {
-        WebInspector.contentBrowser.showContentViewForRepresentedObject(WebInspector.frameResourceManager.mainFrame);
-    }
-
-    showMainFrameDOMTree(nodeToSelect, preventFocusChange)
-    {
-        var contentView = WebInspector.contentBrowser.contentViewForRepresentedObject(WebInspector.frameResourceManager.mainFrame);
-        contentView.showDOMTree(nodeToSelect, preventFocusChange);
-        WebInspector.contentBrowser.showContentView(contentView);
-    }
-
-    showMainFrameSourceCode()
-    {
-        var contentView = WebInspector.contentBrowser.contentViewForRepresentedObject(WebInspector.frameResourceManager.mainFrame);
-        contentView.showSourceCode();
-        WebInspector.contentBrowser.showContentView(contentView);
-    }
-
-    showContentFlowDOMTree(contentFlow, nodeToSelect, preventFocusChange)
-    {
-        var contentView = WebInspector.contentBrowser.contentViewForRepresentedObject(contentFlow);
-        if (nodeToSelect)
-            contentView.selectAndRevealDOMNode(nodeToSelect, preventFocusChange);
-        WebInspector.contentBrowser.showContentView(contentView);
-    }
-
-    showSourceCodeForFrame(frameIdentifier, revealAndSelectTreeElement)
-    {
-        delete this._frameIdentifierToShowSourceCodeWhenAvailable;
-
-        // We can't show anything until we have the main frame in the sidebar.
-        // Otherwise the path components in the navigation bar would be missing.
-        var frame = WebInspector.frameResourceManager.frameForIdentifier(frameIdentifier);
-        if (!frame || !this._mainFrameTreeElement) {
-            this._frameIdentifierToShowSourceCodeWhenAvailable = frameIdentifier;
-            return;
-        }
-
-        var contentView = WebInspector.contentBrowser.contentViewForRepresentedObject(frame);
-        console.assert(contentView);
-        if (!contentView)
-            return;
-
-        contentView.showSourceCode();
-        WebInspector.contentBrowser.showContentView(contentView);
-
-        if (revealAndSelectTreeElement)
-            this.treeElementForRepresentedObject(frame).revealAndSelect(true, true, true, true);
-    }
-
-    showSourceCode(sourceCode, positionToReveal, textRangeToSelect, forceUnformatted)
-    {
-        console.assert(!positionToReveal || positionToReveal instanceof WebInspector.SourceCodePosition, positionToReveal);
-        var representedObject = sourceCode;
-
-        if (representedObject instanceof WebInspector.Script) {
-            // A script represented by a resource should always show the resource.
-            representedObject = representedObject.resource || representedObject;
-        }
-
-        // A main resource is always represented by its parent frame.
-        if (representedObject instanceof WebInspector.Resource &amp;&amp; representedObject.isMainResource())
-            representedObject = representedObject.parentFrame;
-
-        var cookie = positionToReveal ? {lineNumber: positionToReveal.lineNumber, columnNumber: positionToReveal.columnNumber} : {};
-        WebInspector.contentBrowser.showContentViewForRepresentedObject(representedObject, cookie);
-    }
-
-    showSourceCodeLocation(sourceCodeLocation)
-    {
-        this.showSourceCode(sourceCodeLocation.displaySourceCode, sourceCodeLocation.displayPosition());
-    }
-
-    showOriginalUnformattedSourceCodeLocation(sourceCodeLocation)
-    {
-        this.showSourceCode(sourceCodeLocation.sourceCode, sourceCodeLocation.position(), undefined, true);
-    }
-
-    showOriginalOrFormattedSourceCodeLocation(sourceCodeLocation)
-    {
-        this.showSourceCode(sourceCodeLocation.sourceCode, sourceCodeLocation.formattedPosition());
-    }
-
-    showSourceCodeTextRange(sourceCodeTextRange)
-    {
-        var textRangeToSelect = sourceCodeTextRange.displayTextRange;
-        this.showSourceCode(sourceCodeTextRange.displaySourceCode, textRangeToSelect.startPosition(), textRangeToSelect);
-    }
-
-    showOriginalOrFormattedSourceCodeTextRange(sourceCodeTextRange)
-    {
-        var textRangeToSelect = sourceCodeTextRange.formattedTextRange;
-        this.showSourceCode(sourceCodeTextRange.sourceCode, textRangeToSelect.startPosition(), textRangeToSelect);
-    }
-
-    showResource(resource)
-    {
-        WebInspector.contentBrowser.showContentViewForRepresentedObject(resource.isMainResource() ? resource.parentFrame : resource);
-    }
-
-    showResourceRequest(resource)
-    {
-        var contentView = WebInspector.contentBrowser.contentViewForRepresentedObject(resource.isMainResource() ? resource.parentFrame : resource);
-
-        if (contentView instanceof WebInspector.FrameContentView)
-            var resourceContentView = contentView.showResource();
-        else if (contentView instanceof WebInspector.ResourceClusterContentView)
-            var resourceContentView = contentView;
-
-        console.assert(resourceContentView instanceof WebInspector.ResourceClusterContentView);
-        if (!(resourceContentView instanceof WebInspector.ResourceClusterContentView))
-            return;
-
-        resourceContentView.showRequest();
-
-        WebInspector.contentBrowser.showContentView(contentView);
-    }
-
</del><span class="cx">     treeElementForRepresentedObject(representedObject)
</span><span class="cx">     {
</span><span class="cx">         // A custom implementation is needed for this since the frames are populated lazily.
</span><span class="cx"> 
</span><ins>+        if (!this._mainFrameTreeElement &amp;&amp; (representedObject instanceof WebInspector.Resource || representedObject instanceof WebInspector.Frame)) {
+            // All resources are under the main frame, so we need to return early if we don't have the main frame yet.
+            return null;
+        }
+
</ins><span class="cx">         // The Frame is used as the representedObject instead of the main resource in our tree.
</span><span class="cx">         if (representedObject instanceof WebInspector.Resource &amp;&amp; representedObject.parentFrame &amp;&amp; representedObject.parentFrame.mainResource === representedObject)
</span><span class="cx">             representedObject = representedObject.parentFrame;
</span><span class="lines">@@ -592,14 +477,19 @@
</span><span class="cx">             this._mainFrameTreeElement = new WebInspector.FrameTreeElement(newFrame);
</span><span class="cx">             this._resourcesContentTreeOutline.insertChild(this._mainFrameTreeElement, 0);
</span><span class="cx"> 
</span><del>-            // Select by default. Allow onselect if we aren't showing a content view.
-            if (!this._resourcesContentTreeOutline.selectedTreeElement)
-                this._mainFrameTreeElement.revealAndSelect(true, false, !!WebInspector.contentBrowser.currentContentView);
-
-            if (this._frameIdentifierToShowSourceCodeWhenAvailable)
-                this.showSourceCodeForFrame(this._frameIdentifierToShowSourceCodeWhenAvailable, true);
</del><ins>+            // Select a tree element by default. Allow onselect if we aren't showing a content view.
+            if (!this._resourcesContentTreeOutline.selectedTreeElement) {
+                var currentContentView = this.contentBrowser.currentContentView;
+                var treeElement = currentContentView ? this.treeElementForRepresentedObject(currentContentView.representedObject) : null;
+                if (!treeElement)
+                    treeElement = this._mainFrameTreeElement;
+                treeElement.revealAndSelect(true, false, !!currentContentView, true);
+            }
</ins><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        // The navigation path needs update when the main frame changes, since all resources are under the main frame.
+        this.contentBrowser.updateHierarchicalPathForCurrentContentView();
+
</ins><span class="cx">         // We only care about the first time the main frame changes.
</span><span class="cx">         if (!this._waitingForInitialMainFrame)
</span><span class="cx">             return;
</span><span class="lines">@@ -608,7 +498,7 @@
</span><span class="cx">         if (!newFrame)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        delete this._waitingForInitialMainFrame;
</del><ins>+        this._waitingForInitialMainFrame = false;
</ins><span class="cx"> 
</span><span class="cx">         // Only if the last page searched is the same as the current page.
</span><span class="cx">         if (this._lastSearchedPageSetting.value !== newFrame.url.hash)
</span><span class="lines">@@ -621,16 +511,13 @@
</span><span class="cx">     _mainFrameMainResourceDidChange(event)
</span><span class="cx">     {
</span><span class="cx">         var wasShowingResourceSidebar = this.selected;
</span><del>-        var currentContentView = WebInspector.contentBrowser.currentContentView;
</del><ins>+        var currentContentView = this.contentBrowser.currentContentView;
</ins><span class="cx">         var wasShowingResourceContentView = currentContentView instanceof WebInspector.ResourceContentView
</span><span class="cx">             || currentContentView instanceof WebInspector.ResourceClusterContentView
</span><span class="cx">             || currentContentView instanceof WebInspector.FrameContentView
</span><span class="cx">             || currentContentView instanceof WebInspector.ScriptContentView;
</span><span class="cx"> 
</span><del>-        // Close all resource and frame content views since the main frame has navigated and all resources are cleared.
-        WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.ResourceClusterContentView);
-        WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.FrameContentView);
-        WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.ScriptContentView);
</del><ins>+        this.contentBrowser.contentViewContainer.closeAllContentViews();
</ins><span class="cx"> 
</span><span class="cx">         // Break out of search tree outline if there was an active search.
</span><span class="cx">         this._showResourcesContentTreeOutline();
</span><span class="lines">@@ -639,13 +526,7 @@
</span><span class="cx">         {
</span><span class="cx">             // Show the main frame since there is no content view showing or we were showing a resource before.
</span><span class="cx">             // Cookie restoration will attempt to re-select the resource we were showing.
</span><del>-            if (!WebInspector.contentBrowser.currentContentView || wasShowingResourceContentView) {
-                // If we were showing a resource inside of the ResourceSidebar, we should
-                // re-show the resource inside of the resource sidebar. It is possible that
-                // the sidebar panel could have switched to another view in the back-forward list.
-                if (wasShowingResourceSidebar)
-                    WebInspector.navigationSidebar.selectedSidebarPanel = this;
-
</del><ins>+            if (!this.contentBrowser.currentContentView || wasShowingResourceContentView) {
</ins><span class="cx">                 // NOTE: This selection, during provisional loading, won't be saved, so it is
</span><span class="cx">                 // safe to do and not-clobber cookie restoration.
</span><span class="cx">                 this._mainFrameTreeElement.revealAndSelect(true, false);
</span><span class="lines">@@ -657,18 +538,6 @@
</span><span class="cx">         setTimeout(delayedWork.bind(this), 0);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _frameWasAdded(event)
-    {
-        if (!this._frameIdentifierToShowSourceCodeWhenAvailable)
-            return;
-
-        var frame = event.data.frame;
-        if (frame.id !== this._frameIdentifierToShowSourceCodeWhenAvailable)
-            return;
-
-        this.showSourceCodeForFrame(frame.id, true);
-    }
-
</del><span class="cx">     _scriptWasAdded(event)
</span><span class="cx">     {
</span><span class="cx">         var script = event.data.script;
</span><span class="lines">@@ -776,7 +645,7 @@
</span><span class="cx">             treeElement instanceof WebInspector.DatabaseTreeElement || treeElement instanceof WebInspector.ApplicationCacheFrameTreeElement ||
</span><span class="cx">             treeElement instanceof WebInspector.ContentFlowTreeElement || treeElement instanceof WebInspector.IndexedDatabaseObjectStoreTreeElement ||
</span><span class="cx">             treeElement instanceof WebInspector.IndexedDatabaseObjectStoreIndexTreeElement) {
</span><del>-            WebInspector.contentBrowser.showContentViewForRepresentedObject(treeElement.representedObject);
</del><ins>+            WebInspector.showRepresentedObject(treeElement.representedObject);
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -785,16 +654,11 @@
</span><span class="cx">             return;
</span><span class="cx"> 
</span><span class="cx">         if (treeElement.representedObject instanceof WebInspector.DOMSearchMatchObject)
</span><del>-            this.showMainFrameDOMTree(treeElement.representedObject.domNode, true);
</del><ins>+            WebInspector.showMainFrameDOMTree(treeElement.representedObject.domNode);
</ins><span class="cx">         else if (treeElement.representedObject instanceof WebInspector.SourceCodeSearchMatchObject)
</span><del>-            this.showOriginalOrFormattedSourceCodeTextRange(treeElement.representedObject.sourceCodeTextRange);
</del><ins>+            WebInspector.showOriginalOrFormattedSourceCodeTextRange(treeElement.representedObject.sourceCodeTextRange);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _domNodeWasInspected(event)
-    {
-        this.showMainFrameDOMTree(event.data.node);
-    }
-
</del><span class="cx">     _domStorageObjectWasAdded(event)
</span><span class="cx">     {
</span><span class="cx">         var domStorage = event.data.domStorage;
</span><span class="lines">@@ -928,11 +792,11 @@
</span><span class="cx">     _storageCleared(event)
</span><span class="cx">     {
</span><span class="cx">         // Close all DOM and cookie storage content views since the main frame has navigated and all storages are cleared.
</span><del>-        WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.CookieStorageContentView);
-        WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DOMStorageContentView);
-        WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DatabaseTableContentView);
-        WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DatabaseContentView);
-        WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.ApplicationCacheFrameContentView);
</del><ins>+        this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.CookieStorageContentView);
+        this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DOMStorageContentView);
+        this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DatabaseTableContentView);
+        this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DatabaseContentView);
+        this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.ApplicationCacheFrameContentView);
</ins><span class="cx"> 
</span><span class="cx">         if (this._localStorageRootTreeElement &amp;&amp; this._localStorageRootTreeElement.parent)
</span><span class="cx">             this._localStorageRootTreeElement.parent.removeChild(this._localStorageRootTreeElement);
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsResourceTimelineDataGridNodejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ResourceTimelineDataGridNode.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ResourceTimelineDataGridNode.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ResourceTimelineDataGridNode.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -169,7 +169,7 @@
</span><span class="cx"> 
</span><span class="cx">     _goToResource: function(event)
</span><span class="cx">     {
</span><del>-        WebInspector.resourceSidebarPanel.showSourceCode(this._resource);
</del><ins>+        WebInspector.showSourceCode(this._resource);
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     _timelineRecordUpdated: function(event)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsScriptTimelineViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ScriptTimelineView.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ScriptTimelineView.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ScriptTimelineView.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -166,7 +166,7 @@
</span><span class="cx">     showContentViewForTreeElement: function(treeElement)
</span><span class="cx">     {
</span><span class="cx">         if (treeElement instanceof WebInspector.ProfileNodeTreeElement &amp;&amp; treeElement.profileNode.sourceCodeLocation) {
</span><del>-            WebInspector.resourceSidebarPanel.showOriginalOrFormattedSourceCodeLocation(treeElement.profileNode.sourceCodeLocation);
</del><ins>+            WebInspector.showOriginalOrFormattedSourceCodeLocation(treeElement.profileNode.sourceCodeLocation);
</ins><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsSourceCodeTextEditorjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -1324,9 +1324,9 @@
</span><span class="cx"> 
</span><span class="cx">         var sourceCodeLocation = this._sourceCodeLocationForEditorPosition(this.tokenTrackingController.candidate.hoveredTokenRange.start);
</span><span class="cx">         if (this.sourceCode instanceof WebInspector.SourceMapResource)
</span><del>-            WebInspector.resourceSidebarPanel.showOriginalOrFormattedSourceCodeLocation(sourceCodeLocation);
</del><ins>+            WebInspector.showOriginalOrFormattedSourceCodeLocation(sourceCodeLocation);
</ins><span class="cx">         else
</span><del>-            WebInspector.resourceSidebarPanel.showSourceCodeLocation(sourceCodeLocation);
</del><ins>+            WebInspector.showSourceCodeLocation(sourceCodeLocation);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     tokenTrackingControllerNewHighlightCandidate(tokenTrackingController, candidate)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsTimelineDataGridjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -487,6 +487,6 @@
</span><span class="cx">         if (!callFrame.sourceCodeLocation)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        WebInspector.resourceSidebarPanel.showSourceCodeLocation(callFrame.sourceCodeLocation);
</del><ins>+        WebInspector.showSourceCodeLocation(callFrame.sourceCodeLocation);
</ins><span class="cx">     }
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsTimelineSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -25,10 +25,12 @@
</span><span class="cx"> 
</span><span class="cx"> WebInspector.TimelineSidebarPanel = class TimelineSidebarPanel extends WebInspector.NavigationSidebarPanel
</span><span class="cx"> {
</span><del>-    constructor()
</del><ins>+    constructor(contentBrowser)
</ins><span class="cx">     {
</span><span class="cx">         super(&quot;timeline&quot;, WebInspector.UIString(&quot;Timelines&quot;));
</span><span class="cx"> 
</span><ins>+        this.contentBrowser = contentBrowser;
+
</ins><span class="cx">         this._timelineEventsTitleBarElement = document.createElement(&quot;div&quot;);
</span><span class="cx">         this._timelineEventsTitleBarElement.classList.add(WebInspector.TimelineSidebarPanel.TitleBarStyleClass);
</span><span class="cx">         this._timelineEventsTitleBarElement.classList.add(WebInspector.TimelineSidebarPanel.TimelineEventsTitleBarStyleClass);
</span><span class="lines">@@ -120,7 +122,7 @@
</span><span class="cx">         WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.RecordingCreated, this._recordingCreated, this);
</span><span class="cx">         WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.RecordingLoaded, this._recordingLoaded, this);
</span><span class="cx"> 
</span><del>-        WebInspector.contentBrowser.addEventListener(WebInspector.ContentBrowser.Event.CurrentContentViewDidChange, this._contentBrowserCurrentContentViewDidChange, this);
</del><ins>+        this.contentBrowser.addEventListener(WebInspector.ContentBrowser.Event.CurrentContentViewDidChange, this._contentBrowserCurrentContentViewDidChange, this);
</ins><span class="cx">         WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingStarted, this._capturingStarted, this);
</span><span class="cx">         WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingStopped, this._capturingStopped, this);
</span><span class="cx">     }
</span><span class="lines">@@ -132,7 +134,7 @@
</span><span class="cx">         super.shown();
</span><span class="cx"> 
</span><span class="cx">         if (this._displayedContentView)
</span><del>-            WebInspector.contentBrowser.showContentView(this._displayedContentView);
</del><ins>+            this.contentBrowser.showContentView(this._displayedContentView);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     showDefaultContentView()
</span><span class="lines">@@ -236,7 +238,7 @@
</span><span class="cx">             this._timelinesTreeOutline.selectedTreeElement.deselect();
</span><span class="cx"> 
</span><span class="cx">         this._displayedContentView.showOverviewTimelineView();
</span><del>-        WebInspector.contentBrowser.showContentView(this._displayedContentView);
</del><ins>+        this.contentBrowser.showContentView(this._displayedContentView);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     showTimelineViewForTimeline(timeline)
</span><span class="lines">@@ -284,7 +286,7 @@
</span><span class="cx">     {
</span><span class="cx">         console.assert(cookie);
</span><span class="cx"> 
</span><del>-        cookie[WebInspector.TimelineSidebarPanel.ShowingTimelineRecordingContentViewCookieKey] = WebInspector.contentBrowser.currentContentView instanceof WebInspector.TimelineRecordingContentView;
</del><ins>+        cookie[WebInspector.TimelineSidebarPanel.ShowingTimelineRecordingContentViewCookieKey] = this.contentBrowser.currentContentView instanceof WebInspector.TimelineRecordingContentView;
</ins><span class="cx"> 
</span><span class="cx">         var selectedTreeElement = this._timelinesTreeOutline.selectedTreeElement;
</span><span class="cx">         if (selectedTreeElement)
</span><span class="lines">@@ -356,12 +358,12 @@
</span><span class="cx">         console.assert(this._displayedRecording.timelines.get(timeline.type) === timeline, timeline);
</span><span class="cx"> 
</span><span class="cx">         this._displayedContentView.showTimelineViewForTimeline(timeline);
</span><del>-        WebInspector.contentBrowser.showContentView(this._displayedContentView);
</del><ins>+        this.contentBrowser.showContentView(this._displayedContentView);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     _contentBrowserCurrentContentViewDidChange(event)
</span><span class="cx">     {
</span><del>-        var didShowTimelineRecordingContentView = WebInspector.contentBrowser.currentContentView instanceof WebInspector.TimelineRecordingContentView;
</del><ins>+        var didShowTimelineRecordingContentView = this.contentBrowser.currentContentView instanceof WebInspector.TimelineRecordingContentView;
</ins><span class="cx">         this.element.classList.toggle(WebInspector.TimelineSidebarPanel.TimelineRecordingContentViewShowingStyleClass, didShowTimelineRecordingContentView);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -423,9 +425,9 @@
</span><span class="cx">         for (var timeline of recording.timelines.values())
</span><span class="cx">             this._timelineAdded(timeline);
</span><span class="cx"> 
</span><del>-        this._displayedContentView = WebInspector.contentBrowser.contentViewForRepresentedObject(this._displayedRecording, false, {timelineSidebarPanel: this});
</del><ins>+        this._displayedContentView = this.contentBrowser.contentViewForRepresentedObject(this._displayedRecording, false, {timelineSidebarPanel: this});
</ins><span class="cx">         if (this.selected)
</span><del>-            WebInspector.contentBrowser.showContentView(this._displayedContentView);
</del><ins>+            this.contentBrowser.showContentView(this._displayedContentView);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     _recordingLoaded(event)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsTimelineViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TimelineView.js (183330 => 183331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/TimelineView.js        2015-04-26 01:20:05 UTC (rev 183330)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TimelineView.js        2015-04-26 01:20:59 UTC (rev 183331)
</span><span class="lines">@@ -206,7 +206,7 @@
</span><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        WebInspector.resourceSidebarPanel.showOriginalOrFormattedSourceCodeLocation(sourceCodeLocation);
</del><ins>+        WebInspector.showOriginalOrFormattedSourceCodeLocation(sourceCodeLocation);
</ins><span class="cx">         return true;
</span><span class="cx">     },
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>