- Revision
- 235937
- Author
- [email protected]
- Date
- 2018-09-12 09:10:59 -0700 (Wed, 12 Sep 2018)
Log Message
Web Inspector: imported recordings are unable to be viewed after navigation
https://bugs.webkit.org/show_bug.cgi?id=189208
Reviewed by Joseph Pecoraro.
Move the "Imported Recordings" folder to the top level (instead of under "Overview") so that
it is selectable when there are no canvases but there is an imported recording.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype._removeCanvas):
Null out the `source` of each `WI.Recording` for the removed `WI.Canvas`.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype._removeCanvas):
Add each `WI.Recording`for the removed `WI.Canvas` to the "Imported Recordings" folder.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.refresh):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._showError):
Drive-by: don't recreate the error preview element if it already exists.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.updateRepresentedObjects): Added.
(WI.CanvasSidebarPanel.prototype.shown):
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange): Deleted.
Modified Paths
Diff
Modified: trunk/Source/WebInspectorUI/ChangeLog (235936 => 235937)
--- trunk/Source/WebInspectorUI/ChangeLog 2018-09-12 15:57:11 UTC (rev 235936)
+++ trunk/Source/WebInspectorUI/ChangeLog 2018-09-12 16:10:59 UTC (rev 235937)
@@ -1,3 +1,33 @@
+2018-09-12 Devin Rousso <[email protected]>
+
+ Web Inspector: imported recordings are unable to be viewed after navigation
+ https://bugs.webkit.org/show_bug.cgi?id=189208
+
+ Reviewed by Joseph Pecoraro.
+
+ Move the "Imported Recordings" folder to the top level (instead of under "Overview") so that
+ it is selectable when there are no canvases but there is an imported recording.
+
+ * UserInterface/Controllers/CanvasManager.js:
+ (WI.CanvasManager.prototype._removeCanvas):
+ Null out the `source` of each `WI.Recording` for the removed `WI.Canvas`.
+
+ * UserInterface/Views/CanvasTabContentView.js:
+ (WI.CanvasTabContentView):
+ (WI.CanvasTabContentView.prototype._removeCanvas):
+ Add each `WI.Recording`for the removed `WI.Canvas` to the "Imported Recordings" folder.
+
+ * UserInterface/Views/CanvasContentView.js:
+ (WI.CanvasContentView.prototype.refresh):
+ (WI.CanvasContentView.prototype.initialLayout):
+ (WI.CanvasContentView.prototype._showError):
+ Drive-by: don't recreate the error preview element if it already exists.
+
+ * UserInterface/Views/CanvasSidebarPanel.js:
+ (WI.CanvasSidebarPanel.prototype.updateRepresentedObjects): Added.
+ (WI.CanvasSidebarPanel.prototype.shown):
+ (WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange): Deleted.
+
2018-09-11 Joseph Pecoraro <[email protected]>
Web Inspector: Fix typo "vritualized"
Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/CanvasManager.js (235936 => 235937)
--- trunk/Source/WebInspectorUI/UserInterface/Controllers/CanvasManager.js 2018-09-12 15:57:11 UTC (rev 235936)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/CanvasManager.js 2018-09-12 16:10:59 UTC (rev 235937)
@@ -273,6 +273,11 @@
this._dispatchShaderProgramRemoved(program);
}
+ for (let recording of canvas.recordingCollection) {
+ recording.source = null;
+ recording.createDisplayName(recording.displayName);
+ }
+
this.dispatchEventToListeners(WI.CanvasManager.Event.CanvasRemoved, {canvas});
}
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/CanvasContentView.js (235936 => 235937)
--- trunk/Source/WebInspectorUI/UserInterface/Views/CanvasContentView.js 2018-09-12 15:57:11 UTC (rev 235936)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/CanvasContentView.js 2018-09-12 16:10:59 UTC (rev 235937)
@@ -81,14 +81,11 @@
this.representedObject.requestContent().then((content) => {
this._pendingContent = content;
if (!this._pendingContent) {
- console.error("Canvas content not available.", this.representedObject);
+ this._showError();
return;
}
this.needsLayout();
- })
- .catch(() => {
- this._showError();
});
}
@@ -149,6 +146,9 @@
this._pixelSizeElement.className = "pixel-size";
this._memoryCostElement = metrics.appendChild(document.createElement("span"));
this._memoryCostElement.className = "memory-cost";
+
+ if (this._errorElement)
+ this._showError();
}
layout()
@@ -234,14 +234,16 @@
_showError()
{
- console.assert(!this._errorElement, "Error element already exists.");
-
if (this._previewImageElement)
this._previewImageElement.remove();
- const isError = true;
- this._errorElement = WI.createMessageTextView(WI.UIString("No Preview Available"), isError);
- this._previewContainerElement.appendChild(this._errorElement);
+ if (!this._errorElement) {
+ const isError = true;
+ this._errorElement = WI.createMessageTextView(WI.UIString("No Preview Available"), isError);
+ }
+
+ if (this._previewContainerElement)
+ this._previewContainerElement.appendChild(this._errorElement);
}
_toggleRecording(event)
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js (235936 => 235937)
--- trunk/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js 2018-09-12 15:57:11 UTC (rev 235936)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js 2018-09-12 16:10:59 UTC (rev 235937)
@@ -159,12 +159,49 @@
this._selectedRecordingActionIndex = this._recording.actions.indexOf(action);
}
+ updateRepresentedObjects()
+ {
+ let objects = this.contentBrowser.currentRepresentedObjects;
+
+ let canvas = objects.find((object) => object instanceof WI.Canvas);
+ if (canvas) {
+ this.canvas = canvas;
+ return;
+ }
+
+ let shaderProgram = objects.find((object) => object instanceof WI.ShaderProgram);
+ if (shaderProgram) {
+ this.canvas = shaderProgram.canvas;
+ let treeElement = this._canvasTreeOutline.findTreeElement(shaderProgram);
+ const omitFocus = false;
+ const selectedByUser = false;
+ treeElement.revealAndSelect(omitFocus, selectedByUser);
+ return;
+ }
+
+ let recording = objects.find((object) => object instanceof WI.Recording);
+ if (recording) {
+ this.canvas = recording.source;
+
+ this.recording = recording;
+
+ let recordingAction = objects.find((object) => object instanceof WI.RecordingAction);
+ if (recordingAction !== recording[WI.CanvasSidebarPanel.SelectedActionSymbol])
+ this.action = ""
+
+ return;
+ }
+
+ this.canvas = null;
+ this.recording = null;
+ }
+
shown()
{
super.shown();
- this.contentBrowser.addEventListener(WI.ContentBrowser.Event.CurrentRepresentedObjectsDidChange, this._currentRepresentedObjectsDidChange, this);
- this._currentRepresentedObjectsDidChange();
+ this.contentBrowser.addEventListener(WI.ContentBrowser.Event.CurrentRepresentedObjectsDidChange, this.updateRepresentedObjects, this);
+ this.updateRepresentedObjects();
}
hidden()
@@ -254,41 +291,6 @@
}
}
- _currentRepresentedObjectsDidChange(event)
- {
- let objects = this.contentBrowser.currentRepresentedObjects;
-
- let canvas = objects.find((object) => object instanceof WI.Canvas);
- if (canvas) {
- this.canvas = canvas;
- return;
- }
-
- let shaderProgram = objects.find((object) => object instanceof WI.ShaderProgram);
- if (shaderProgram) {
- this.canvas = shaderProgram.canvas;
- let treeElement = this._canvasTreeOutline.findTreeElement(shaderProgram);
- const omitFocus = false;
- const selectedByUser = false;
- treeElement.revealAndSelect(omitFocus, selectedByUser);
- return;
- }
-
- let recording = objects.find((object) => object instanceof WI.Recording);
- if (recording) {
- this.recording = recording;
-
- let recordingAction = objects.find((object) => object instanceof WI.RecordingAction);
- if (recordingAction !== recording[WI.CanvasSidebarPanel.SelectedActionSymbol])
- this.action = ""
-
- return;
- }
-
- this.canvas = null;
- this.recording = null;
- }
-
_treeOutlineSelectionDidChange(event)
{
let treeElement = event.data.selectedElement;
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js (235936 => 235937)
--- trunk/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js 2018-09-12 15:57:11 UTC (rev 235936)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js 2018-09-12 16:10:59 UTC (rev 235937)
@@ -44,9 +44,9 @@
this._overviewTreeElement = new WI.GeneralTreeElement("canvas-overview", WI.UIString("Overview"), null, this._canvasCollection);
this._canvasTreeOutline.appendChild(this._overviewTreeElement);
- this._importedRecordingsTreeElement = new WI.FolderTreeElement(WI.UIString("Imported Recordings"));
+ this._importedRecordingsTreeElement = new WI.FolderTreeElement(WI.UIString("Imported Recordings"), WI.RecordingCollection);
this._importedRecordingsTreeElement.hidden = true;
- this._overviewTreeElement.appendChild(this._importedRecordingsTreeElement);
+ this._canvasTreeOutline.appendChild(this._importedRecordingsTreeElement);
this._recordShortcut = new WI.KeyboardShortcut(null, WI.KeyboardShortcut.Key.Space, this._handleSpace.bind(this));
this._recordShortcut.implicitlyPreventsDefault = false;
@@ -161,16 +161,25 @@
_removeCanvas(canvas)
{
- // FIXME: Create tree elements/cards for recordings belonging to the removed canvas.
-
let treeElement = this._canvasTreeOutline.findTreeElement(canvas);
console.assert(treeElement, "Missing tree element for canvas.", canvas);
this._overviewTreeElement.removeChild(treeElement);
this._canvasCollection.remove(canvas);
+ const options = {
+ suppressShowRecording: true,
+ };
+
+ for (let recording of canvas.recordingCollection)
+ this._recordingAdded(recording, options);
+
let currentContentView = this.contentBrowser.currentContentView;
if (currentContentView instanceof WI.RecordingContentView && canvas.recordingCollection.has(currentContentView.representedObject))
this.contentBrowser.updateHierarchicalPathForCurrentContentView();
+
+ let navigationSidebarPanel = this.navigationSidebarPanel;
+ if (navigationSidebarPanel instanceof WI.CanvasSidebarPanel && navigationSidebarPanel.visible)
+ navigationSidebarPanel.updateRepresentedObjects();
}
_handleCanvasAdded(event)