diff options
author | Bogdan Cuza <boghison22@gmail.com> | 2015-08-05 18:31:42 +0300 |
---|---|---|
committer | Bogdan Cuza <boghison22@gmail.com> | 2015-08-13 21:44:41 +0300 |
commit | 45145108daa6af7e834a7c23530857c504b54b9c (patch) | |
tree | abc5db1c178435c5192e20049b4b51b196e7b26b /components/script/dom | |
parent | 94c8dcd575a5187e02ec043c686b1cdfa6b30ba6 (diff) | |
download | servo-45145108daa6af7e834a7c23530857c504b54b9c.tar.gz servo-45145108daa6af7e834a7c23530857c504b54b9c.zip |
Measure heap memory usage for more types. Fixes #6951
Diffstat (limited to 'components/script/dom')
155 files changed, 260 insertions, 55 deletions
diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs index 782ab3fd884..06950a515b0 100644 --- a/components/script/dom/attr.rs +++ b/components/script/dom/attr.rs @@ -23,12 +23,13 @@ use std::cell::Ref; use std::mem; use std::ops::Deref; +#[derive(HeapSizeOf)] pub enum AttrSettingType { FirstSetAttr, ReplacedAttr, } -#[derive(JSTraceable, PartialEq, Clone)] +#[derive(JSTraceable, PartialEq, Clone, HeapSizeOf)] pub enum AttrValue { String(DOMString), TokenList(DOMString, Vec<Atom>), @@ -110,6 +111,7 @@ impl Deref for AttrValue { // https://dom.spec.whatwg.org/#interface-attr #[dom_struct] +#[derive(HeapSizeOf)] pub struct Attr { reflector_: Reflector, local_name: Atom, diff --git a/components/script/dom/bindings/error.rs b/components/script/dom/bindings/error.rs index 373c6c7cbe0..023254d55a5 100644 --- a/components/script/dom/bindings/error.rs +++ b/components/script/dom/bindings/error.rs @@ -9,6 +9,7 @@ use dom::bindings::conversions::ToJSValConvertible; use dom::bindings::global::GlobalRef; use dom::domexception::{DOMException, DOMErrorName}; +use util::mem::HeapSizeOf; use util::str::DOMString; use js::jsapi::{JSContext, JSObject, RootedValue}; @@ -24,7 +25,7 @@ use std::ptr; use std::mem; /// DOM exceptions that can be thrown by a native DOM method. -#[derive(Debug, Clone)] +#[derive(Debug, Clone, HeapSizeOf)] pub enum Error { /// IndexSizeError DOMException IndexSize, diff --git a/components/script/dom/bindings/global.rs b/components/script/dom/bindings/global.rs index 053059cec9f..6412a47cbb0 100644 --- a/components/script/dom/bindings/global.rs +++ b/components/script/dom/bindings/global.rs @@ -27,6 +27,8 @@ use js::jsapi::{GetGlobalForObjectCrossCompartment}; use js::jsapi::{JSContext, JSObject, JS_GetClass, MutableHandleValue}; use url::Url; +use util::mem::HeapSizeOf; + /// A freely-copyable reference to a rooted global object. #[derive(Copy, Clone)] pub enum GlobalRef<'a> { @@ -47,7 +49,7 @@ pub enum GlobalRoot { /// A traced reference to a global object, for use in fields of traced Rust /// structures. -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] #[must_root] pub enum GlobalField { /// A field for a `Window` object. diff --git a/components/script/dom/bindings/js.rs b/components/script/dom/bindings/js.rs index 0fde5678ab2..c6199e5dff7 100644 --- a/components/script/dom/bindings/js.rs +++ b/components/script/dom/bindings/js.rs @@ -463,4 +463,3 @@ impl<T: Reflectable> Drop for Root<T> { unsafe { (*self.root_list).unroot(self); } } } - diff --git a/components/script/dom/bindings/str.rs b/components/script/dom/bindings/str.rs index 5ee26f86543..26a4b6149a9 100644 --- a/components/script/dom/bindings/str.rs +++ b/components/script/dom/bindings/str.rs @@ -11,8 +11,10 @@ use std::ops; use std::str; use std::str::FromStr; +use util::mem::HeapSizeOf; + /// Encapsulates the IDL `ByteString` type. -#[derive(JSTraceable,Clone,Eq,PartialEq)] +#[derive(JSTraceable, Clone, Eq, PartialEq, HeapSizeOf)] pub struct ByteString(Vec<u8>); impl ByteString { diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs index b20c5997a7b..51a5ac0ab8c 100644 --- a/components/script/dom/blob.rs +++ b/components/script/dom/blob.rs @@ -17,7 +17,7 @@ use std::borrow::ToOwned; use std::cmp::{min, max}; use std::cell::{Cell}; -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] pub enum BlobTypeId { Blob, File, @@ -25,6 +25,7 @@ pub enum BlobTypeId { // http://dev.w3.org/2006/webapi/FileAPI/#blob #[dom_struct] +#[derive(HeapSizeOf)] pub struct Blob { reflector_: Reflector, type_: BlobTypeId, diff --git a/components/script/dom/canvasgradient.rs b/components/script/dom/canvasgradient.rs index de1d428dad2..ca91a7a7857 100644 --- a/components/script/dom/canvasgradient.rs +++ b/components/script/dom/canvasgradient.rs @@ -16,13 +16,14 @@ use dom::canvasrenderingcontext2d::parse_color; // https://html.spec.whatwg.org/multipage/#canvasgradient #[dom_struct] +#[derive(HeapSizeOf)] pub struct CanvasGradient { reflector_: Reflector, style: CanvasGradientStyle, stops: DOMRefCell<Vec<CanvasGradientStop>>, } -#[derive(JSTraceable, Clone)] +#[derive(JSTraceable, Clone, HeapSizeOf)] pub enum CanvasGradientStyle { Linear(LinearGradientStyle), Radial(RadialGradientStyle), diff --git a/components/script/dom/canvaspattern.rs b/components/script/dom/canvaspattern.rs index 25293e526f0..49dae9c419b 100644 --- a/components/script/dom/canvaspattern.rs +++ b/components/script/dom/canvaspattern.rs @@ -12,6 +12,7 @@ use euclid::size::Size2D; // https://html.spec.whatwg.org/multipage/#canvaspattern #[dom_struct] +#[derive(HeapSizeOf)] pub struct CanvasPattern { reflector_: Reflector, surface_data: Vec<u8>, diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index d533d100d33..6d3c6edddda 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -51,7 +51,7 @@ use url::Url; use util::vec::byte_swap; #[must_root] -#[derive(JSTraceable, Clone)] +#[derive(JSTraceable, Clone, HeapSizeOf)] pub enum CanvasFillOrStrokeStyle { Color(RGBA), Gradient(JS<CanvasGradient>), @@ -60,10 +60,12 @@ pub enum CanvasFillOrStrokeStyle { // https://html.spec.whatwg.org/multipage/#canvasrenderingcontext2d #[dom_struct] +#[derive(HeapSizeOf)] pub struct CanvasRenderingContext2D { reflector_: Reflector, global: GlobalField, renderer_id: usize, + #[ignore_heap_size_of = "Defined in ipc-channel"] ipc_renderer: IpcSender<CanvasMsg>, canvas: JS<HTMLCanvasElement>, state: RefCell<CanvasContextState>, @@ -71,7 +73,7 @@ pub struct CanvasRenderingContext2D { } #[must_root] -#[derive(JSTraceable, Clone)] +#[derive(JSTraceable, Clone, HeapSizeOf)] struct CanvasContextState { global_alpha: f64, global_composition: CompositionOrBlending, diff --git a/components/script/dom/closeevent.rs b/components/script/dom/closeevent.rs index b4c6a955500..07a6fb39379 100644 --- a/components/script/dom/closeevent.rs +++ b/components/script/dom/closeevent.rs @@ -16,6 +16,7 @@ use script_task::ScriptChan; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct CloseEvent { event: Event, wasClean: bool, diff --git a/components/script/dom/comment.rs b/components/script/dom/comment.rs index da617903806..930d737a168 100644 --- a/components/script/dom/comment.rs +++ b/components/script/dom/comment.rs @@ -16,6 +16,7 @@ use util::str::DOMString; /// An HTML comment. #[dom_struct] +#[derive(HeapSizeOf)] pub struct Comment { characterdata: CharacterData, } diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs index 686c93b642c..0d7d3c9d8f3 100644 --- a/components/script/dom/console.rs +++ b/components/script/dom/console.rs @@ -13,6 +13,7 @@ use util::str::DOMString; // https://developer.mozilla.org/en-US/docs/Web/API/Console #[dom_struct] +#[derive(HeapSizeOf)] pub struct Console { reflector_: Reflector, global: GlobalField, diff --git a/components/script/dom/crypto.rs b/components/script/dom/crypto.rs index ef7bc62c9d9..857e220aca1 100644 --- a/components/script/dom/crypto.rs +++ b/components/script/dom/crypto.rs @@ -22,6 +22,7 @@ no_jsmanaged_fields!(OsRng); // https://developer.mozilla.org/en-US/docs/Web/API/Crypto #[dom_struct] +#[derive(HeapSizeOf)] pub struct Crypto { reflector_: Reflector, rng: DOMRefCell<OsRng>, diff --git a/components/script/dom/css.rs b/components/script/dom/css.rs index 5f4bce94d28..c88b3ea92fc 100644 --- a/components/script/dom/css.rs +++ b/components/script/dom/css.rs @@ -10,6 +10,7 @@ use util::str::DOMString; use cssparser::serialize_identifier; #[dom_struct] +#[derive(HeapSizeOf)] pub struct CSS { reflector_: Reflector, } diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index 02655dfbab2..bbfdbc8231e 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -25,6 +25,7 @@ use std::cell::Ref; // http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface #[dom_struct] +#[derive(HeapSizeOf)] pub struct CSSStyleDeclaration { reflector_: Reflector, owner: JS<HTMLElement>, @@ -32,7 +33,7 @@ pub struct CSSStyleDeclaration { pseudo: Option<PseudoElement>, } -#[derive(PartialEq)] +#[derive(PartialEq, HeapSizeOf)] pub enum CSSModificationAccess { ReadWrite, Readonly diff --git a/components/script/dom/customevent.rs b/components/script/dom/customevent.rs index 303eebb8ca5..a020b7ef5cd 100644 --- a/components/script/dom/customevent.rs +++ b/components/script/dom/customevent.rs @@ -17,8 +17,10 @@ use util::str::DOMString; // https://dom.spec.whatwg.org/#interface-customevent #[dom_struct] +#[derive(HeapSizeOf)] pub struct CustomEvent { event: Event, + #[ignore_heap_size_of = "Defined in rust-mozjs"] detail: MutHeapJSVal, } diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index bce639a5c6b..966f1d78b43 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -98,12 +98,17 @@ enum MixedMessage { // https://html.spec.whatwg.org/multipage/#dedicatedworkerglobalscope #[dom_struct] +#[derive(HeapSizeOf)] pub struct DedicatedWorkerGlobalScope { workerglobalscope: WorkerGlobalScope, id: PipelineId, + #[ignore_heap_size_of = "Defined in std"] receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>, + #[ignore_heap_size_of = "Defined in std"] own_sender: Sender<(TrustedWorkerAddress, ScriptMsg)>, + #[ignore_heap_size_of = "Trusted<T> has unclear ownership like JS<T>"] worker: DOMRefCell<Option<TrustedWorkerAddress>>, + #[ignore_heap_size_of = "Can't measure trait objects"] /// Sender to the parent thread. parent_sender: Box<ScriptChan+Send>, } diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index b765cc829e7..76531e1a72f 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -104,7 +104,7 @@ use std::sync::mpsc::channel; use std::rc::Rc; use time; -#[derive(JSTraceable, PartialEq)] +#[derive(JSTraceable, PartialEq, HeapSizeOf)] pub enum IsHTMLDocument { HTMLDocument, NonHTMLDocument, @@ -171,7 +171,7 @@ impl DocumentDerived for EventTarget { } } -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] struct ImagesFilter; impl CollectionFilter for ImagesFilter { fn filter(&self, elem: &Element, _root: &Node) -> bool { @@ -179,7 +179,7 @@ impl CollectionFilter for ImagesFilter { } } -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] struct EmbedsFilter; impl CollectionFilter for EmbedsFilter { fn filter(&self, elem: &Element, _root: &Node) -> bool { @@ -187,7 +187,7 @@ impl CollectionFilter for EmbedsFilter { } } -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] struct LinksFilter; impl CollectionFilter for LinksFilter { fn filter(&self, elem: &Element, _root: &Node) -> bool { @@ -196,7 +196,7 @@ impl CollectionFilter for LinksFilter { } } -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] struct FormsFilter; impl CollectionFilter for FormsFilter { fn filter(&self, elem: &Element, _root: &Node) -> bool { @@ -204,7 +204,7 @@ impl CollectionFilter for FormsFilter { } } -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] struct ScriptsFilter; impl CollectionFilter for ScriptsFilter { fn filter(&self, elem: &Element, _root: &Node) -> bool { @@ -212,7 +212,7 @@ impl CollectionFilter for ScriptsFilter { } } -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] struct AnchorsFilter; impl CollectionFilter for AnchorsFilter { fn filter(&self, elem: &Element, _root: &Node) -> bool { @@ -220,7 +220,7 @@ impl CollectionFilter for AnchorsFilter { } } -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] struct AppletsFilter; impl CollectionFilter for AppletsFilter { fn filter(&self, elem: &Element, _root: &Node) -> bool { @@ -1053,6 +1053,7 @@ impl<'a> DocumentHelpers<'a> for &'a Document { } } +#[derive(HeapSizeOf)] pub enum MouseEventType { Click, MouseDown, @@ -1060,7 +1061,7 @@ pub enum MouseEventType { } -#[derive(PartialEq)] +#[derive(PartialEq, HeapSizeOf)] pub enum DocumentSource { FromParser, NotFromParser, @@ -1827,7 +1828,7 @@ impl<'a> DocumentMethods for &'a Document { // https://html.spec.whatwg.org/multipage/#dom-tree-accessors:dom-document-nameditem-filter fn NamedGetter(self, _cx: *mut JSContext, name: DOMString, found: &mut bool) -> *mut JSObject { - #[derive(JSTraceable)] + #[derive(JSTraceable, HeapSizeOf)] struct NamedElementFilter { name: Atom, } @@ -1918,6 +1919,7 @@ fn is_scheme_host_port_tuple(url: &Url) -> bool { url.host().is_some() && url.port_or_default().is_some() } +#[derive(HeapSizeOf)] pub enum DocumentProgressTask { DOMContentLoaded, Load, diff --git a/components/script/dom/documentfragment.rs b/components/script/dom/documentfragment.rs index 07baab72224..76dbf0e993a 100644 --- a/components/script/dom/documentfragment.rs +++ b/components/script/dom/documentfragment.rs @@ -21,6 +21,7 @@ use util::str::DOMString; // https://dom.spec.whatwg.org/#documentfragment #[dom_struct] +#[derive(HeapSizeOf)] pub struct DocumentFragment { node: Node, } diff --git a/components/script/dom/documenttype.rs b/components/script/dom/documenttype.rs index 3de5397c206..2a13acb2fe2 100644 --- a/components/script/dom/documenttype.rs +++ b/components/script/dom/documenttype.rs @@ -18,6 +18,7 @@ use std::borrow::ToOwned; // https://dom.spec.whatwg.org/#documenttype /// The `DOCTYPE` tag. #[dom_struct] +#[derive(HeapSizeOf)] pub struct DocumentType { node: Node, name: DOMString, diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs index e724b0bcafb..7ac87ce61c4 100644 --- a/components/script/dom/domexception.rs +++ b/components/script/dom/domexception.rs @@ -13,7 +13,7 @@ use util::str::DOMString; use std::borrow::ToOwned; #[repr(u16)] -#[derive(JSTraceable, Copy, Clone, Debug)] +#[derive(JSTraceable, Copy, Clone, Debug, HeapSizeOf)] pub enum DOMErrorName { IndexSizeError = DOMExceptionConstants::INDEX_SIZE_ERR, HierarchyRequestError = DOMExceptionConstants::HIERARCHY_REQUEST_ERR, @@ -41,6 +41,7 @@ pub enum DOMErrorName { } #[dom_struct] +#[derive(HeapSizeOf)] pub struct DOMException { reflector_: Reflector, code: DOMErrorName, diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs index 28b5dccfd40..902e19efbea 100644 --- a/components/script/dom/domimplementation.rs +++ b/components/script/dom/domimplementation.rs @@ -27,6 +27,7 @@ use std::borrow::ToOwned; // https://dom.spec.whatwg.org/#domimplementation #[dom_struct] +#[derive(HeapSizeOf)] pub struct DOMImplementation { reflector_: Reflector, document: JS<Document>, diff --git a/components/script/dom/domparser.rs b/components/script/dom/domparser.rs index a225817b985..a011db403df 100644 --- a/components/script/dom/domparser.rs +++ b/components/script/dom/domparser.rs @@ -21,6 +21,7 @@ use util::str::DOMString; use std::borrow::ToOwned; #[dom_struct] +#[derive(HeapSizeOf)] pub struct DOMParser { reflector_: Reflector, window: JS<Window>, //XXXjdm Document instead? diff --git a/components/script/dom/dompoint.rs b/components/script/dom/dompoint.rs index a0cfcf09776..0da4d13d415 100644 --- a/components/script/dom/dompoint.rs +++ b/components/script/dom/dompoint.rs @@ -12,6 +12,7 @@ use dom::dompointreadonly::{DOMPointReadOnly, DOMPointWriteMethods}; // http://dev.w3.org/fxtf/geometry/Overview.html#dompoint #[dom_struct] +#[derive(HeapSizeOf)] pub struct DOMPoint { point: DOMPointReadOnly } diff --git a/components/script/dom/dompointreadonly.rs b/components/script/dom/dompointreadonly.rs index b0a3d33f5e1..57bc2ae24b7 100644 --- a/components/script/dom/dompointreadonly.rs +++ b/components/script/dom/dompointreadonly.rs @@ -11,6 +11,7 @@ use std::cell::Cell; // http://dev.w3.org/fxtf/geometry/Overview.html#dompointreadonly #[dom_struct] +#[derive(HeapSizeOf)] pub struct DOMPointReadOnly { reflector_: Reflector, x: Cell<f64>, diff --git a/components/script/dom/domrect.rs b/components/script/dom/domrect.rs index 8d54301e39e..a3608d3d865 100644 --- a/components/script/dom/domrect.rs +++ b/components/script/dom/domrect.rs @@ -12,6 +12,7 @@ use dom::window::Window; use util::geometry::Au; #[dom_struct] +#[derive(HeapSizeOf)] pub struct DOMRect { reflector_: Reflector, top: f32, diff --git a/components/script/dom/domrectlist.rs b/components/script/dom/domrectlist.rs index c016e2354f1..640a07a49c7 100644 --- a/components/script/dom/domrectlist.rs +++ b/components/script/dom/domrectlist.rs @@ -11,6 +11,7 @@ use dom::domrect::DOMRect; use dom::window::Window; #[dom_struct] +#[derive(HeapSizeOf)] pub struct DOMRectList { reflector_: Reflector, rects: Vec<JS<DOMRect>>, diff --git a/components/script/dom/domstringmap.rs b/components/script/dom/domstringmap.rs index 254bdccaf5e..fe86d4d4b64 100644 --- a/components/script/dom/domstringmap.rs +++ b/components/script/dom/domstringmap.rs @@ -13,6 +13,7 @@ use dom::htmlelement::{HTMLElement, HTMLElementCustomAttributeHelpers}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct DOMStringMap { reflector_: Reflector, element: JS<HTMLElement>, diff --git a/components/script/dom/domtokenlist.rs b/components/script/dom/domtokenlist.rs index b77b34cf743..450a4ab224c 100644 --- a/components/script/dom/domtokenlist.rs +++ b/components/script/dom/domtokenlist.rs @@ -19,6 +19,7 @@ use string_cache::Atom; use std::borrow::ToOwned; #[dom_struct] +#[derive(HeapSizeOf)] pub struct DOMTokenList { reflector_: Reflector, element: JS<Element>, diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 4db26945f2e..b0f296b9a53 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -92,6 +92,7 @@ use std::mem; use std::sync::Arc; #[dom_struct] +#[derive(HeapSizeOf)] pub struct Element { node: Node, local_name: Atom, @@ -125,7 +126,7 @@ pub enum ElementTypeId { Element, } -#[derive(PartialEq)] +#[derive(PartialEq, HeapSizeOf)] pub enum ElementCreator { ParserCreated, ScriptCreated, @@ -562,7 +563,7 @@ impl LayoutElementHelpers for LayoutJS<Element> { } } -#[derive(PartialEq, Eq, Copy, Clone)] +#[derive(PartialEq, Eq, Copy, Clone, HeapSizeOf)] pub enum StylePriority { Important, Normal, diff --git a/components/script/dom/errorevent.rs b/components/script/dom/errorevent.rs index 4efc449b364..ee9d5178d30 100644 --- a/components/script/dom/errorevent.rs +++ b/components/script/dom/errorevent.rs @@ -22,12 +22,14 @@ use std::cell::Cell; use js::jsval::JSVal; #[dom_struct] +#[derive(HeapSizeOf)] pub struct ErrorEvent { event: Event, message: DOMRefCell<DOMString>, filename: DOMRefCell<DOMString>, lineno: Cell<u32>, colno: Cell<u32>, + #[ignore_heap_size_of = "Defined in rust-mozjs"] error: MutHeapJSVal, } diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs index a6a83e2ea5d..43250102b5d 100644 --- a/components/script/dom/event.rs +++ b/components/script/dom/event.rs @@ -20,6 +20,7 @@ use time; #[derive(JSTraceable, Copy, Clone)] #[repr(u16)] +#[derive(HeapSizeOf)] pub enum EventPhase { None = EventConstants::NONE, Capturing = EventConstants::CAPTURING_PHASE, @@ -27,7 +28,7 @@ pub enum EventPhase { Bubbling = EventConstants::BUBBLING_PHASE, } -#[derive(JSTraceable, PartialEq)] +#[derive(JSTraceable, PartialEq, HeapSizeOf)] pub enum EventTypeId { CustomEvent, HTMLEvent, @@ -41,19 +42,20 @@ pub enum EventTypeId { CloseEvent } -#[derive(PartialEq)] +#[derive(PartialEq, HeapSizeOf)] pub enum EventBubbles { Bubbles, DoesNotBubble } -#[derive(PartialEq)] +#[derive(PartialEq, HeapSizeOf)] pub enum EventCancelable { Cancelable, NotCancelable } #[dom_struct] +#[derive(HeapSizeOf)] pub struct Event { reflector_: Reflector, type_id: EventTypeId, diff --git a/components/script/dom/file.rs b/components/script/dom/file.rs index f5cc0806c64..563c60bc9b3 100644 --- a/components/script/dom/file.rs +++ b/components/script/dom/file.rs @@ -11,6 +11,7 @@ use dom::blob::{Blob, BlobTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct File { blob: Blob, name: DOMString, diff --git a/components/script/dom/filelist.rs b/components/script/dom/filelist.rs index 75e06d026d5..b6a650cee65 100644 --- a/components/script/dom/filelist.rs +++ b/components/script/dom/filelist.rs @@ -12,6 +12,7 @@ use dom::window::Window; // https://w3c.github.io/FileAPI/#dfn-filelist #[dom_struct] +#[derive(HeapSizeOf)] pub struct FileList { reflector_: Reflector, list: Vec<JS<File>> diff --git a/components/script/dom/filereader.rs b/components/script/dom/filereader.rs index 2e0cec633ed..ebf67ded61a 100644 --- a/components/script/dom/filereader.rs +++ b/components/script/dom/filereader.rs @@ -29,7 +29,7 @@ use util::str::DOMString; use util::task::spawn_named; use rustc_serialize::base64::{Config, ToBase64, CharacterSet, Newline}; -#[derive(PartialEq, Clone, Copy, JSTraceable)] +#[derive(PartialEq, Clone, Copy, JSTraceable, HeapSizeOf)] pub enum FileReaderFunction { ReadAsText, ReadAsDataUrl, @@ -37,7 +37,7 @@ pub enum FileReaderFunction { pub type TrustedFileReader = Trusted<FileReader>; -#[derive(Clone)] +#[derive(Clone, HeapSizeOf)] pub struct ReadMetaData { pub blobtype: DOMString, pub label: Option<DOMString>, @@ -55,11 +55,11 @@ impl ReadMetaData { } } -#[derive(PartialEq, Clone, Copy, JSTraceable)] +#[derive(PartialEq, Clone, Copy, JSTraceable, HeapSizeOf)] pub struct GenerationId(u32); #[repr(u16)] -#[derive(Copy, Clone, Debug, PartialEq, JSTraceable)] +#[derive(Copy, Clone, Debug, PartialEq, JSTraceable, HeapSizeOf)] pub enum FileReaderReadyState { Empty = FileReaderConstants::EMPTY, Loading = FileReaderConstants::LOADING, @@ -67,6 +67,7 @@ pub enum FileReaderReadyState { } #[dom_struct] +#[derive(HeapSizeOf)] pub struct FileReader { eventtarget: EventTarget, global: GlobalField, diff --git a/components/script/dom/formdata.rs b/components/script/dom/formdata.rs index 5b7f497b8f3..ff2b6d78fdc 100644 --- a/components/script/dom/formdata.rs +++ b/components/script/dom/formdata.rs @@ -23,12 +23,14 @@ use std::collections::hash_map::Entry::{Occupied, Vacant}; #[derive(JSTraceable, Clone)] #[must_root] +#[derive(HeapSizeOf)] pub enum FormDatum { StringData(DOMString), FileData(JS<File>) } #[dom_struct] +#[derive(HeapSizeOf)] pub struct FormData { reflector_: Reflector, data: DOMRefCell<HashMap<DOMString, Vec<FormDatum>>>, diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs index b47d799c8ae..8b539c6b4f0 100644 --- a/components/script/dom/htmlanchorelement.rs +++ b/components/script/dom/htmlanchorelement.rs @@ -33,6 +33,7 @@ use url::UrlParser; use std::default::Default; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLAnchorElement { htmlelement: HTMLElement, rel_list: MutNullableHeap<JS<DOMTokenList>>, diff --git a/components/script/dom/htmlappletelement.rs b/components/script/dom/htmlappletelement.rs index 108ee71e1bf..ab9db6955dd 100644 --- a/components/script/dom/htmlappletelement.rs +++ b/components/script/dom/htmlappletelement.rs @@ -20,6 +20,7 @@ use string_cache::Atom; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLAppletElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlareaelement.rs b/components/script/dom/htmlareaelement.rs index 3af940f5d8b..ee93a27c67f 100644 --- a/components/script/dom/htmlareaelement.rs +++ b/components/script/dom/htmlareaelement.rs @@ -22,6 +22,7 @@ use string_cache::Atom; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLAreaElement { htmlelement: HTMLElement, rel_list: MutNullableHeap<JS<DOMTokenList>>, diff --git a/components/script/dom/htmlaudioelement.rs b/components/script/dom/htmlaudioelement.rs index 8b7c86a3fe4..10872b6e83b 100644 --- a/components/script/dom/htmlaudioelement.rs +++ b/components/script/dom/htmlaudioelement.rs @@ -14,6 +14,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLAudioElement { htmlmediaelement: HTMLMediaElement } diff --git a/components/script/dom/htmlbaseelement.rs b/components/script/dom/htmlbaseelement.rs index 98799a44a89..5a7c0a6d611 100644 --- a/components/script/dom/htmlbaseelement.rs +++ b/components/script/dom/htmlbaseelement.rs @@ -19,6 +19,7 @@ use util::str::DOMString; use url::{Url, UrlParser}; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLBaseElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 3c5b01bc6c7..b886c9e91ec 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -35,6 +35,7 @@ use time; const INITIAL_REFLOW_DELAY: u64 = 200_000_000; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLBodyElement { htmlelement: HTMLElement, background_color: Cell<Option<RGBA>>, diff --git a/components/script/dom/htmlbrelement.rs b/components/script/dom/htmlbrelement.rs index 8050a3fdef8..962fcc54837 100644 --- a/components/script/dom/htmlbrelement.rs +++ b/components/script/dom/htmlbrelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLBRElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs index 927ac9688c7..b1cc150fe52 100644 --- a/components/script/dom/htmlbuttonelement.rs +++ b/components/script/dom/htmlbuttonelement.rs @@ -29,6 +29,7 @@ use std::cell::Cell; #[derive(JSTraceable, PartialEq, Copy, Clone)] #[allow(dead_code)] +#[derive(HeapSizeOf)] enum ButtonType { ButtonSubmit, ButtonReset, @@ -37,6 +38,7 @@ enum ButtonType { } #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLButtonElement { htmlelement: HTMLElement, button_type: Cell<ButtonType> diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index 85adf1b625f..6f307542148 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -38,7 +38,7 @@ const DEFAULT_WIDTH: u32 = 300; const DEFAULT_HEIGHT: u32 = 150; #[must_root] -#[derive(JSTraceable, Clone, Copy)] +#[derive(JSTraceable, Clone, Copy, HeapSizeOf)] pub enum CanvasContext { Context2d(JS<CanvasRenderingContext2D>), WebGL(JS<WebGLRenderingContext>), @@ -47,6 +47,7 @@ pub enum CanvasContext { impl HeapGCValue for CanvasContext {} #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLCanvasElement { htmlelement: HTMLElement, context: MutNullableHeap<CanvasContext>, diff --git a/components/script/dom/htmlcollection.rs b/components/script/dom/htmlcollection.rs index 226c3d58d9f..88414aa6a84 100644 --- a/components/script/dom/htmlcollection.rs +++ b/components/script/dom/htmlcollection.rs @@ -30,8 +30,10 @@ pub enum CollectionTypeId { } #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLCollection { reflector_: Reflector, + #[ignore_heap_size_of = "Contains a trait object; can't measure due to #6870"] collection: CollectionTypeId, } @@ -57,7 +59,7 @@ impl HTMLCollection { fn all_elements(window: &Window, root: &Node, namespace_filter: Option<Namespace>) -> Root<HTMLCollection> { - #[derive(JSTraceable)] + #[derive(JSTraceable, HeapSizeOf)] struct AllElementFilter { namespace_filter: Option<Namespace> } @@ -79,7 +81,7 @@ impl HTMLCollection { return HTMLCollection::all_elements(window, root, None); } - #[derive(JSTraceable)] + #[derive(JSTraceable, HeapSizeOf)] struct TagNameFilter { tag: Atom, ascii_lower_tag: Atom, @@ -110,7 +112,7 @@ impl HTMLCollection { if tag == "*" { return HTMLCollection::all_elements(window, root, namespace_filter); } - #[derive(JSTraceable)] + #[derive(JSTraceable, HeapSizeOf)] struct TagNameNSFilter { tag: Atom, namespace_filter: Option<Namespace> @@ -135,7 +137,7 @@ impl HTMLCollection { pub fn by_class_name(window: &Window, root: &Node, classes: DOMString) -> Root<HTMLCollection> { - #[derive(JSTraceable)] + #[derive(JSTraceable, HeapSizeOf)] struct ClassNameFilter { classes: Vec<Atom> } @@ -153,7 +155,7 @@ impl HTMLCollection { } pub fn children(window: &Window, root: &Node) -> Root<HTMLCollection> { - #[derive(JSTraceable)] + #[derive(JSTraceable, HeapSizeOf)] struct ElementChildFilter; impl CollectionFilter for ElementChildFilter { fn filter(&self, elem: &Element, root: &Node) -> bool { diff --git a/components/script/dom/htmldataelement.rs b/components/script/dom/htmldataelement.rs index e63d41f30a8..da5bc60f522 100644 --- a/components/script/dom/htmldataelement.rs +++ b/components/script/dom/htmldataelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLDataElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmldatalistelement.rs b/components/script/dom/htmldatalistelement.rs index ee8615edc3b..e4037c8ba47 100644 --- a/components/script/dom/htmldatalistelement.rs +++ b/components/script/dom/htmldatalistelement.rs @@ -17,6 +17,7 @@ use dom::node::{Node, NodeTypeId, window_from_node}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLDataListElement { htmlelement: HTMLElement } @@ -51,7 +52,7 @@ impl HTMLDataListElement { impl<'a> HTMLDataListElementMethods for &'a HTMLDataListElement { // https://html.spec.whatwg.org/multipage/#dom-datalist-options fn Options(self) -> Root<HTMLCollection> { - #[derive(JSTraceable)] + #[derive(JSTraceable, HeapSizeOf)] struct HTMLDataListOptionsFilter; impl CollectionFilter for HTMLDataListOptionsFilter { fn filter(&self, elem: &Element, _root: &Node) -> bool { diff --git a/components/script/dom/htmldialogelement.rs b/components/script/dom/htmldialogelement.rs index 98d5e6bbac7..482c92a80e4 100644 --- a/components/script/dom/htmldialogelement.rs +++ b/components/script/dom/htmldialogelement.rs @@ -18,6 +18,7 @@ use util::str::DOMString; use std::borrow::ToOwned; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLDialogElement { htmlelement: HTMLElement, return_value: DOMRefCell<DOMString>, diff --git a/components/script/dom/htmldirectoryelement.rs b/components/script/dom/htmldirectoryelement.rs index 3f1fcfd4759..916868bf753 100644 --- a/components/script/dom/htmldirectoryelement.rs +++ b/components/script/dom/htmldirectoryelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLDirectoryElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmldivelement.rs b/components/script/dom/htmldivelement.rs index 21b1e6cacd1..2c2edd0b0d0 100644 --- a/components/script/dom/htmldivelement.rs +++ b/components/script/dom/htmldivelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLDivElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmldlistelement.rs b/components/script/dom/htmldlistelement.rs index 6446ac408d2..a582ebd75ce 100644 --- a/components/script/dom/htmldlistelement.rs +++ b/components/script/dom/htmldlistelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLDListElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs index 2a196073513..e5f8f35221b 100644 --- a/components/script/dom/htmlelement.rs +++ b/components/script/dom/htmlelement.rs @@ -40,6 +40,7 @@ use std::intrinsics; use std::rc::Rc; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLElement { element: Element, style_decl: MutNullableHeap<JS<CSSStyleDeclaration>>, diff --git a/components/script/dom/htmlembedelement.rs b/components/script/dom/htmlembedelement.rs index 6cabca7e80e..9855702e2e5 100644 --- a/components/script/dom/htmlembedelement.rs +++ b/components/script/dom/htmlembedelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLEmbedElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlfieldsetelement.rs b/components/script/dom/htmlfieldsetelement.rs index 0736a0e33c2..55fd44f1c7a 100644 --- a/components/script/dom/htmlfieldsetelement.rs +++ b/components/script/dom/htmlfieldsetelement.rs @@ -22,6 +22,7 @@ use dom::virtualmethods::VirtualMethods; use util::str::{DOMString, StaticStringVec}; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLFieldSetElement { htmlelement: HTMLElement } @@ -56,7 +57,7 @@ impl HTMLFieldSetElement { impl<'a> HTMLFieldSetElementMethods for &'a HTMLFieldSetElement { // https://www.whatwg.org/html/#dom-fieldset-elements fn Elements(self) -> Root<HTMLCollection> { - #[derive(JSTraceable)] + #[derive(JSTraceable, HeapSizeOf)] struct ElementsFilter; impl CollectionFilter for ElementsFilter { fn filter<'a>(&self, elem: &'a Element, _root: &'a Node) -> bool { diff --git a/components/script/dom/htmlfontelement.rs b/components/script/dom/htmlfontelement.rs index 6a10967e441..61152a47a00 100644 --- a/components/script/dom/htmlfontelement.rs +++ b/components/script/dom/htmlfontelement.rs @@ -19,6 +19,7 @@ use cssparser::RGBA; use std::cell::Cell; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLFontElement { htmlelement: HTMLElement, color: Cell<Option<RGBA>>, diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 6d2f620079d..920d5d326b0 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -43,6 +43,7 @@ use std::borrow::ToOwned; use std::cell::Cell; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLFormElement { htmlelement: HTMLElement, marked_for_reset: Cell<bool>, @@ -149,13 +150,13 @@ impl<'a> HTMLFormElementMethods for &'a HTMLFormElement { } } -#[derive(Copy, Clone)] +#[derive(Copy, Clone, HeapSizeOf)] pub enum SubmittedFrom { FromFormSubmitMethod, NotFromFormSubmitMethod } -#[derive(Copy, Clone)] +#[derive(Copy, Clone, HeapSizeOf)] pub enum ResetFrom { FromFormResetMethod, NotFromFormResetMethod @@ -415,27 +416,28 @@ impl<'a> HTMLFormElementHelpers for &'a HTMLFormElement { } // TODO: add file support +#[derive(HeapSizeOf)] pub struct FormDatum { pub ty: DOMString, pub name: DOMString, pub value: DOMString } -#[derive(Copy, Clone)] +#[derive(Copy, Clone, HeapSizeOf)] pub enum FormEncType { TextPlainEncoded, UrlEncoded, FormDataEncoded } -#[derive(Copy, Clone)] +#[derive(Copy, Clone, HeapSizeOf)] pub enum FormMethod { FormGet, FormPost, FormDialog } -#[derive(Copy, Clone)] +#[derive(Copy, Clone, HeapSizeOf)] pub enum FormSubmitter<'a> { FormElement(&'a HTMLFormElement), InputElement(&'a HTMLInputElement), diff --git a/components/script/dom/htmlframeelement.rs b/components/script/dom/htmlframeelement.rs index d9899ba614d..450cabfb293 100644 --- a/components/script/dom/htmlframeelement.rs +++ b/components/script/dom/htmlframeelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLFrameElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlframesetelement.rs b/components/script/dom/htmlframesetelement.rs index d6f53fb4650..19129e612e2 100644 --- a/components/script/dom/htmlframesetelement.rs +++ b/components/script/dom/htmlframesetelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLFrameSetElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlheadelement.rs b/components/script/dom/htmlheadelement.rs index 1165501f3ee..bfc46895de7 100644 --- a/components/script/dom/htmlheadelement.rs +++ b/components/script/dom/htmlheadelement.rs @@ -15,6 +15,7 @@ use dom::virtualmethods::VirtualMethods; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLHeadElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlheadingelement.rs b/components/script/dom/htmlheadingelement.rs index 4ec34c65a1e..b339a75a8a4 100644 --- a/components/script/dom/htmlheadingelement.rs +++ b/components/script/dom/htmlheadingelement.rs @@ -12,7 +12,7 @@ use dom::htmlelement::{HTMLElement, HTMLElementTypeId}; use dom::node::{Node, NodeTypeId}; use util::str::DOMString; -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] pub enum HeadingLevel { Heading1, Heading2, @@ -23,6 +23,7 @@ pub enum HeadingLevel { } #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLHeadingElement { htmlelement: HTMLElement, level: HeadingLevel, diff --git a/components/script/dom/htmlhrelement.rs b/components/script/dom/htmlhrelement.rs index b04c137e934..6e1c228a7d6 100644 --- a/components/script/dom/htmlhrelement.rs +++ b/components/script/dom/htmlhrelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLHRElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmlhtmlelement.rs b/components/script/dom/htmlhtmlelement.rs index 96190c0599c..497ca631e78 100644 --- a/components/script/dom/htmlhtmlelement.rs +++ b/components/script/dom/htmlhtmlelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLHtmlElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index c7c8a240772..220e55c8b07 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -43,6 +43,7 @@ use util::str::{self, LengthOrPercentageOrAuto}; use js::jsapi::{RootedValue, JSAutoRequest, JSAutoCompartment}; use js::jsval::UndefinedValue; +#[derive(HeapSizeOf)] enum SandboxAllowance { AllowNothing = 0x00, AllowSameOrigin = 0x01, @@ -54,6 +55,7 @@ enum SandboxAllowance { } #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLIFrameElement { htmlelement: HTMLElement, subpage_id: Cell<Option<SubpageId>>, diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 82caf25c4f3..2c9c0606304 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -37,6 +37,7 @@ use std::borrow::ToOwned; use std::sync::Arc; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLImageElement { htmlelement: HTMLElement, url: DOMRefCell<Option<Url>>, diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index 2e883feae1d..f8a6e0a426d 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -46,6 +46,7 @@ const DEFAULT_RESET_VALUE: &'static str = "Reset"; #[derive(JSTraceable, PartialEq, Copy, Clone)] #[allow(dead_code)] +#[derive(HeapSizeOf)] enum InputType { InputSubmit, InputReset, @@ -59,6 +60,7 @@ enum InputType { } #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLInputElement { htmlelement: HTMLElement, input_type: Cell<InputType>, @@ -68,6 +70,7 @@ pub struct HTMLInputElement { indeterminate: Cell<bool>, value_changed: Cell<bool>, size: Cell<u32>, + #[ignore_heap_size_of = "#7193"] textinput: DOMRefCell<TextInput<ConstellationChan>>, activation_state: DOMRefCell<InputActivationState>, } @@ -80,6 +83,7 @@ impl PartialEq for HTMLInputElement { #[derive(JSTraceable)] #[must_root] +#[derive(HeapSizeOf)] struct InputActivationState { indeterminate: bool, checked: bool, diff --git a/components/script/dom/htmllabelelement.rs b/components/script/dom/htmllabelelement.rs index 45d10e9bf89..4b66644f060 100644 --- a/components/script/dom/htmllabelelement.rs +++ b/components/script/dom/htmllabelelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLLabelElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmllegendelement.rs b/components/script/dom/htmllegendelement.rs index 7795af24806..50d67a400d1 100644 --- a/components/script/dom/htmllegendelement.rs +++ b/components/script/dom/htmllegendelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLLegendElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmllielement.rs b/components/script/dom/htmllielement.rs index 658664c82c4..a5f15fefec9 100644 --- a/components/script/dom/htmllielement.rs +++ b/components/script/dom/htmllielement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLLIElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index 03c69584d0f..b5012a2b6f3 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -39,6 +39,7 @@ use url::UrlParser; use string_cache::Atom; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLLinkElement { htmlelement: HTMLElement, rel_list: MutNullableHeap<JS<DOMTokenList>>, diff --git a/components/script/dom/htmlmapelement.rs b/components/script/dom/htmlmapelement.rs index 98927d6357c..64b4b7b55a7 100644 --- a/components/script/dom/htmlmapelement.rs +++ b/components/script/dom/htmlmapelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLMapElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index 847132c6452..95b7cc5060b 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -11,6 +11,7 @@ use dom::node::NodeTypeId; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLMediaElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmlmetaelement.rs b/components/script/dom/htmlmetaelement.rs index 926fbf2c11f..cc2fe60ecbd 100644 --- a/components/script/dom/htmlmetaelement.rs +++ b/components/script/dom/htmlmetaelement.rs @@ -14,6 +14,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLMetaElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmlmeterelement.rs b/components/script/dom/htmlmeterelement.rs index ee9e556308d..6247b701a87 100644 --- a/components/script/dom/htmlmeterelement.rs +++ b/components/script/dom/htmlmeterelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLMeterElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlmodelement.rs b/components/script/dom/htmlmodelement.rs index c7888ea2046..446c4b70544 100644 --- a/components/script/dom/htmlmodelement.rs +++ b/components/script/dom/htmlmodelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLModElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlobjectelement.rs b/components/script/dom/htmlobjectelement.rs index 745b7821c55..08406a85ea5 100644 --- a/components/script/dom/htmlobjectelement.rs +++ b/components/script/dom/htmlobjectelement.rs @@ -25,6 +25,7 @@ use util::str::DOMString; use std::sync::Arc; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLObjectElement { htmlelement: HTMLElement, image: DOMRefCell<Option<Arc<Image>>>, diff --git a/components/script/dom/htmlolistelement.rs b/components/script/dom/htmlolistelement.rs index c71028709de..6bf0e106f60 100644 --- a/components/script/dom/htmlolistelement.rs +++ b/components/script/dom/htmlolistelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLOListElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmloptgroupelement.rs b/components/script/dom/htmloptgroupelement.rs index 76f0a3c283e..297a0dcedb8 100644 --- a/components/script/dom/htmloptgroupelement.rs +++ b/components/script/dom/htmloptgroupelement.rs @@ -20,6 +20,7 @@ use dom::virtualmethods::VirtualMethods; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLOptGroupElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs index 28b7f0651ae..93ed56c437e 100644 --- a/components/script/dom/htmloptionelement.rs +++ b/components/script/dom/htmloptionelement.rs @@ -23,6 +23,7 @@ use dom::virtualmethods::VirtualMethods; use util::str::{DOMString, split_html_space_chars}; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLOptionElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmloutputelement.rs b/components/script/dom/htmloutputelement.rs index ad7f64e1b75..117294c3b6e 100644 --- a/components/script/dom/htmloutputelement.rs +++ b/components/script/dom/htmloutputelement.rs @@ -15,6 +15,7 @@ use dom::validitystate::ValidityState; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLOutputElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlparagraphelement.rs b/components/script/dom/htmlparagraphelement.rs index 62f7d271c4a..aa5aec990c9 100644 --- a/components/script/dom/htmlparagraphelement.rs +++ b/components/script/dom/htmlparagraphelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLParagraphElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlparamelement.rs b/components/script/dom/htmlparamelement.rs index 2942ccf49ca..5df9ff982ef 100644 --- a/components/script/dom/htmlparamelement.rs +++ b/components/script/dom/htmlparamelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLParamElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlpreelement.rs b/components/script/dom/htmlpreelement.rs index 956301296ef..3fc2fea0387 100644 --- a/components/script/dom/htmlpreelement.rs +++ b/components/script/dom/htmlpreelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLPreElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmlprogresselement.rs b/components/script/dom/htmlprogresselement.rs index 7449f79dcac..a03dfe8f1e4 100644 --- a/components/script/dom/htmlprogresselement.rs +++ b/components/script/dom/htmlprogresselement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLProgressElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmlquoteelement.rs b/components/script/dom/htmlquoteelement.rs index a08f95147e4..c7ad4d75d9a 100644 --- a/components/script/dom/htmlquoteelement.rs +++ b/components/script/dom/htmlquoteelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLQuoteElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs index b4c8a5e4946..16b8933f450 100644 --- a/components/script/dom/htmlscriptelement.rs +++ b/components/script/dom/htmlscriptelement.rs @@ -52,6 +52,7 @@ use string_cache::Atom; use url::{Url, UrlParser}; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLScriptElement { htmlelement: HTMLElement, @@ -74,6 +75,7 @@ pub struct HTMLScriptElement { /// Document of the parser that created this element parser_document: JS<Document>, + #[ignore_heap_size_of = "Defined in rust-encoding"] /// https://html.spec.whatwg.org/multipage/#concept-script-encoding block_character_encoding: DOMRefCell<EncodingRef>, } @@ -160,6 +162,7 @@ static SCRIPT_JS_MIMES: StaticStringVec = &[ "text/x-javascript", ]; +#[derive(HeapSizeOf)] pub enum ScriptOrigin { Internal(String, Url), External(Result<(Metadata, Vec<u8>), String>), diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index a24c892335a..f2628f6b882 100644 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -25,6 +25,7 @@ use string_cache::Atom; use std::borrow::ToOwned; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLSelectElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlsourceelement.rs b/components/script/dom/htmlsourceelement.rs index d93eb56f132..5b00feab231 100644 --- a/components/script/dom/htmlsourceelement.rs +++ b/components/script/dom/htmlsourceelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLSourceElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlspanelement.rs b/components/script/dom/htmlspanelement.rs index 8772b143871..8bbad4c20bb 100644 --- a/components/script/dom/htmlspanelement.rs +++ b/components/script/dom/htmlspanelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLSpanElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlstyleelement.rs b/components/script/dom/htmlstyleelement.rs index 22c4c705ccb..a8a989641a0 100644 --- a/components/script/dom/htmlstyleelement.rs +++ b/components/script/dom/htmlstyleelement.rs @@ -22,6 +22,7 @@ use style::media_queries::parse_media_query_list; use cssparser::Parser as CssParser; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLStyleElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmltablecaptionelement.rs b/components/script/dom/htmltablecaptionelement.rs index 6f6c9223902..ca6ee6037d2 100644 --- a/components/script/dom/htmltablecaptionelement.rs +++ b/components/script/dom/htmltablecaptionelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTableCaptionElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs index 873cbb184e8..6f5d580eee8 100644 --- a/components/script/dom/htmltablecellelement.rs +++ b/components/script/dom/htmltablecellelement.rs @@ -36,6 +36,7 @@ impl PartialEq for HTMLTableCellElementTypeId { } #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTableCellElement { htmlelement: HTMLElement, background_color: Cell<Option<RGBA>>, diff --git a/components/script/dom/htmltablecolelement.rs b/components/script/dom/htmltablecolelement.rs index 37981cebc2d..ab7f26da579 100644 --- a/components/script/dom/htmltablecolelement.rs +++ b/components/script/dom/htmltablecolelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTableColElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmltabledatacellelement.rs b/components/script/dom/htmltabledatacellelement.rs index 684ec8078a4..a26c5da8bbf 100644 --- a/components/script/dom/htmltabledatacellelement.rs +++ b/components/script/dom/htmltabledatacellelement.rs @@ -14,6 +14,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTableDataCellElement { htmltablecellelement: HTMLTableCellElement, } diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs index 96db990368b..e889716572d 100644 --- a/components/script/dom/htmltableelement.rs +++ b/components/script/dom/htmltableelement.rs @@ -27,6 +27,7 @@ use string_cache::Atom; use std::cell::Cell; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTableElement { htmlelement: HTMLElement, background_color: Cell<Option<RGBA>>, diff --git a/components/script/dom/htmltableheadercellelement.rs b/components/script/dom/htmltableheadercellelement.rs index c7aa052eb7d..3bcd41db05d 100644 --- a/components/script/dom/htmltableheadercellelement.rs +++ b/components/script/dom/htmltableheadercellelement.rs @@ -14,6 +14,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTableHeaderCellElement { htmltablecellelement: HTMLTableCellElement, } diff --git a/components/script/dom/htmltablerowelement.rs b/components/script/dom/htmltablerowelement.rs index 7ebae106632..5d200eac16f 100644 --- a/components/script/dom/htmltablerowelement.rs +++ b/components/script/dom/htmltablerowelement.rs @@ -18,6 +18,7 @@ use util::str::{self, DOMString}; use std::cell::Cell; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTableRowElement { htmlelement: HTMLElement, background_color: Cell<Option<RGBA>>, diff --git a/components/script/dom/htmltablesectionelement.rs b/components/script/dom/htmltablesectionelement.rs index 6c37c0923c3..ceb03aa60ec 100644 --- a/components/script/dom/htmltablesectionelement.rs +++ b/components/script/dom/htmltablesectionelement.rs @@ -18,6 +18,7 @@ use util::str::{self, DOMString}; use std::cell::Cell; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTableSectionElement { htmlelement: HTMLElement, background_color: Cell<Option<RGBA>>, diff --git a/components/script/dom/htmltemplateelement.rs b/components/script/dom/htmltemplateelement.rs index 2d37dd5593a..ba3250e0744 100644 --- a/components/script/dom/htmltemplateelement.rs +++ b/components/script/dom/htmltemplateelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTemplateElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index 22e843fa08f..5d25ab08299 100644 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -38,8 +38,10 @@ use std::borrow::ToOwned; use std::cell::Cell; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTextAreaElement { htmlelement: HTMLElement, + #[ignore_heap_size_of = "#7193"] textinput: DOMRefCell<TextInput<ConstellationChan>>, cols: Cell<u32>, rows: Cell<u32>, diff --git a/components/script/dom/htmltimeelement.rs b/components/script/dom/htmltimeelement.rs index 828ba4b912a..37bca69f08d 100644 --- a/components/script/dom/htmltimeelement.rs +++ b/components/script/dom/htmltimeelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTimeElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmltitleelement.rs b/components/script/dom/htmltitleelement.rs index e4f51b03629..edc8c73946f 100644 --- a/components/script/dom/htmltitleelement.rs +++ b/components/script/dom/htmltitleelement.rs @@ -19,6 +19,7 @@ use dom::virtualmethods::VirtualMethods; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTitleElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmltrackelement.rs b/components/script/dom/htmltrackelement.rs index ba13e20ed4d..599a214f1d9 100644 --- a/components/script/dom/htmltrackelement.rs +++ b/components/script/dom/htmltrackelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLTrackElement { htmlelement: HTMLElement, } diff --git a/components/script/dom/htmlulistelement.rs b/components/script/dom/htmlulistelement.rs index 0287757d002..40133f9b365 100644 --- a/components/script/dom/htmlulistelement.rs +++ b/components/script/dom/htmlulistelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLUListElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlunknownelement.rs b/components/script/dom/htmlunknownelement.rs index 33bc8a72cb8..a4f35a35534 100644 --- a/components/script/dom/htmlunknownelement.rs +++ b/components/script/dom/htmlunknownelement.rs @@ -13,6 +13,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLUnknownElement { htmlelement: HTMLElement } diff --git a/components/script/dom/htmlvideoelement.rs b/components/script/dom/htmlvideoelement.rs index b95f683bcd2..1ccd7f8eb0c 100644 --- a/components/script/dom/htmlvideoelement.rs +++ b/components/script/dom/htmlvideoelement.rs @@ -14,6 +14,7 @@ use dom::node::{Node, NodeTypeId}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct HTMLVideoElement { htmlmediaelement: HTMLMediaElement } diff --git a/components/script/dom/imagedata.rs b/components/script/dom/imagedata.rs index 513ef791689..00b725b7b97 100644 --- a/components/script/dom/imagedata.rs +++ b/components/script/dom/imagedata.rs @@ -18,6 +18,7 @@ use std::default::Default; #[dom_struct] #[allow(raw_pointer_derive)] +#[derive(HeapSizeOf)] pub struct ImageData { reflector_: Reflector, width: u32, diff --git a/components/script/dom/keyboardevent.rs b/components/script/dom/keyboardevent.rs index 0153ad214be..ff41ad9ca3c 100644 --- a/components/script/dom/keyboardevent.rs +++ b/components/script/dom/keyboardevent.rs @@ -24,6 +24,7 @@ use std::cell::{RefCell, Cell}; no_jsmanaged_fields!(Key); #[dom_struct] +#[derive(HeapSizeOf)] pub struct KeyboardEvent { uievent: UIEvent, key: Cell<Option<Key>>, @@ -746,6 +747,7 @@ fn key_keycode(key: Key) -> u32 { } } +#[derive(HeapSizeOf)] pub struct KeyEventProperties { pub key_string: &'static str, pub code: &'static str, diff --git a/components/script/dom/location.rs b/components/script/dom/location.rs index 69cfb4b7d5b..a3e2a24cb1a 100644 --- a/components/script/dom/location.rs +++ b/components/script/dom/location.rs @@ -16,6 +16,7 @@ use util::str::DOMString; use url::{Url, UrlParser}; #[dom_struct] +#[derive(HeapSizeOf)] pub struct Location { reflector_: Reflector, window: JS<Window>, diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs index 5d5c2d5112d..a445dd4bcd9 100644 --- a/components/script/dom/messageevent.rs +++ b/components/script/dom/messageevent.rs @@ -22,6 +22,7 @@ use std::borrow::ToOwned; use std::default::Default; #[dom_struct] +#[derive(HeapSizeOf)] pub struct MessageEvent { event: Event, data: Heap<JSVal>, diff --git a/components/script/dom/mouseevent.rs b/components/script/dom/mouseevent.rs index fd3831e535b..a160d7a6c1f 100644 --- a/components/script/dom/mouseevent.rs +++ b/components/script/dom/mouseevent.rs @@ -20,6 +20,7 @@ use std::cell::Cell; use std::default::Default; #[dom_struct] +#[derive(HeapSizeOf)] pub struct MouseEvent { uievent: UIEvent, screen_x: Cell<i32>, diff --git a/components/script/dom/namednodemap.rs b/components/script/dom/namednodemap.rs index 5f5462c3542..8894764e073 100644 --- a/components/script/dom/namednodemap.rs +++ b/components/script/dom/namednodemap.rs @@ -16,6 +16,7 @@ use util::str::DOMString; use string_cache::Atom; #[dom_struct] +#[derive(HeapSizeOf)] pub struct NamedNodeMap { reflector_: Reflector, owner: JS<Element>, diff --git a/components/script/dom/navigator.rs b/components/script/dom/navigator.rs index 825ccfdf2e5..c88e2bf3aa5 100644 --- a/components/script/dom/navigator.rs +++ b/components/script/dom/navigator.rs @@ -12,6 +12,7 @@ use dom::window::Window; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct Navigator { reflector_: Reflector, } diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index bcf286374d5..df815ef6b9d 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -203,7 +203,7 @@ impl Drop for Node { /// suppress observers flag /// https://dom.spec.whatwg.org/#concept-node-insert /// https://dom.spec.whatwg.org/#concept-node-remove -#[derive(Copy, Clone)] +#[derive(Copy, Clone, HeapSizeOf)] enum SuppressObserver { Suppressed, Unsuppressed @@ -1455,7 +1455,7 @@ impl Iterator for TreeIterator { } /// Specifies whether children must be recursively cloned or not. -#[derive(Copy, Clone, PartialEq)] +#[derive(Copy, Clone, PartialEq, HeapSizeOf)] pub enum CloneChildrenFlag { CloneChildren, DoNotCloneChildren @@ -2648,7 +2648,7 @@ impl<'a> DisabledStateHelpers for &'a Node { } /// A summary of the changes that happened to a node. -#[derive(Copy, Clone, PartialEq)] +#[derive(Copy, Clone, PartialEq, HeapSizeOf)] pub enum NodeDamage { /// The node's `style` attribute changed. NodeStyleDamaged, diff --git a/components/script/dom/nodeiterator.rs b/components/script/dom/nodeiterator.rs index fcee35ed80d..7e641c83cfd 100644 --- a/components/script/dom/nodeiterator.rs +++ b/components/script/dom/nodeiterator.rs @@ -19,12 +19,15 @@ use std::cell::Cell; use std::rc::Rc; #[dom_struct] +#[derive(HeapSizeOf)] pub struct NodeIterator { reflector_: Reflector, root_node: JS<Node>, + #[ignore_heap_size_of = "Defined in rust-mozjs"] reference_node: MutHeap<JS<Node>>, pointer_before_reference_node: Cell<bool>, what_to_show: u32, + #[ignore_heap_size_of = "Can't measure due to #6870"] filter: Filter, } diff --git a/components/script/dom/nodelist.rs b/components/script/dom/nodelist.rs index 0c6583a684d..bcf941a6aa0 100644 --- a/components/script/dom/nodelist.rs +++ b/components/script/dom/nodelist.rs @@ -13,7 +13,7 @@ use dom::window::Window; use std::cell::Cell; -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] #[must_root] pub enum NodeListType { Simple(Vec<JS<Node>>), @@ -22,6 +22,7 @@ pub enum NodeListType { // https://dom.spec.whatwg.org/#interface-nodelist #[dom_struct] +#[derive(HeapSizeOf)] pub struct NodeList { reflector_: Reflector, list_type: NodeListType, @@ -93,10 +94,11 @@ impl<'a> NodeListHelpers<'a> for &'a NodeList { } } -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] #[must_root] pub struct ChildrenList { node: JS<Node>, + #[ignore_heap_size_of = "Defined in rust-mozjs"] last_visited: MutNullableHeap<JS<Node>>, last_index: Cell<u32>, } diff --git a/components/script/dom/performance.rs b/components/script/dom/performance.rs index b566d4308fd..71ed3b186ea 100644 --- a/components/script/dom/performance.rs +++ b/components/script/dom/performance.rs @@ -15,6 +15,7 @@ use time; pub type DOMHighResTimeStamp = Finite<f64>; #[dom_struct] +#[derive(HeapSizeOf)] pub struct Performance { reflector_: Reflector, timing: JS<PerformanceTiming>, diff --git a/components/script/dom/performancetiming.rs b/components/script/dom/performancetiming.rs index 9e3a7151f14..d1588f72927 100644 --- a/components/script/dom/performancetiming.rs +++ b/components/script/dom/performancetiming.rs @@ -10,6 +10,7 @@ use dom::bindings::utils::{Reflector, reflect_dom_object}; use dom::window::Window; #[dom_struct] +#[derive(HeapSizeOf)] pub struct PerformanceTiming { reflector_: Reflector, navigationStart: u64, diff --git a/components/script/dom/processinginstruction.rs b/components/script/dom/processinginstruction.rs index 41dac86ed04..6b4ae05f592 100644 --- a/components/script/dom/processinginstruction.rs +++ b/components/script/dom/processinginstruction.rs @@ -14,6 +14,7 @@ use util::str::DOMString; /// An HTML processing instruction node. #[dom_struct] +#[derive(HeapSizeOf)] pub struct ProcessingInstruction { characterdata: CharacterData, target: DOMString, diff --git a/components/script/dom/progressevent.rs b/components/script/dom/progressevent.rs index a181ba0c6d6..1dc1f2b9917 100644 --- a/components/script/dom/progressevent.rs +++ b/components/script/dom/progressevent.rs @@ -14,6 +14,7 @@ use dom::event::{Event, EventTypeId, EventBubbles, EventCancelable}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct ProgressEvent { event: Event, length_computable: bool, diff --git a/components/script/dom/range.rs b/components/script/dom/range.rs index c5664874b7d..bf810546be8 100644 --- a/components/script/dom/range.rs +++ b/components/script/dom/range.rs @@ -26,6 +26,7 @@ use std::cmp::{Ord, Ordering, PartialEq, PartialOrd}; use std::rc::Rc; #[dom_struct] +#[derive(HeapSizeOf)] pub struct Range { reflector_: Reflector, inner: Rc<RefCell<RangeInner>>, @@ -682,6 +683,7 @@ impl<'a> RangeMethods for &'a Range { #[derive(JSTraceable)] #[must_root] #[privatize] +#[derive(HeapSizeOf)] pub struct RangeInner { start: BoundaryPoint, end: BoundaryPoint, @@ -816,6 +818,7 @@ impl RangeInner { #[derive(JSTraceable)] #[must_root] #[privatize] +#[derive(HeapSizeOf)] pub struct BoundaryPoint { node: JS<Node>, offset: u32, diff --git a/components/script/dom/screen.rs b/components/script/dom/screen.rs index ff0be321c0c..831fd393670 100644 --- a/components/script/dom/screen.rs +++ b/components/script/dom/screen.rs @@ -10,6 +10,7 @@ use dom::bindings::utils::{Reflector, reflect_dom_object}; use dom::window::Window; #[dom_struct] +#[derive(HeapSizeOf)] pub struct Screen { reflector_: Reflector, } diff --git a/components/script/dom/servohtmlparser.rs b/components/script/dom/servohtmlparser.rs index a81fe125973..c14603df876 100644 --- a/components/script/dom/servohtmlparser.rs +++ b/components/script/dom/servohtmlparser.rs @@ -36,7 +36,7 @@ use hyper::header::ContentType; use hyper::mime::{Mime, TopLevel, SubLevel}; #[must_root] -#[derive(JSTraceable)] +#[derive(JSTraceable, HeapSizeOf)] pub struct Sink { pub base_url: Option<Url>, pub document: JS<Document>, @@ -157,8 +157,10 @@ impl PreInvoke for ParserContext { } #[dom_struct] +#[derive(HeapSizeOf)] pub struct ServoHTMLParser { reflector_: Reflector, + #[ignore_heap_size_of = "Defined in html5ever"] tokenizer: DOMRefCell<Tokenizer>, /// Input chunks received but not yet passed to the parser. pending_input: DOMRefCell<Vec<String>>, diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 636ceb5fb12..e41d06a998d 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -24,6 +24,7 @@ use url::Url; use script_task::{ScriptTask, ScriptMsg, MainThreadRunnable}; #[dom_struct] +#[derive(HeapSizeOf)] pub struct Storage { reflector_: Reflector, global: GlobalField, diff --git a/components/script/dom/storageevent.rs b/components/script/dom/storageevent.rs index 8f722ece866..7fd1c039284 100644 --- a/components/script/dom/storageevent.rs +++ b/components/script/dom/storageevent.rs @@ -17,6 +17,7 @@ use dom::storage::Storage; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct StorageEvent { event: Event, key: DOMRefCell<Option<DOMString>>, diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs index 567bf7f9bee..d783e876b98 100644 --- a/components/script/dom/testbinding.rs +++ b/components/script/dom/testbinding.rs @@ -30,6 +30,7 @@ use std::ptr; use std::rc::Rc; #[dom_struct] +#[derive(HeapSizeOf)] pub struct TestBinding { reflector_: Reflector, global: GlobalField, diff --git a/components/script/dom/testbindingproxy.rs b/components/script/dom/testbindingproxy.rs index 26d9e6e6611..2d2434e5e38 100644 --- a/components/script/dom/testbindingproxy.rs +++ b/components/script/dom/testbindingproxy.rs @@ -10,6 +10,7 @@ use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct TestBindingProxy { reflector_: Reflector } diff --git a/components/script/dom/text.rs b/components/script/dom/text.rs index acc0f304bf2..e2fed3be09c 100644 --- a/components/script/dom/text.rs +++ b/components/script/dom/text.rs @@ -21,6 +21,7 @@ use util::str::DOMString; /// An HTML text node. #[dom_struct] +#[derive(HeapSizeOf)] pub struct Text { characterdata: CharacterData, } diff --git a/components/script/dom/textdecoder.rs b/components/script/dom/textdecoder.rs index 4b8756afba7..e83d85072b3 100644 --- a/components/script/dom/textdecoder.rs +++ b/components/script/dom/textdecoder.rs @@ -24,8 +24,10 @@ use std::ptr; use std::slice; #[dom_struct] +#[derive(HeapSizeOf)] pub struct TextDecoder { reflector_: Reflector, + #[ignore_heap_size_of = "Defined in rust-encoding"] encoding: EncodingRef, fatal: bool, } diff --git a/components/script/dom/textencoder.rs b/components/script/dom/textencoder.rs index 7fc7370ebdc..29a715a8ed1 100644 --- a/components/script/dom/textencoder.rs +++ b/components/script/dom/textencoder.rs @@ -25,9 +25,11 @@ use js::jsapi::{JSContext, JSObject}; use js::jsapi::{JS_NewUint8Array, JS_GetUint8ArrayData}; #[dom_struct] +#[derive(HeapSizeOf)] pub struct TextEncoder { reflector_: Reflector, encoding: DOMString, + #[ignore_heap_size_of = "Defined in rust-encoding"] encoder: EncodingRef, } diff --git a/components/script/dom/uievent.rs b/components/script/dom/uievent.rs index e3411f35cb8..351a6d39443 100644 --- a/components/script/dom/uievent.rs +++ b/components/script/dom/uievent.rs @@ -21,6 +21,7 @@ use std::default::Default; // https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#interface-UIEvent #[dom_struct] +#[derive(HeapSizeOf)] pub struct UIEvent { event: Event, view: MutNullableHeap<JS<Window>>, diff --git a/components/script/dom/url.rs b/components/script/dom/url.rs index 8b94b88b26b..9bbd0f1b5fc 100644 --- a/components/script/dom/url.rs +++ b/components/script/dom/url.rs @@ -17,6 +17,7 @@ use std::borrow::ToOwned; // https://url.spec.whatwg.org/#url #[dom_struct] +#[derive(HeapSizeOf)] pub struct URL { reflector_: Reflector, diff --git a/components/script/dom/urlhelper.rs b/components/script/dom/urlhelper.rs index 4b2f2010fbf..cff468574b2 100644 --- a/components/script/dom/urlhelper.rs +++ b/components/script/dom/urlhelper.rs @@ -9,6 +9,7 @@ use url::{Url, SchemeData}; use std::borrow::ToOwned; use std::fmt::Write; +#[derive(HeapSizeOf)] pub struct UrlHelper; impl UrlHelper { diff --git a/components/script/dom/urlsearchparams.rs b/components/script/dom/urlsearchparams.rs index f51440f51df..e4bc0a8b30d 100644 --- a/components/script/dom/urlsearchparams.rs +++ b/components/script/dom/urlsearchparams.rs @@ -18,6 +18,7 @@ use util::str::DOMString; // https://url.spec.whatwg.org/#interface-urlsearchparams #[dom_struct] +#[derive(HeapSizeOf)] pub struct URLSearchParams { reflector_: Reflector, // https://url.spec.whatwg.org/#concept-urlsearchparams-list diff --git a/components/script/dom/validitystate.rs b/components/script/dom/validitystate.rs index 71750f4315f..f14ebddff6f 100644 --- a/components/script/dom/validitystate.rs +++ b/components/script/dom/validitystate.rs @@ -10,6 +10,7 @@ use dom::window::Window; // https://html.spec.whatwg.org/#validitystate #[dom_struct] +#[derive(HeapSizeOf)] pub struct ValidityState { reflector_: Reflector, state: u8, diff --git a/components/script/dom/webglactiveinfo.rs b/components/script/dom/webglactiveinfo.rs index 0e20e230829..671c50c5d36 100644 --- a/components/script/dom/webglactiveinfo.rs +++ b/components/script/dom/webglactiveinfo.rs @@ -11,6 +11,7 @@ use dom::bindings::utils::{Reflector,reflect_dom_object}; use util::str::DOMString; #[dom_struct] +#[derive(HeapSizeOf)] pub struct WebGLActiveInfo { reflector_: Reflector, size: i32, diff --git a/components/script/dom/webglbuffer.rs b/components/script/dom/webglbuffer.rs index 432caf6276c..5ad078a38e5 100644 --- a/components/script/dom/webglbuffer.rs +++ b/components/script/dom/webglbuffer.rs @@ -14,10 +14,12 @@ use ipc_channel::ipc::{self, IpcSender}; use std::cell::Cell; #[dom_struct] +#[derive(HeapSizeOf)] pub struct WebGLBuffer { webgl_object: WebGLObject, id: u32, is_deleted: Cell<bool>, + #[ignore_heap_size_of = "Defined in ipc-channel"] renderer: IpcSender<CanvasMsg>, } diff --git a/components/script/dom/webglframebuffer.rs b/components/script/dom/webglframebuffer.rs index 2a67bb4dbcb..790cb46c3c4 100644 --- a/components/script/dom/webglframebuffer.rs +++ b/components/script/dom/webglframebuffer.rs @@ -14,10 +14,12 @@ use ipc_channel::ipc::{self, IpcSender}; use std::cell::Cell; #[dom_struct] +#[derive(HeapSizeOf)] pub struct WebGLFramebuffer { webgl_object: WebGLObject, id: u32, is_deleted: Cell<bool>, + #[ignore_heap_size_of = "Defined in ipc-channel"] renderer: IpcSender<CanvasMsg>, } diff --git a/components/script/dom/webglobject.rs b/components/script/dom/webglobject.rs index 82093b64aa7..46ac7d81d80 100644 --- a/components/script/dom/webglobject.rs +++ b/components/script/dom/webglobject.rs @@ -9,6 +9,7 @@ use dom::bindings::utils::{Reflector, reflect_dom_object}; use dom::bindings::js::Root; #[dom_struct] +#[derive(HeapSizeOf)] pub struct WebGLObject { reflector_: Reflector, } diff --git a/components/script/dom/webglprogram.rs b/components/script/dom/webglprogram.rs index a61fc22c905..0c93aba3b5b 100644 --- a/components/script/dom/webglprogram.rs +++ b/components/script/dom/webglprogram.rs @@ -18,12 +18,14 @@ use ipc_channel::ipc::{self, IpcSender}; use std::cell::Cell; #[dom_struct] +#[derive(HeapSizeOf)] pub struct WebGLProgram { webgl_object: WebGLObject, id: u32, is_deleted: Cell<bool>, fragment_shader: MutNullableHeap<JS<WebGLShader>>, vertex_shader: MutNullableHeap<JS<WebGLShader>>, + #[ignore_heap_size_of = "Defined in ipc-channel"] renderer: IpcSender<CanvasMsg>, } diff --git a/components/script/dom/webglrenderbuffer.rs b/components/script/dom/webglrenderbuffer.rs index cfe3fb21261..ed68e6277be 100644 --- a/components/script/dom/webglrenderbuffer.rs +++ b/components/script/dom/webglrenderbuffer.rs @@ -14,10 +14,12 @@ use ipc_channel::ipc::{self, IpcSender}; use std::cell::Cell; #[dom_struct] +#[derive(HeapSizeOf)] pub struct WebGLRenderbuffer { webgl_object: WebGLObject, id: u32, is_deleted: Cell<bool>, + #[ignore_heap_size_of = "Defined in ipc-channel"] renderer: IpcSender<CanvasMsg>, } diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 750edfb8329..0b6fa7b3869 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -50,10 +50,12 @@ macro_rules! handle_potential_webgl_error { } #[dom_struct] +#[derive(HeapSizeOf)] pub struct WebGLRenderingContext { reflector_: Reflector, global: GlobalField, renderer_id: usize, + #[ignore_heap_size_of = "Defined in ipc-channel"] ipc_renderer: IpcSender<CanvasMsg>, canvas: JS<HTMLCanvasElement>, last_error: Cell<Option<WebGLError>>, diff --git a/components/script/dom/webglshader.rs b/components/script/dom/webglshader.rs index 40c26d40c90..3fe107d9f67 100644 --- a/components/script/dom/webglshader.rs +++ b/components/script/dom/webglshader.rs @@ -17,6 +17,7 @@ use std::cell::Cell; use std::cell::RefCell; #[dom_struct] +#[derive(HeapSizeOf)] pub struct WebGLShader { webgl_object: WebGLObject, id: u32, @@ -24,6 +25,7 @@ pub struct WebGLShader { source: RefCell<Option<String>>, is_deleted: Cell<bool>, // TODO(ecoal95): Evaluate moving this to `WebGLObject` + #[ignore_heap_size_of = "Defined in ipc-channel"] renderer: IpcSender<CanvasMsg>, } diff --git a/components/script/dom/webglshaderprecisionformat.rs b/components/script/dom/webglshaderprecisionformat.rs index b5d89d735ee..17c3ce97a8c 100644 --- a/components/script/dom/webglshaderprecisionformat.rs +++ b/components/script/dom/webglshaderprecisionformat.rs @@ -10,6 +10,7 @@ use dom::bindings::js::Root; use dom::bindings::utils::{Reflector,reflect_dom_object}; #[dom_struct] +#[derive(HeapSizeOf)] pub struct WebGLShaderPrecisionFormat { reflector_: Reflector, range_min: i32, diff --git a/components/script/dom/webgltexture.rs b/components/script/dom/webgltexture.rs index 06664a01f3d..579c196e90a 100644 --- a/components/script/dom/webgltexture.rs +++ b/components/script/dom/webgltexture.rs @@ -14,10 +14,12 @@ use ipc_channel::ipc::{self, IpcSender}; use std::cell::Cell; #[dom_struct] +#[derive(HeapSizeOf)] pub struct WebGLTexture { webgl_object: WebGLObject, id: u32, is_deleted: Cell<bool>, + #[ignore_heap_size_of = "Defined in ipc-channel"] renderer: IpcSender<CanvasMsg>, } diff --git a/components/script/dom/webgluniformlocation.rs b/components/script/dom/webgluniformlocation.rs index 56a97555ce6..d7f7c836706 100644 --- a/components/script/dom/webgluniformlocation.rs +++ b/components/script/dom/webgluniformlocation.rs @@ -9,6 +9,7 @@ use dom::bindings::js::Root; use dom::bindings::utils::{Reflector,reflect_dom_object}; #[dom_struct] +#[derive(HeapSizeOf)] pub struct WebGLUniformLocation { reflector_: Reflector, id: i32, diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index ce515d0f276..13f751388f8 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -48,7 +48,7 @@ use std::borrow::ToOwned; use std::cell::{Cell, RefCell}; use std::sync::{Arc, Mutex}; -#[derive(JSTraceable, PartialEq, Copy, Clone, Debug)] +#[derive(JSTraceable, PartialEq, Copy, Clone, Debug, HeapSizeOf)] enum WebSocketRequestState { Connecting = 0, Open = 1, @@ -58,17 +58,20 @@ enum WebSocketRequestState { no_jsmanaged_fields!(Sender<WebSocketStream>); +#[derive(HeapSizeOf)] enum MessageData { Text(String), Binary(Vec<u8>), } #[dom_struct] +#[derive(HeapSizeOf)] pub struct WebSocket { eventtarget: EventTarget, url: Url, global: GlobalField, ready_state: Cell<WebSocketRequestState>, + #[ignore_heap_size_of = "Defined in std"] sender: RefCell<Option<Arc<Mutex<Sender<WebSocketStream>>>>>, failed: Cell<bool>, //Flag to tell if websocket was closed due to failure full: Cell<bool>, //Flag to tell if websocket queue is full diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index f471d068f11..e2e2a8b7550 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -88,7 +88,7 @@ enum WindowState { } /// Extra information concerning the reason for reflowing. -#[derive(Debug)] +#[derive(Debug, HeapSizeOf)] pub enum ReflowReason { CachedPageNeededReflow, RefreshTick, diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index 628b1178c32..bc39afe6490 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -40,9 +40,11 @@ pub type TrustedWorkerAddress = Trusted<Worker>; // https://html.spec.whatwg.org/multipage/#worker #[dom_struct] +#[derive(HeapSizeOf)] pub struct Worker { eventtarget: EventTarget, global: GlobalField, + #[ignore_heap_size_of = "Defined in std"] /// Sender to the Receiver associated with the DedicatedWorkerGlobalScope /// this Worker created. sender: Sender<(TrustedWorkerAddress, ScriptMsg)>, diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index 9a56676eb03..6f88d2eda32 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -53,25 +53,32 @@ pub struct WorkerGlobalScopeInit { // https://html.spec.whatwg.org/multipage/#the-workerglobalscope-common-interface #[dom_struct] +#[derive(HeapSizeOf)] pub struct WorkerGlobalScope { eventtarget: EventTarget, worker_id: WorkerId, worker_url: Url, + #[ignore_heap_size_of = "Defined in std"] runtime: Rc<Runtime>, next_worker_id: Cell<WorkerId>, + #[ignore_heap_size_of = "Defined in std"] resource_task: ResourceTask, location: MutNullableHeap<JS<WorkerLocation>>, navigator: MutNullableHeap<JS<WorkerNavigator>>, console: MutNullableHeap<JS<Console>>, crypto: MutNullableHeap<JS<Crypto>>, timers: TimerManager, + #[ignore_heap_size_of = "Defined in std"] mem_profiler_chan: mem::ProfilerChan, + #[ignore_heap_size_of = "Defined in ipc-channel"] devtools_chan: Option<IpcSender<ScriptToDevtoolsControlMsg>>, + #[ignore_heap_size_of = "Defined in ipc-channel"] /// Optional `IpcSender` for sending the `DevtoolScriptControlMsg` /// to the server from within the worker devtools_sender: Option<IpcSender<DevtoolScriptControlMsg>>, + #[ignore_heap_size_of = "Defined in std"] /// This `Receiver` will be ignored later if the corresponding /// `IpcSender` doesn't exist devtools_receiver: Receiver<DevtoolScriptControlMsg>, @@ -80,6 +87,7 @@ pub struct WorkerGlobalScope { /// from the worker devtools_wants_updates: Cell<bool>, + #[ignore_heap_size_of = "Defined in std"] constellation_chan: ConstellationChan, } diff --git a/components/script/dom/workerlocation.rs b/components/script/dom/workerlocation.rs index b125b778822..fa52ce1dcf4 100644 --- a/components/script/dom/workerlocation.rs +++ b/components/script/dom/workerlocation.rs @@ -16,6 +16,7 @@ use util::str::DOMString; // https://html.spec.whatwg.org/multipage/#worker-locations #[dom_struct] +#[derive(HeapSizeOf)] pub struct WorkerLocation { reflector_: Reflector, url: Url, diff --git a/components/script/dom/workernavigator.rs b/components/script/dom/workernavigator.rs index cf7a106034b..f7330f7db69 100644 --- a/components/script/dom/workernavigator.rs +++ b/components/script/dom/workernavigator.rs @@ -13,6 +13,7 @@ use util::str::DOMString; // https://html.spec.whatwg.org/multipage/#workernavigator #[dom_struct] +#[derive(HeapSizeOf)] pub struct WorkerNavigator { reflector_: Reflector, } diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 980683114a2..c7f975d54cd 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -49,6 +49,7 @@ use net_traits::{ResourceTask, ResourceCORSData, LoadData, LoadConsumer}; use net_traits::{AsyncResponseListener, AsyncResponseTarget, Metadata}; use cors::{allow_cross_origin_request, CORSRequest, RequestMode, AsyncCORSResponseListener}; use cors::CORSResponse; +use util::mem::HeapSizeOf; use util::str::DOMString; use util::task::spawn_named; @@ -69,7 +70,7 @@ use dom::bindings::codegen::UnionTypes::StringOrURLSearchParams::{eString, eURLS pub type SendParam = StringOrURLSearchParams; -#[derive(JSTraceable, PartialEq, Copy, Clone)] +#[derive(JSTraceable, PartialEq, Copy, Clone, HeapSizeOf)] enum XMLHttpRequestState { Unsent = 0, Opened = 1, @@ -78,7 +79,7 @@ enum XMLHttpRequestState { Done = 4, } -#[derive(JSTraceable, PartialEq, Clone, Copy)] +#[derive(JSTraceable, PartialEq, Clone, Copy, HeapSizeOf)] pub struct GenerationId(u32); /// Closure of required data for each async network event that comprises the @@ -115,6 +116,7 @@ impl XHRProgress { } #[dom_struct] +#[derive(HeapSizeOf)] pub struct XMLHttpRequest { eventtarget: XMLHttpRequestEventTarget, ready_state: Cell<XMLHttpRequestState>, @@ -127,11 +129,13 @@ pub struct XMLHttpRequest { response: DOMRefCell<ByteString>, response_type: Cell<XMLHttpRequestResponseType>, response_xml: MutNullableHeap<JS<Document>>, + #[ignore_heap_size_of = "Defined in hyper"] response_headers: DOMRefCell<Headers>, // Associated concepts request_method: DOMRefCell<Method>, request_url: DOMRefCell<Option<Url>>, + #[ignore_heap_size_of = "Defined in hyper"] request_headers: DOMRefCell<Headers>, request_body_len: Cell<usize>, sync: Cell<bool>, @@ -140,8 +144,10 @@ pub struct XMLHttpRequest { send_flag: Cell<bool>, global: GlobalField, + #[ignore_heap_size_of = "Defined in std"] timeout_cancel: DOMRefCell<Option<Sender<()>>>, fetch_time: Cell<i64>, + #[ignore_heap_size_of = "Cannot calculate Heap size"] timeout_target: DOMRefCell<Option<Box<ScriptChan+Send>>>, generation_id: Cell<GenerationId>, response_status: Cell<Result<(), ()>>, @@ -1054,7 +1060,7 @@ impl<'a> PrivateXMLHttpRequestHelpers for &'a XMLHttpRequest { use hyper::error::Result; // a dummy header so we can use headers.remove::<SetCookie2>() - #[derive(Clone, Debug)] + #[derive(Clone, Debug, HeapSizeOf)] struct SetCookie2; impl Header for SetCookie2 { fn header_name() -> &'static str { diff --git a/components/script/dom/xmlhttprequesteventtarget.rs b/components/script/dom/xmlhttprequesteventtarget.rs index 6b50898ab27..af4b8b8bc50 100644 --- a/components/script/dom/xmlhttprequesteventtarget.rs +++ b/components/script/dom/xmlhttprequesteventtarget.rs @@ -15,6 +15,7 @@ pub enum XMLHttpRequestEventTargetTypeId { } #[dom_struct] +#[derive(HeapSizeOf)] pub struct XMLHttpRequestEventTarget { eventtarget: EventTarget, } diff --git a/components/script/dom/xmlhttprequestupload.rs b/components/script/dom/xmlhttprequestupload.rs index 0c864fdd3c9..02e1b38deae 100644 --- a/components/script/dom/xmlhttprequestupload.rs +++ b/components/script/dom/xmlhttprequestupload.rs @@ -12,6 +12,7 @@ use dom::xmlhttprequesteventtarget::XMLHttpRequestEventTarget; use dom::xmlhttprequesteventtarget::XMLHttpRequestEventTargetTypeId; #[dom_struct] +#[derive(HeapSizeOf)] pub struct XMLHttpRequestUpload { eventtarget: XMLHttpRequestEventTarget } |