mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-01 16:58:52 +00:00
LibWeb: Implement the form associated element clear algorithm
This is a method defined in the WebDriver spec, but requires access to a bunch of private fields in these classes, so this is implemented in the same manner as the reset algorithm.
This commit is contained in:
parent
fadb14d31d
commit
516f5f7008
Notes:
github-actions[bot]
2024-10-12 13:02:37 +00:00
Author: https://github.com/trflynn89
Commit: 516f5f7008
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1727
Reviewed-by: https://github.com/gmta
8 changed files with 75 additions and 1 deletions
|
@ -1528,7 +1528,8 @@ void HTMLInputElement::reset_algorithm()
|
|||
m_checked = has_attribute(AttributeNames::checked);
|
||||
|
||||
// empty the list of selected files,
|
||||
m_selected_files = FileAPI::FileList::create(realm());
|
||||
if (m_selected_files)
|
||||
m_selected_files = FileAPI::FileList::create(realm());
|
||||
|
||||
// and then invoke the value sanitization algorithm, if the type attribute's current state defines one.
|
||||
m_value = value_sanitization_algorithm(m_value);
|
||||
|
@ -1544,6 +1545,42 @@ void HTMLInputElement::reset_algorithm()
|
|||
update_shadow_tree();
|
||||
}
|
||||
|
||||
// https://w3c.github.io/webdriver/#dfn-clear-algorithm
|
||||
void HTMLInputElement::clear_algorithm()
|
||||
{
|
||||
// The clear algorithm for input elements is to set the dirty value flag and dirty checkedness flag back to false,
|
||||
m_dirty_value = false;
|
||||
m_dirty_checkedness = false;
|
||||
|
||||
// set the value of the element to an empty string,
|
||||
auto old_value = move(m_value);
|
||||
m_value = String {};
|
||||
|
||||
// set the checkedness of the element to true if the element has a checked content attribute and false if it does not,
|
||||
m_checked = has_attribute(AttributeNames::checked);
|
||||
|
||||
// empty the list of selected files,
|
||||
if (m_selected_files)
|
||||
m_selected_files = FileAPI::FileList::create(realm());
|
||||
|
||||
// and then invoke the value sanitization algorithm iff the type attribute's current state defines one.
|
||||
m_value = value_sanitization_algorithm(m_value);
|
||||
|
||||
// Unlike their associated reset algorithms, changes made to form controls as part of these algorithms do count as
|
||||
// changes caused by the user (and thus, e.g. do cause input events to fire).
|
||||
user_interaction_did_change_input_value();
|
||||
|
||||
if (m_value != old_value)
|
||||
relevant_value_was_changed(m_text_node);
|
||||
|
||||
if (m_text_node) {
|
||||
m_text_node->set_data(m_value);
|
||||
update_placeholder_visibility();
|
||||
}
|
||||
|
||||
update_shadow_tree();
|
||||
}
|
||||
|
||||
void HTMLInputElement::form_associated_element_was_inserted()
|
||||
{
|
||||
create_shadow_tree_if_needed();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue