Skip to content

IFrame navigation requests do not record resource timing entries #41666

@jdm

Description

@jdm

Like #41660, navigation requests do not use the NetworkListener infrastructure so we are missing code that submits timing information when the response is complete. This code is where the response is first processed:

fn notify_fetch(&self, message: FetchResponseMsg) {

The next spot is:

fn handle_fetch_eof(

Finally:

if let Some(pushed_index) = self.pushed_entry_index {
let document = &parser.document;
let performance_entry = PerformanceNavigationTiming::new(
&document.global(),
CrossProcessInstant::now(),
document,
CanGc::note(),
);
document
.global()
.performance()
.update_entry(pushed_index, performance_entry.upcast::<PerformanceEntry>());
}
, which creates a timeline entry in the new document but not in any parent document. Per https://www.w3.org/TR/resource-timing/#resources-included-in-the-performanceresourcetiming-interface:

If an HTML IFRAME element is included on the page, then only the resource requested by IFRAME src attribute is included as a PerformanceResourceTiming object in the Performance Timeline. Sub-resources requested by the IFRAME document will be included in the IFRAME document's Performance Timeline and not the parent document's Performance Timeline.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions