mirror of
https://github.com/servo/servo
synced 2026-04-26 01:25:32 +02:00
Implement declarative shadow dom (#34964)
* Implement declarative shadow dom Signed-off-by: batu_hoang <longvatrong111@gmail.com> * Set allowDeclarativeShadowRoots false for innerHTML Signed-off-by: batu_hoang <longvatrong111@gmail.com> * Enable allowDeclarativeShadowRoots for Document Signed-off-by: batu_hoang <longvatrong111@gmail.com> * Expose HTMLTemplateElement to js Signed-off-by: batu_hoang <longvatrong111@gmail.com> * Implemenet setHTMLUnsafe and add more test cases Signed-off-by: batu_hoang <longvatrong111@gmail.com> * Declarative shadow dom: minor updates and expected test result update Signed-off-by: batu_hoang <longvatrong111@gmail.com> * Shadow-dom: add more test cases Signed-off-by: batu_hoang <longvatrong111@gmail.com> * Update comments according to the spec Signed-off-by: batu_hoang <longvatrong111@gmail.com> * Bump html5ever version Signed-off-by: batu_hoang <longvatrong111@gmail.com> --------- Signed-off-by: batu_hoang <longvatrong111@gmail.com>
This commit is contained in:
@@ -79,6 +79,9 @@ pub(crate) struct ShadowRoot {
|
||||
slots: DomRefCell<HashMap<DOMString, Vec<Dom<HTMLSlotElement>>>>,
|
||||
|
||||
is_user_agent_widget: bool,
|
||||
|
||||
/// <https://dom.spec.whatwg.org/#shadowroot-declarative>
|
||||
declarative: Cell<bool>,
|
||||
}
|
||||
|
||||
impl ShadowRoot {
|
||||
@@ -113,6 +116,7 @@ impl ShadowRoot {
|
||||
available_to_element_internals: Cell::new(false),
|
||||
slots: Default::default(),
|
||||
is_user_agent_widget: is_user_agent_widget == IsUserAgentWidget::Yes,
|
||||
declarative: Cell::new(false),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -276,6 +280,10 @@ impl ShadowRoot {
|
||||
pub(crate) fn is_user_agent_widget(&self) -> bool {
|
||||
self.is_user_agent_widget
|
||||
}
|
||||
|
||||
pub(crate) fn set_declarative(&self, declarative: bool) {
|
||||
self.declarative.set(declarative);
|
||||
}
|
||||
}
|
||||
|
||||
impl ShadowRootMethods<crate::DomTypeHolder> for ShadowRoot {
|
||||
|
||||
Reference in New Issue
Block a user