Remove many explicit reflow calls (#33067)

* Remove explicit reflow for iframe content updates.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Remove explicit reflow for timers.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Remove explicit reflow for MouseEvent.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Remove explicit reflow for key events.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Remove explicit reflow for document load.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Remove explicit reflow for iframe load.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Remove unused reflow reasons.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Fix warnings.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

---------

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
Josh Matthews 2024-08-15 18:20:52 -04:00 committed by GitHub
parent a34920b605
commit 3cc91e655f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 1 additions and 27 deletions

View file

@ -1352,9 +1352,6 @@ impl Document {
self.commit_focus_transaction(FocusType::Element);
self.maybe_fire_dblclick(client_point, node, pressed_mouse_buttons);
}
self.window
.reflow(ReflowGoal::Full, ReflowReason::MouseEvent);
}
fn maybe_fire_dblclick(
@ -1570,8 +1567,6 @@ impl Document {
// If the target has changed then store the current mouse over target for next frame.
if target_has_changed {
prev_mouse_over_target.set(maybe_new_target.as_deref());
self.window
.reflow(ReflowGoal::Full, ReflowReason::MouseEvent);
}
}
@ -1772,8 +1767,6 @@ impl Document {
let event = event.upcast::<Event>();
let result = event.fire(&target);
window.reflow(ReflowGoal::Full, ReflowReason::MouseEvent);
match result {
EventStatus::Canceled => TouchEventResult::Processed(false),
EventStatus::NotCanceled => TouchEventResult::Processed(true),
@ -1857,8 +1850,6 @@ impl Document {
}
}
}
self.window.reflow(ReflowGoal::Full, ReflowReason::KeyEvent);
}
pub fn ime_dismissed(&self) {
@ -2363,8 +2354,6 @@ impl Document {
// http://w3c.github.io/navigation-timing/#widl-PerformanceNavigationTiming-loadEventEnd
update_with_current_time_ms(&document.load_event_end);
window.reflow(ReflowGoal::Full, ReflowReason::DocumentLoaded);
if let Some(fragment) = document.url().fragment() {
document.check_and_scroll_fragment(fragment);
}

View file

@ -10,7 +10,6 @@ use dom_struct::dom_struct;
use html5ever::{local_name, namespace_url, ns, LocalName, Prefix};
use js::rust::HandleObject;
use profile_traits::ipc as ProfiledIpc;
use script_layout_interface::ReflowGoal;
use script_traits::IFrameSandboxState::{IFrameSandboxed, IFrameUnsandboxed};
use script_traits::{
HistoryEntryReplacement, IFrameLoadInfo, IFrameLoadInfoWithData, JsEvalResult, LoadData,
@ -40,7 +39,6 @@ use crate::dom::node::{
document_from_node, window_from_node, BindContext, Node, NodeDamage, UnbindContext,
};
use crate::dom::virtualmethods::VirtualMethods;
use crate::dom::window::ReflowReason;
use crate::dom::windowproxy::WindowProxy;
use crate::script_thread::ScriptThread;
@ -420,7 +418,7 @@ impl HTMLIFrameElement {
self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage);
let window = window_from_node(self);
window.reflow(ReflowGoal::Full, ReflowReason::FramedContentChanged);
window.add_pending_reflow();
}
fn new_inherited(
@ -500,9 +498,6 @@ impl HTMLIFrameElement {
LoadBlocker::terminate(&mut blocker);
// TODO Step 5 - unset child document `mut iframe load` flag
let window = window_from_node(self);
window.reflow(ReflowGoal::Full, ReflowReason::IFrameLoadEvent);
}
}

View file

@ -164,23 +164,14 @@ enum WindowState {
#[derive(Debug, MallocSizeOf)]
pub enum ReflowReason {
CachedPageNeededReflow,
DOMContentLoaded,
DocumentLoaded,
ElementStateChanged,
FirstLoad,
FramedContentChanged,
IFrameLoadEvent,
ImageLoaded,
KeyEvent,
MissingExplicitReflow,
MouseEvent,
PendingReflow,
Query,
RefreshTick,
RequestAnimationFrame,
ScrollFromScript,
StylesheetLoaded,
Timer,
Viewport,
WindowResize,
WorkletLoaded,
@ -2320,7 +2311,6 @@ impl Window {
pub fn handle_fire_timer(&self, timer_id: TimerEventId) {
self.upcast::<GlobalScope>().fire_timer(timer_id);
self.reflow(ReflowGoal::Full, ReflowReason::Timer);
}
pub fn set_window_size(&self, size: WindowSizeData) {