Skip to content

Commit 18defab

Browse files
committed
fix build errors
1 parent caa2a56 commit 18defab

30 files changed

+118
-82
lines changed

components/script/dom/bindings/constructor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ fn html_constructor(
175175
// Any prototype used to create these elements will be overwritten before returning
176176
// from this function, so we don't bother overwriting the defaults here.
177177
let element = if definition.is_autonomous() {
178-
DomRoot::upcast(HTMLElement::new(name.local, None, &document, None, can_gc))
178+
DomRoot::upcast(HTMLElement::new(name.local, None, &document, None, false, can_gc))
179179
} else {
180180
create_native_html_element(
181181
name,

components/script/dom/create.rs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,9 @@ fn create_html_element(
194194
// local name set to localName, custom element state set to "failed",
195195
// custom element definition set to null, is value set to null,
196196
// and node document set to document.
197+
// TODO: check if is_defined is correct
197198
let element = DomRoot::upcast::<Element>(HTMLUnknownElement::new(
198-
local_name, prefix, document, proto, can_gc,
199+
local_name, prefix, document, proto, false, can_gc,
199200
));
200201
element.set_custom_element_state(CustomElementState::Failed);
201202
element
@@ -214,6 +215,7 @@ fn create_html_element(
214215
prefix.clone(),
215216
document,
216217
proto,
218+
false,
217219
can_gc,
218220
));
219221
result.set_custom_element_state(CustomElementState::Undefined);
@@ -258,25 +260,25 @@ pub(crate) fn create_native_html_element(
258260
document: &Document,
259261
creator: ElementCreator,
260262
proto: Option<HandleObject>,
261-
defined: bool,
263+
is_defined: bool,
262264
) -> DomRoot<Element> {
263265
assert_eq!(name.ns, ns!(html));
264266

265267
macro_rules! make(
266268
($ctor:ident) => ({
267-
let obj = $ctor::new(name.local, prefix, document, proto, defined, CanGc::note());
269+
let obj = $ctor::new(name.local, prefix, document, proto, is_defined, CanGc::note());
268270
DomRoot::upcast(obj)
269271
});
270272
($ctor:ident, $($arg:expr),+) => ({
271-
let obj = $ctor::new(name.local, prefix, document, proto, $($arg),+, CanGc::note());
273+
let obj = $ctor::new(name.local, prefix, document, proto, $($arg),+, is_defined, CanGc::note());
272274
DomRoot::upcast(obj)
273275
})
274276
);
275277

276278
// This is a big match, and the IDs for inline-interned atoms are not very structured.
277279
// Perhaps we should build a perfect hash from those IDs instead.
278280
// https://html.spec.whatwg.org/multipage/#elements-in-the-dom
279-
let element: DomRoot<Element> = match name.local {
281+
match name.local {
280282
local_name!("a") => make!(HTMLAnchorElement),
281283
local_name!("abbr") => make!(HTMLElement),
282284
local_name!("acronym") => make!(HTMLElement),
@@ -424,13 +426,7 @@ pub(crate) fn create_native_html_element(
424426
local_name!("xmp") => make!(HTMLPreElement),
425427
_ if is_valid_custom_element_name(&name.local) => make!(HTMLElement),
426428
_ => make!(HTMLUnknownElement),
427-
};
428-
429-
if defined {
430-
element.force_defined();
431429
}
432-
433-
element
434430
}
435431

436432
pub(crate) fn create_element(

components/script/dom/domimplementation.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ impl DOMImplementationMethods<crate::DomTypeHolder> for DOMImplementation {
161161
}
162162

163163
// https://dom.spec.whatwg.org/#dom-domimplementation-createhtmldocument
164+
// TODO: validate whether is_defined is used correctly
164165
fn CreateHTMLDocument(&self, title: Option<DOMString>, can_gc: CanGc) -> DomRoot<Document> {
165166
let win = self.document.window();
166167
let loader = DocumentLoader::new(&self.document.loader());
@@ -202,6 +203,7 @@ impl DOMImplementationMethods<crate::DomTypeHolder> for DOMImplementation {
202203
None,
203204
&doc,
204205
None,
206+
true,
205207
can_gc,
206208
));
207209
doc_node
@@ -215,6 +217,7 @@ impl DOMImplementationMethods<crate::DomTypeHolder> for DOMImplementation {
215217
None,
216218
&doc,
217219
None,
220+
true,
218221
can_gc,
219222
));
220223
doc_html.AppendChild(&doc_head, can_gc).unwrap();
@@ -227,6 +230,7 @@ impl DOMImplementationMethods<crate::DomTypeHolder> for DOMImplementation {
227230
None,
228231
&doc,
229232
None,
233+
true,
230234
can_gc,
231235
));
232236
doc_head.AppendChild(&doc_title, can_gc).unwrap();
@@ -238,7 +242,7 @@ impl DOMImplementationMethods<crate::DomTypeHolder> for DOMImplementation {
238242
}
239243

240244
// Step 7.
241-
let doc_body = HTMLBodyElement::new(local_name!("body"), None, &doc, None, can_gc);
245+
let doc_body = HTMLBodyElement::new(local_name!("body"), None, &doc, None, true, can_gc);
242246
doc_html.AppendChild(doc_body.upcast(), can_gc).unwrap();
243247
}
244248

components/script/dom/element.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2846,6 +2846,7 @@ impl Element {
28462846
}
28472847

28482848
/// Step 4 of <https://html.spec.whatwg.org/multipage/#dom-element-insertadjacenthtml>
2849+
// TODO: validate use of is_defined here
28492850
pub(crate) fn fragment_parsing_context(
28502851
owner_doc: &Document,
28512852
element: Option<&Self>,
@@ -2869,6 +2870,7 @@ impl Element {
28692870
None,
28702871
owner_doc,
28712872
None,
2873+
true,
28722874
can_gc,
28732875
)),
28742876
}
@@ -5325,13 +5327,6 @@ impl Element {
53255327
self.state.get()
53265328
}
53275329

5328-
pub(crate) fn force_defined(&self) {
5329-
let mut state = self.state.get();
5330-
state.insert(ElementState::DEFINED);
5331-
// debug_assert!(state == ElementState::ENABLED || state == ElementState::empty());
5332-
self.state.set(state);
5333-
}
5334-
53355330
pub(crate) fn set_state(&self, which: ElementState, value: bool) {
53365331
let mut state = self.state.get();
53375332
let previous_state = state;

components/script/dom/htmlanchorelement.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ impl HTMLAnchorElement {
6262
document,
6363
)
6464
} else {
65-
HTMLElement::new_inherited(local_name, prefix, document)
65+
HTMLElement::new_inherited(local_name, prefix, document, is_defined)
6666
};
6767

6868
HTMLAnchorElement {

components/script/dom/htmlareaelement.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,8 @@ impl HTMLAreaElement {
276276
fn new_inherited(
277277
local_name: LocalName,
278278
prefix: Option<Prefix>,
279-
is_defined: bool,
280279
document: &Document,
280+
is_defined: bool,
281281
) -> HTMLAreaElement {
282282
let htmlelement = if is_defined {
283283
HTMLElement::new_inherited_with_state(
@@ -287,7 +287,7 @@ impl HTMLAreaElement {
287287
document,
288288
)
289289
} else {
290-
HTMLElement::new_inherited(local_name, prefix, document)
290+
HTMLElement::new_inherited(local_name, prefix, document, is_defined)
291291
};
292292

293293
HTMLAreaElement {
@@ -304,10 +304,11 @@ impl HTMLAreaElement {
304304
prefix: Option<Prefix>,
305305
document: &Document,
306306
proto: Option<HandleObject>,
307+
is_defined: bool,
307308
can_gc: CanGc,
308309
) -> DomRoot<HTMLAreaElement> {
309310
Node::reflect_node_with_proto(
310-
Box::new(HTMLAreaElement::new_inherited(local_name, prefix, document)),
311+
Box::new(HTMLAreaElement::new_inherited(local_name, prefix, document, is_defined)),
311312
document,
312313
proto,
313314
can_gc,

components/script/dom/htmlbuttonelement.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,13 @@ impl HTMLButtonElement {
5454
local_name: LocalName,
5555
prefix: Option<Prefix>,
5656
document: &Document,
57+
is_defined: bool,
5758
) -> HTMLButtonElement {
59+
let mut element_state = ElementState::ENABLED;
60+
element_state.set(ElementState::DEFINED, is_defined);
5861
HTMLButtonElement {
5962
htmlelement: HTMLElement::new_inherited_with_state(
60-
ElementState::ENABLED,
63+
element_state,
6164
local_name,
6265
prefix,
6366
document,
@@ -75,11 +78,12 @@ impl HTMLButtonElement {
7578
prefix: Option<Prefix>,
7679
document: &Document,
7780
proto: Option<HandleObject>,
81+
is_defined: bool,
7882
can_gc: CanGc,
7983
) -> DomRoot<HTMLButtonElement> {
8084
Node::reflect_node_with_proto(
8185
Box::new(HTMLButtonElement::new_inherited(
82-
local_name, prefix, document,
86+
local_name, prefix, document, is_defined
8387
)),
8488
document,
8589
proto,

components/script/dom/htmldetailselement.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ impl HTMLDetailsElement {
9999
.expect("UA shadow tree was not created")
100100
}
101101

102+
// TODO: validate use of is_defined here
102103
fn create_shadow_tree(&self, can_gc: CanGc) {
103104
let document = self.owner_document();
104105
// TODO(stevennovaryo): Reimplement details styling so that it would not
@@ -107,13 +108,13 @@ impl HTMLDetailsElement {
107108
.upcast::<Element>()
108109
.attach_ua_shadow_root(false, can_gc);
109110

110-
let summary = HTMLSlotElement::new(local_name!("slot"), None, &document, None, can_gc);
111+
let summary = HTMLSlotElement::new(local_name!("slot"), None, &document, None, true, can_gc);
111112
root.upcast::<Node>()
112113
.AppendChild(summary.upcast::<Node>(), can_gc)
113114
.unwrap();
114115

115116
let fallback_summary =
116-
HTMLElement::new(local_name!("summary"), None, &document, None, can_gc);
117+
HTMLElement::new(local_name!("summary"), None, &document, None, true, can_gc);
117118
fallback_summary
118119
.upcast::<Node>()
119120
.SetTextContent(Some(DEFAULT_SUMMARY.into()), can_gc);
@@ -122,7 +123,7 @@ impl HTMLDetailsElement {
122123
.AppendChild(fallback_summary.upcast::<Node>(), can_gc)
123124
.unwrap();
124125

125-
let descendants = HTMLSlotElement::new(local_name!("slot"), None, &document, None, can_gc);
126+
let descendants = HTMLSlotElement::new(local_name!("slot"), None, &document, None, true, can_gc);
126127
root.upcast::<Node>()
127128
.AppendChild(descendants.upcast::<Node>(), can_gc)
128129
.unwrap();

components/script/dom/htmlelement.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,11 @@ impl HTMLElement {
103103
prefix: Option<Prefix>,
104104
document: &Document,
105105
proto: Option<HandleObject>,
106+
is_defined: bool,
106107
can_gc: CanGc,
107108
) -> DomRoot<HTMLElement> {
108109
Node::reflect_node_with_proto(
109-
Box::new(HTMLElement::new_inherited(local_name, prefix, document)),
110+
Box::new(HTMLElement::new_inherited(local_name, prefix, document, is_defined)),
110111
document,
111112
proto,
112113
can_gc,
@@ -1042,7 +1043,7 @@ impl HTMLElement {
10421043
text = String::new();
10431044
}
10441045

1045-
let br = HTMLBRElement::new(local_name!("br"), None, &document, None, can_gc);
1046+
let br = HTMLBRElement::new(local_name!("br"), None, &document, None, true, can_gc);
10461047
fragment
10471048
.upcast::<Node>()
10481049
.AppendChild(br.upcast(), can_gc)

components/script/dom/htmlformelement.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,13 @@ impl HTMLFormElement {
113113
local_name: LocalName,
114114
prefix: Option<Prefix>,
115115
document: &Document,
116+
is_defined: bool,
116117
) -> HTMLFormElement {
118+
let mut element_state = ElementState::VALID;
119+
element_state.set(ElementState::DEFINED, is_defined);
117120
HTMLFormElement {
118121
htmlelement: HTMLElement::new_inherited_with_state(
119-
ElementState::VALID,
122+
element_state,
120123
local_name,
121124
prefix,
122125
document,
@@ -140,10 +143,11 @@ impl HTMLFormElement {
140143
prefix: Option<Prefix>,
141144
document: &Document,
142145
proto: Option<HandleObject>,
146+
is_defined: bool,
143147
can_gc: CanGc,
144148
) -> DomRoot<HTMLFormElement> {
145149
Node::reflect_node_with_proto(
146-
Box::new(HTMLFormElement::new_inherited(local_name, prefix, document)),
150+
Box::new(HTMLFormElement::new_inherited(local_name, prefix, document, is_defined)),
147151
document,
148152
proto,
149153
can_gc,

0 commit comments

Comments
 (0)