aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/customelementregistry.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/customelementregistry.rs')
-rw-r--r--components/script/dom/customelementregistry.rs18
1 files changed, 12 insertions, 6 deletions
diff --git a/components/script/dom/customelementregistry.rs b/components/script/dom/customelementregistry.rs
index 153b1d206fc..df458ec90c3 100644
--- a/components/script/dom/customelementregistry.rs
+++ b/components/script/dom/customelementregistry.rs
@@ -43,12 +43,14 @@ use js::jsval::{JSVal, NullValue, ObjectValue, UndefinedValue};
use js::rust::wrappers::{Construct1, JS_GetProperty, SameValue};
use js::rust::{HandleObject, HandleValue, MutableHandleValue};
use std::cell::Cell;
-use std::collections::{HashMap, VecDeque};
+use std::collections::VecDeque;
use std::mem;
use std::ops::Deref;
use std::ptr;
use std::rc::Rc;
+use super::bindings::trace::HashMapTracedValues;
+
/// <https://dom.spec.whatwg.org/#concept-element-custom-element-state>
#[derive(Clone, Copy, Eq, JSTraceable, MallocSizeOf, PartialEq)]
pub enum CustomElementState {
@@ -72,12 +74,12 @@ pub struct CustomElementRegistry {
window: Dom<Window>,
#[ignore_malloc_size_of = "Rc"]
- when_defined: DomRefCell<HashMap<LocalName, Rc<Promise>>>,
+ when_defined: DomRefCell<HashMapTracedValues<LocalName, Rc<Promise>>>,
element_definition_is_running: Cell<bool>,
#[ignore_malloc_size_of = "Rc"]
- definitions: DomRefCell<HashMap<LocalName, Rc<CustomElementDefinition>>>,
+ definitions: DomRefCell<HashMapTracedValues<LocalName, Rc<CustomElementDefinition>>>,
}
impl CustomElementRegistry {
@@ -85,9 +87,9 @@ impl CustomElementRegistry {
CustomElementRegistry {
reflector_: Reflector::new(),
window: Dom::from_ref(window),
- when_defined: DomRefCell::new(HashMap::new()),
+ when_defined: DomRefCell::new(HashMapTracedValues::new()),
element_definition_is_running: Cell::new(false),
- definitions: DomRefCell::new(HashMap::new()),
+ definitions: DomRefCell::new(HashMapTracedValues::new()),
}
}
@@ -101,7 +103,7 @@ impl CustomElementRegistry {
/// Cleans up any active promises
/// <https://github.com/servo/servo/issues/15318>
pub fn teardown(&self) {
- self.when_defined.borrow_mut().clear()
+ self.when_defined.borrow_mut().0.clear()
}
/// <https://html.spec.whatwg.org/multipage/#look-up-a-custom-element-definition>
@@ -112,6 +114,7 @@ impl CustomElementRegistry {
) -> Option<Rc<CustomElementDefinition>> {
self.definitions
.borrow()
+ .0
.values()
.find(|definition| {
// Step 4-5
@@ -127,6 +130,7 @@ impl CustomElementRegistry {
) -> Option<Rc<CustomElementDefinition>> {
self.definitions
.borrow()
+ .0
.values()
.find(|definition| definition.constructor.callback() == constructor.get())
.cloned()
@@ -497,8 +501,10 @@ pub enum ConstructionStackEntry {
/// <https://html.spec.whatwg.org/multipage/#custom-element-definition>
#[derive(Clone, JSTraceable, MallocSizeOf)]
pub struct CustomElementDefinition {
+ #[no_trace]
pub name: LocalName,
+ #[no_trace]
pub local_name: LocalName,
#[ignore_malloc_size_of = "Rc"]