script/dom/characterdata/
processinginstruction.rs1use dom_struct::dom_struct;
6use script_bindings::domstring::TracedDOMString;
7
8use crate::dom::bindings::codegen::Bindings::ProcessingInstructionBinding::ProcessingInstructionMethods;
9use crate::dom::bindings::root::DomRoot;
10use crate::dom::bindings::str::DOMString;
11use crate::dom::characterdata::CharacterData;
12use crate::dom::document::Document;
13use crate::dom::node::Node;
14
15#[dom_struct]
17pub(crate) struct ProcessingInstruction {
18 characterdata: CharacterData,
19 target: TracedDOMString,
20}
21
22impl ProcessingInstruction {
23 fn new_inherited(
24 target: DOMString,
25 data: DOMString,
26 document: &Document,
27 ) -> ProcessingInstruction {
28 ProcessingInstruction {
29 characterdata: CharacterData::new_inherited(data, document),
30 target: target.traced(),
31 }
32 }
33
34 pub(crate) fn new(
35 cx: &mut js::context::JSContext,
36 target: DOMString,
37 data: DOMString,
38 document: &Document,
39 ) -> DomRoot<ProcessingInstruction> {
40 Node::reflect_node(
41 cx,
42 Box::new(ProcessingInstruction::new_inherited(target, data, document)),
43 document,
44 )
45 }
46}
47
48impl ProcessingInstruction {
49 pub(crate) fn target(&self) -> &TracedDOMString {
50 &self.target
51 }
52}
53
54impl ProcessingInstructionMethods<crate::DomTypeHolder> for ProcessingInstruction {
55 fn Target(&self) -> DOMString {
57 self.target.clone().root()
58 }
59}