mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Implement cloning steps for script element
This commit is contained in:
parent
f39e01b336
commit
598150ea78
3 changed files with 28 additions and 3 deletions
|
@ -8,7 +8,7 @@ use dom::bindings::codegen::Bindings::AttrBinding::AttrMethods;
|
|||
use dom::bindings::codegen::Bindings::HTMLScriptElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLScriptElementBinding::HTMLScriptElementMethods;
|
||||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::codegen::InheritTypes::HTMLScriptElementDerived;
|
||||
use dom::bindings::codegen::InheritTypes::{HTMLScriptElementDerived, HTMLScriptElementCast};
|
||||
use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast, NodeCast};
|
||||
use dom::bindings::js::{JSRef, Temporary, OptionalRootable};
|
||||
use dom::bindings::utils::{Reflectable, Reflector};
|
||||
|
@ -16,7 +16,7 @@ use dom::document::Document;
|
|||
use dom::element::{HTMLScriptElementTypeId, Element, AttributeHandlers};
|
||||
use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||
use dom::htmlelement::HTMLElement;
|
||||
use dom::node::{Node, NodeHelpers, ElementNodeTypeId, window_from_node};
|
||||
use dom::node::{Node, NodeHelpers, ElementNodeTypeId, window_from_node, CloneChildrenFlag};
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
use dom::window::WindowHelpers;
|
||||
|
||||
|
@ -283,6 +283,20 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLScriptElement> {
|
|||
self.prepare();
|
||||
}
|
||||
}
|
||||
|
||||
fn cloning_steps(&self, copy: JSRef<Node>, maybe_doc: Option<JSRef<Document>>,
|
||||
clone_children: CloneChildrenFlag) {
|
||||
match self.super_type() {
|
||||
Some(ref s) => s.cloning_steps(copy, maybe_doc, clone_children),
|
||||
_ => (),
|
||||
}
|
||||
|
||||
// https://whatwg.org/html/#already-started
|
||||
if self.already_started.get() {
|
||||
let copy_elem: JSRef<HTMLScriptElement> = HTMLScriptElementCast::to_ref(copy).unwrap();
|
||||
copy_elem.mark_already_started();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> HTMLScriptElementMethods for JSRef<'a, HTMLScriptElement> {
|
||||
|
|
|
@ -1572,6 +1572,7 @@ impl Node {
|
|||
}
|
||||
|
||||
// Step 5: cloning steps.
|
||||
vtable_for(&node).cloning_steps(*copy, maybe_doc, clone_children);
|
||||
|
||||
// Step 6.
|
||||
if clone_children == CloneChildren {
|
||||
|
|
|
@ -24,6 +24,7 @@ use dom::bindings::codegen::InheritTypes::HTMLStyleElementCast;
|
|||
use dom::bindings::codegen::InheritTypes::HTMLTableCellElementCast;
|
||||
use dom::bindings::codegen::InheritTypes::HTMLTextAreaElementCast;
|
||||
use dom::bindings::js::JSRef;
|
||||
use dom::document::Document;
|
||||
use dom::element::Element;
|
||||
use dom::element::ElementTypeId_;
|
||||
use dom::element::HTMLAnchorElementTypeId;
|
||||
|
@ -63,7 +64,7 @@ use dom::htmlselectelement::HTMLSelectElement;
|
|||
use dom::htmlstyleelement::HTMLStyleElement;
|
||||
use dom::htmltablecellelement::HTMLTableCellElement;
|
||||
use dom::htmltextareaelement::HTMLTextAreaElement;
|
||||
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
|
||||
use dom::node::{Node, NodeHelpers, ElementNodeTypeId, CloneChildrenFlag};
|
||||
|
||||
use servo_util::str::DOMString;
|
||||
|
||||
|
@ -136,6 +137,15 @@ pub trait VirtualMethods {
|
|||
_ => (),
|
||||
}
|
||||
}
|
||||
|
||||
/// https://dom.spec.whatwg.org/#concept-node-clone (step 5)
|
||||
fn cloning_steps(&self, copy: JSRef<Node>, maybe_doc: Option<JSRef<Document>>,
|
||||
clone_children: CloneChildrenFlag) {
|
||||
match self.super_type() {
|
||||
Some(ref s) => s.cloning_steps(copy, maybe_doc, clone_children),
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Obtain a VirtualMethods instance for a given Node-derived object. Any
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue