mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
script|layout: Do not force restyle when doing script queries (#37677)
Instead of doing a restyle whenever layout is requested, only do one if script believes that the `Document` has changed in a way that needs a restyle. In addition, track the different reasons this might be the case. This will be used later to provide better debugging output. In layout, when a restyle isn't requested, provide: - an early return if layout is up-to-date enough for the reflow goal. - skipping restyle and reflow if it isn't necessary. Testing: This should not change observable behavior, and thus is covered by existing tests. Signed-off-by: Martin Robinson <mrobinson@igalia.com> Co-authored-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
parent
f9880637e9
commit
3e1cdacd07
8 changed files with 168 additions and 127 deletions
|
@ -103,9 +103,7 @@ use crate::dom::customelementregistry::{
|
|||
CallbackReaction, CustomElementDefinition, CustomElementReaction, CustomElementState,
|
||||
is_valid_custom_element_name,
|
||||
};
|
||||
use crate::dom::document::{
|
||||
Document, LayoutDocumentHelpers, ReflowTriggerCondition, determine_policy_for_token,
|
||||
};
|
||||
use crate::dom::document::{Document, LayoutDocumentHelpers, determine_policy_for_token};
|
||||
use crate::dom::documentfragment::DocumentFragment;
|
||||
use crate::dom::domrect::DOMRect;
|
||||
use crate::dom::domrectlist::DOMRectList;
|
||||
|
@ -4693,10 +4691,7 @@ impl Element {
|
|||
.and_then(|data| data.client_rect.as_ref())
|
||||
.and_then(|rect| rect.get().ok())
|
||||
{
|
||||
if matches!(
|
||||
doc.needs_reflow(),
|
||||
None | Some(ReflowTriggerCondition::PaintPostponed)
|
||||
) {
|
||||
if doc.restyle_reason().is_empty() {
|
||||
return rect;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue