perf_hooks: add missing resource timing attributes - #65017
Conversation
|
Review requested:
|
74a9a8a to
2ebef57
Compare
Add the finalResponseHeadersStart, firstInterimResponseStart, renderBlockingStatus, contentType and contentEncoding getters to PerformanceResourceTiming and update the WPT status accordingly. Signed-off-by: greenhead <shren0812@gmail.com>
2ebef57 to
94dca40
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #65017 +/- ##
==========================================
- Coverage 90.30% 90.07% -0.24%
==========================================
Files 759 751 -8
Lines 247621 254817 +7196
Branches 46672 48095 +1423
==========================================
+ Hits 223603 229514 +5911
- Misses 15473 16487 +1014
- Partials 8545 8816 +271
🚀 New features to boost your workflow:
|
|
Hello @legendecas @jasnell 🖐️ Thank you for all the work that goes into reviewing contributions here! Just a gentle ping in case this PR slipped through the cracks. I would appreciate any feedback whenever you have time, no rush at all. Thanks! |
The spec defines responseStart as firstInterimResponseStart when that is not 0, and finalResponseHeadersStart otherwise. Signed-off-by: greenhead <greenheadhq@gmail.com>
Document the five getters PerformanceResourceTiming gained: finalResponseHeadersStart, firstInterimResponseStart, renderBlockingStatus, contentType and contentEncoding, add the missing responseStart entry, and record its new interim-aware behavior. Signed-off-by: greenhead <greenheadhq@gmail.com>
| The high resolution millisecond timestamp representing the time immediately | ||
| after Node.js receives the first byte of the first interim response, such as | ||
| a `103 Early Hints` response. Node.js does not currently record interim | ||
| responses, so the property always returns 0. |
There was a problem hiding this comment.
The added test shows that this property can return a non-zero value even though interim responses are not currently recorded.
assert.strictEqual(resource.firstInterimResponseStart, 45);
This mixes the API's capabilities with current Node.js behavior. The other added properties appear to have the same issue.
Add the PerformanceResourceTiming attributes still missing from the Resource Timing spec:
finalResponseHeadersStart,firstInterimResponseStart,renderBlockingStatus,contentTypeandcontentEncoding. The getters follow the existing pattern in the file, and the WPT status file drops the ten idlharness subtests this makes pass.Current values:
finalResponseHeadersStart: same timing info field asresponseStartcontentType:''(undici computes it in its report timing steps, but that path is currently unreachable since the request's initiator type is never set, and the reporting path that actually runs doesn't pass body info at all)contentEncoding:''(spec default, not populated by the fetch side yet)firstInterimResponseStart:0(same)renderBlockingStatus:'non-blocking'(same)The getters pick up real values automatically once the producer side fills them in. Precedent: #51589 added
deliveryTypeandresponseStatusthe same way.responseStartnow returnsfirstInterimResponseStartwhen it is non-zero, per the spec (no observable change, since nothing records interim response timings yet).Refs: #51589