aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/shadowroot.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/shadowroot.rs')
-rw-r--r--components/script/dom/shadowroot.rs52
1 files changed, 50 insertions, 2 deletions
diff --git a/components/script/dom/shadowroot.rs b/components/script/dom/shadowroot.rs
index bb3b646a9d2..7f21ca57ad0 100644
--- a/components/script/dom/shadowroot.rs
+++ b/components/script/dom/shadowroot.rs
@@ -2,19 +2,36 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-use crate::dom::documentfragment::DocumentFragment;
+use crate::dom::bindings::codegen::Bindings::NodeBinding::NodeBinding::NodeMethods;
use crate::dom::bindings::codegen::Bindings::ShadowRootBinding::ShadowRootBinding::ShadowRootMethods;
use crate::dom::bindings::codegen::Bindings::ShadowRootBinding::ShadowRootMode;
-use crate::dom::bindings::root::{Dom, DomRoot};
+use crate::dom::bindings::inheritance::Castable;
+use crate::dom::bindings::num::Finite;
+use crate::dom::bindings::root::{Dom, DomRoot, MutNullableDom};
+use crate::dom::cssstylesheet::CSSStyleSheet;
use crate::dom::document::Document;
+use crate::dom::documentfragment::DocumentFragment;
+use crate::dom::documentorshadowroot::DocumentOrShadowRoot;
use crate::dom::element::Element;
+use crate::dom::htmlelement::HTMLElement;
+use crate::dom::node;
+use crate::dom::stylesheetlist::StyleSheetList;
+use crate::dom::window::Window;
+use crate::dom::windowproxy::WindowProxy;
use dom_struct::dom_struct;
+use euclid::Point2D;
+use js::jsapi::JS_GetRuntime;
+use script_layout_interface::message::{NodesFromPointQueryType, QueryMsg};
+use script_traits::UntrustedNodeAddress;
// https://dom.spec.whatwg.org/#interface-shadowroot
#[dom_struct]
pub struct ShadowRoot {
document_fragment: DocumentFragment,
+ has_browsing_context: bool,
host: Dom<Element>,
+ stylesheet_list: MutNullableDom<StyleSheetList>,
+ window: Dom<Window>,
}
impl ShadowRoot {
@@ -22,12 +39,43 @@ impl ShadowRoot {
pub fn new_inherited(host: &Element, document: &Document) -> ShadowRoot {
ShadowRoot {
document_fragment: DocumentFragment::new_inherited(document),
+ has_browsing_context: true,
host: Dom::from_ref(host),
+ stylesheet_list: MutNullableDom::new(None),
+ window: Dom::from_ref(document.window()),
}
}
+
+ pub fn get_focused_element(&self) -> Option<DomRoot<Element>> {
+ //XXX get retargeted focused element
+ None
+ }
+
+ pub fn GetDocumentElement(&self) -> Option<DomRoot<Element>> {
+ None
+ }
+
+ pub fn GetBody(&self) -> Option<DomRoot<HTMLElement>> {
+ None
+ }
+
+ pub fn stylesheet_count(&self) -> usize {
+ //XXX handle shadowroot stylesheets
+ 0
+ }
+
+ pub fn stylesheet_at(&self, _index: usize) -> Option<DomRoot<CSSStyleSheet>> {
+ //XXX handle shadowroot stylesheets
+ None
+ }
+
+ impl_document_or_shadow_root_helpers!();
}
impl ShadowRootMethods for ShadowRoot {
+ /// https://w3c.github.io/webcomponents/spec/shadow/#extensions-to-the-documentorshadowroot-mixin
+ impl_document_or_shadow_root_methods!(ShadowRoot);
+
/// https://dom.spec.whatwg.org/#dom-shadowroot-mode
fn Mode(&self) -> ShadowRootMode {
ShadowRootMode::Closed