mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
add CanGc as argument to methods in HTMLInputElement, HTMLLinkElement (#36504)
add CanGc as argument to methods in HTMLInputElement, HTMLLinkElement Testing: These changes do not require tests because they are a refactor. Addresses part of https://github.com/servo/servo/issues/34573. Signed-off-by: Yerkebulan Tulibergenov <yerkebulan@gmail.com>
This commit is contained in:
parent
d5284dfad9
commit
5d84acc06e
4 changed files with 23 additions and 26 deletions
|
@ -1566,7 +1566,7 @@ impl HTMLInputElementMethods<crate::DomTypeHolder> for HTMLInputElement {
|
||||||
// https://html.spec.whatwg.org/multipage/#dom-lfe-labels
|
// https://html.spec.whatwg.org/multipage/#dom-lfe-labels
|
||||||
// Different from make_labels_getter because this one
|
// Different from make_labels_getter because this one
|
||||||
// conditionally returns null.
|
// conditionally returns null.
|
||||||
fn GetLabels(&self) -> Option<DomRoot<NodeList>> {
|
fn GetLabels(&self, can_gc: CanGc) -> Option<DomRoot<NodeList>> {
|
||||||
if self.input_type() == InputType::Hidden {
|
if self.input_type() == InputType::Hidden {
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
|
@ -1574,7 +1574,7 @@ impl HTMLInputElementMethods<crate::DomTypeHolder> for HTMLInputElement {
|
||||||
NodeList::new_labels_list(
|
NodeList::new_labels_list(
|
||||||
self.upcast::<Node>().owner_doc().window(),
|
self.upcast::<Node>().owner_doc().window(),
|
||||||
self.upcast::<HTMLElement>(),
|
self.upcast::<HTMLElement>(),
|
||||||
CanGc::note(),
|
can_gc,
|
||||||
)
|
)
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
@ -2378,7 +2378,7 @@ impl VirtualMethods for HTMLInputElement {
|
||||||
el.set_read_write_state(read_write);
|
el.set_read_write_state(read_write);
|
||||||
}
|
}
|
||||||
|
|
||||||
el.update_sequentially_focusable_status(CanGc::note());
|
el.update_sequentially_focusable_status(can_gc);
|
||||||
},
|
},
|
||||||
local_name!("checked") if !self.checked_changed.get() => {
|
local_name!("checked") if !self.checked_changed.get() => {
|
||||||
let checked_state = match mutation {
|
let checked_state = match mutation {
|
||||||
|
@ -2416,7 +2416,7 @@ impl VirtualMethods for HTMLInputElement {
|
||||||
|
|
||||||
if new_type == InputType::File {
|
if new_type == InputType::File {
|
||||||
let window = self.owner_window();
|
let window = self.owner_window();
|
||||||
let filelist = FileList::new(&window, vec![], CanGc::note());
|
let filelist = FileList::new(&window, vec![], can_gc);
|
||||||
self.filelist.set(Some(&filelist));
|
self.filelist.set(Some(&filelist));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2425,7 +2425,7 @@ impl VirtualMethods for HTMLInputElement {
|
||||||
// Step 1
|
// Step 1
|
||||||
(&ValueMode::Value, false, ValueMode::Default) |
|
(&ValueMode::Value, false, ValueMode::Default) |
|
||||||
(&ValueMode::Value, false, ValueMode::DefaultOn) => {
|
(&ValueMode::Value, false, ValueMode::DefaultOn) => {
|
||||||
self.SetValue(old_idl_value, CanGc::note())
|
self.SetValue(old_idl_value, can_gc)
|
||||||
.expect("Failed to set input value on type change to a default ValueMode.");
|
.expect("Failed to set input value on type change to a default ValueMode.");
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -2437,7 +2437,7 @@ impl VirtualMethods for HTMLInputElement {
|
||||||
.map_or(DOMString::from(""), |a| {
|
.map_or(DOMString::from(""), |a| {
|
||||||
DOMString::from(a.summarize().value)
|
DOMString::from(a.summarize().value)
|
||||||
}),
|
}),
|
||||||
CanGc::note(),
|
can_gc,
|
||||||
)
|
)
|
||||||
.expect(
|
.expect(
|
||||||
"Failed to set input value on type change to ValueMode::Value.",
|
"Failed to set input value on type change to ValueMode::Value.",
|
||||||
|
@ -2449,7 +2449,7 @@ impl VirtualMethods for HTMLInputElement {
|
||||||
(_, _, ValueMode::Filename)
|
(_, _, ValueMode::Filename)
|
||||||
if old_value_mode != ValueMode::Filename =>
|
if old_value_mode != ValueMode::Filename =>
|
||||||
{
|
{
|
||||||
self.SetValue(DOMString::from(""), CanGc::note())
|
self.SetValue(DOMString::from(""), can_gc)
|
||||||
.expect("Failed to set input value on type change to ValueMode::Filename.");
|
.expect("Failed to set input value on type change to ValueMode::Filename.");
|
||||||
},
|
},
|
||||||
_ => {},
|
_ => {},
|
||||||
|
@ -2642,11 +2642,8 @@ impl VirtualMethods for HTMLInputElement {
|
||||||
// now.
|
// now.
|
||||||
if let Some(point_in_target) = mouse_event.point_in_target() {
|
if let Some(point_in_target) = mouse_event.point_in_target() {
|
||||||
let window = self.owner_window();
|
let window = self.owner_window();
|
||||||
let index = window.text_index_query(
|
let index =
|
||||||
self.upcast::<Node>(),
|
window.text_index_query(self.upcast::<Node>(), point_in_target, can_gc);
|
||||||
point_in_target,
|
|
||||||
CanGc::note(),
|
|
||||||
);
|
|
||||||
// Position the caret at the click position or at the end of the current
|
// Position the caret at the click position or at the end of the current
|
||||||
// value.
|
// value.
|
||||||
let edit_point_index = match index {
|
let edit_point_index = match index {
|
||||||
|
@ -2672,7 +2669,7 @@ impl VirtualMethods for HTMLInputElement {
|
||||||
let action = self.textinput.borrow_mut().handle_keydown(keyevent);
|
let action = self.textinput.borrow_mut().handle_keydown(keyevent);
|
||||||
match action {
|
match action {
|
||||||
TriggerDefaultAction => {
|
TriggerDefaultAction => {
|
||||||
self.implicit_submission(CanGc::note());
|
self.implicit_submission(can_gc);
|
||||||
},
|
},
|
||||||
DispatchInput => {
|
DispatchInput => {
|
||||||
self.value_dirty.set(true);
|
self.value_dirty.set(true);
|
||||||
|
@ -2725,7 +2722,7 @@ impl VirtualMethods for HTMLInputElement {
|
||||||
}
|
}
|
||||||
} else if let Some(clipboard_event) = event.downcast::<ClipboardEvent>() {
|
} else if let Some(clipboard_event) = event.downcast::<ClipboardEvent>() {
|
||||||
if !event.DefaultPrevented() {
|
if !event.DefaultPrevented() {
|
||||||
handle_text_clipboard_action(self, &self.textinput, clipboard_event, CanGc::note());
|
handle_text_clipboard_action(self, &self.textinput, clipboard_event, can_gc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2988,7 +2985,7 @@ impl Activatable for HTMLInputElement {
|
||||||
form_owner.submit(
|
form_owner.submit(
|
||||||
SubmittedFrom::NotFromForm,
|
SubmittedFrom::NotFromForm,
|
||||||
FormSubmitterElement::Input(self),
|
FormSubmitterElement::Input(self),
|
||||||
CanGc::note(),
|
can_gc,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -179,7 +179,7 @@ impl HTMLLinkElement {
|
||||||
self.stylesheet.borrow().clone()
|
self.stylesheet.borrow().clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn get_cssom_stylesheet(&self) -> Option<DomRoot<CSSStyleSheet>> {
|
pub(crate) fn get_cssom_stylesheet(&self, can_gc: CanGc) -> Option<DomRoot<CSSStyleSheet>> {
|
||||||
self.get_stylesheet().map(|sheet| {
|
self.get_stylesheet().map(|sheet| {
|
||||||
self.cssom_stylesheet.or_init(|| {
|
self.cssom_stylesheet.or_init(|| {
|
||||||
CSSStyleSheet::new(
|
CSSStyleSheet::new(
|
||||||
|
@ -189,7 +189,7 @@ impl HTMLLinkElement {
|
||||||
None, // todo handle location
|
None, // todo handle location
|
||||||
None, // todo handle title
|
None, // todo handle title
|
||||||
sheet,
|
sheet,
|
||||||
CanGc::note(),
|
can_gc,
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -541,7 +541,7 @@ impl StylesheetOwner for HTMLLinkElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn referrer_policy(&self) -> ReferrerPolicy {
|
fn referrer_policy(&self) -> ReferrerPolicy {
|
||||||
if self.RelList().Contains("noreferrer".into()) {
|
if self.RelList(CanGc::note()).Contains("noreferrer".into()) {
|
||||||
return ReferrerPolicy::NoReferrer;
|
return ReferrerPolicy::NoReferrer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -549,7 +549,7 @@ impl StylesheetOwner for HTMLLinkElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_origin_clean(&self, origin_clean: bool) {
|
fn set_origin_clean(&self, origin_clean: bool) {
|
||||||
if let Some(stylesheet) = self.get_cssom_stylesheet() {
|
if let Some(stylesheet) = self.get_cssom_stylesheet(CanGc::note()) {
|
||||||
stylesheet.set_origin_clean(origin_clean);
|
stylesheet.set_origin_clean(origin_clean);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -602,7 +602,7 @@ impl HTMLLinkElementMethods<crate::DomTypeHolder> for HTMLLinkElement {
|
||||||
make_bool_setter!(SetDisabled, "disabled");
|
make_bool_setter!(SetDisabled, "disabled");
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/#dom-link-rellist
|
// https://html.spec.whatwg.org/multipage/#dom-link-rellist
|
||||||
fn RelList(&self) -> DomRoot<DOMTokenList> {
|
fn RelList(&self, can_gc: CanGc) -> DomRoot<DOMTokenList> {
|
||||||
self.rel_list.or_init(|| {
|
self.rel_list.or_init(|| {
|
||||||
DOMTokenList::new(
|
DOMTokenList::new(
|
||||||
self.upcast(),
|
self.upcast(),
|
||||||
|
@ -624,7 +624,7 @@ impl HTMLLinkElementMethods<crate::DomTypeHolder> for HTMLLinkElement {
|
||||||
Atom::from("prerender"),
|
Atom::from("prerender"),
|
||||||
Atom::from("stylesheet"),
|
Atom::from("stylesheet"),
|
||||||
]),
|
]),
|
||||||
CanGc::note(),
|
can_gc,
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -666,8 +666,8 @@ impl HTMLLinkElementMethods<crate::DomTypeHolder> for HTMLLinkElement {
|
||||||
make_setter!(SetReferrerPolicy, "referrerpolicy");
|
make_setter!(SetReferrerPolicy, "referrerpolicy");
|
||||||
|
|
||||||
// https://drafts.csswg.org/cssom/#dom-linkstyle-sheet
|
// https://drafts.csswg.org/cssom/#dom-linkstyle-sheet
|
||||||
fn GetSheet(&self) -> Option<DomRoot<DOMStyleSheet>> {
|
fn GetSheet(&self, can_gc: CanGc) -> Option<DomRoot<DOMStyleSheet>> {
|
||||||
self.get_cssom_stylesheet().map(DomRoot::upcast)
|
self.get_cssom_stylesheet(can_gc).map(DomRoot::upcast)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1367,7 +1367,7 @@ impl Node {
|
||||||
if let Some(node) = self.downcast::<HTMLStyleElement>() {
|
if let Some(node) = self.downcast::<HTMLStyleElement>() {
|
||||||
node.get_cssom_stylesheet()
|
node.get_cssom_stylesheet()
|
||||||
} else if let Some(node) = self.downcast::<HTMLLinkElement>() {
|
} else if let Some(node) = self.downcast::<HTMLLinkElement>() {
|
||||||
node.get_cssom_stylesheet()
|
node.get_cssom_stylesheet(CanGc::note())
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
|
@ -375,11 +375,11 @@ DOMInterfaces = {
|
||||||
},
|
},
|
||||||
|
|
||||||
'HTMLInputElement': {
|
'HTMLInputElement': {
|
||||||
'canGc': ['ReportValidity', 'SetValue', 'SetValueAsNumber', 'SetValueAsDate', 'StepUp', 'StepDown', 'CheckValidity', 'ReportValidity', 'SelectFiles'],
|
'canGc': ['ReportValidity', 'SetValue', 'SetValueAsNumber', 'SetValueAsDate', 'StepUp', 'StepDown', 'CheckValidity', 'ReportValidity', 'SelectFiles', 'GetLabels'],
|
||||||
},
|
},
|
||||||
|
|
||||||
'HTMLLinkElement': {
|
'HTMLLinkElement': {
|
||||||
'canGc': ['SetRel', 'SetCrossOrigin'],
|
'canGc': ['GetSheet', 'SetRel', 'SetCrossOrigin', 'RelList'],
|
||||||
},
|
},
|
||||||
|
|
||||||
'HTMLMediaElement': {
|
'HTMLMediaElement': {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue