aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2024-08-15 18:20:52 -0400
committerGitHub <noreply@github.com>2024-08-15 22:20:52 +0000
commit3cc91e655f4119d15fa226cabe8e2f66be3d3c58 (patch)
tree5d95e401c553099ef8166ced29bb8e60c72c0b00 /components/script
parenta34920b6058016f026c2b710224b9227826fcf85 (diff)
downloadservo-3cc91e655f4119d15fa226cabe8e2f66be3d3c58.tar.gz
servo-3cc91e655f4119d15fa226cabe8e2f66be3d3c58.zip
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>
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/document.rs11
-rw-r--r--components/script/dom/htmliframeelement.rs7
-rw-r--r--components/script/dom/window.rs10
3 files changed, 1 insertions, 27 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index bd4773439b3..048628e805f 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -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);
}
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs
index 0ccf0fa7661..73edda35b33 100644
--- a/components/script/dom/htmliframeelement.rs
+++ b/components/script/dom/htmliframeelement.rs
@@ -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);
}
}
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index af01137b8e1..00f03df0e21 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -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) {