Changeset 240534 in webkit


Ignore:
Timestamp:
Jan 25, 2019 5:06:51 PM (5 years ago)
Author:
Devin Rousso
Message:

Web Inspector: Uncaught Exception: No node with given id found
https://bugs.webkit.org/show_bug.cgi?id=193833

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/CanvasContentView.js:

(WI.CanvasContentView):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype._refreshPixelSize):
Drive-by: show the refresh button when viewing a specific canvas.

  • UserInterface/Views/CanvasTabContentView.js:

(WI.CanvasTabContentView.prototype._removeCanvas):
Reset to the overview if the canvas is removed.

Location:
trunk/Source/WebInspectorUI
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebInspectorUI/ChangeLog

    r240518 r240534  
     12019-01-25  Devin Rousso  <drousso@apple.com>
     2
     3        Web Inspector: Uncaught Exception: No node with given id found
     4        https://bugs.webkit.org/show_bug.cgi?id=193833
     5
     6        Reviewed by Joseph Pecoraro.
     7
     8        * UserInterface/Views/CanvasContentView.js:
     9        (WI.CanvasContentView):
     10        (WI.CanvasContentView.prototype.initialLayout):
     11        (WI.CanvasContentView.prototype.layout):
     12        (WI.CanvasContentView.prototype._refreshPixelSize):
     13        Drive-by: show the refresh button when viewing a specific canvas.
     14
     15        * UserInterface/Views/CanvasTabContentView.js:
     16        (WI.CanvasTabContentView.prototype._removeCanvas):
     17        Reset to the overview if the canvas is removed.
     18
    1192019-01-25  Joseph Pecoraro  <pecoraro@apple.com>
    220
  • trunk/Source/WebInspectorUI/UserInterface/Views/CanvasContentView.js

    r238743 r240534  
    4444        this._canvasNode = null;
    4545
    46         if (this.representedObject.contextType === WI.Canvas.ContextType.Canvas2D || this.representedObject.contextType === WI.Canvas.ContextType.BitmapRenderer || this.representedObject.contextType === WI.Canvas.ContextType.WebGL) {
    47             const toolTip = WI.UIString("Start recording canvas actions.\nShift-click to record a single frame.");
    48             const altToolTip = WI.UIString("Stop recording canvas actions");
    49             this._recordButtonNavigationItem = new WI.ToggleButtonNavigationItem("record-start-stop", toolTip, altToolTip, "Images/Record.svg", "Images/Stop.svg", 13, 13);
    50             this._recordButtonNavigationItem.visibilityPriority = WI.NavigationItem.VisibilityPriority.High;
    51             this._recordButtonNavigationItem.addEventListener(WI.ButtonNavigationItem.Event.Clicked, this._toggleRecording, this);
    52         }
    53 
    54         this._canvasElementButtonNavigationItem = new WI.ButtonNavigationItem("canvas-element", WI.UIString("Canvas Element"), "Images/Markup.svg", 16, 16);
    55         this._canvasElementButtonNavigationItem.visibilityPriority = WI.NavigationItem.VisibilityPriority.Low;
    56         this._canvasElementButtonNavigationItem.addEventListener(WI.ButtonNavigationItem.Event.Clicked, this._canvasElementButtonClicked, this);
    57 
    5846        this._refreshButtonNavigationItem = new WI.ButtonNavigationItem("refresh", WI.UIString("Refresh"), "Images/ReloadFull.svg", 13, 13);
    5947        this._refreshButtonNavigationItem.visibilityPriority = WI.NavigationItem.VisibilityPriority.Low;
     
    9684        super.initialLayout();
    9785
    98         let header = this.element.appendChild(document.createElement("header"));
    99         header.addEventListener("click", (event) => { event.stopPropagation(); });
    100 
    101         let titles = header.appendChild(document.createElement("div"));
    102         titles.className = "titles";
    103 
    104         let title = titles.appendChild(document.createElement("span"));
    105         title.className = "title";
    106         title.textContent = this.representedObject.displayName;
    107 
    108         let subtitle = titles.appendChild(document.createElement("span"));
    109         subtitle.className = "subtitle";
    110         subtitle.textContent = WI.Canvas.displayNameForContextType(this.representedObject.contextType);
    111 
    112         let navigationBar = new WI.NavigationBar;
    113         if (this._recordButtonNavigationItem)
    114             navigationBar.addNavigationItem(this._recordButtonNavigationItem);
    115         navigationBar.addNavigationItem(this._canvasElementButtonNavigationItem);
    116         navigationBar.addNavigationItem(this._refreshButtonNavigationItem);
    117 
    118         header.append(navigationBar.element);
     86        let isCard = !this._refreshButtonNavigationItem.parentNavigationBar;
     87
     88        if (isCard) {
     89            let header = this.element.appendChild(document.createElement("header"));
     90            header.addEventListener("click", (event) => { event.stopPropagation(); });
     91
     92            let titles = header.appendChild(document.createElement("div"));
     93            titles.className = "titles";
     94
     95            let title = titles.appendChild(document.createElement("span"));
     96            title.className = "title";
     97            title.textContent = this.representedObject.displayName;
     98
     99            let subtitle = titles.appendChild(document.createElement("span"));
     100            subtitle.className = "subtitle";
     101            subtitle.textContent = WI.Canvas.displayNameForContextType(this.representedObject.contextType);
     102
     103            let navigationBar = new WI.NavigationBar;
     104
     105            if (this.representedObject.contextType === WI.Canvas.ContextType.Canvas2D || this.representedObject.contextType === WI.Canvas.ContextType.BitmapRenderer || this.representedObject.contextType === WI.Canvas.ContextType.WebGL) {
     106                const toolTip = WI.UIString("Start recording canvas actions.\nShift-click to record a single frame.");
     107                const altToolTip = WI.UIString("Stop recording canvas actions");
     108                this._recordButtonNavigationItem = new WI.ToggleButtonNavigationItem("record-start-stop", toolTip, altToolTip, "Images/Record.svg", "Images/Stop.svg", 13, 13);
     109                this._recordButtonNavigationItem.visibilityPriority = WI.NavigationItem.VisibilityPriority.High;
     110                this._recordButtonNavigationItem.addEventListener(WI.ButtonNavigationItem.Event.Clicked, this._toggleRecording, this);
     111                navigationBar.addNavigationItem(this._recordButtonNavigationItem);
     112            }
     113
     114            let canvasElementButtonNavigationItem = new WI.ButtonNavigationItem("canvas-element", WI.UIString("Canvas Element"), "Images/Markup.svg", 16, 16);
     115            canvasElementButtonNavigationItem.visibilityPriority = WI.NavigationItem.VisibilityPriority.Low;
     116            canvasElementButtonNavigationItem.addEventListener(WI.ButtonNavigationItem.Event.Clicked, this._canvasElementButtonClicked, this);
     117            navigationBar.addNavigationItem(canvasElementButtonNavigationItem);
     118
     119            navigationBar.addNavigationItem(this._refreshButtonNavigationItem);
     120
     121            header.append(navigationBar.element);
     122        }
    119123
    120124        this._previewContainerElement = this.element.appendChild(document.createElement("div"));
    121125        this._previewContainerElement.className = "preview";
    122126
    123         let footer = this.element.appendChild(document.createElement("footer"));
    124         footer.addEventListener("click", (event) => { event.stopPropagation(); });
    125 
    126         this._viewRelatedItemsContainer = footer.appendChild(document.createElement("div"));
    127         this._viewRelatedItemsContainer.classList.add("view-related-items");
    128 
    129         this._viewShaderButton = document.createElement("img");
    130         this._viewShaderButton.classList.add("view-shader");
    131         this._viewShaderButton.title = WI.UIString("View Shader");
    132         this._viewShaderButton.addEventListener("click", this._handleViewShaderButtonClicked.bind(this));
    133 
    134         this._viewRecordingButton = document.createElement("img");
    135         this._viewRecordingButton.classList.add("view-recording");
    136         this._viewRecordingButton.title = WI.UIString("View Recording");
    137         this._viewRecordingButton.addEventListener("click", this._handleViewRecordingButtonClicked.bind(this));
    138 
    139         this._updateViewRelatedItems();
    140 
    141         let flexibleSpaceElement = footer.appendChild(document.createElement("div"));
    142         flexibleSpaceElement.className = "flexible-space";
    143 
    144         let metrics = footer.appendChild(document.createElement("div"));
    145         this._pixelSizeElement = metrics.appendChild(document.createElement("span"));
    146         this._pixelSizeElement.className = "pixel-size";
    147         this._memoryCostElement = metrics.appendChild(document.createElement("span"));
    148         this._memoryCostElement.className = "memory-cost";
     127        if (isCard) {
     128            let footer = this.element.appendChild(document.createElement("footer"));
     129            footer.addEventListener("click", (event) => { event.stopPropagation(); });
     130
     131            this._viewRelatedItemsContainer = footer.appendChild(document.createElement("div"));
     132            this._viewRelatedItemsContainer.classList.add("view-related-items");
     133
     134            this._viewShaderButton = document.createElement("img");
     135            this._viewShaderButton.classList.add("view-shader");
     136            this._viewShaderButton.title = WI.UIString("View Shader");
     137            this._viewShaderButton.addEventListener("click", this._handleViewShaderButtonClicked.bind(this));
     138
     139            this._viewRecordingButton = document.createElement("img");
     140            this._viewRecordingButton.classList.add("view-recording");
     141            this._viewRecordingButton.title = WI.UIString("View Recording");
     142            this._viewRecordingButton.addEventListener("click", this._handleViewRecordingButtonClicked.bind(this));
     143
     144            this._updateViewRelatedItems();
     145
     146            let flexibleSpaceElement = footer.appendChild(document.createElement("div"));
     147            flexibleSpaceElement.className = "flexible-space";
     148
     149            let metrics = footer.appendChild(document.createElement("div"));
     150
     151            this._pixelSizeElement = metrics.appendChild(document.createElement("span"));
     152            this._pixelSizeElement.className = "pixel-size";
     153
     154            this._memoryCostElement = metrics.appendChild(document.createElement("span"));
     155            this._memoryCostElement.className = "memory-cost";
     156        }
    149157
    150158        if (this._errorElement)
    151159            this._showError();
    152160
    153         this._updateProgressView();
     161        if (isCard) {
     162            this._refreshPixelSize();
     163            this._updateMemoryCost();
     164            this._updateProgressView();
     165        }
    154166    }
    155167
     
    178190
    179191        this._updateImageGrid();
    180 
    181         this._refreshPixelSize();
    182         this._updateMemoryCost();
    183192    }
    184193
     
    289298    {
    290299        let updatePixelSize = (size) => {
    291             if (this._pixelSize && size.width === this._pixelSize.width && size.height === this._pixelSize.height)
     300            if (Object.shallowEqual(this._pixelSize, size))
    292301                return;
    293302
  • trunk/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js

    r238483 r240534  
    196196        let treeElement = this._canvasTreeOutline.findTreeElement(canvas);
    197197        console.assert(treeElement, "Missing tree element for canvas.", canvas);
     198
     199        const suppressNotification = true;
     200        treeElement.deselect(suppressNotification);
    198201        this._overviewTreeElement.removeChild(treeElement);
     202
    199203        this._canvasCollection.remove(canvas);
    200204
     
    207211
    208212        let currentContentView = this.contentBrowser.currentContentView;
    209         if (currentContentView instanceof WI.RecordingContentView && canvas.recordingCollection.has(currentContentView.representedObject))
     213        if (currentContentView instanceof WI.CanvasContentView)
     214            WI.showRepresentedObject(this._canvasCollection);
     215        else if (currentContentView instanceof WI.RecordingContentView && canvas.recordingCollection.has(currentContentView.representedObject))
    210216            this.contentBrowser.updateHierarchicalPathForCurrentContentView();
    211217
Note: See TracChangeset for help on using the changeset viewer.