Title: [264045] trunk/Source/WebInspectorUI
Revision
264045
Author
[email protected]
Date
2020-07-07 15:34:40 -0700 (Tue, 07 Jul 2020)

Log Message

Web Inspector: Canvas: show an error message if unable to fetch shader source
https://bugs.webkit.org/show_bug.cgi?id=213661

Reviewed by Brian Burg.

* UserInterface/Views/ShaderProgramContentView.js:
(WI.ShaderProgramContentView):
(WI.ShaderProgramContentView.prototype._refreshContent):
* UserInterface/Views/ShaderProgramContentView.css:
(.content-view.shader-program > .spinner-container): Added.
(.content-view.shader-program > .spinner-container > .indeterminate-progress-spinner): Added.

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (264044 => 264045)


--- trunk/Source/WebInspectorUI/ChangeLog	2020-07-07 22:33:59 UTC (rev 264044)
+++ trunk/Source/WebInspectorUI/ChangeLog	2020-07-07 22:34:40 UTC (rev 264045)
@@ -1,3 +1,17 @@
+2020-07-07  Devin Rousso  <[email protected]>
+
+        Web Inspector: Canvas: show an error message if unable to fetch shader source
+        https://bugs.webkit.org/show_bug.cgi?id=213661
+
+        Reviewed by Brian Burg.
+
+        * UserInterface/Views/ShaderProgramContentView.js:
+        (WI.ShaderProgramContentView):
+        (WI.ShaderProgramContentView.prototype._refreshContent):
+        * UserInterface/Views/ShaderProgramContentView.css:
+        (.content-view.shader-program > .spinner-container): Added.
+        (.content-view.shader-program > .spinner-container > .indeterminate-progress-spinner): Added.
+
 2020-07-03  Sam Weinig  <[email protected]>
 
         Add "-Wliteral-conversion" warning to Xcode based builds and fix the issues it finds

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ShaderProgramContentView.css (264044 => 264045)


--- trunk/Source/WebInspectorUI/UserInterface/Views/ShaderProgramContentView.css	2020-07-07 22:33:59 UTC (rev 264044)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ShaderProgramContentView.css	2020-07-07 22:34:40 UTC (rev 264045)
@@ -59,6 +59,23 @@
     border-bottom: 1px solid lightgrey;
 }
 
+.content-view.shader-program > .spinner-container {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    background-color: var(--background-color-content);
+}
+
+.content-view.shader-program > .spinner-container > .indeterminate-progress-spinner {
+    width: 32px;
+    height: 32px;
+}
+
 @media (prefers-color-scheme: dark) {
     .content-view.shader-program > .shader > header > .shader-type {
         background-color: var(--background-color);

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ShaderProgramContentView.js (264044 => 264045)


--- trunk/Source/WebInspectorUI/UserInterface/Views/ShaderProgramContentView.js	2020-07-07 22:33:59 UTC (rev 264044)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ShaderProgramContentView.js	2020-07-07 22:34:40 UTC (rev 264045)
@@ -85,14 +85,12 @@
             container.classList.add("shader", shaderType);
             container.classList.toggle("shares-vertex-fragment-shader", sharesVertexFragmentShader);
 
-            return {container, textEditor};
+            return textEditor;
         };
 
         switch (this.representedObject.programType) {
         case WI.ShaderProgram.ProgramType.Compute: {
-            let computeEditor = createEditor(WI.ShaderProgram.ShaderType.Compute);
-            this._computeContainer = computeEditor.container;
-            this._computeEditor = computeEditor.textEditor;
+            this._computeEditor = createEditor(WI.ShaderProgram.ShaderType.Compute);
 
             this._lastActiveEditor = this._computeEditor;
             break;
@@ -99,14 +97,10 @@
         }
 
         case WI.ShaderProgram.ProgramType.Render: {
-            let vertexEditor = createEditor(WI.ShaderProgram.ShaderType.Vertex);
-            this._vertexContainer = vertexEditor.container;
-            this._vertexEditor = vertexEditor.textEditor;
+            this._vertexEditor = createEditor(WI.ShaderProgram.ShaderType.Vertex);
 
             if (!sharesVertexFragmentShader) {
-                let fragmentEditor = createEditor(WI.ShaderProgram.ShaderType.Fragment);
-                this._fragmentContainer = fragmentEditor.container;
-                this._fragmentEditor = fragmentEditor.textEditor;
+                this._fragmentEditor = createEditor(WI.ShaderProgram.ShaderType.Fragment);
             }
 
             this._lastActiveEditor = this._vertexEditor;
@@ -254,26 +248,30 @@
 
     _refreshContent()
     {
-        let createCallback = (container, textEditor) => {
+        let spinnerContainer = null;
+
+        if (!this.didInitialLayout) {
+            spinnerContainer = this.element.appendChild(document.createElement("div"));
+            spinnerContainer.className = "spinner-container";
+            spinnerContainer.appendChild((new WI.IndeterminateProgressSpinner).element);
+
+            this._contentErrorMessageElement?.remove();
+        }
+
+        let createCallback = (textEditor) => {
             return (source) => {
+                spinnerContainer?.remove();
+
                 if (source === null) {
-                    container.remove();
+                    if (!this._contentErrorMessageElement) {
+                        const isError = true;
+                        this._contentErrorMessageElement = WI.createMessageTextView(WI.UIString("An error occurred trying to load the resource."), isError);
+                    }
+                    if (!this._contentErrorMessageElement.parentNode)
+                        this.element.appendChild(this._contentErrorMessageElement);
                     return;
                 }
 
-                if (!container.parentNode) {
-                    switch (container) {
-                    case this._computeContainer:
-                    case this._vertexContainer:
-                        this.element.insertAdjacentElement("afterbegin", container);
-                        break;
-
-                    case this._fragmentContainer:
-                        this.element.insertAdjacentElement("beforeend", container);
-                        break;
-                    }
-                }
-
                 textEditor.string = source || "";
             };
         };
@@ -280,13 +278,13 @@
 
         switch (this.representedObject.programType) {
         case WI.ShaderProgram.ProgramType.Compute:
-            this.representedObject.requestShaderSource(WI.ShaderProgram.ShaderType.Compute, createCallback(this._computeContainer, this._computeEditor));
+            this.representedObject.requestShaderSource(WI.ShaderProgram.ShaderType.Compute, createCallback(this._computeEditor));
             return;
 
         case WI.ShaderProgram.ProgramType.Render:
-            this.representedObject.requestShaderSource(WI.ShaderProgram.ShaderType.Vertex, createCallback(this._vertexContainer, this._vertexEditor));
+            this.representedObject.requestShaderSource(WI.ShaderProgram.ShaderType.Vertex, createCallback(this._vertexEditor));
             if (!this.representedObject.sharesVertexFragmentShader)
-                this.representedObject.requestShaderSource(WI.ShaderProgram.ShaderType.Fragment, createCallback(this._fragmentContainer, this._fragmentEditor));
+                this.representedObject.requestShaderSource(WI.ShaderProgram.ShaderType.Fragment, createCallback(this._fragmentEditor));
             return;
         }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to