Web Inspector: Network: importing a HAR with an active detail view shows no content
authordrousso@apple.com <drousso@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 24 Apr 2019 21:30:51 +0000 (21:30 +0000)
committerdrousso@apple.com <drousso@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 24 Apr 2019 21:30:51 +0000 (21:30 +0000)
https://bugs.webkit.org/show_bug.cgi?id=197223

Reviewed by Timothy Hatcher.

When hiding the detail view, we force a `layout` of the Network table, which causes the
cached row count to be set to `0`, which prevents the `reloadDataAddedToEndOnly` from
rendering anything since the `WI.Table` thinks it has no rows.

Given that all of the users of `WI.Table` are backed by an array, we don't need to cache the
number of rows since `.length` is an extremely cheap operation. In turn, this guarantees
that we are always rendering with an accurate value.

* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype.get numberOfRows):
(WI.Table.prototype.reloadData):
(WI.Table.prototype._removeRows):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@244615 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebInspectorUI/ChangeLog
Source/WebInspectorUI/UserInterface/Views/Table.js

index 985fe6b..513d476 100644 (file)
@@ -1,3 +1,24 @@
+2019-04-24  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Network: importing a HAR with an active detail view shows no content
+        https://bugs.webkit.org/show_bug.cgi?id=197223
+
+        Reviewed by Timothy Hatcher.
+
+        When hiding the detail view, we force a `layout` of the Network table, which causes the
+        cached row count to be set to `0`, which prevents the `reloadDataAddedToEndOnly` from
+        rendering anything since the `WI.Table` thinks it has no rows.
+
+        Given that all of the users of `WI.Table` are backed by an array, we don't need to cache the
+        number of rows since `.length` is an extremely cheap operation. In turn, this guarantees
+        that we are always rendering with an accurate value.
+
+        * UserInterface/Views/Table.js:
+        (WI.Table):
+        (WI.Table.prototype.get numberOfRows):
+        (WI.Table.prototype.reloadData):
+        (WI.Table.prototype._removeRows):
+
 2019-04-23  Devin Rousso  <drousso@apple.com>
 
         Web Inspector: REGRESSION(r238168): Network: preserve log doesn't show main frame main resource changes
index 0061337..8215b2c 100644 (file)
@@ -76,7 +76,6 @@ WI.Table = class Table extends WI.View
         this._resizersElement.className = "resizers";
 
         this._cachedRows = new Map;
-        this._cachedNumberOfRows = NaN;
 
         this._columnSpecs = new Map;
         this._columnOrder = [];
@@ -113,6 +112,7 @@ WI.Table = class Table extends WI.View
         this._visibleRowIndexStart = NaN;
         this._visibleRowIndexEnd = NaN;
 
+        console.assert(this._dataSource.tableNumberOfRows, "Table data source must implement tableNumberOfRows.");
         console.assert(this._dataSource.tableIndexForRepresentedObject, "Table data source must implement tableIndexForRepresentedObject.");
         console.assert(this._dataSource.tableRepresentedObjectForIndex, "Table data source must implement tableRepresentedObjectForIndex.");
 
@@ -145,10 +145,7 @@ WI.Table = class Table extends WI.View
 
     get numberOfRows()
     {
-        if (isNaN(this._cachedNumberOfRows))
-            this._cachedNumberOfRows = this._dataSource.tableNumberOfRows(this);
-
-        return this._cachedNumberOfRows;
+        return this._dataSource.tableNumberOfRows(this);
     }
 
     get sortOrder()
@@ -253,7 +250,6 @@ WI.Table = class Table extends WI.View
 
         this._selectionController.reset();
 
-        this._cachedNumberOfRows = NaN;
         this._previousRevealedRowCount = NaN;
         this.needsLayout();
     }
@@ -1435,18 +1431,14 @@ WI.Table = class Table extends WI.View
         if (!removed)
             return;
 
-        for (let index = lastIndex + 1; index < this._cachedNumberOfRows; ++index)
+        for (let index = lastIndex + 1; index < this.numberOfRows; ++index)
             adjustRowAtIndex(index);
 
-        this._cachedNumberOfRows -= removed;
-        console.assert(this._cachedNumberOfRows >= 0);
 
         this._selectionController.didRemoveItems(representedObjects);
 
-        if (this._delegate.tableDidRemoveRows) {
+        if (this._delegate.tableDidRemoveRows)
             this._delegate.tableDidRemoveRows(this, rowIndexes);
-            console.assert(this._cachedNumberOfRows === this._dataSource.tableNumberOfRows(this), "Table data source should update after removing rows.");
-        }
     }
 
     _indexForRepresentedObject(object)