aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/element.rs
diff options
context:
space:
mode:
authorMartin Robinson <mrobinson@igalia.com>2024-04-03 10:41:19 +0200
committerGitHub <noreply@github.com>2024-04-03 08:41:19 +0000
commit18b37e676bcd50f754cd189444080fc547c9d48a (patch)
treeca2e235d13b6f9b19cff9172810b0c6f08265f3b /components/script/dom/element.rs
parent8aaff613342568c13e9141758b770788694d2f84 (diff)
downloadservo-18b37e676bcd50f754cd189444080fc547c9d48a.tar.gz
servo-18b37e676bcd50f754cd189444080fc547c9d48a.zip
script: Reduce the use of `unsafe` in LayoutDom (#31979)
Remove the use of unsafe code in the layout wrappers of the DOM. The main change here is that `unsafe_get()` no longer needs to be an unsafe method, which allows us to transitively remove or reduce unsafe blocks from callers. The function itself is not renamed, because it's still a bit dangerous to start removing the layers of abstraction from actual DOM nodes. In addition `init_style_and_opaque_layout_data` can be merged into `initialize_data`, which removes one more unsafe method. Finally, a "Safety" section is added to some unsafe methods.
Diffstat (limited to 'components/script/dom/element.rs')
-rw-r--r--components/script/dom/element.rs21
1 files changed, 7 insertions, 14 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index b0f3896d50b..85f1cd39b34 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -641,9 +641,8 @@ pub trait LayoutElementHelpers<'dom> {
}
impl<'dom> LayoutDom<'dom, Element> {
- #[allow(unsafe_code)]
pub(super) fn focus_state(self) -> bool {
- unsafe { self.unsafe_get().state.get().contains(ElementState::FOCUS) }
+ self.unsafe_get().state.get().contains(ElementState::FOCUS)
}
}
@@ -1059,12 +1058,11 @@ impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> {
#[allow(unsafe_code)]
fn local_name(self) -> &'dom LocalName {
- unsafe { &(self.unsafe_get()).local_name }
+ &(self.unsafe_get()).local_name
}
- #[allow(unsafe_code)]
fn namespace(self) -> &'dom Namespace {
- unsafe { &(self.unsafe_get()).namespace }
+ &(self.unsafe_get()).namespace
}
fn get_lang_for_layout(self) -> String {
@@ -1091,25 +1089,20 @@ impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> {
}
#[inline]
- #[allow(unsafe_code)]
fn get_state_for_layout(self) -> ElementState {
- unsafe { (self.unsafe_get()).state.get() }
+ (self.unsafe_get()).state.get()
}
#[inline]
- #[allow(unsafe_code)]
fn insert_selector_flags(self, flags: ElementSelectorFlags) {
debug_assert!(thread_state::get().is_layout());
- unsafe {
- let f = &(self.unsafe_get()).selector_flags;
- f.set(f.get() | flags);
- }
+ let f = &(self.unsafe_get()).selector_flags;
+ f.set(f.get() | flags);
}
#[inline]
- #[allow(unsafe_code)]
fn get_selector_flags(self) -> ElementSelectorFlags {
- unsafe { self.unsafe_get().selector_flags.get() }
+ self.unsafe_get().selector_flags.get()
}
#[inline]