aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnthony Ramine <nox@nox.paris>2020-04-01 11:25:39 +0200
committerAnthony Ramine <nox@nox.paris>2020-04-01 11:40:55 +0200
commit295f1204257a804a866e48efcc95c226fd7ea3ed (patch)
treeec8f9659977c95d8dc989b4db287b7843be1cea8
parentebd289215852c0fe65ab9633d1bb83243ea6221b (diff)
downloadservo-295f1204257a804a866e48efcc95c226fd7ea3ed.tar.gz
servo-295f1204257a804a866e48efcc95c226fd7ea3ed.zip
Make LayoutShadowRootHelpers::get_style_data_for_layout return a &CascadeData
That return type is Sync, which thus means that the method can be safe.
-rw-r--r--components/layout_thread/dom_wrapper.rs2
-rw-r--r--components/layout_thread_2020/dom_wrapper.rs2
-rw-r--r--components/script/dom/shadowroot.rs9
3 files changed, 8 insertions, 5 deletions
diff --git a/components/layout_thread/dom_wrapper.rs b/components/layout_thread/dom_wrapper.rs
index e25c67b7f1c..9237e9d47e7 100644
--- a/components/layout_thread/dom_wrapper.rs
+++ b/components/layout_thread/dom_wrapper.rs
@@ -177,7 +177,7 @@ impl<'lr> TShadowRoot for ServoShadowRoot<'lr> {
where
Self: 'a,
{
- Some(unsafe { &self.shadow_root.get_style_data_for_layout().data })
+ Some(&self.shadow_root.get_style_data_for_layout())
}
}
diff --git a/components/layout_thread_2020/dom_wrapper.rs b/components/layout_thread_2020/dom_wrapper.rs
index 3a1128cc46e..5a722cd82b8 100644
--- a/components/layout_thread_2020/dom_wrapper.rs
+++ b/components/layout_thread_2020/dom_wrapper.rs
@@ -184,7 +184,7 @@ impl<'lr> TShadowRoot for ServoShadowRoot<'lr> {
where
Self: 'a,
{
- Some(unsafe { &self.shadow_root.get_style_data_for_layout().data })
+ Some(&self.shadow_root.get_style_data_for_layout())
}
}
diff --git a/components/script/dom/shadowroot.rs b/components/script/dom/shadowroot.rs
index df9337eabcc..7e375c4fbba 100644
--- a/components/script/dom/shadowroot.rs
+++ b/components/script/dom/shadowroot.rs
@@ -27,6 +27,7 @@ use style::dom::TElement;
use style::media_queries::Device;
use style::shared_lock::SharedRwLockReadGuard;
use style::stylesheets::Stylesheet;
+use style::stylist::CascadeData;
/// Whether a shadow root hosts an User Agent widget.
#[derive(JSTraceable, MallocSizeOf, PartialEq)]
@@ -241,7 +242,7 @@ impl ShadowRootMethods for ShadowRoot {
#[allow(unsafe_code)]
pub trait LayoutShadowRootHelpers<'dom> {
fn get_host_for_layout(self) -> LayoutDom<'dom, Element>;
- unsafe fn get_style_data_for_layout(self) -> &'dom AuthorStyles<StyleSheetInDocument>;
+ fn get_style_data_for_layout(self) -> &'dom CascadeData;
unsafe fn flush_stylesheets<E: TElement>(
self,
device: &Device,
@@ -264,8 +265,10 @@ impl<'dom> LayoutShadowRootHelpers<'dom> for LayoutDom<'dom, ShadowRoot> {
#[inline]
#[allow(unsafe_code)]
- unsafe fn get_style_data_for_layout(self) -> &'dom AuthorStyles<StyleSheetInDocument> {
- (*self.unsafe_get()).author_styles.borrow_for_layout()
+ fn get_style_data_for_layout(self) -> &'dom CascadeData {
+ fn is_sync<T: Sync>() {}
+ let _ = is_sync::<CascadeData>;
+ unsafe { &self.unsafe_get().author_styles.borrow_for_layout().data }
}
#[inline]