aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-07-01 18:27:40 -0600
committerbors-servo <metajack+bors@gmail.com>2015-07-01 18:27:40 -0600
commitbbb39082e0f640400546d2084a450a8675820a82 (patch)
treef531bb4d70d8eb6a1080d9711c29587c883bf0ce /components/script/dom
parentfc1e427ff9bb0e9891053ec1eba292530ebbe91a (diff)
parent4cf46bff2d00f33a8866dc6880c8f6178fdf81a4 (diff)
downloadservo-bbb39082e0f640400546d2084a450a8675820a82.tar.gz
servo-bbb39082e0f640400546d2084a450a8675820a82.zip
Auto merge of #6529 - dwins:master, r=Manishearth
Refactor #[jstraceable] to #[derive(JSTraceable)] fixes #6524. I had to make an additional change not mentioned in the ticket - adding the `#[feature]` to enable deriving custom traits but I assume that's expected at this time. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6529) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/attr.rs3
-rw-r--r--components/script/dom/bindings/callback.rs8
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py5
-rw-r--r--components/script/dom/bindings/global.rs2
-rw-r--r--components/script/dom/bindings/js.rs6
-rw-r--r--components/script/dom/bindings/num.rs3
-rw-r--r--components/script/dom/bindings/str.rs3
-rw-r--r--components/script/dom/bindings/trace.rs6
-rw-r--r--components/script/dom/bindings/utils.rs2
-rw-r--r--components/script/dom/blob.rs2
-rw-r--r--components/script/dom/browsercontext.rs4
-rw-r--r--components/script/dom/canvasgradient.rs3
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs6
-rw-r--r--components/script/dom/characterdata.rs3
-rw-r--r--components/script/dom/dedicatedworkerglobalscope.rs3
-rw-r--r--components/script/dom/document.rs19
-rw-r--r--components/script/dom/domexception.rs3
-rw-r--r--components/script/dom/element.rs3
-rw-r--r--components/script/dom/event.rs6
-rw-r--r--components/script/dom/eventtarget.rs12
-rw-r--r--components/script/dom/formdata.rs3
-rw-r--r--components/script/dom/htmlbuttonelement.rs3
-rw-r--r--components/script/dom/htmlcanvaselement.rs3
-rw-r--r--components/script/dom/htmlcollection.rs12
-rw-r--r--components/script/dom/htmldatalistelement.rs2
-rw-r--r--components/script/dom/htmlelement.rs3
-rw-r--r--components/script/dom/htmlfieldsetelement.rs2
-rw-r--r--components/script/dom/htmlheadingelement.rs2
-rw-r--r--components/script/dom/htmlinputelement.rs5
-rw-r--r--components/script/dom/htmlmediaelement.rs3
-rw-r--r--components/script/dom/htmltablecellelement.rs3
-rw-r--r--components/script/dom/macros.rs2
-rw-r--r--components/script/dom/node.rs5
-rw-r--r--components/script/dom/nodeiterator.rs2
-rw-r--r--components/script/dom/nodelist.rs2
-rw-r--r--components/script/dom/range.rs4
-rw-r--r--components/script/dom/servohtmlparser.rs2
-rw-r--r--components/script/dom/treewalker.rs2
-rw-r--r--components/script/dom/websocket.rs3
-rw-r--r--components/script/dom/window.rs3
-rw-r--r--components/script/dom/workerglobalscope.rs3
-rw-r--r--components/script/dom/xmlhttprequest.rs6
-rw-r--r--components/script/dom/xmlhttprequesteventtarget.rs3
43 files changed, 73 insertions, 107 deletions
diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs
index d0a823621f4..6923c32c0ef 100644
--- a/components/script/dom/attr.rs
+++ b/components/script/dom/attr.rs
@@ -28,8 +28,7 @@ pub enum AttrSettingType {
ReplacedAttr,
}
-#[derive(PartialEq, Clone)]
-#[jstraceable]
+#[derive(JSTraceable, PartialEq, Clone)]
pub enum AttrValue {
String(DOMString),
TokenList(DOMString, Vec<Atom>),
diff --git a/components/script/dom/bindings/callback.rs b/components/script/dom/bindings/callback.rs
index dc1bd386afe..905901e3870 100644
--- a/components/script/dom/bindings/callback.rs
+++ b/components/script/dom/bindings/callback.rs
@@ -33,8 +33,7 @@ pub enum ExceptionHandling {
}
/// A common base class for representing IDL callback function types.
-#[derive(PartialEq)]
-#[jstraceable]
+#[derive(JSTraceable, PartialEq)]
pub struct CallbackFunction {
object: CallbackObject
}
@@ -57,8 +56,7 @@ impl CallbackFunction {
}
/// A common base class for representing IDL callback interface types.
-#[derive(PartialEq)]
-#[jstraceable]
+#[derive(JSTraceable, PartialEq)]
pub struct CallbackInterface {
object: CallbackObject
}
@@ -66,7 +64,7 @@ pub struct CallbackInterface {
/// A common base class for representing IDL callback function and
/// callback interface types.
#[allow(raw_pointer_derive)]
-#[jstraceable]
+#[derive(JSTraceable)]
struct CallbackObject {
/// The underlying `JSObject`.
callback: Heap<*mut JSObject>,
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index 830dcd51b3e..4bfc1d7b8eb 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -3189,8 +3189,7 @@ class CGEnum(CGThing):
decl = """\
#[repr(usize)]
-#[derive(PartialEq, Copy, Clone)]
-#[jstraceable]
+#[derive(JSTraceable, PartialEq, Copy, Clone)]
pub enum %s {
%s
}
@@ -5181,7 +5180,7 @@ class CGCallback(CGClass):
bases=[ClassBase(baseName)],
constructors=self.getConstructors(),
methods=realMethods+getters+setters,
- decorators="#[derive(PartialEq)]#[jstraceable]")
+ decorators="#[derive(JSTraceable, PartialEq)]")
def getConstructors(self):
return [ClassConstructor(
diff --git a/components/script/dom/bindings/global.rs b/components/script/dom/bindings/global.rs
index a6924fbb281..60ac197b0bb 100644
--- a/components/script/dom/bindings/global.rs
+++ b/components/script/dom/bindings/global.rs
@@ -46,7 +46,7 @@ pub enum GlobalRoot {
/// A traced reference to a global object, for use in fields of traced Rust
/// structures.
-#[jstraceable]
+#[derive(JSTraceable)]
#[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 cb02b0d1198..36a3ce19198 100644
--- a/components/script/dom/bindings/js.rs
+++ b/components/script/dom/bindings/js.rs
@@ -164,7 +164,7 @@ impl<T: Reflectable> HeapGCValue for JS<T> {
/// Must be used in place of traditional interior mutability to ensure proper
/// GC barriers are enforced.
#[must_root]
-#[jstraceable]
+#[derive(JSTraceable)]
pub struct MutHeapJSVal {
val: UnsafeCell<Heap<JSVal>>,
}
@@ -196,7 +196,7 @@ impl MutHeapJSVal {
/// A holder that provides interior mutability for GC-managed values such as
/// `JS<T>`.
#[must_root]
-#[jstraceable]
+#[derive(JSTraceable)]
pub struct MutHeap<T: HeapGCValue+Copy> {
val: Cell<T>,
}
@@ -225,7 +225,7 @@ impl<T: HeapGCValue+Copy> MutHeap<T> {
/// place of traditional internal mutability to ensure that the proper GC
/// barriers are enforced.
#[must_root]
-#[jstraceable]
+#[derive(JSTraceable)]
pub struct MutNullableHeap<T: HeapGCValue+Copy> {
ptr: Cell<Option<T>>
}
diff --git a/components/script/dom/bindings/num.rs b/components/script/dom/bindings/num.rs
index d0ceaae89f8..87c5e38a3bb 100644
--- a/components/script/dom/bindings/num.rs
+++ b/components/script/dom/bindings/num.rs
@@ -9,8 +9,7 @@ use num::Float;
use std::ops::Deref;
/// Encapsulates the IDL restricted float type.
-#[derive(Clone,Eq,PartialEq)]
-#[jstraceable]
+#[derive(JSTraceable,Clone,Eq,PartialEq)]
pub struct Finite<T: Float>(T);
unsafe impl<T: Float> Zeroable for Finite<T> {}
diff --git a/components/script/dom/bindings/str.rs b/components/script/dom/bindings/str.rs
index b8c0af0caa6..5ee26f86543 100644
--- a/components/script/dom/bindings/str.rs
+++ b/components/script/dom/bindings/str.rs
@@ -12,8 +12,7 @@ use std::str;
use std::str::FromStr;
/// Encapsulates the IDL `ByteString` type.
-#[derive(Clone,Eq,PartialEq)]
-#[jstraceable]
+#[derive(JSTraceable,Clone,Eq,PartialEq)]
pub struct ByteString(Vec<u8>);
impl ByteString {
diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs
index f401e278498..5c854953f8f 100644
--- a/components/script/dom/bindings/trace.rs
+++ b/components/script/dom/bindings/trace.rs
@@ -12,7 +12,7 @@
//! phase. (This happens through `JSClass.trace` for non-proxy bindings, and
//! through `ProxyTraps.trace` otherwise.)
//! 2. `_trace` calls `Foo::trace()` (an implementation of `JSTraceable`).
-//! This is typically derived via a `#[dom_struct]` (implies `#[jstraceable]`) annotation.
+//! This is typically derived via a `#[dom_struct]` (implies `#[derive(JSTraceable)]`) annotation.
//! Non-JS-managed types have an empty inline `trace()` method,
//! achieved via `no_jsmanaged_fields!` or similar.
//! 3. For all fields, `Foo::trace()`
@@ -410,7 +410,7 @@ impl RootedTraceableSet {
/// If you have GC things like *mut JSObject or JSVal, use jsapi::Rooted.
/// If you have an arbitrary number of Reflectables to root, use RootedVec<JS<T>>
/// If you know what you're doing, use this.
-#[jstraceable]
+#[derive(JSTraceable)]
pub struct RootedTraceable<'a, T: 'a + JSTraceable> {
ptr: &'a T
}
@@ -434,7 +434,7 @@ impl<'a, T: JSTraceable> Drop for RootedTraceable<'a, T> {
/// Must be a reflectable
#[allow(unrooted_must_root)]
#[no_move]
-#[jstraceable]
+#[derive(JSTraceable)]
pub struct RootedVec<T: JSTraceable + Reflectable> {
v: Vec<T>
}
diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs
index 9e5931c2740..ed20587a206 100644
--- a/components/script/dom/bindings/utils.rs
+++ b/components/script/dom/bindings/utils.rs
@@ -64,7 +64,7 @@ use string_cache::{Atom, Namespace};
pub struct WindowProxyHandler(pub *const libc::c_void);
#[allow(raw_pointer_derive)]
-#[jstraceable]
+#[derive(JSTraceable)]
/// Static data associated with a global object.
pub struct GlobalStaticData {
/// The WindowProxy proxy handler for this global.
diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs
index a727e3d3c74..231216815f4 100644
--- a/components/script/dom/blob.rs
+++ b/components/script/dom/blob.rs
@@ -17,7 +17,7 @@ use std::ascii::AsciiExt;
use std::borrow::ToOwned;
use std::cmp::{min, max};
-#[jstraceable]
+#[derive(JSTraceable)]
pub enum BlobTypeId {
Blob,
File,
diff --git a/components/script/dom/browsercontext.rs b/components/script/dom/browsercontext.rs
index 37065a7f68f..9dc5590cdcb 100644
--- a/components/script/dom/browsercontext.rs
+++ b/components/script/dom/browsercontext.rs
@@ -27,7 +27,7 @@ use js::{JSTrue, JSFalse};
use std::ptr;
use std::default::Default;
-#[jstraceable]
+#[derive(JSTraceable)]
#[privatize]
#[allow(raw_pointer_derive)]
pub struct BrowserContext {
@@ -87,7 +87,7 @@ impl BrowserContext {
// without a reflector, so we don't mark this as #[dom_struct]
#[must_root]
#[privatize]
-#[jstraceable]
+#[derive(JSTraceable)]
pub struct SessionHistoryEntry {
document: JS<Document>,
children: Vec<BrowserContext>
diff --git a/components/script/dom/canvasgradient.rs b/components/script/dom/canvasgradient.rs
index ae2db347264..3068b031490 100644
--- a/components/script/dom/canvasgradient.rs
+++ b/components/script/dom/canvasgradient.rs
@@ -21,8 +21,7 @@ pub struct CanvasGradient {
stops: DOMRefCell<Vec<CanvasGradientStop>>,
}
-#[jstraceable]
-#[derive(Clone)]
+#[derive(JSTraceable, Clone)]
pub enum CanvasGradientStyle {
Linear(LinearGradientStyle),
Radial(RadialGradientStyle),
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index 798e1f558e5..af787682719 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -48,8 +48,7 @@ use url::Url;
use util::vec::byte_swap;
#[must_root]
-#[jstraceable]
-#[derive(Clone)]
+#[derive(JSTraceable, Clone)]
pub enum CanvasFillOrStrokeStyle {
Color(RGBA),
Gradient(JS<CanvasGradient>),
@@ -68,8 +67,7 @@ pub struct CanvasRenderingContext2D {
}
#[must_root]
-#[jstraceable]
-#[derive(Clone)]
+#[derive(JSTraceable, Clone)]
struct CanvasContextState {
global_alpha: f64,
global_composition: CompositionOrBlending,
diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs
index 48c13b02ab4..0270bff996f 100644
--- a/components/script/dom/characterdata.rs
+++ b/components/script/dom/characterdata.rs
@@ -154,8 +154,7 @@ impl<'a> CharacterDataMethods for &'a CharacterData {
}
/// The different types of CharacterData.
-#[derive(Copy, Clone, PartialEq, Debug)]
-#[jstraceable]
+#[derive(JSTraceable, Copy, Clone, PartialEq, Debug)]
pub enum CharacterDataTypeId {
Comment,
Text,
diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs
index c7a7ef0f04f..a3d06ee7bb9 100644
--- a/components/script/dom/dedicatedworkerglobalscope.rs
+++ b/components/script/dom/dedicatedworkerglobalscope.rs
@@ -45,8 +45,7 @@ use std::sync::mpsc::{Sender, Receiver, channel};
/// A ScriptChan that can be cloned freely and will silently send a TrustedWorkerAddress with
/// every message. While this SendableWorkerScriptChan is alive, the associated Worker object
/// will remain alive.
-#[derive(Clone)]
-#[jstraceable]
+#[derive(JSTraceable, Clone)]
pub struct SendableWorkerScriptChan {
sender: Sender<(TrustedWorkerAddress, ScriptMsg)>,
worker: TrustedWorkerAddress,
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 0a1c5a428c5..9e15292676f 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -100,8 +100,7 @@ use std::sync::mpsc::channel;
use std::rc::Rc;
use time;
-#[derive(PartialEq)]
-#[jstraceable]
+#[derive(JSTraceable, PartialEq)]
pub enum IsHTMLDocument {
HTMLDocument,
NonHTMLDocument,
@@ -164,7 +163,7 @@ impl DocumentDerived for EventTarget {
}
}
-#[jstraceable]
+#[derive(JSTraceable)]
struct ImagesFilter;
impl CollectionFilter for ImagesFilter {
fn filter(&self, elem: &Element, _root: &Node) -> bool {
@@ -172,7 +171,7 @@ impl CollectionFilter for ImagesFilter {
}
}
-#[jstraceable]
+#[derive(JSTraceable)]
struct EmbedsFilter;
impl CollectionFilter for EmbedsFilter {
fn filter(&self, elem: &Element, _root: &Node) -> bool {
@@ -180,7 +179,7 @@ impl CollectionFilter for EmbedsFilter {
}
}
-#[jstraceable]
+#[derive(JSTraceable)]
struct LinksFilter;
impl CollectionFilter for LinksFilter {
fn filter(&self, elem: &Element, _root: &Node) -> bool {
@@ -189,7 +188,7 @@ impl CollectionFilter for LinksFilter {
}
}
-#[jstraceable]
+#[derive(JSTraceable)]
struct FormsFilter;
impl CollectionFilter for FormsFilter {
fn filter(&self, elem: &Element, _root: &Node) -> bool {
@@ -197,7 +196,7 @@ impl CollectionFilter for FormsFilter {
}
}
-#[jstraceable]
+#[derive(JSTraceable)]
struct ScriptsFilter;
impl CollectionFilter for ScriptsFilter {
fn filter(&self, elem: &Element, _root: &Node) -> bool {
@@ -205,7 +204,7 @@ impl CollectionFilter for ScriptsFilter {
}
}
-#[jstraceable]
+#[derive(JSTraceable)]
struct AnchorsFilter;
impl CollectionFilter for AnchorsFilter {
fn filter(&self, elem: &Element, _root: &Node) -> bool {
@@ -213,7 +212,7 @@ impl CollectionFilter for AnchorsFilter {
}
}
-#[jstraceable]
+#[derive(JSTraceable)]
struct AppletsFilter;
impl CollectionFilter for AppletsFilter {
fn filter(&self, elem: &Element, _root: &Node) -> bool {
@@ -1748,7 +1747,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 {
- #[jstraceable]
+ #[derive(JSTraceable)]
struct NamedElementFilter {
name: Atom,
}
diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs
index 19bebacf9ad..9bf3a2dd88c 100644
--- a/components/script/dom/domexception.rs
+++ b/components/script/dom/domexception.rs
@@ -13,8 +13,7 @@ use util::str::DOMString;
use std::borrow::ToOwned;
#[repr(u16)]
-#[derive(Copy, Clone, Debug)]
-#[jstraceable]
+#[derive(JSTraceable, Copy, Clone, Debug)]
pub enum DOMErrorName {
IndexSizeError = DOMExceptionConstants::INDEX_SIZE_ERR,
HierarchyRequestError = DOMExceptionConstants::HIERARCHY_REQUEST_ERR,
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 4ae12d107ad..7ba7d4b0ed1 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -116,8 +116,7 @@ impl PartialEq for Element {
}
}
-#[derive(Copy, Clone, PartialEq, Debug)]
-#[jstraceable]
+#[derive(JSTraceable, Copy, Clone, PartialEq, Debug)]
pub enum ElementTypeId {
HTMLElement(HTMLElementTypeId),
Element,
diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs
index ebaaec09033..0aeda84238f 100644
--- a/components/script/dom/event.rs
+++ b/components/script/dom/event.rs
@@ -18,8 +18,7 @@ use std::default::Default;
use time;
-#[jstraceable]
-#[derive(Copy, Clone)]
+#[derive(JSTraceable, Copy, Clone)]
#[repr(u16)]
pub enum EventPhase {
None = EventConstants::NONE,
@@ -28,8 +27,7 @@ pub enum EventPhase {
Bubbling = EventConstants::BUBBLING_PHASE,
}
-#[derive(PartialEq)]
-#[jstraceable]
+#[derive(JSTraceable, PartialEq)]
pub enum EventTypeId {
CustomEvent,
HTMLEvent,
diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs
index ab8da892376..b780b35b1e7 100644
--- a/components/script/dom/eventtarget.rs
+++ b/components/script/dom/eventtarget.rs
@@ -36,15 +36,13 @@ use url::Url;
use std::collections::HashMap;
-#[derive(Copy, Clone, PartialEq)]
-#[jstraceable]
+#[derive(JSTraceable, Copy, Clone, PartialEq)]
pub enum ListenerPhase {
Capturing,
Bubbling,
}
-#[derive(Copy, Clone)]
-#[jstraceable]
+#[derive(JSTraceable, Copy, Clone)]
pub enum EventTargetTypeId {
Node(NodeTypeId),
WebSocket,
@@ -90,8 +88,7 @@ impl EventTargetTypeId {
}
}
-#[derive(Clone, PartialEq)]
-#[jstraceable]
+#[derive(JSTraceable, Clone, PartialEq)]
pub enum EventListenerType {
Additive(Rc<EventListener>),
Inline(Rc<EventListener>),
@@ -106,8 +103,7 @@ impl EventListenerType {
}
}
-#[derive(Clone, PartialEq)]
-#[jstraceable]
+#[derive(JSTraceable, Clone, PartialEq)]
#[privatize]
pub struct EventListenerEntry {
phase: ListenerPhase,
diff --git a/components/script/dom/formdata.rs b/components/script/dom/formdata.rs
index 2c719e2c116..bb111fa5bd2 100644
--- a/components/script/dom/formdata.rs
+++ b/components/script/dom/formdata.rs
@@ -21,8 +21,7 @@ use std::borrow::ToOwned;
use std::collections::HashMap;
use std::collections::hash_map::Entry::{Occupied, Vacant};
-#[derive(Clone)]
-#[jstraceable]
+#[derive(JSTraceable, Clone)]
#[must_root]
pub enum FormDatum {
StringData(DOMString),
diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs
index 426bf0f1cfe..0ba1cb740e4 100644
--- a/components/script/dom/htmlbuttonelement.rs
+++ b/components/script/dom/htmlbuttonelement.rs
@@ -27,8 +27,7 @@ use std::borrow::ToOwned;
use util::str::DOMString;
use std::cell::Cell;
-#[jstraceable]
-#[derive(PartialEq, Copy, Clone)]
+#[derive(JSTraceable, PartialEq, Copy, Clone)]
#[allow(dead_code)]
enum ButtonType {
ButtonSubmit,
diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs
index 3548345f667..a01a2c4fe26 100644
--- a/components/script/dom/htmlcanvaselement.rs
+++ b/components/script/dom/htmlcanvaselement.rs
@@ -37,9 +37,8 @@ use std::sync::mpsc::Sender;
const DEFAULT_WIDTH: u32 = 300;
const DEFAULT_HEIGHT: u32 = 150;
-#[jstraceable]
#[must_root]
-#[derive(Clone, Copy)]
+#[derive(JSTraceable, Clone, Copy)]
pub enum CanvasContext {
Context2d(JS<CanvasRenderingContext2D>),
WebGL(JS<WebGLRenderingContext>),
diff --git a/components/script/dom/htmlcollection.rs b/components/script/dom/htmlcollection.rs
index b1efb20c264..b47ba2578c5 100644
--- a/components/script/dom/htmlcollection.rs
+++ b/components/script/dom/htmlcollection.rs
@@ -22,7 +22,7 @@ pub trait CollectionFilter : JSTraceable {
fn filter<'a>(&self, elem: &'a Element, root: &'a Node) -> bool;
}
-#[jstraceable]
+#[derive(JSTraceable)]
#[must_root]
pub enum CollectionTypeId {
Static(Vec<JS<Element>>),
@@ -57,7 +57,7 @@ impl HTMLCollection {
fn all_elements(window: &Window, root: &Node,
namespace_filter: Option<Namespace>) -> Root<HTMLCollection> {
- #[jstraceable]
+ #[derive(JSTraceable)]
struct AllElementFilter {
namespace_filter: Option<Namespace>
}
@@ -79,7 +79,7 @@ impl HTMLCollection {
return HTMLCollection::all_elements(window, root, None);
}
- #[jstraceable]
+ #[derive(JSTraceable)]
struct TagNameFilter {
tag: Atom,
ascii_lower_tag: Atom,
@@ -110,7 +110,7 @@ impl HTMLCollection {
if tag == "*" {
return HTMLCollection::all_elements(window, root, namespace_filter);
}
- #[jstraceable]
+ #[derive(JSTraceable)]
struct TagNameNSFilter {
tag: Atom,
namespace_filter: Option<Namespace>
@@ -135,7 +135,7 @@ impl HTMLCollection {
pub fn by_class_name(window: &Window, root: &Node, classes: DOMString)
-> Root<HTMLCollection> {
- #[jstraceable]
+ #[derive(JSTraceable)]
struct ClassNameFilter {
classes: Vec<Atom>
}
@@ -153,7 +153,7 @@ impl HTMLCollection {
}
pub fn children(window: &Window, root: &Node) -> Root<HTMLCollection> {
- #[jstraceable]
+ #[derive(JSTraceable)]
struct ElementChildFilter;
impl CollectionFilter for ElementChildFilter {
fn filter(&self, elem: &Element, root: &Node) -> bool {
diff --git a/components/script/dom/htmldatalistelement.rs b/components/script/dom/htmldatalistelement.rs
index eeedeb1fa8d..88cfe433270 100644
--- a/components/script/dom/htmldatalistelement.rs
+++ b/components/script/dom/htmldatalistelement.rs
@@ -50,7 +50,7 @@ impl HTMLDataListElement {
impl<'a> HTMLDataListElementMethods for &'a HTMLDataListElement {
fn Options(self) -> Root<HTMLCollection> {
- #[jstraceable]
+ #[derive(JSTraceable)]
struct HTMLDataListOptionsFilter;
impl CollectionFilter for HTMLDataListOptionsFilter {
fn filter(&self, elem: &Element, _root: &Node) -> bool {
diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs
index 47d1042ec5f..77aed899fbc 100644
--- a/components/script/dom/htmlelement.rs
+++ b/components/script/dom/htmlelement.rs
@@ -309,8 +309,7 @@ impl<'a> VirtualMethods for &'a HTMLElement {
}
}
-#[derive(Copy, Clone, Debug)]
-#[jstraceable]
+#[derive(JSTraceable, Copy, Clone, Debug)]
pub enum HTMLElementTypeId {
HTMLElement,
diff --git a/components/script/dom/htmlfieldsetelement.rs b/components/script/dom/htmlfieldsetelement.rs
index e65757bfa60..706f892c07b 100644
--- a/components/script/dom/htmlfieldsetelement.rs
+++ b/components/script/dom/htmlfieldsetelement.rs
@@ -56,7 +56,7 @@ impl HTMLFieldSetElement {
impl<'a> HTMLFieldSetElementMethods for &'a HTMLFieldSetElement {
// https://www.whatwg.org/html/#dom-fieldset-elements
fn Elements(self) -> Root<HTMLCollection> {
- #[jstraceable]
+ #[derive(JSTraceable)]
struct ElementsFilter;
impl CollectionFilter for ElementsFilter {
fn filter<'a>(&self, elem: &'a Element, _root: &'a Node) -> bool {
diff --git a/components/script/dom/htmlheadingelement.rs b/components/script/dom/htmlheadingelement.rs
index f8d0a5a3bed..4ec34c65a1e 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;
-#[jstraceable]
+#[derive(JSTraceable)]
pub enum HeadingLevel {
Heading1,
Heading2,
diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs
index 30a3bee03af..e0590e6bf6b 100644
--- a/components/script/dom/htmlinputelement.rs
+++ b/components/script/dom/htmlinputelement.rs
@@ -45,8 +45,7 @@ use std::cell::Cell;
const DEFAULT_SUBMIT_VALUE: &'static str = "Submit";
const DEFAULT_RESET_VALUE: &'static str = "Reset";
-#[jstraceable]
-#[derive(PartialEq, Copy, Clone)]
+#[derive(JSTraceable, PartialEq, Copy, Clone)]
#[allow(dead_code)]
enum InputType {
InputSubmit,
@@ -80,7 +79,7 @@ impl PartialEq for HTMLInputElement {
}
}
-#[jstraceable]
+#[derive(JSTraceable)]
#[must_root]
struct InputActivationState {
indeterminate: bool,
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs
index 40700c69629..b0b3ae9c6e9 100644
--- a/components/script/dom/htmlmediaelement.rs
+++ b/components/script/dom/htmlmediaelement.rs
@@ -41,8 +41,7 @@ impl HTMLMediaElement {
}
}
-#[derive(Copy, Clone, Debug)]
-#[jstraceable]
+#[derive(JSTraceable, Copy, Clone, Debug)]
pub enum HTMLMediaElementTypeId {
HTMLAudioElement = 0,
HTMLVideoElement = 1,
diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs
index 76d04ae8217..66359deb22f 100644
--- a/components/script/dom/htmltablecellelement.rs
+++ b/components/script/dom/htmltablecellelement.rs
@@ -22,8 +22,7 @@ use std::cmp::max;
const DEFAULT_COLSPAN: u32 = 1;
-#[derive(Copy, Clone, Debug)]
-#[jstraceable]
+#[derive(JSTraceable, Copy, Clone, Debug)]
pub enum HTMLTableCellElementTypeId {
HTMLTableDataCellElement = 0,
HTMLTableHeaderCellElement = 1,
diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs
index a5efaab5c2e..457989af969 100644
--- a/components/script/dom/macros.rs
+++ b/components/script/dom/macros.rs
@@ -214,7 +214,7 @@ macro_rules! make_atomic_setter(
);
/// For use on non-jsmanaged types
-/// Use #[jstraceable] on JS managed types
+/// Use #[derive(JSTraceable)] on JS managed types
macro_rules! no_jsmanaged_fields(
($($ty:ident),+) => (
$(
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index 6cd89c16cd6..1fbc6a63f2e 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -134,7 +134,7 @@ impl NodeDerived for EventTarget {
bitflags! {
#[doc = "Flags for node items."]
- #[jstraceable]
+ #[derive(JSTraceable)]
flags NodeFlags: u16 {
#[doc = "Specifies whether this node is in a document."]
const IS_IN_DOC = 0x01,
@@ -278,8 +278,7 @@ impl LayoutDataRef {
}
/// The different types of nodes.
-#[derive(Copy, Clone, PartialEq, Debug)]
-#[jstraceable]
+#[derive(JSTraceable, Copy, Clone, PartialEq, Debug)]
pub enum NodeTypeId {
CharacterData(CharacterDataTypeId),
DocumentType,
diff --git a/components/script/dom/nodeiterator.rs b/components/script/dom/nodeiterator.rs
index 69e9c145937..fcee35ed80d 100644
--- a/components/script/dom/nodeiterator.rs
+++ b/components/script/dom/nodeiterator.rs
@@ -217,7 +217,7 @@ impl<'a> PrivateNodeIteratorHelpers for &'a NodeIterator {
}
-#[jstraceable]
+#[derive(JSTraceable)]
pub enum Filter {
None,
Native(fn (node: &Node) -> u16),
diff --git a/components/script/dom/nodelist.rs b/components/script/dom/nodelist.rs
index 0a81e9f865f..f879eb57c85 100644
--- a/components/script/dom/nodelist.rs
+++ b/components/script/dom/nodelist.rs
@@ -10,7 +10,7 @@ use dom::bindings::utils::{Reflector, reflect_dom_object};
use dom::node::{Node, NodeHelpers};
use dom::window::Window;
-#[jstraceable]
+#[derive(JSTraceable)]
#[must_root]
pub enum NodeListType {
Simple(Vec<JS<Node>>),
diff --git a/components/script/dom/range.rs b/components/script/dom/range.rs
index 7dffb7128e3..78f1e9ba6ab 100644
--- a/components/script/dom/range.rs
+++ b/components/script/dom/range.rs
@@ -290,7 +290,7 @@ impl<'a> RangeMethods for &'a Range {
}
}
-#[jstraceable]
+#[derive(JSTraceable)]
#[must_root]
#[privatize]
pub struct RangeInner {
@@ -424,7 +424,7 @@ impl RangeInner {
}
}
-#[jstraceable]
+#[derive(JSTraceable)]
#[must_root]
#[privatize]
pub struct BoundaryPoint {
diff --git a/components/script/dom/servohtmlparser.rs b/components/script/dom/servohtmlparser.rs
index 0f063c348b8..a81fe125973 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]
-#[jstraceable]
+#[derive(JSTraceable)]
pub struct Sink {
pub base_url: Option<Url>,
pub document: JS<Document>,
diff --git a/components/script/dom/treewalker.rs b/components/script/dom/treewalker.rs
index 84f91a598b8..b859a2f0277 100644
--- a/components/script/dom/treewalker.rs
+++ b/components/script/dom/treewalker.rs
@@ -502,7 +502,7 @@ impl<'a> Iterator for &'a TreeWalker {
}
}
-#[jstraceable]
+#[derive(JSTraceable)]
pub enum Filter {
None,
Native(fn (node: &Node) -> u16),
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs
index c8f8e5da056..39c627b72bd 100644
--- a/components/script/dom/websocket.rs
+++ b/components/script/dom/websocket.rs
@@ -33,8 +33,7 @@ use websocket::stream::WebSocketStream;
use websocket::client::request::Url;
use websocket::Client;
-#[derive(PartialEq, Copy, Clone)]
-#[jstraceable]
+#[derive(JSTraceable, PartialEq, Copy, Clone)]
enum WebSocketRequestState {
Connecting = 0,
Open = 1,
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 83cf3e9b4d5..43fd7429832 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -70,8 +70,7 @@ use std::sync::mpsc::TryRecvError::{Empty, Disconnected};
use time;
/// Current state of the window object
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[jstraceable]
+#[derive(JSTraceable, Copy, Clone, Debug, PartialEq)]
enum WindowState {
Alive,
Zombie, // Pipeline is closed, but the window hasn't been GCed yet.
diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs
index 363f2639960..bf654a36819 100644
--- a/components/script/dom/workerglobalscope.rs
+++ b/components/script/dom/workerglobalscope.rs
@@ -33,8 +33,7 @@ use std::default::Default;
use std::cell::Cell;
use std::rc::Rc;
-#[derive(Copy, Clone, PartialEq)]
-#[jstraceable]
+#[derive(JSTraceable, Copy, Clone, PartialEq)]
pub enum WorkerGlobalScopeTypeId {
DedicatedGlobalScope,
}
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 95a70b0cc6c..f618877f802 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -67,8 +67,7 @@ use dom::bindings::codegen::UnionTypes::StringOrURLSearchParams::{eString, eURLS
pub type SendParam = StringOrURLSearchParams;
-#[derive(PartialEq, Copy, Clone)]
-#[jstraceable]
+#[derive(JSTraceable, PartialEq, Copy, Clone)]
enum XMLHttpRequestState {
Unsent = 0,
Opened = 1,
@@ -77,8 +76,7 @@ enum XMLHttpRequestState {
Done = 4,
}
-#[derive(PartialEq, Clone, Copy)]
-#[jstraceable]
+#[derive(JSTraceable, PartialEq, Clone, Copy)]
pub struct GenerationId(u32);
/// Closure of required data for each async network event that comprises the
diff --git a/components/script/dom/xmlhttprequesteventtarget.rs b/components/script/dom/xmlhttprequesteventtarget.rs
index e2ce511450c..8c17d3c8b1a 100644
--- a/components/script/dom/xmlhttprequesteventtarget.rs
+++ b/components/script/dom/xmlhttprequesteventtarget.rs
@@ -8,8 +8,7 @@ use dom::bindings::codegen::InheritTypes::EventTargetCast;
use dom::bindings::codegen::InheritTypes::XMLHttpRequestEventTargetDerived;
use dom::eventtarget::{EventTarget, EventTargetHelpers, EventTargetTypeId};
-#[derive(Copy, Clone, PartialEq)]
-#[jstraceable]
+#[derive(JSTraceable, Copy, Clone, PartialEq)]
pub enum XMLHttpRequestEventTargetTypeId {
XMLHttpRequest,
XMLHttpRequestUpload,