diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index fbd4da02d5bd..7170200e4cde 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -143,13 +143,15 @@ use style::values::specified::Length; use tendril::fmt::UTF8; use tendril::stream::LossyDecoder; use tendril::{StrTendril, TendrilSink}; -use time::{Duration, Timespec}; +use time::{Duration, Timespec, Tm}; use uuid::Uuid; use webgpu::{WebGPU, WebGPUAdapter}; use webrender_api::{DocumentId, ImageKey, RenderApiSender}; use webvr_traits::{WebVRGamepadData, WebVRGamepadHand, WebVRGamepadState}; use webxr_api::SwapChainId as WebXRSwapChainId; +unsafe_no_jsmanaged_fields!(Tm); + /// A trait to allow tracing (only) DOM objects. pub unsafe trait JSTraceable { /// Trace `self`. diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 52fc70c5bb3e..ba352511bf86 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -67,6 +67,8 @@ use style::str::split_html_space_chars; use crate::dom::bindings::codegen::UnionTypes::RadioNodeListOrElement; use crate::dom::radionodelist::RadioNodeList; use std::collections::HashMap; +use time::{now, Tm, Duration}; + #[derive(Clone, Copy, JSTraceable, MallocSizeOf, PartialEq)] pub struct GenerationId(u32); @@ -80,7 +82,7 @@ pub struct HTMLFormElement { elements: DomOnceCell, generation_id: Cell, controls: DomRefCell>>, - past_names_map: DomRefCell>>, + past_names_map: DomRefCell, Tm)>>, } impl HTMLFormElement { @@ -300,7 +302,7 @@ impl HTMLFormElementMethods for HTMLFormElement { if candidates.len() == 0 { if past_names_map.contains_key(&name) { return Some(RadioNodeListOrElement::Element(DomRoot::from_ref( - &*past_names_map.get(&name).unwrap(), + &*past_names_map.get(&name).unwrap().0, ))); } return None; @@ -315,7 +317,7 @@ impl HTMLFormElementMethods for HTMLFormElement { let element_node = &candidates[0]; past_names_map.insert( name, - Dom::from_ref(&*element_node.downcast::().unwrap()), + (Dom::from_ref(&*element_node.downcast::().unwrap()), now()), ); return Some(RadioNodeListOrElement::Element(DomRoot::from_ref( @@ -328,7 +330,7 @@ impl HTMLFormElementMethods for HTMLFormElement { enum SourcedNameSource { Id, Name, - Past(std::time::Duration), + Past(Duration), } struct SourcedName {