Diff
Modified: trunk/Source/WebInspectorUI/ChangeLog (197973 => 197974)
--- trunk/Source/WebInspectorUI/ChangeLog 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/ChangeLog 2016-03-11 00:49:16 UTC (rev 197974)
@@ -1,3 +1,141 @@
+2016-03-10 Matt Baker <[email protected]>
+
+ Web Inspector: Timelines UI redesign: remove navigation sidebar
+ https://bugs.webkit.org/show_bug.cgi?id=153036
+ <rdar://problem/24195627>
+
+ Reviewed by Timothy Hatcher.
+
+ Removed TimelineView methods used by the sidebar to setup the content tree
+ outline and handle tree element events, which are no longer used. Tree elements
+ are no longer created by TimelineViews as records are processed.
+
+ * UserInterface/Main.html:
+ Removed files.
+
+ * UserInterface/Views/LayoutTimelineView.js:
+ (WebInspector.LayoutTimelineView):
+ Removed tree outline event listeners and data grid parameter.
+ (WebInspector.LayoutTimelineView.prototype._processPendingRecords):
+ (WebInspector.LayoutTimelineView.prototype._dataGridFiltersDidChange):
+ (WebInspector.LayoutTimelineView.prototype._hoveredOrSelectedRecord):
+ Get record from data grid node instead of tree element.
+ (WebInspector.LayoutTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
+ (WebInspector.LayoutTimelineView.prototype._mouseOverTreeOutline): Deleted.
+ (WebInspector.LayoutTimelineView.prototype._mouseLeaveTreeOutline): Deleted.
+ No longer needed, highlighting performed by data grid event handlers.
+
+ * UserInterface/Views/MemoryTimelineView.js:
+ (WebInspector.MemoryTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
+ No longer needed.
+
+ * UserInterface/Views/NavigationSidebarPanel.js:
+ (WebInspector.NavigationSidebarPanel.prototype._updateFilter): Deleted.
+ Removed hack which was specific to TimelineSidebarPanel.
+
+ * UserInterface/Views/NetworkTimelineView.js:
+ (WebInspector.NetworkTimelineView):
+ Removed sidebar styles and tree outline data grid parameter.
+ (WebInspector.NetworkTimelineView.prototype._processPendingRecords):
+ (WebInspector.NetworkTimelineView.prototype._dataGridFiltersDidChange):
+ (WebInspector.NetworkTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
+ (WebInspector.NetworkTimelineView.prototype.treeElementSelected): Deleted.
+ No longer needed.
+
+ * UserInterface/Views/OverviewTimelineView.js:
+ (WebInspector.OverviewTimelineView):
+ (WebInspector.OverviewTimelineView.prototype.get selectionPathComponents):
+ (WebInspector.OverviewTimelineView.prototype.dataGridNodePathComponentSelected):
+ Create path components from the grid selection. This should have been
+ included in https://webkit.org/b/154954.
+
+ (WebInspector.OverviewTimelineView.prototype._compareDataGridNodesByStartTime.getStartTime):
+ (WebInspector.OverviewTimelineView.prototype._compareDataGridNodesByStartTime):
+ (WebInspector.OverviewTimelineView.prototype._insertDataGridNode):
+ (WebInspector.OverviewTimelineView.prototype._addResourceToDataGridIfNeeded):
+ (WebInspector.OverviewTimelineView.prototype._addSourceCodeTimeline):
+ Refactored to accept grid nodes instead of tree elements.
+
+ (WebInspector.OverviewTimelineView.prototype._processPendingRepresentedObjects):
+ (WebInspector.OverviewTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
+ (WebInspector.OverviewTimelineView.prototype.shown):
+ (WebInspector.OverviewTimelineView.prototype.treeElementPathComponentSelected): Deleted.
+ (WebInspector.OverviewTimelineView.prototype._compareTreeElementsByDetails): Deleted.
+ Not used anywhere.
+
+ (WebInspector.OverviewTimelineView.prototype._compareTreeElementsByStartTime.getStartTime): Deleted.
+ (WebInspector.OverviewTimelineView.prototype._compareTreeElementsByStartTime): Deleted.
+ (WebInspector.OverviewTimelineView.prototype._insertTreeElement): Deleted.
+ (WebInspector.OverviewTimelineView.prototype._addResourceToTreeIfNeeded): Deleted.
+ Reimplemented as _compareDataGridNodesByStartTime, _insertDataGridNode and _addResourceToDataGridIfNeeded.
+
+ * UserInterface/Views/RenderingFrameTimelineView.js:
+ (WebInspector.RenderingFrameTimelineView):
+ Removed sidebar styles and tree outline data grid parameter.
+
+ (WebInspector.RenderingFrameTimelineView.prototype.get selectionPathComponents):
+ (WebInspector.RenderingFrameTimelineView.prototype.dataGridNodePathComponentSelected):
+ Create path components from the grid selection. This should have been
+ included in https://webkit.org/b/154954.
+
+ (WebInspector.RenderingFrameTimelineView.prototype._processPendingRecords):
+ (WebInspector.RenderingFrameTimelineView.prototype._scopeBarSelectionDidChange):
+ (WebInspector.RenderingFrameTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
+ (WebInspector.RenderingFrameTimelineView.prototype.treeElementDeselected): Deleted.
+ (WebInspector.RenderingFrameTimelineView.prototype.treeElementSelected): Deleted.
+ (WebInspector.RenderingFrameTimelineView.prototype.treeElementPathComponentSelected): Deleted.
+
+ * UserInterface/Views/ScriptClusterTimelineView.js:
+ (WebInspector.ScriptClusterTimelineView):
+ Don't hold reference to extraArguments, just pass to subviews.
+
+ * UserInterface/Views/ScriptDetailsTimelineView.js:
+ (WebInspector.ScriptDetailsTimelineView):
+ Removed sidebar styles and tree outline data grid parameter.
+ (WebInspector.ScriptDetailsTimelineView.prototype._processPendingRecords):
+ (WebInspector.ScriptDetailsTimelineView.prototype._dataGridFiltersDidChange):
+ (WebInspector.ScriptDetailsTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
+ (WebInspector.ScriptDetailsTimelineView.prototype.treeElementSelected): Deleted.
+ (WebInspector.ScriptDetailsTimelineView.prototype.dataGridNodeForTreeElement): Deleted.
+ (WebInspector.ScriptDetailsTimelineView.prototype.populateProfileNodeTreeElement): Deleted.
+
+ * UserInterface/Views/TimelineDataGrid.js:
+ (WebInspector.TimelineDataGrid.prototype.addRowInSortOrder):
+ Fixed failure when treeElement and parentTreeElementOrDataGridNode are both null.
+
+ * UserInterface/Views/TimelineRecordingContentView.js:
+ (WebInspector.TimelineRecordingContentView):
+ Removed extraArguments and sidebar panel references.
+ (WebInspector.TimelineRecordingContentView.prototype.contentBrowserTreeElementForRepresentedObject):
+ Use icon style from the tab, instead of the sidebar.
+ (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
+ Removed updates to the sidebar.
+ (WebInspector.TimelineRecordingContentView.prototype._pathComponentSelected):
+ (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
+ (WebInspector.TimelineRecordingContentView.prototype._instrumentAdded):
+ Removed sidebar reference when creating new TimelineViews.
+ (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
+
+ * UserInterface/Views/TimelineSidebarPanel.css: Removed.
+
+ * UserInterface/Views/TimelineTabContentView.js:
+ (WebInspector.TimelineTabContentView):
+ Removed hidden sidebar FIXME.
+ (WebInspector.TimelineTabContentView.prototype._addRecording):
+ New location for sidebar style class constant StopwatchIconStyleClass.
+
+ * UserInterface/Views/TimelineView.js:
+ (WebInspector.TimelineView):
+ (WebInspector.TimelineView.prototype.get navigationItems): Deleted.
+ (WebInspector.TimelineView.prototype.get navigationSidebarTreeOutline): Deleted.
+ (WebInspector.TimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
+ (WebInspector.TimelineView.prototype.get timelineSidebarPanel): Deleted.
+ (WebInspector.TimelineView.prototype.treeElementPathComponentSelected): Deleted.
+ (WebInspector.TimelineView.prototype.treeElementDeselected): Deleted.
+ (WebInspector.TimelineView.prototype.treeElementSelected): Deleted.
+ (WebInspector.TimelineView.prototype._treeSelectionDidChange): Deleted.
+ Sidebar logic for panel and content tree outline removed.
+
2016-03-10 Joseph Pecoraro <[email protected]>
Web Inspector: Enable Memory Timelines by default if supported
Modified: trunk/Source/WebInspectorUI/UserInterface/Main.html (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Main.html 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Main.html 2016-03-11 00:49:16 UTC (rev 197974)
@@ -169,7 +169,6 @@
<link rel="stylesheet" href=""
<link rel="stylesheet" href=""
<link rel="stylesheet" href=""
- <link rel="stylesheet" href=""
<link rel="stylesheet" href=""
<link rel="stylesheet" href=""
<link rel="stylesheet" href=""
@@ -622,7 +621,6 @@
<script src=""
<script src=""
<script src=""
- <script src=""
<script src=""
<script src=""
<script src=""
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/LayoutTimelineView.js (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/LayoutTimelineView.js 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/LayoutTimelineView.js 2016-03-11 00:49:16 UTC (rev 197974)
@@ -31,8 +31,6 @@
console.assert(timeline.type === WebInspector.TimelineRecord.Type.Layout, timeline);
- this.navigationSidebarTreeOutline.element.classList.add("layout");
-
let columns = {name: {}, location: {}, width: {}, height: {}, startTime: {}, totalTime: {}};
columns.name.title = WebInspector.UIString("Type");
@@ -70,7 +68,7 @@
for (var column in columns)
columns[column].sortable = true;
- this._dataGrid = new WebInspector.LayoutTimelineDataGrid(this.navigationSidebarTreeOutline, columns);
+ this._dataGrid = new WebInspector.LayoutTimelineDataGrid(null, columns);
this._dataGrid.addEventListener(WebInspector.TimelineDataGrid.Event.FiltersDidChange, this._dataGridFiltersDidChange, this);
this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged, this._dataGridNodeSelected, this);
@@ -84,8 +82,6 @@
this._dataGrid.element.addEventListener("mouseover", this._mouseOverDataGrid.bind(this));
this._dataGrid.element.addEventListener("mouseleave", this._mouseLeaveDataGrid.bind(this));
- this.navigationSidebarTreeOutline.element.addEventListener("mouseover", this._mouseOverTreeOutline.bind(this));
- this.navigationSidebarTreeOutline.element.addEventListener("mouseleave", this._mouseLeaveTreeOutline.bind(this));
this.element.classList.add("layout");
this.addSubview(this._dataGrid);
@@ -97,11 +93,6 @@
// Public
- get navigationSidebarTreeOutlineLabel()
- {
- return WebInspector.UIString("Records");
- }
-
get selectionPathComponents()
{
let dataGridNode = this._dataGrid.selectedNode;
@@ -213,29 +204,27 @@
return;
for (var layoutTimelineRecord of this._pendingRecords) {
- var treeElement = new WebInspector.TimelineRecordTreeElement(layoutTimelineRecord, WebInspector.SourceCodeLocation.NameStyle.Short);
- var dataGridNode = new WebInspector.LayoutTimelineDataGridNode(layoutTimelineRecord, this.zeroTime);
+ let dataGridNode = new WebInspector.LayoutTimelineDataGridNode(layoutTimelineRecord, this.zeroTime);
- this._dataGrid.addRowInSortOrder(treeElement, dataGridNode);
+ this._dataGrid.addRowInSortOrder(null, dataGridNode);
- var stack = [{children: layoutTimelineRecord.children, parentTreeElement: treeElement, index: 0}];
+ let stack = [{children: layoutTimelineRecord.children, parentDataGridNode: dataGridNode, index: 0}];
while (stack.length) {
- var entry = stack.lastValue;
+ let entry = stack.lastValue;
if (entry.index >= entry.children.length) {
stack.pop();
continue;
}
- var childRecord = entry.children[entry.index];
+ let childRecord = entry.children[entry.index];
console.assert(childRecord.type === WebInspector.TimelineRecord.Type.Layout, childRecord);
- var childTreeElement = new WebInspector.TimelineRecordTreeElement(childRecord, WebInspector.SourceCodeLocation.NameStyle.Short);
- var layoutDataGridNode = new WebInspector.LayoutTimelineDataGridNode(childRecord, this.zeroTime);
- console.assert(entry.parentTreeElement, "entry without parent!");
- this._dataGrid.addRowInSortOrder(childTreeElement, layoutDataGridNode, entry.parentTreeElement);
+ let childDataGridNode = new WebInspector.LayoutTimelineDataGridNode(childRecord, this.zeroTime);
+ console.assert(entry.parentDataGridNode, "entry without parent!");
+ this._dataGrid.addRowInSortOrder(null, childDataGridNode, entry.parentDataGridNode);
- if (childTreeElement && childRecord.children.length)
- stack.push({children: childRecord.children, parentTreeElement: childTreeElement, index: 0});
+ if (childDataGridNode && childRecord.children.length)
+ stack.push({children: childRecord.children, parentDataGridNode: childDataGridNode, index: 0});
++entry.index;
}
}
@@ -259,7 +248,7 @@
_dataGridFiltersDidChange(event)
{
- this.timelineSidebarPanel.updateFilter();
+ // FIXME: <https://webkit.org/b/154924> Web Inspector: hook up grid row filtering in the new Timelines UI
}
_dataGridNodeSelected(event)
@@ -317,15 +306,9 @@
if (this._hoveredDataGridNode)
return this._hoveredDataGridNode.record;
- if (this._hoveredTreeElement)
- return this._hoveredTreeElement.record;
+ if (this._dataGrid.selectedNode && this._dataGrid.selectedNode.revealed)
+ return this._dataGrid.selectedNode.record;
- if (this._dataGrid.selectedNode) {
- var treeElement = this._dataGrid.treeElementForDataGridNode(this._dataGrid.selectedNode);
- if (treeElement.revealed())
- return this._dataGrid.selectedNode.record;
- }
-
return null;
}
@@ -344,20 +327,4 @@
this._hoveredDataGridNode = null;
this._updateHighlight();
}
-
- _mouseOverTreeOutline(event)
- {
- var hoveredTreeElement = this.navigationSidebarTreeOutline.treeElementFromNode(event.target);
- if (!hoveredTreeElement)
- return;
-
- this._hoveredTreeElement = hoveredTreeElement;
- this._updateHighlight();
- }
-
- _mouseLeaveTreeOutline(event)
- {
- this._hoveredTreeElement = null;
- this._updateHighlight();
- }
};
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/MemoryTimelineView.js (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/MemoryTimelineView.js 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/MemoryTimelineView.js 2016-03-11 00:49:16 UTC (rev 197974)
@@ -111,11 +111,6 @@
// Public
- get navigationSidebarTreeOutlineLabel()
- {
- return WebInspector.UIString("Records");
- }
-
shown()
{
super.shown();
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js 2016-03-11 00:49:16 UTC (rev 197974)
@@ -609,14 +609,6 @@
this._checkForEmptyFilterResults();
this._updateContentOverflowShadowVisibility();
-
- // Filter may have hidden the selected resource in the timeline view, which should now notify its listeners.
- // FIXME: This is a layering violation. This should at least be in TimelineSidebarPanel.
- if (selectedTreeElement && selectedTreeElement.hidden !== selectionWasHidden) {
- var currentContentView = this.contentBrowser.currentContentView;
- if (currentContentView instanceof WebInspector.TimelineRecordingContentView && typeof currentContentView.currentTimelineView.filterUpdated === "function")
- currentContentView.currentTimelineView.filterUpdated();
- }
}
_treeElementAddedOrChanged(event)
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTimelineView.js (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTimelineView.js 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTimelineView.js 2016-03-11 00:49:16 UTC (rev 197974)
@@ -31,9 +31,6 @@
console.assert(timeline.type === WebInspector.TimelineRecord.Type.Network);
- this.navigationSidebarTreeOutline.disclosureButtons = false;
- this.navigationSidebarTreeOutline.element.classList.add("network");
-
let columns = {name: {}, domain: {}, type: {}, method: {}, scheme: {}, statusCode: {}, cached: {}, size: {}, transferSize: {}, requestSent: {}, latency: {}, duration: {}};
columns.name.title = WebInspector.UIString("Name");
@@ -90,7 +87,7 @@
for (var column in columns)
columns[column].sortable = true;
- this._dataGrid = new WebInspector.TimelineDataGrid(this.navigationSidebarTreeOutline, columns);
+ this._dataGrid = new WebInspector.TimelineDataGrid(null, columns);
this._dataGrid.addEventListener(WebInspector.TimelineDataGrid.Event.FiltersDidChange, this._dataGridFiltersDidChange, this);
this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged, this._dataGridNodeSelected, this);
this._dataGrid.sortColumnIdentifierSetting = new WebInspector.Setting("network-timeline-view-sort", "requestSent");
@@ -102,15 +99,11 @@
timeline.addEventListener(WebInspector.Timeline.Event.RecordAdded, this._networkTimelineRecordAdded, this);
this._pendingRecords = [];
+ this._resourceDataGridNodeMap = new Map;
}
// Public
- get navigationSidebarTreeOutlineLabel()
- {
- return WebInspector.UIString("Resources");
- }
-
get selectionPathComponents()
{
if (!this._dataGrid.selectedNode || this._dataGrid.selectedNode.hidden)
@@ -189,14 +182,6 @@
dataGridNode.revealAndSelect();
}
- treeElementSelected(treeElement, selectedByUser)
- {
- if (this._dataGrid.shouldIgnoreSelectionEvent())
- return;
-
- super.treeElementSelected(treeElement, selectedByUser);
- }
-
layout()
{
this._processPendingRecords();
@@ -209,16 +194,17 @@
if (!this._pendingRecords.length)
return;
- for (var resourceTimelineRecord of this._pendingRecords) {
- // Skip the record if it already exists in the tree.
- var treeElement = this.navigationSidebarTreeOutline.findTreeElement(resourceTimelineRecord.resource);
- if (treeElement)
+ for (let resourceTimelineRecord of this._pendingRecords) {
+ // Skip the record if it already exists in the grid.
+ // FIXME: replace with this._dataGrid.findDataGridNode(resourceTimelineRecord.resource) once <https://webkit.org/b/155305> is fixed.
+ let dataGridNode = this._resourceDataGridNodeMap.get(resourceTimelineRecord.resource);
+ if (dataGridNode)
continue;
- treeElement = new WebInspector.ResourceTreeElement(resourceTimelineRecord.resource);
- var dataGridNode = new WebInspector.ResourceTimelineDataGridNode(resourceTimelineRecord, false, this);
+ dataGridNode = new WebInspector.ResourceTimelineDataGridNode(resourceTimelineRecord, false, this);
+ this._resourceDataGridNodeMap.set(resourceTimelineRecord.resource, dataGridNode);
- this._dataGrid.addRowInSortOrder(treeElement, dataGridNode);
+ this._dataGrid.addRowInSortOrder(null, dataGridNode);
}
this._pendingRecords = [];
@@ -236,7 +222,7 @@
_dataGridFiltersDidChange(event)
{
- this.timelineSidebarPanel.updateFilter();
+ // FIXME: <https://webkit.org/b/154924> Web Inspector: hook up grid row filtering in the new Timelines UI
}
_dataGridNodeSelected(event)
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/OverviewTimelineView.js (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/OverviewTimelineView.js 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/OverviewTimelineView.js 2016-03-11 00:49:16 UTC (rev 197974)
@@ -47,8 +47,6 @@
this._dataGrid = new WebInspector.DataGrid(columns);
this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged, this._dataGridNodeSelected, this);
- this._treeOutlineDataGridSynchronizer = new WebInspector.TreeOutlineDataGridSynchronizer(this.navigationSidebarTreeOutline, this._dataGrid);
-
this._currentTimeMarker = new WebInspector.TimelineMarker(0, WebInspector.TimelineMarker.Type.CurrentTime);
this._timelineRuler.addMarker(this._currentTimeMarker);
@@ -63,15 +61,11 @@
recording.addEventListener(WebInspector.TimelineRecording.Event.Reset, this._recordingReset, this);
this._pendingRepresentedObjects = [];
+ this._resourceDataGridNodeMap = new Map;
}
// Public
- get navigationSidebarTreeOutlineLabel()
- {
- return WebInspector.UIString("Timeline Events");
- }
-
get secondsPerPixel()
{
return this._timelineRuler.secondsPerPixel;
@@ -86,7 +80,6 @@
{
super.shown();
- this._treeOutlineDataGridSynchronizer.synchronize();
this._timelineRuler.updateLayout(WebInspector.View.LayoutReason.Resize);
}
@@ -98,23 +91,19 @@
get selectionPathComponents()
{
- var dataGridNode = this._dataGrid.selectedNode;
- if (!dataGridNode)
+ let dataGridNode = this._dataGrid.selectedNode;
+ if (!dataGridNode || dataGridNode.hidden)
return null;
- var pathComponents = [];
+ let pathComponents = [];
while (dataGridNode && !dataGridNode.root) {
- var treeElement = this._treeOutlineDataGridSynchronizer.treeElementForDataGridNode(dataGridNode);
- console.assert(treeElement);
- if (!treeElement)
- break;
-
- if (treeElement.hidden)
+ console.assert(dataGridNode instanceof WebInspector.TimelineDataGridNode);
+ if (dataGridNode.hidden)
return null;
- var pathComponent = new WebInspector.GeneralTreeElementPathComponent(treeElement);
- pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected, this.treeElementPathComponentSelected, this);
+ let pathComponent = new WebInspector.TimelineDataGridNodePathComponent(dataGridNode);
+ pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected, this.dataGridNodePathComponentSelected, this);
pathComponents.unshift(pathComponent);
dataGridNode = dataGridNode.parent;
}
@@ -131,11 +120,11 @@
// Protected
- treeElementPathComponentSelected(event)
+ dataGridNodePathComponentSelected(event)
{
- var dataGridNode = this._treeOutlineDataGridSynchronizer.dataGridNodeForTreeElement(event.data.pathComponent.generalTreeElement);
- if (!dataGridNode)
- return;
+ let dataGridNode = event.data.pathComponent.timelineDataGridNode;
+ console.assert(dataGridNode.dataGrid === this._dataGrid);
+
dataGridNode.revealAndSelect();
}
@@ -193,127 +182,92 @@
// Private
- _compareTreeElementsByDetails(a, b)
+ _compareDataGridNodesByStartTime(a, b)
{
- if (a instanceof WebInspector.SourceCodeTimelineTreeElement && b instanceof WebInspector.ResourceTreeElement)
- return -1;
-
- if (a instanceof WebInspector.ResourceTreeElement && b instanceof WebInspector.SourceCodeTimelineTreeElement)
- return 1;
-
- if (a instanceof WebInspector.SourceCodeTimelineTreeElement && b instanceof WebInspector.SourceCodeTimelineTreeElement) {
- var aTimeline = a.sourceCodeTimeline;
- var bTimeline = b.sourceCodeTimeline;
-
- if (!aTimeline.sourceCodeLocation && !bTimeline.sourceCodeLocation) {
- if (aTimeline.recordType !== bTimeline.recordType)
- return aTimeline.recordType.localeCompare(bTimeline.recordType);
-
- return a.mainTitle.localeCompare(b.mainTitle);
- }
-
- if (!aTimeline.sourceCodeLocation || !bTimeline.sourceCodeLocation)
- return !!aTimeline.sourceCodeLocation - !!bTimeline.sourceCodeLocation;
-
- if (aTimeline.sourceCodeLocation.lineNumber !== bTimeline.sourceCodeLocation.lineNumber)
- return aTimeline.sourceCodeLocation.lineNumber - bTimeline.sourceCodeLocation.lineNumber;
-
- return aTimeline.sourceCodeLocation.columnNumber - bTimeline.sourceCodeLocation.columnNumber;
- }
-
- // Fallback to comparing by start time for ResourceTreeElement or anything else.
- return this._compareTreeElementsByStartTime(a, b);
- }
-
- _compareTreeElementsByStartTime(a, b)
- {
- function getStartTime(treeElement)
+ function getStartTime(dataGridNode)
{
- if (treeElement instanceof WebInspector.ResourceTreeElement)
- return treeElement.resource.firstTimestamp;
- if (treeElement instanceof WebInspector.SourceCodeTimelineTreeElement)
- return treeElement.sourceCodeTimeline.startTime;
+ if (dataGridNode instanceof WebInspector.ResourceTimelineDataGridNode)
+ return dataGridNode.resource.firstTimestamp;
+ if (dataGridNode instanceof WebInspector.SourceCodeTimelineTimelineDataGridNode)
+ return dataGridNode.sourceCodeTimeline.startTime;
- console.error("Unknown tree element.");
+ console.error("Unknown data grid node.", dataGridNode);
return 0;
}
- var result = getStartTime(a) - getStartTime(b);
+ let result = getStartTime(a) - getStartTime(b);
if (result)
return result;
// Fallback to comparing titles.
- return a.mainTitle.localeCompare(b.mainTitle);
+ return a.displayName().localeCompare(b.displayName());
}
- _insertTreeElement(treeElement, parentTreeElement)
+ _insertDataGridNode(dataGridNode, parentDataGridNode)
{
- console.assert(treeElement);
- console.assert(!treeElement.parent);
- console.assert(parentTreeElement);
+ console.assert(dataGridNode);
+ console.assert(!dataGridNode.parent);
- parentTreeElement.insertChild(treeElement, insertionIndexForObjectInListSortedByFunction(treeElement, parentTreeElement.children, this._compareTreeElementsByStartTime.bind(this)));
+ if (parentDataGridNode)
+ parentDataGridNode.insertChild(dataGridNode, insertionIndexForObjectInListSortedByFunction(dataGridNode, parentDataGridNode.children, this._compareDataGridNodesByStartTime.bind(this)));
+ else
+ this._dataGrid.appendChild(dataGridNode);
}
- _addResourceToTreeIfNeeded(resource)
+ _addResourceToDataGridIfNeeded(resource)
{
console.assert(resource);
if (!resource)
return null;
- var treeElement = this.navigationSidebarTreeOutline.findTreeElement(resource);
- if (treeElement)
- return treeElement;
+ // FIXME: replace with this._dataGrid.findDataGridNode(resource) once <https://webkit.org/b/155305> is fixed.
+ let dataGridNode = this._resourceDataGridNodeMap.get(resource);
+ if (dataGridNode)
+ return dataGridNode;
- var parentFrame = resource.parentFrame;
+ let parentFrame = resource.parentFrame;
if (!parentFrame)
return;
- var expandedByDefault = false;
+ let resourceTimelineRecord = this._networkTimeline ? this._networkTimeline.recordForResource(resource) : null;
+ if (!resourceTimelineRecord)
+ resourceTimelineRecord = new WebInspector.ResourceTimelineRecord(resource);
+
+ let resourceDataGridNode = new WebInspector.ResourceTimelineDataGridNode(resourceTimelineRecord, true, this);
+ this._resourceDataGridNodeMap.set(resource, resourceDataGridNode);
+
+ let expandedByDefault = false;
if (parentFrame.mainResource === resource || parentFrame.provisionalMainResource === resource) {
parentFrame = parentFrame.parentFrame;
expandedByDefault = !parentFrame; // Main frame expands by default.
}
- var resourceTreeElement = new WebInspector.ResourceTreeElement(resource);
if (expandedByDefault)
- resourceTreeElement.expand();
+ resourceDataGridNode.expand();
- var resourceTimelineRecord = this._networkTimeline ? this._networkTimeline.recordForResource(resource) : null;
- if (!resourceTimelineRecord)
- resourceTimelineRecord = new WebInspector.ResourceTimelineRecord(resource);
-
- var resourceDataGridNode = new WebInspector.ResourceTimelineDataGridNode(resourceTimelineRecord, true, this);
- this._treeOutlineDataGridSynchronizer.associate(resourceTreeElement, resourceDataGridNode);
-
- var parentTreeElement = this.navigationSidebarTreeOutline;
+ let parentDataGridNode = null;
if (parentFrame) {
// Find the parent main resource, adding it if needed, to append this resource as a child.
- var parentResource = parentFrame.provisionalMainResource || parentFrame.mainResource;
+ let parentResource = parentFrame.provisionalMainResource || parentFrame.mainResource;
- parentTreeElement = this._addResourceToTreeIfNeeded(parentResource);
- console.assert(parentTreeElement);
- if (!parentTreeElement)
+ parentDataGridNode = this._addResourceToDataGridIfNeeded(parentResource);
+ console.assert(parentDataGridNode);
+ if (!parentDataGridNode)
return;
}
- this._insertTreeElement(resourceTreeElement, parentTreeElement);
+ this._insertDataGridNode(resourceDataGridNode, parentDataGridNode);
- return resourceTreeElement;
+ return resourceDataGridNode;
}
_addSourceCodeTimeline(sourceCodeTimeline)
{
- var parentTreeElement = sourceCodeTimeline.sourceCodeLocation ? this._addResourceToTreeIfNeeded(sourceCodeTimeline.sourceCode) : this.navigationSidebarTreeOutline;
- console.assert(parentTreeElement);
- if (!parentTreeElement)
- return;
+ let parentDataGridNode = sourceCodeTimeline.sourceCodeLocation ? this._addResourceToDataGridIfNeeded(sourceCodeTimeline.sourceCode) : null;
+ let sourceCodeTimelineDataGridNode = new WebInspector.SourceCodeTimelineTimelineDataGridNode(sourceCodeTimeline, this);
+ this._resourceDataGridNodeMap.set(sourceCodeTimeline, sourceCodeTimelineDataGridNode);
- var sourceCodeTimelineTreeElement = new WebInspector.SourceCodeTimelineTreeElement(sourceCodeTimeline);
- var sourceCodeTimelineDataGridNode = new WebInspector.SourceCodeTimelineTimelineDataGridNode(sourceCodeTimeline, this);
-
- this._treeOutlineDataGridSynchronizer.associate(sourceCodeTimelineTreeElement, sourceCodeTimelineDataGridNode);
- this._insertTreeElement(sourceCodeTimelineTreeElement, parentTreeElement);
+ this._insertDataGridNode(sourceCodeTimelineDataGridNode, parentDataGridNode);
}
_processPendingRepresentedObjects()
@@ -323,7 +277,7 @@
for (var representedObject of this._pendingRepresentedObjects) {
if (representedObject instanceof WebInspector.Resource)
- this._addResourceToTreeIfNeeded(representedObject);
+ this._addResourceToDataGridIfNeeded(representedObject);
else if (representedObject instanceof WebInspector.SourceCodeTimeline)
this._addSourceCodeTimeline(representedObject);
else
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineView.js (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineView.js 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineView.js 2016-03-11 00:49:16 UTC (rev 197974)
@@ -31,8 +31,6 @@
console.assert(WebInspector.TimelineRecord.Type.RenderingFrame);
- this.navigationSidebarTreeOutline.element.classList.add("rendering-frame");
-
var scopeBarItems = [];
for (var key in WebInspector.RenderingFrameTimelineView.DurationFilter) {
var value = WebInspector.RenderingFrameTimelineView.DurationFilter[key];
@@ -78,7 +76,7 @@
for (var column in columns)
columns[column].sortable = true;
- this._dataGrid = new WebInspector.TimelineDataGrid(this.navigationSidebarTreeOutline, columns, this);
+ this._dataGrid = new WebInspector.TimelineDataGrid(null, columns, this);
this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged, this._dataGridNodeSelected, this);
this._dataGrid.sortColumnIdentifierSetting = new WebInspector.Setting("rendering-frame-timeline-view-sort", "startTime");
this._dataGrid.sortOrderSetting = new WebInspector.Setting("rendering-frame-timeline-view-sort-order", WebInspector.DataGrid.SortOrder.Ascending);
@@ -109,11 +107,6 @@
// Public
- get navigationSidebarTreeOutlineLabel()
- {
- return WebInspector.UIString("Records");
- }
-
shown()
{
super.shown();
@@ -138,23 +131,19 @@
get selectionPathComponents()
{
- var dataGridNode = this._dataGrid.selectedNode;
- if (!dataGridNode)
+ let dataGridNode = this._dataGrid.selectedNode;
+ if (!dataGridNode || dataGridNode.hidden)
return null;
- var pathComponents = [];
+ let pathComponents = [];
while (dataGridNode && !dataGridNode.root) {
- var treeElement = this._dataGrid.treeElementForDataGridNode(dataGridNode);
- console.assert(treeElement);
- if (!treeElement)
- break;
-
- if (treeElement.hidden)
+ console.assert(dataGridNode instanceof WebInspector.TimelineDataGridNode);
+ if (dataGridNode.hidden)
return null;
- var pathComponent = new WebInspector.GeneralTreeElementPathComponent(treeElement);
- pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected, this.treeElementPathComponentSelected, this);
+ let pathComponent = new WebInspector.TimelineDataGridNodePathComponent(dataGridNode);
+ pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected, this.dataGridNodePathComponentSelected, this);
pathComponents.unshift(pathComponent);
dataGridNode = dataGridNode.parent;
}
@@ -209,28 +198,11 @@
super.showContentViewForTreeElement(treeElement);
}
- treeElementDeselected(treeElement)
+ dataGridNodePathComponentSelected(event)
{
- var dataGridNode = this._dataGrid.dataGridNodeForTreeElement(treeElement);
- if (!dataGridNode)
- return;
+ let dataGridNode = event.data.pathComponent.timelineDataGridNode;
+ console.assert(dataGridNode.dataGrid === this._dataGrid);
- dataGridNode.deselect();
- }
-
- treeElementSelected(treeElement, selectedByUser)
- {
- if (this._dataGrid.shouldIgnoreSelectionEvent())
- return;
-
- super.treeElementSelected(treeElement, selectedByUser);
- }
-
- treeElementPathComponentSelected(event)
- {
- var dataGridNode = this._dataGrid.dataGridNodeForTreeElement(event.data.pathComponent.generalTreeElement);
- if (!dataGridNode)
- return;
dataGridNode.revealAndSelect();
}
@@ -253,54 +225,45 @@
if (!this._pendingRecords.length)
return;
- for (var renderingFrameTimelineRecord of this._pendingRecords) {
+ for (let renderingFrameTimelineRecord of this._pendingRecords) {
console.assert(renderingFrameTimelineRecord instanceof WebInspector.RenderingFrameTimelineRecord);
- var treeElement = new WebInspector.TimelineRecordTreeElement(renderingFrameTimelineRecord);
- var dataGridNode = new WebInspector.RenderingFrameTimelineDataGridNode(renderingFrameTimelineRecord, this.zeroTime);
- this._dataGrid.addRowInSortOrder(treeElement, dataGridNode);
+ let dataGridNode = new WebInspector.RenderingFrameTimelineDataGridNode(renderingFrameTimelineRecord, this.zeroTime);
+ this._dataGrid.addRowInSortOrder(null, dataGridNode);
- var stack = [{children: renderingFrameTimelineRecord.children, parentTreeElement: treeElement, index: 0}];
+ let stack = [{children: renderingFrameTimelineRecord.children, parentDataGridNode: dataGridNode, index: 0}];
while (stack.length) {
- var entry = stack.lastValue;
+ let entry = stack.lastValue;
if (entry.index >= entry.children.length) {
stack.pop();
continue;
}
- var childRecord = entry.children[entry.index];
- var childTreeElement = null;
+ let childRecord = entry.children[entry.index];
+ let childDataGridNode = null;
if (childRecord.type === WebInspector.TimelineRecord.Type.Layout) {
- childTreeElement = new WebInspector.TimelineRecordTreeElement(childRecord, WebInspector.SourceCodeLocation.NameStyle.Short);
- if (childRecord.width && childRecord.height) {
- let subtitle = document.createElement("span");
- subtitle.textContent = WebInspector.UIString("%d \u2A09 %d").format(childRecord.width, childRecord.height);
- childTreeElement.subtitle = subtitle;
- }
- var layoutDataGridNode = new WebInspector.LayoutTimelineDataGridNode(childRecord, this.zeroTime);
+ childDataGridNode = new WebInspector.LayoutTimelineDataGridNode(childRecord, this.zeroTime);
- this._dataGrid.addRowInSortOrder(childTreeElement, layoutDataGridNode, entry.parentTreeElement);
+ this._dataGrid.addRowInSortOrder(null, childDataGridNode, entry.parentDataGridNode);
} else if (childRecord.type === WebInspector.TimelineRecord.Type.Script) {
- var rootNodes = [];
+ let rootNodes = [];
if (childRecord.profile) {
// FIXME: Support using the bottom-up tree once it is implemented.
rootNodes = childRecord.profile.topDownRootNodes;
}
- childTreeElement = new WebInspector.TimelineRecordTreeElement(childRecord, WebInspector.SourceCodeLocation.NameStyle.Short, rootNodes.length);
- var scriptDataGridNode = new WebInspector.ScriptTimelineDataGridNode(childRecord, this.zeroTime);
+ childDataGridNode = new WebInspector.ScriptTimelineDataGridNode(childRecord, this.zeroTime);
- this._dataGrid.addRowInSortOrder(childTreeElement, scriptDataGridNode, entry.parentTreeElement);
+ this._dataGrid.addRowInSortOrder(null, childDataGridNode, entry.parentDataGridNode);
- for (var profileNode of rootNodes) {
- var profileNodeTreeElement = new WebInspector.ProfileNodeTreeElement(profileNode, this);
- var profileNodeDataGridNode = new WebInspector.ProfileNodeDataGridNode(profileNode, this.zeroTime, this.startTime, this.endTime);
- this._dataGrid.addRowInSortOrder(profileNodeTreeElement, profileNodeDataGridNode, childTreeElement);
+ for (let profileNode of rootNodes) {
+ let profileNodeDataGridNode = new WebInspector.ProfileNodeDataGridNode(profileNode, this.zeroTime, this.startTime, this.endTime);
+ this._dataGrid.addRowInSortOrder(null, profileNodeDataGridNode, childDataGridNode);
}
}
- if (childTreeElement && childRecord.children.length)
- stack.push({children: childRecord.children, parentTreeElement: childTreeElement, index: 0});
+ if (childDataGridNode && childRecord.children.length)
+ stack.push({children: childRecord.children, parentDataGridNode: childDataGridNode, index: 0});
++entry.index;
}
}
@@ -326,7 +289,7 @@
_scopeBarSelectionDidChange(event)
{
- this.timelineSidebarPanel.updateFilter();
+ // FIXME: <https://webkit.org/b/154924> Web Inspector: hook up grid row filtering in the new Timelines UI
}
};
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ScriptClusterTimelineView.js (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/ScriptClusterTimelineView.js 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ScriptClusterTimelineView.js 2016-03-11 00:49:16 UTC (rev 197974)
@@ -31,8 +31,6 @@
console.assert(timeline.type === WebInspector.TimelineRecord.Type.Script);
- this._extraArguments = extraArguments;
-
this._currentContentViewSetting = new WebInspector.Setting("script-cluster-timeline-view-current-view", WebInspector.ScriptClusterTimelineView.EventsIdentifier);
let showSelectorArrows = this._canShowProfileView();
@@ -52,8 +50,8 @@
}
// FIXME: We should be able to create these lazily.
- this._eventsContentView = new WebInspector.ScriptDetailsTimelineView(this.representedObject, this._extraArguments);
- this._profileContentView = this._canShowProfileView() ? new WebInspector.ScriptProfileTimelineView(this.representedObject, this._extraArguments) : null;
+ this._eventsContentView = new WebInspector.ScriptDetailsTimelineView(this.representedObject, extraArguments);
+ this._profileContentView = this._canShowProfileView() ? new WebInspector.ScriptProfileTimelineView(this.representedObject, extraArguments) : null;
this._showContentViewForIdentifier(this._currentContentViewSetting.value);
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ScriptDetailsTimelineView.js (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/ScriptDetailsTimelineView.js 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ScriptDetailsTimelineView.js 2016-03-11 00:49:16 UTC (rev 197974)
@@ -31,8 +31,6 @@
console.assert(timeline.type === WebInspector.TimelineRecord.Type.Script);
- this.navigationSidebarTreeOutline.element.classList.add("script");
-
let columns = {name: {}, location: {}, callCount: {}, startTime: {}, totalTime: {}, selfTime: {}, averageTime: {}};
columns.name.title = WebInspector.UIString("Name");
@@ -73,7 +71,7 @@
for (var column in columns)
columns[column].sortable = true;
- this._dataGrid = new WebInspector.ScriptTimelineDataGrid(this.navigationSidebarTreeOutline, columns, this);
+ this._dataGrid = new WebInspector.ScriptTimelineDataGrid(null, columns, this);
this._dataGrid.addEventListener(WebInspector.TimelineDataGrid.Event.FiltersDidChange, this._dataGridFiltersDidChange, this);
this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged, this._dataGridNodeSelected, this);
this._dataGrid.sortColumnIdentifierSetting = new WebInspector.Setting("script-timeline-view-sort", "startTime");
@@ -90,11 +88,6 @@
// Public
- get navigationSidebarTreeOutlineLabel()
- {
- return WebInspector.UIString("Records");
- }
-
shown()
{
super.shown();
@@ -180,34 +173,6 @@
dataGridNode.revealAndSelect();
}
- treeElementSelected(treeElement, selectedByUser)
- {
- if (this._dataGrid.shouldIgnoreSelectionEvent())
- return;
-
- super.treeElementSelected(treeElement, selectedByUser);
- }
-
- dataGridNodeForTreeElement(treeElement)
- {
- if (treeElement instanceof WebInspector.ProfileNodeTreeElement)
- return new WebInspector.ProfileNodeDataGridNode(treeElement.profileNode, this.zeroTime, this.startTime, this.endTime);
- return null;
- }
-
- populateProfileNodeTreeElement(treeElement)
- {
- var zeroTime = this.zeroTime;
- var startTime = this.startTime;
- var endTime = this.endTime;
-
- for (var childProfileNode of treeElement.profileNode.childNodes) {
- var profileNodeTreeElement = new WebInspector.ProfileNodeTreeElement(childProfileNode, this);
- var profileNodeDataGridNode = new WebInspector.ProfileNodeDataGridNode(childProfileNode, zeroTime, startTime, endTime);
- this._dataGrid.addRowInSortOrder(profileNodeTreeElement, profileNodeDataGridNode, treeElement);
- }
- }
-
layout()
{
if (this.startTime !== this._oldStartTime || this.endTime !== this._oldEndTime) {
@@ -240,22 +205,19 @@
let startTime = this.startTime;
let endTime = this.endTime;
- for (var scriptTimelineRecord of this._pendingRecords) {
- var rootNodes = [];
+ for (let scriptTimelineRecord of this._pendingRecords) {
+ let rootNodes = [];
if (scriptTimelineRecord.profile) {
// FIXME: Support using the bottom-up tree once it is implemented.
rootNodes = scriptTimelineRecord.profile.topDownRootNodes;
}
- var treeElement = new WebInspector.TimelineRecordTreeElement(scriptTimelineRecord, WebInspector.SourceCodeLocation.NameStyle.Short, true);
- var dataGridNode = new WebInspector.ScriptTimelineDataGridNode(scriptTimelineRecord, zeroTime);
+ let dataGridNode = new WebInspector.ScriptTimelineDataGridNode(scriptTimelineRecord, zeroTime);
+ this._dataGrid.addRowInSortOrder(null, dataGridNode);
- this._dataGrid.addRowInSortOrder(treeElement, dataGridNode);
-
- for (var profileNode of rootNodes) {
- var profileNodeTreeElement = new WebInspector.ProfileNodeTreeElement(profileNode, this);
- var profileNodeDataGridNode = new WebInspector.ProfileNodeDataGridNode(profileNode, zeroTime, startTime, endTime);
- this._dataGrid.addRowInSortOrder(profileNodeTreeElement, profileNodeDataGridNode, treeElement);
+ for (let profileNode of rootNodes) {
+ let profileNodeDataGridNode = new WebInspector.ProfileNodeDataGridNode(profileNode, zeroTime, startTime, endTime);
+ this._dataGrid.addRowInSortOrder(null, profileNodeDataGridNode, dataGridNode);
}
}
@@ -279,7 +241,7 @@
_dataGridFiltersDidChange(event)
{
- this.timelineSidebarPanel.updateFilter();
+ // FIXME: <https://webkit.org/b/154924> Web Inspector: hook up grid row filtering in the new Timelines UI
}
_dataGridNodeSelected(event)
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js 2016-03-11 00:49:16 UTC (rev 197974)
@@ -153,29 +153,9 @@
return true;
}
- addRowInSortOrder(treeElement, dataGridNode, parentElement)
- {
- this._treeOutlineDataGridSynchronizer.associate(treeElement, dataGridNode);
-
- parentElement = parentElement || this._treeOutlineDataGridSynchronizer.treeOutline;
- var parentNode = parentElement.root ? this : this._treeOutlineDataGridSynchronizer.dataGridNodeForTreeElement(parentElement);
-
- console.assert(parentNode);
-
- if (this.sortColumnIdentifier) {
- var insertionIndex = insertionIndexForObjectInListSortedByFunction(dataGridNode, parentNode.children, this._sortComparator.bind(this));
-
- // Insert into the parent, which will cause the synchronizer to insert into the data grid.
- parentElement.insertChild(treeElement, insertionIndex);
- } else {
- // Append to the parent, which will cause the synchronizer to append to the data grid.
- parentElement.appendChild(treeElement);
- }
- }
-
addRowInSortOrder(treeElement, dataGridNode, parentTreeElementOrDataGridNode)
{
- let parentDataGridNode = parentTreeElementOrDataGridNode || this;
+ let parentDataGridNode;
let childElement = dataGridNode;
if (treeElement) {
@@ -192,6 +172,9 @@
parentTreeElementOrDataGridNode = parentTreeElement;
childElement = treeElement;
+ } else {
+ parentTreeElementOrDataGridNode = parentTreeElementOrDataGridNode || this;
+ parentDataGridNode = parentTreeElementOrDataGridNode;
}
if (this.sortColumnIdentifier) {
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js 2016-03-11 00:49:16 UTC (rev 197974)
@@ -26,15 +26,11 @@
WebInspector.TimelineRecordingContentView = class TimelineRecordingContentView extends WebInspector.ContentView
{
- constructor(recording, extraArguments)
+ constructor(recording)
{
- console.assert(extraArguments);
- console.assert(extraArguments.timelineSidebarPanel instanceof WebInspector.TimelineSidebarPanel);
-
super(recording);
this._recording = recording;
- this._timelineSidebarPanel = extraArguments.timelineSidebarPanel;
this.element.classList.add("timeline-recording");
@@ -61,7 +57,7 @@
this._clearTimelineNavigationItem = new WebInspector.ButtonNavigationItem("clear-timeline", WebInspector.UIString("Clear Timeline"), "Images/NavigationItemTrash.svg", 15, 15);
this._clearTimelineNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._clearTimeline, this);
- this._overviewTimelineView = new WebInspector.OverviewTimelineView(recording, {timelineSidebarPanel: this._timelineSidebarPanel});
+ this._overviewTimelineView = new WebInspector.OverviewTimelineView(recording);
this._overviewTimelineView.secondsPerPixel = this._timelineOverview.secondsPerPixel;
this._timelineViewMap = new Map;
@@ -343,7 +339,7 @@
iconClassName = WebInspector.TimelineTabContentView.iconClassNameForTimeline(representedObject);
title = WebInspector.UIString("Details");
} else {
- iconClassName = "stopwatch-icon";
+ iconClassName = WebInspector.TimelineTabContentView.StopwatchIconStyleClass;
title = WebInspector.UIString("Overview");
}
@@ -383,10 +379,7 @@
this._timelineOverview.viewMode = newViewMode;
- if (timelineView instanceof WebInspector.TimelineView) {
- this._timelineSidebarPanel.contentTreeOutline = timelineView.navigationSidebarTreeOutline;
- this._timelineSidebarPanel.contentTreeOutlineLabel = timelineView.navigationSidebarTreeOutlineLabel;
-
+ if (timelineView) {
this._updateTimelineViewSelection(timelineView);
timelineView.currentTime = this._currentTime;
@@ -403,7 +396,6 @@
_pathComponentSelected(event)
{
- this._timelineSidebarPanel.showTimelineViewForTimeline(event.data.pathComponent.representedObject);
}
_timeRangePathComponentSelected(event)
@@ -498,7 +490,8 @@
if (this._timelineOverview.timelineRuler.entireRangeSelected)
this._updateTimelineViewSelection(this._overviewTimelineView);
- this._timelineSidebarPanel.updateFilter();
+ // Filter records on new recording times.
+ // FIXME: <https://webkit.org/b/154924> Web Inspector: hook up grid row filtering in the new Timelines UI
// Force a layout now since we are already in an animation frame and don't need to delay it until the next.
this._timelineOverview.updateLayoutIfNeeded();
@@ -620,7 +613,7 @@
let timeline = this._recording.timelineForInstrument(instrument);
console.assert(!this._timelineViewMap.has(timeline), timeline);
- this._timelineViewMap.set(timeline, WebInspector.ContentView.createFromRepresentedObject(timeline, {timelineSidebarPanel: this._timelineSidebarPanel, recording: this._recording}));
+ this._timelineViewMap.set(timeline, WebInspector.ContentView.createFromRepresentedObject(timeline, {recording: this._recording}));
if (timeline.type === WebInspector.TimelineRecord.Type.RenderingFrame)
this._renderingFrameTimeline = timeline;
@@ -728,7 +721,8 @@
var selectedTreeElement = this.currentTimelineView && this.currentTimelineView.navigationSidebarTreeOutline ? this.currentTimelineView.navigationSidebarTreeOutline.selectedTreeElement : null;
var selectionWasHidden = selectedTreeElement && selectedTreeElement.hidden;
- this._timelineSidebarPanel.updateFilter();
+ // Filter records on new timeline selection.
+ // FIXME: <https://webkit.org/b/154924> Web Inspector: hook up grid row filtering in the new Timelines UI
if (selectedTreeElement && selectedTreeElement.hidden !== selectionWasHidden)
this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);
Deleted: trunk/Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.css (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.css 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.css 2016-03-11 00:49:16 UTC (rev 197974)
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-.sidebar > .panel.navigation.timeline > .navigation-bar > .item.record-start-stop {
- /* Workaround for background image clipping issue on non-retina machines. See http://webkit.org/b/147346. */
- filter: brightness(100%);
-}
-
-.sidebar > .panel.navigation.timeline > .navigation-bar > .item.record-start-stop:hover {
- filter: brightness(95%);
-}
-
-.sidebar > .panel.navigation.timeline > .navigation-bar > .item.record-start-stop:active {
- filter: brightness(80%);
-}
-
-.sidebar > .panel.navigation.timeline > .navigation-bar > .item.record-start-stop * {
- pointer-events: none;
-}
-
-.sidebar > .panel.navigation.timeline > .navigation-bar > .item.flexible-space {
- justify-content: center;
-
- line-height: 20px;
- font-weight: bold;
-
- color: hsl(0, 0%, 29%);
- text-shadow: hsla(0, 0%, 100%, 0.5) 0 1px 0;
-}
-
-.sidebar > .panel.navigation.timeline > .title-bar {
- position: absolute;
- left: 0;
- right: 0;
-
- height: 29px;
-
- border-bottom: 1px solid var(--border-color);
- background-color: var(--panel-background-color);
- color: hsl(0, 0%, 22%);
-
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-
- font-weight: bold;
-
- padding: 4px 9px;
-
- white-space: nowrap;
- overflow: hidden;
-}
-
-.sidebar > .panel.navigation.timeline > .title-bar.timelines {
- top: 29px;
- padding: 8px 9px;
-}
-
-.sidebar > .panel.navigation.timeline > .navigation-bar-container {
- position: absolute;
- top: 29px;
- left: 0;
- right: 0;
-}
-
-.sidebar > .panel.navigation.timeline > .navigation-bar-container > .navigation-bar {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- align-content: center;
-}
-
-.sidebar > .panel.navigation.timeline > .title-bar.timeline-events {
- display: flex;
- height: 23px;
- border-top: 1px solid var(--border-color);
-}
-
-.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-bar {
- position: absolute;
- top: 2px;
- right: 0;
- font-weight: normal;
-}
-
-.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-bar > .default-item-selected > .multiple {
- background-color: transparent;
- color: black;
-}
-
-.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-bar > .default-item-selected > .multiple .arrows {
- color: black;
-}
-
-.sidebar > .panel.navigation.timeline > .timelines-content {
- position: absolute;
- top: 58px;
- left: 0;
- right: 0;
-
- overflow: hidden;
-}
-
-.sidebar > .panel.navigation.timeline > .timelines-content .close-button {
- width: 14px;
-
- visibility: hidden;
-}
-
-.sidebar > .panel.navigation.timeline > .timelines-content li.item .icon {
- width: 24px;
- height: 24px;
- margin-top: 5px;
-}
-
-.sidebar > .panel.navigation.timeline > .timelines-content li.item.selected .close-button {
- visibility: visible;
-}
-
-.sidebar > .panel.navigation.timeline > .timelines-content li.item:not(.selected):nth-child(even) {
- background-color: hsla(0, 0%, 0%, 0.03);
- background-clip: padding-box;
-}
-
-.sidebar > .panel.navigation.timeline > .timelines-content li.item:not(.selected):not(:first-child) {
- border-top: 1px solid hsla(0, 0%, 0%, 0.09);
-}
-
-.sidebar > .panel.navigation.timeline > .timelines-content li.item.selected + li.item {
- border-top-color: hsl(0, 0%, 83%);
-}
-
-body.window-inactive .sidebar > .panel.navigation.timeline > .timelines-content li.item.selected + li.item {
- border-top-color: hsl(0, 0%, 83%);
-}
-
-.sidebar > .panel.navigation.timeline > .timelines-content :focus li.item.selected + li.item {
- border-top-color: hsl(209, 100%, 49%);
-}
-
-.sidebar > .panel.navigation.timeline > .content,
-.sidebar > .panel.navigation.timeline > .empty-content-placeholder {
- top: 189px;
-}
-
-.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing > .content {
- /* This hides the scrollbar. The view shows a scrollbar, we don't need two. */
- padding-right: 16px;
- right: -16px;
-}
-
-.sidebar > .panel.navigation.timeline .item:not(:hover, .selected) .status .status-button,
-.sidebar > .panel.navigation.timeline .item:hover:not(.selected) .status .close.status-button {
- display: none;
-}
-
-.sidebar > .panel.navigation.timeline:not(.timeline-recording-content-view-showing) .status .go-to-arrow.status-button {
- display: none;
-}
-
-.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing .status .close.status-button {
- display: none;
-}
-
-.sidebar > .panel.navigation.timeline > .timelines-content > .details-section > div.header {
- display: none;
-}
-
-.sidebar > .panel.navigation.timeline > .timelines-content > .details-section > .content > .group > .row.chart {
- height: 108px;
-}
-
-.sidebar > .panel.navigation.timeline > .timelines-content > .details-section > .content > .group > .row.chart > .chart-content > .chart {
- width: 76px;
- height: 76px;
-}
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TimelineTabContentView.js (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/TimelineTabContentView.js 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TimelineTabContentView.js 2016-03-11 00:49:16 UTC (rev 197974)
@@ -33,10 +33,6 @@
super(identifier || "timeline", "timeline", tabBarItem, WebInspector.TimelineSidebarPanel, detailsSidebarPanels);
- // FIXME: Remove these when the TimelineSidebarPanel is removed. https://bugs.webkit.org/show_bug.cgi?id=154973
- this.contentBrowser.navigationBar.removeNavigationItem(this._showNavigationSidebarItem);
- this.navigationSidebarPanel.hide();
-
// Maintain an invisible tree outline containing tree elements for all recordings.
// The visible recording's tree element is selected when the content view changes.
this._recordingTreeElementMap = new Map;
@@ -423,7 +419,7 @@
{
console.assert(recording instanceof WebInspector.TimelineRecording, recording);
- let recordingTreeElement = new WebInspector.GeneralTreeElement(WebInspector.TimelineSidebarPanel.StopwatchIconStyleClass, recording.displayName, null, recording);
+ let recordingTreeElement = new WebInspector.GeneralTreeElement(WebInspector.TimelineTabContentView.StopwatchIconStyleClass, recording.displayName, null, recording);
this._recordingTreeElementMap.set(recording, recordingTreeElement);
this._recordingsTreeOutline.appendChild(recordingTreeElement);
}
@@ -555,3 +551,4 @@
WebInspector.TimelineTabContentView.ShowingTimelineRecordingContentViewCookieKey = "timeline-sidebar-panel-showing-timeline-recording-content-view";
WebInspector.TimelineTabContentView.SelectedTimelineViewIdentifierCookieKey = "timeline-sidebar-panel-selected-timeline-view-identifier";
WebInspector.TimelineTabContentView.OverviewTimelineIdentifierCookieValue = "overview";
+WebInspector.TimelineTabContentView.StopwatchIconStyleClass = "stopwatch-icon";
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TimelineView.js (197973 => 197974)
--- trunk/Source/WebInspectorUI/UserInterface/Views/TimelineView.js 2016-03-11 00:47:31 UTC (rev 197973)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TimelineView.js 2016-03-11 00:49:16 UTC (rev 197974)
@@ -26,22 +26,13 @@
WebInspector.TimelineView = class TimelineView extends WebInspector.ContentView
{
- constructor(representedObject, extraArguments)
+ constructor(representedObject)
{
- console.assert(extraArguments);
- console.assert(extraArguments.timelineSidebarPanel instanceof WebInspector.TimelineSidebarPanel);
-
super(representedObject);
// This class should not be instantiated directly. Create a concrete subclass instead.
console.assert(this.constructor !== WebInspector.TimelineView && this instanceof WebInspector.TimelineView);
- this._timelineSidebarPanel = extraArguments.timelineSidebarPanel;
-
- this._contentTreeOutline = this._timelineSidebarPanel.createContentTreeOutline();
- this._contentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange, this._treeSelectionDidChange, this);
- this._contentTreeOutline.__canShowContentViewForTreeElement = this.canShowContentViewForTreeElement.bind(this);
-
this.element.classList.add("timeline-view");
this._zeroTime = 0;
@@ -52,32 +43,11 @@
// Public
- get navigationItems()
- {
- return this._scopeBar ? [this._scopeBar] : [];
- }
-
- get navigationSidebarTreeOutline()
- {
- return this._contentTreeOutline;
- }
-
- get navigationSidebarTreeOutlineLabel()
- {
- // Implemented by sub-classes if needed.
- return null;
- }
-
get navigationSidebarTreeOutlineScopeBar()
{
return this._scopeBar;
}
- get timelineSidebarPanel()
- {
- return this._timelineSidebarPanel;
- }
-
get selectionPathComponents()
{
// Implemented by sub-classes if needed.
@@ -222,42 +192,8 @@
WebInspector.showOriginalOrFormattedSourceCodeLocation(sourceCodeLocation);
}
- treeElementPathComponentSelected(event)
- {
- // Implemented by sub-classes if needed.
- }
-
- treeElementDeselected(treeElement)
- {
- // Implemented by sub-classes if needed.
- }
-
- treeElementSelected(treeElement, selectedByUser)
- {
- // Implemented by sub-classes if needed.
-
- if (!this._timelineSidebarPanel.canShowDifferentContentView())
- return;
-
- if (treeElement instanceof WebInspector.FolderTreeElement)
- return;
-
- this.showContentViewForTreeElement(treeElement);
- }
-
userSelectedRecordFromOverview(timelineRecord)
{
// Implemented by sub-classes if needed.
}
-
- // Private
-
- _treeSelectionDidChange(event)
- {
- if (event.data.deselectedElement)
- this.treeElementDeselected(event.data.deselectedElement);
-
- if (event.data.selectedElement)
- this.treeElementSelected(event.data.selectedElement, event.data.selectedByUser);
- }
};