WebKit Bugzilla
Attachment 348668 Details for
Bug 189208
: Web Inspector: imported recordings are unable to be viewed after navigation
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-189208-20180831133657.patch (text/plain), 10.91 KB, created by
Devin Rousso
on 2018-08-31 13:36:58 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Devin Rousso
Created:
2018-08-31 13:36:58 PDT
Size:
10.91 KB
patch
obsolete
>diff --git a/Source/WebInspectorUI/ChangeLog b/Source/WebInspectorUI/ChangeLog >index e4d59f251aa9307926dd3142fb8d12afbc0d962b..68621a77c35780a8895fa6201e1bf40819428c5d 100644 >--- a/Source/WebInspectorUI/ChangeLog >+++ b/Source/WebInspectorUI/ChangeLog >@@ -1,3 +1,33 @@ >+2018-08-31 Devin Rousso <drousso@apple.com> >+ >+ Web Inspector: imported recordings are unable to be viewed after navigation >+ https://bugs.webkit.org/show_bug.cgi?id=189208 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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-08-29 David Kilzer <ddkilzer@apple.com> > > Remove empty directories from from svn.webkit.org repository >diff --git a/Source/WebInspectorUI/UserInterface/Controllers/CanvasManager.js b/Source/WebInspectorUI/UserInterface/Controllers/CanvasManager.js >index 5b4b4f9d787e8940c81b68c8ffbbaf317a4ee664..547eb27c5b17999e774b68b1193330672a8ae8f5 100644 >--- a/Source/WebInspectorUI/UserInterface/Controllers/CanvasManager.js >+++ b/Source/WebInspectorUI/UserInterface/Controllers/CanvasManager.js >@@ -273,6 +273,11 @@ WI.CanvasManager = class CanvasManager extends WI.Object > this._dispatchShaderProgramRemoved(program); > } > >+ for (let recording of canvas.recordingCollection) { >+ recording.source = null; >+ recording.createDisplayName(recording.displayName); >+ } >+ > this.dispatchEventToListeners(WI.CanvasManager.Event.CanvasRemoved, {canvas}); > } > >diff --git a/Source/WebInspectorUI/UserInterface/Views/CanvasContentView.js b/Source/WebInspectorUI/UserInterface/Views/CanvasContentView.js >index 192267e1f9eda52d6af9280abbc41d8a4f7e9625..436a25449a1b9fd2252afbf4a5e8d51c536bc65c 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/CanvasContentView.js >+++ b/Source/WebInspectorUI/UserInterface/Views/CanvasContentView.js >@@ -81,14 +81,11 @@ WI.CanvasContentView = class CanvasContentView extends WI.ContentView > 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 @@ WI.CanvasContentView = class CanvasContentView extends WI.ContentView > 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 @@ WI.CanvasContentView = class CanvasContentView extends WI.ContentView > > _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) >diff --git a/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js b/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js >index ac2b9b13ed76f0e623e197faf8aeae1a120bceb7..c924d57d157ce741baf4ca3af83742891c64acba 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js >+++ b/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js >@@ -159,12 +159,49 @@ WI.CanvasSidebarPanel = class CanvasSidebarPanel extends WI.NavigationSidebarPan > 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 = recordingAction; >+ >+ 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 @@ WI.CanvasSidebarPanel = class CanvasSidebarPanel extends WI.NavigationSidebarPan > } > } > >- _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 = recordingAction; >- >- return; >- } >- >- this.canvas = null; >- this.recording = null; >- } >- > _treeOutlineSelectionDidChange(event) > { > let treeElement = event.data.selectedElement; >diff --git a/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js b/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js >index cc88b8b5fcc63e2548869d9720c33bb9a05fbcfd..cac2a2e9d5245d77ef3c12c1301af95016207801 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js >+++ b/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js >@@ -44,9 +44,9 @@ WI.CanvasTabContentView = class CanvasTabContentView extends WI.ContentBrowserTa > 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 @@ WI.CanvasTabContentView = class CanvasTabContentView extends WI.ContentBrowserTa > > _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)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 189208
: 348668 |
348738