Title: [240867] trunk/Source/WebInspectorUI
Revision
240867
Author
joep...@webkit.org
Date
2019-02-01 13:24:12 -0800 (Fri, 01 Feb 2019)

Log Message

Web Inspector: Timeline graphs have drawing issues with multiple discontinuities
https://bugs.webkit.org/show_bug.cgi?id=194110
<rdar://problem/47714356>

Reviewed by Devin Rousso.

* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView):
(WI.CPUTimelineView.prototype.layout.xScale): Deleted.
* UserInterface/Views/MemoryTimelineOverviewGraph.js:
(WI.MemoryTimelineOverviewGraph.prototype.layout.insertDiscontinuity):
(WI.MemoryTimelineOverviewGraph.prototype.layout):
* UserInterface/Views/MemoryTimelineView.js:
(WI.MemoryTimelineView.prototype.layout.xScale):
(WI.MemoryTimelineView.prototype.layout.yScale):
(WI.MemoryTimelineView.prototype.layout):
Handle if multiple discontinuities exist between records.

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (240866 => 240867)


--- trunk/Source/WebInspectorUI/ChangeLog	2019-02-01 21:24:09 UTC (rev 240866)
+++ trunk/Source/WebInspectorUI/ChangeLog	2019-02-01 21:24:12 UTC (rev 240867)
@@ -1,5 +1,25 @@
 2019-02-01  Joseph Pecoraro  <pecor...@apple.com>
 
+        Web Inspector: Timeline graphs have drawing issues with multiple discontinuities
+        https://bugs.webkit.org/show_bug.cgi?id=194110
+        <rdar://problem/47714356>
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Views/CPUTimelineView.js:
+        (WI.CPUTimelineView):
+        (WI.CPUTimelineView.prototype.layout.xScale): Deleted.
+        * UserInterface/Views/MemoryTimelineOverviewGraph.js:
+        (WI.MemoryTimelineOverviewGraph.prototype.layout.insertDiscontinuity):
+        (WI.MemoryTimelineOverviewGraph.prototype.layout):
+        * UserInterface/Views/MemoryTimelineView.js:
+        (WI.MemoryTimelineView.prototype.layout.xScale):
+        (WI.MemoryTimelineView.prototype.layout.yScale):
+        (WI.MemoryTimelineView.prototype.layout):
+        Handle if multiple discontinuities exist between records.
+
+2019-02-01  Joseph Pecoraro  <pecor...@apple.com>
+
         Web Inspector: Timeline time range selection should show duration alongside start and end
         https://bugs.webkit.org/show_bug.cgi?id=194109
         <rdar://problem/47714279>

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js (240866 => 240867)


--- trunk/Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js	2019-02-01 21:24:09 UTC (rev 240866)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js	2019-02-01 21:24:12 UTC (rev 240867)
@@ -133,10 +133,13 @@
             let usage = record.usage;
 
             if (discontinuities.length && discontinuities[0].endTime < time) {
-                let discontinuity = discontinuities.shift();
-                dataPoints.push({time: discontinuity.startTime, size: 0});
-                dataPoints.push({time: discontinuity.endTime, size: 0});
-                dataPoints.push({time: discontinuity.endTime, size: usage});
+                let startDiscontinuity = discontinuities.shift();
+                let endDiscontinuity = startDiscontinuity;
+                while (discontinuities.length && discontinuities[0].endTime < time)
+                    endDiscontinuity = discontinuities.shift();
+                dataPoints.push({time: startDiscontinuity.startTime, size: 0});
+                dataPoints.push({time: endDiscontinuity.endTime, size: 0});
+                dataPoints.push({time: endDiscontinuity.endTime, size: usage});
             }
 
             dataPoints.push({time, size: usage});

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/MemoryTimelineOverviewGraph.js (240866 => 240867)


--- trunk/Source/WebInspectorUI/UserInterface/Views/MemoryTimelineOverviewGraph.js	2019-02-01 21:24:09 UTC (rev 240866)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/MemoryTimelineOverviewGraph.js	2019-02-01 21:24:12 UTC (rev 240867)
@@ -156,14 +156,14 @@
         if (visibleRecords[0] === this._memoryTimeline.records[0] && (!discontinuities.length || discontinuities[0].startTime > visibleRecords[0].startTime))
             this._chart.addPointSet(0, pointSetForRecord(visibleRecords[0]));
 
-        function insertDiscontinuity(previousRecord, discontinuity, nextRecord)
+        function insertDiscontinuity(previousRecord, startDiscontinuity, endDiscontinuity, nextRecord)
         {
             console.assert(previousRecord || nextRecord);
             if (!(previousRecord || nextRecord))
                 return;
 
-            let xStart = xScale(discontinuity.startTime);
-            let xEnd = xScale(discontinuity.endTime);
+            let xStart = xScale(startDiscontinuity.startTime);
+            let xEnd = xScale(endDiscontinuity.endTime);
 
             // Extend the previous record to the start of the discontinuity.
             if (previousRecord)
@@ -186,8 +186,11 @@
         let previousRecord = null;
         for (let record of visibleRecords) {
             if (discontinuities.length && discontinuities[0].endTime < record.startTime) {
-                let discontinuity = discontinuities.shift();
-                insertDiscontinuity.call(this, previousRecord, discontinuity, record);
+                let startDiscontinuity = discontinuities.shift();
+                let endDiscontinuity = startDiscontinuity;
+                while (discontinuities.length && discontinuities[0].endTime < record.startTime)
+                    endDiscontinuity = discontinuities.shift();
+                insertDiscontinuity.call(this, previousRecord, startDiscontinuity, endDiscontinuity, record);
             }
 
             let x = xScale(record.startTime);
@@ -197,7 +200,7 @@
         }
 
         if (discontinuities.length)
-            insertDiscontinuity.call(this, previousRecord, discontinuities[0], null);
+            insertDiscontinuity.call(this, previousRecord, discontinuities[0], discontinuities[0], null);
         else {
             // Extend the last value to current / end time.
             let lastRecord = visibleRecords.lastValue;

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/MemoryTimelineView.js (240866 => 240867)


--- trunk/Source/WebInspectorUI/UserInterface/Views/MemoryTimelineView.js	2019-02-01 21:24:09 UTC (rev 240866)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/MemoryTimelineView.js	2019-02-01 21:24:12 UTC (rev 240867)
@@ -206,22 +206,27 @@
 
         for (let record of visibleRecords) {
             let time = record.startTime;
-            let discontinuity = null;
-            if (discontinuities.length && discontinuities[0].endTime < time)
-                discontinuity = discontinuities.shift();
+            let startDiscontinuity = null;
+            let endDiscontinuity = null;
+            if (discontinuities.length && discontinuities[0].endTime < time) {
+                startDiscontinuity = discontinuities.shift();
+                endDiscontinuity = startDiscontinuity;
+                while (discontinuities.length && discontinuities[0].endTime < time)
+                    endDiscontinuity = discontinuities.shift();
+            }
 
             for (let category of record.categories) {
                 let categoryData = categoryDataMap[category.type];
 
-                if (discontinuity) {
+                if (startDiscontinuity) {
                     if (categoryData.dataPoints.length) {
                         let previousDataPoint = categoryData.dataPoints.lastValue;
-                        categoryData.dataPoints.push({time: discontinuity.startTime, size: previousDataPoint.size});
+                        categoryData.dataPoints.push({time: startDiscontinuity.startTime, size: previousDataPoint.size});
                     }
 
-                    categoryData.dataPoints.push({time: discontinuity.startTime, size: 0});
-                    categoryData.dataPoints.push({time: discontinuity.endTime, size: 0});
-                    categoryData.dataPoints.push({time: discontinuity.endTime, size: category.size});
+                    categoryData.dataPoints.push({time: startDiscontinuity.startTime, size: 0});
+                    categoryData.dataPoints.push({time: endDiscontinuity.endTime, size: 0});
+                    categoryData.dataPoints.push({time: endDiscontinuity.endTime, size: category.size});
                 }
 
                 categoryData.dataPoints.push({time, size: category.size});
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to