script: Remove explicit reflow for web font loads (#32455)

Instead of using an explicit reflow when a web font laods, queue a
pending reflow. This should be able to eliminate multiple reflows some
situations. A followup should ensure that only nodes that have pending
fonts loading are reflows, but this change is the first step.
This commit is contained in:
Martin Robinson 2024-06-10 15:32:30 +02:00 committed by GitHub
parent e6ea4a9c29
commit 35bbcc0d95
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 8 additions and 8 deletions

View file

@ -182,7 +182,6 @@ pub enum ReflowReason {
StylesheetLoaded,
Timer,
Viewport,
WebFontLoaded,
WindowResize,
WorkletLoaded,
}

View file

@ -3273,10 +3273,14 @@ impl ScriptThread {
/// Handles a Web font being loaded. Does nothing if the page no longer exists.
fn handle_web_font_loaded(&self, pipeline_id: PipelineId) {
let document = self.documents.borrow().find_document(pipeline_id);
if let Some(document) = document {
self.rebuild_and_force_reflow(&document, ReflowReason::WebFontLoaded);
}
let Some(document) = self.documents.borrow().find_document(pipeline_id) else {
warn!("Web font loaded in closed pipeline {}.", pipeline_id);
return;
};
// TODO: This should only dirty nodes that are waiting for a web font to finish loading!
document.dirty_all_nodes();
document.window().add_pending_reflow();
}
/// Handles a worklet being loaded. Does nothing if the page no longer exists.

View file

@ -1,3 +0,0 @@
[before-after-dynamic-attr-001.xht]
type: reftest
expected: FAIL