aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2015-04-28 19:42:46 +0200
committerMs2ger <ms2ger@gmail.com>2015-04-28 23:31:10 +0200
commit903305416a8fd4eef75960f9e83491adaaa519e8 (patch)
tree445f64c0a52c3b554ffc50ee96fe54ea11f32f86 /components/script/dom
parentb6fc83cf2b4b426548bb9d10e9493f2b111bd617 (diff)
downloadservo-903305416a8fd4eef75960f9e83491adaaa519e8.tar.gz
servo-903305416a8fd4eef75960f9e83491adaaa519e8.zip
Implement Clone for Copy types.
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/bindings/callback.rs2
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py6
-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/utils.rs5
-rw-r--r--components/script/dom/domexception.rs2
-rw-r--r--components/script/dom/element.rs2
-rw-r--r--components/script/dom/event.rs2
-rw-r--r--components/script/dom/eventtarget.rs8
-rw-r--r--components/script/dom/htmlbuttonelement.rs2
-rw-r--r--components/script/dom/htmlelement.rs2
-rw-r--r--components/script/dom/htmlformelement.rs10
-rw-r--r--components/script/dom/htmlinputelement.rs2
-rw-r--r--components/script/dom/htmlmediaelement.rs2
-rw-r--r--components/script/dom/htmltablecellelement.rs2
-rw-r--r--components/script/dom/node.rs6
-rw-r--r--components/script/dom/servohtmlparser.rs2
-rw-r--r--components/script/dom/workerglobalscope.rs2
-rw-r--r--components/script/dom/xmlhttprequest.rs2
-rw-r--r--components/script/dom/xmlhttprequesteventtarget.rs2
20 files changed, 39 insertions, 30 deletions
diff --git a/components/script/dom/bindings/callback.rs b/components/script/dom/bindings/callback.rs
index 1d3936f21bb..975e3cb99d9 100644
--- a/components/script/dom/bindings/callback.rs
+++ b/components/script/dom/bindings/callback.rs
@@ -16,7 +16,7 @@ use std::ffi::CString;
use std::ptr;
/// The exception handling used for a call.
-#[derive(Copy, PartialEq)]
+#[derive(Copy, Clone, PartialEq)]
pub enum ExceptionHandling {
/// Report any exception and don't throw it to the caller code.
Report,
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index b48efbda91d..b63df28d349 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -2917,7 +2917,7 @@ class CGEnum(CGThing):
decl = """\
#[repr(usize)]
-#[derive(PartialEq, Copy)]
+#[derive(PartialEq, Copy, Clone)]
#[jstraceable]
pub enum %s {
%s
@@ -5388,8 +5388,8 @@ class GlobalGenRoots():
return CGList([
CGGeneric(AUTOGENERATED_WARNING_COMMENT),
CGGeneric("pub const MAX_PROTO_CHAIN_LENGTH: usize = %d;\n\n" % config.maxProtoChainLength),
- CGNonNamespacedEnum('ID', protos, [0], deriving="PartialEq, Copy"),
- CGNonNamespacedEnum('Proxies', proxies, [0], deriving="PartialEq, Copy"),
+ CGNonNamespacedEnum('ID', protos, [0], deriving="PartialEq, Copy, Clone"),
+ CGNonNamespacedEnum('Proxies', proxies, [0], deriving="PartialEq, Copy, Clone"),
])
diff --git a/components/script/dom/bindings/global.rs b/components/script/dom/bindings/global.rs
index 8297c2244a9..1b34844fa53 100644
--- a/components/script/dom/bindings/global.rs
+++ b/components/script/dom/bindings/global.rs
@@ -25,7 +25,7 @@ use js::jsapi::{JS_GetClass};
use url::Url;
/// A freely-copyable reference to a rooted global object.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub enum GlobalRef<'a> {
/// A reference to a `Window` object.
Window(JSRef<'a, window::Window>),
diff --git a/components/script/dom/bindings/js.rs b/components/script/dom/bindings/js.rs
index 115fcdbbe97..c80aa48b4ac 100644
--- a/components/script/dom/bindings/js.rs
+++ b/components/script/dom/bindings/js.rs
@@ -124,6 +124,9 @@ impl<T: Reflectable> Rootable<T> for Unrooted<T> {
}
impl<T> Copy for Unrooted<T> {}
+impl<T> Clone for Unrooted<T> {
+ fn clone(&self) -> Unrooted<T> { *self }
+}
/// A type that represents a JS-owned value that is rooted for the lifetime of
/// this value. Importantly, it requires explicit rooting in order to interact
@@ -545,6 +548,9 @@ pub struct RootCollection {
pub struct RootCollectionPtr(pub *const RootCollection);
impl Copy for RootCollectionPtr {}
+impl Clone for RootCollectionPtr {
+ fn clone(&self) -> RootCollectionPtr { *self }
+}
impl RootCollection {
/// Create an empty collection of roots
diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs
index 369a4f11d88..2c96fa2c0dd 100644
--- a/components/script/dom/bindings/utils.rs
+++ b/components/script/dom/bindings/utils.rs
@@ -129,7 +129,7 @@ pub struct NativePropertyHooks {
}
/// The struct that holds inheritance information for DOM object reflectors.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub struct DOMClass {
/// A list of interfaces that this object implements, in order of decreasing
/// derivedness.
@@ -148,6 +148,9 @@ pub struct DOMJSClass {
/// Associated data for DOM object reflectors.
pub dom_class: DOMClass
}
+impl Clone for DOMJSClass {
+ fn clone(&self) -> DOMJSClass { *self }
+}
unsafe impl Sync for DOMJSClass {}
/// Returns the ProtoOrIfaceArray for the given global object.
diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs
index 1c5a436199f..414e4481f16 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(Copy, Debug)]
+#[derive(Copy, Clone, Debug)]
#[jstraceable]
pub enum DOMErrorName {
IndexSizeError = DOMExceptionConstants::INDEX_SIZE_ERR,
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 03f8f17195f..a936e783ad4 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -108,7 +108,7 @@ impl ElementDerived for EventTarget {
}
}
-#[derive(Copy, PartialEq, Debug)]
+#[derive(Copy, Clone, PartialEq, Debug)]
#[jstraceable]
pub enum ElementTypeId {
HTMLElement(HTMLElementTypeId),
diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs
index 55883659c39..4f0086310aa 100644
--- a/components/script/dom/event.rs
+++ b/components/script/dom/event.rs
@@ -19,7 +19,7 @@ use std::default::Default;
use time;
#[jstraceable]
-#[derive(Copy)]
+#[derive(Copy, Clone)]
#[repr(u16)]
pub enum EventPhase {
None = EventConstants::NONE,
diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs
index ab0e73ec8de..01e436c9743 100644
--- a/components/script/dom/eventtarget.rs
+++ b/components/script/dom/eventtarget.rs
@@ -33,14 +33,14 @@ use url::Url;
use std::collections::HashMap;
-#[derive(Copy, PartialEq)]
+#[derive(Copy, Clone, PartialEq)]
#[jstraceable]
pub enum ListenerPhase {
Capturing,
Bubbling,
}
-#[derive(Copy, PartialEq)]
+#[derive(Copy, Clone, PartialEq)]
#[jstraceable]
pub enum EventTargetTypeId {
Node(NodeTypeId),
@@ -51,7 +51,7 @@ pub enum EventTargetTypeId {
XMLHttpRequestEventTarget(XMLHttpRequestEventTargetTypeId)
}
-#[derive(Copy, PartialEq)]
+#[derive(Copy, Clone, PartialEq)]
#[jstraceable]
pub enum EventListenerType {
Additive(EventListener),
@@ -67,7 +67,7 @@ impl EventListenerType {
}
}
-#[derive(Copy, PartialEq)]
+#[derive(Copy, Clone, PartialEq)]
#[jstraceable]
#[privatize]
pub struct EventListenerEntry {
diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs
index 57ce2aed0f0..22c1b67656a 100644
--- a/components/script/dom/htmlbuttonelement.rs
+++ b/components/script/dom/htmlbuttonelement.rs
@@ -29,7 +29,7 @@ use std::cell::Cell;
use string_cache::Atom;
#[jstraceable]
-#[derive(PartialEq, Copy)]
+#[derive(PartialEq, Copy, Clone)]
#[allow(dead_code)]
enum ButtonType {
ButtonSubmit,
diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs
index 0b5fa1b5639..f42aceced3a 100644
--- a/components/script/dom/htmlelement.rs
+++ b/components/script/dom/htmlelement.rs
@@ -239,7 +239,7 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLElement> {
}
}
-#[derive(Copy, PartialEq, Debug)]
+#[derive(Copy, Clone, PartialEq, Debug)]
#[jstraceable]
pub enum HTMLElementTypeId {
HTMLElement,
diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs
index abb3ec98aa6..c5c1ae2e77a 100644
--- a/components/script/dom/htmlformelement.rs
+++ b/components/script/dom/htmlformelement.rs
@@ -133,13 +133,13 @@ impl<'a> HTMLFormElementMethods for JSRef<'a, HTMLFormElement> {
}
}
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub enum SubmittedFrom {
FromFormSubmitMethod,
NotFromFormSubmitMethod
}
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub enum ResetFrom {
FromFormResetMethod,
NotFromFormResetMethod
@@ -407,21 +407,21 @@ pub struct FormDatum {
pub value: DOMString
}
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub enum FormEncType {
TextPlainEncoded,
UrlEncoded,
FormDataEncoded
}
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub enum FormMethod {
FormGet,
FormPost,
FormDialog
}
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub enum FormSubmitter<'a> {
FormElement(JSRef<'a, HTMLFormElement>),
InputElement(JSRef<'a, HTMLInputElement>),
diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs
index e72d13295ec..379327d760a 100644
--- a/components/script/dom/htmlinputelement.rs
+++ b/components/script/dom/htmlinputelement.rs
@@ -48,7 +48,7 @@ const DEFAULT_SUBMIT_VALUE: &'static str = "Submit";
const DEFAULT_RESET_VALUE: &'static str = "Reset";
#[jstraceable]
-#[derive(PartialEq, Copy)]
+#[derive(PartialEq, Copy, Clone)]
#[allow(dead_code)]
enum InputType {
InputSubmit,
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs
index 331d43e8aba..86a882dbb86 100644
--- a/components/script/dom/htmlmediaelement.rs
+++ b/components/script/dom/htmlmediaelement.rs
@@ -38,7 +38,7 @@ impl HTMLMediaElement {
}
}
-#[derive(Copy, PartialEq, Debug)]
+#[derive(Copy, Clone, PartialEq, Debug)]
#[jstraceable]
pub enum HTMLMediaElementTypeId {
HTMLAudioElement,
diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs
index 1737bddcb84..378a804c361 100644
--- a/components/script/dom/htmltablecellelement.rs
+++ b/components/script/dom/htmltablecellelement.rs
@@ -16,7 +16,7 @@ use cssparser::RGBA;
use util::str::{self, DOMString, LengthOrPercentageOrAuto};
use std::cell::Cell;
-#[derive(Copy, PartialEq, Debug)]
+#[derive(Copy, Clone, PartialEq, Debug)]
#[jstraceable]
pub enum HTMLTableCellElementTypeId {
HTMLTableDataCellElement,
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index f8dc318b6c6..d5e3482a10e 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -190,7 +190,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)]
+#[derive(Copy, Clone)]
enum SuppressObserver {
Suppressed,
Unsuppressed
@@ -266,7 +266,7 @@ impl LayoutDataRef {
}
/// The different types of nodes.
-#[derive(Copy, PartialEq, Debug)]
+#[derive(Copy, Clone, PartialEq, Debug)]
#[jstraceable]
pub enum NodeTypeId {
DocumentType,
@@ -1311,7 +1311,7 @@ impl Iterator for TreeIterator {
/// Specifies whether children must be recursively cloned or not.
-#[derive(Copy, PartialEq)]
+#[derive(Copy, Clone, PartialEq)]
pub enum CloneChildrenFlag {
CloneChildren,
DoNotCloneChildren
diff --git a/components/script/dom/servohtmlparser.rs b/components/script/dom/servohtmlparser.rs
index fbd89a27787..199c06dca35 100644
--- a/components/script/dom/servohtmlparser.rs
+++ b/components/script/dom/servohtmlparser.rs
@@ -33,7 +33,7 @@ pub struct Sink {
/// FragmentContext is used only to pass this group of related values
/// into functions.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub struct FragmentContext<'a> {
pub context_elem: JSRef<'a, Node>,
pub form_elem: Option<JSRef<'a, Node>>,
diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs
index ec58f3e4221..8723454182b 100644
--- a/components/script/dom/workerglobalscope.rs
+++ b/components/script/dom/workerglobalscope.rs
@@ -34,7 +34,7 @@ use std::rc::Rc;
use std::cell::Cell;
use url::{Url, UrlParser};
-#[derive(Copy, PartialEq)]
+#[derive(Copy, Clone, PartialEq)]
#[jstraceable]
pub enum WorkerGlobalScopeTypeId {
DedicatedGlobalScope,
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 3e84dfc0037..73748b27f14 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -67,7 +67,7 @@ use dom::bindings::codegen::UnionTypes::StringOrURLSearchParams;
use dom::bindings::codegen::UnionTypes::StringOrURLSearchParams::{eString, eURLSearchParams};
pub type SendParam = StringOrURLSearchParams;
-#[derive(PartialEq, Copy)]
+#[derive(PartialEq, Copy, Clone)]
#[jstraceable]
enum XMLHttpRequestState {
Unsent = 0,
diff --git a/components/script/dom/xmlhttprequesteventtarget.rs b/components/script/dom/xmlhttprequesteventtarget.rs
index e27496ec2d9..2457f192883 100644
--- a/components/script/dom/xmlhttprequesteventtarget.rs
+++ b/components/script/dom/xmlhttprequesteventtarget.rs
@@ -9,7 +9,7 @@ use dom::bindings::codegen::InheritTypes::XMLHttpRequestEventTargetDerived;
use dom::bindings::js::JSRef;
use dom::eventtarget::{EventTarget, EventTargetHelpers, EventTargetTypeId};
-#[derive(Copy, PartialEq)]
+#[derive(Copy, Clone, PartialEq)]
#[jstraceable]
pub enum XMLHttpRequestEventTargetTypeId {
XMLHttpRequest,