mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-10 10:09:14 +00:00
LibWeb: Add metadata to children update steps invocation
Currently, this metadata is only provided on the insertion steps, though I believe it would be useful to extend to the other cases as well. This metadata can aid in making optimizations for these steps by providing extra context into the type of change which was made on the child.
This commit is contained in:
parent
6c1470994b
commit
903c8860f8
Notes:
github-actions[bot]
2025-01-30 20:56:50 +00:00
Author: https://github.com/shannonbooth
Commit: 903c8860f8
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3373
Reviewed-by: https://github.com/ADKaster ✅
27 changed files with 52 additions and 40 deletions
|
@ -100,9 +100,9 @@ void HTMLDetailsElement::attribute_changed(FlyString const& local_name, Optional
|
|||
}
|
||||
}
|
||||
|
||||
void HTMLDetailsElement::children_changed()
|
||||
void HTMLDetailsElement::children_changed(ChildrenChangedMetadata const* metadata)
|
||||
{
|
||||
Base::children_changed();
|
||||
Base::children_changed(metadata);
|
||||
update_shadow_tree_slots();
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ private:
|
|||
|
||||
virtual void inserted() override;
|
||||
virtual void removed_from(DOM::Node* old_parent, DOM::Node& old_root) override;
|
||||
virtual void children_changed() override;
|
||||
virtual void children_changed(ChildrenChangedMetadata const*) override;
|
||||
virtual void attribute_changed(FlyString const& local_name, Optional<String> const& old_value, Optional<String> const& value, Optional<FlyString> const& namespace_) override;
|
||||
|
||||
void queue_a_details_toggle_event_task(String old_state, String new_state);
|
||||
|
|
|
@ -766,9 +766,9 @@ private:
|
|||
|
||||
GC_DEFINE_ALLOCATOR(SourceElementSelector);
|
||||
|
||||
void HTMLMediaElement::children_changed()
|
||||
void HTMLMediaElement::children_changed(ChildrenChangedMetadata const* metadata)
|
||||
{
|
||||
Base::children_changed();
|
||||
Base::children_changed(metadata);
|
||||
|
||||
if (m_source_element_selector)
|
||||
m_source_element_selector->process_next_candidate().release_value_but_fixme_should_propagate_errors();
|
||||
|
|
|
@ -158,7 +158,7 @@ protected:
|
|||
|
||||
virtual void attribute_changed(FlyString const& name, Optional<String> const& old_value, Optional<String> const& value, Optional<FlyString> const& namespace_) override;
|
||||
virtual void removed_from(DOM::Node* old_parent, DOM::Node& old_root) override;
|
||||
virtual void children_changed() override;
|
||||
virtual void children_changed(ChildrenChangedMetadata const* metadata) override;
|
||||
|
||||
// Override in subclasses to handle implementation-specific behavior when the element state changes
|
||||
// to playing or paused, e.g. to start/stop play timers.
|
||||
|
|
|
@ -253,9 +253,9 @@ void HTMLOptionElement::removed_from(Node* old_parent, Node& old_root)
|
|||
}
|
||||
}
|
||||
|
||||
void HTMLOptionElement::children_changed()
|
||||
void HTMLOptionElement::children_changed(ChildrenChangedMetadata const* metadata)
|
||||
{
|
||||
Base::children_changed();
|
||||
Base::children_changed(metadata);
|
||||
|
||||
update_selection_label();
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ private:
|
|||
|
||||
virtual void inserted() override;
|
||||
virtual void removed_from(Node* old_parent, Node& old_root) override;
|
||||
virtual void children_changed() override;
|
||||
virtual void children_changed(ChildrenChangedMetadata const*) override;
|
||||
|
||||
void ask_for_a_reset();
|
||||
void update_selection_label();
|
||||
|
|
|
@ -572,9 +572,9 @@ void HTMLScriptElement::prepare_script()
|
|||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/scripting.html#script-processing-model:html-element-post-connection-steps-4
|
||||
void HTMLScriptElement::children_changed()
|
||||
void HTMLScriptElement::children_changed(ChildrenChangedMetadata const* metadata)
|
||||
{
|
||||
Base::children_changed();
|
||||
Base::children_changed(metadata);
|
||||
|
||||
// 1. Run the script HTML element post-connection steps, given the script element.
|
||||
post_connection();
|
||||
|
|
|
@ -43,7 +43,7 @@ public:
|
|||
|
||||
bool is_parser_inserted() const { return !!m_parser_document; }
|
||||
|
||||
virtual void children_changed() override;
|
||||
virtual void children_changed(ChildrenChangedMetadata const*) override;
|
||||
virtual void post_connection() override;
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/scripting.html#dom-script-supports
|
||||
|
|
|
@ -292,9 +292,9 @@ i32 HTMLSelectElement::default_tab_index_value() const
|
|||
return 0;
|
||||
}
|
||||
|
||||
void HTMLSelectElement::children_changed()
|
||||
void HTMLSelectElement::children_changed(ChildrenChangedMetadata const* metadata)
|
||||
{
|
||||
Base::children_changed();
|
||||
Base::children_changed(metadata);
|
||||
update_cached_list_of_options();
|
||||
update_selectedness();
|
||||
}
|
||||
|
|
|
@ -109,7 +109,7 @@ private:
|
|||
|
||||
virtual void computed_properties_changed() override;
|
||||
|
||||
virtual void children_changed() override;
|
||||
virtual void children_changed(ChildrenChangedMetadata const*) override;
|
||||
|
||||
void update_cached_list_of_options() const;
|
||||
void show_the_picker_if_applicable();
|
||||
|
|
|
@ -32,9 +32,9 @@ void HTMLStyleElement::visit_edges(Cell::Visitor& visitor)
|
|||
m_style_element_utils.visit_edges(visitor);
|
||||
}
|
||||
|
||||
void HTMLStyleElement::children_changed()
|
||||
void HTMLStyleElement::children_changed(ChildrenChangedMetadata const* metadata)
|
||||
{
|
||||
Base::children_changed();
|
||||
Base::children_changed(metadata);
|
||||
m_style_element_utils.update_a_style_block(*this);
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ class HTMLStyleElement final : public HTMLElement {
|
|||
public:
|
||||
virtual ~HTMLStyleElement() override;
|
||||
|
||||
virtual void children_changed() override;
|
||||
virtual void children_changed(ChildrenChangedMetadata const*) override;
|
||||
virtual void inserted() override;
|
||||
virtual void removed_from(Node* old_parent, Node& old_root) override;
|
||||
|
||||
|
|
|
@ -429,9 +429,9 @@ void HTMLTextAreaElement::update_placeholder_visibility()
|
|||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/form-elements.html#the-textarea-element:children-changed-steps
|
||||
void HTMLTextAreaElement::children_changed()
|
||||
void HTMLTextAreaElement::children_changed(ChildrenChangedMetadata const* metadata)
|
||||
{
|
||||
Base::children_changed();
|
||||
Base::children_changed(metadata);
|
||||
|
||||
// The children changed steps for textarea elements must, if the element's dirty value flag is false,
|
||||
// set the element's raw value to its child text content.
|
||||
|
|
|
@ -70,7 +70,7 @@ public:
|
|||
virtual void form_associated_element_was_removed(DOM::Node*) override;
|
||||
virtual void form_associated_element_attribute_changed(FlyString const&, Optional<String> const&, Optional<FlyString> const&) override;
|
||||
|
||||
virtual void children_changed() override;
|
||||
virtual void children_changed(ChildrenChangedMetadata const*) override;
|
||||
|
||||
// https://www.w3.org/TR/html-aria/#el-textarea
|
||||
virtual Optional<ARIA::Role> default_role() const override { return ARIA::Role::textbox; }
|
||||
|
|
|
@ -27,9 +27,9 @@ void HTMLTitleElement::initialize(JS::Realm& realm)
|
|||
WEB_SET_PROTOTYPE_FOR_INTERFACE(HTMLTitleElement);
|
||||
}
|
||||
|
||||
void HTMLTitleElement::children_changed()
|
||||
void HTMLTitleElement::children_changed(ChildrenChangedMetadata const* metadata)
|
||||
{
|
||||
HTMLElement::children_changed();
|
||||
HTMLElement::children_changed(metadata);
|
||||
auto navigable = this->navigable();
|
||||
if (navigable && navigable->is_traversable()) {
|
||||
navigable->traversable_navigable()->page().client().page_did_change_title(document().title().to_byte_string());
|
||||
|
|
|
@ -24,7 +24,7 @@ private:
|
|||
HTMLTitleElement(DOM::Document&, DOM::QualifiedName);
|
||||
|
||||
virtual void initialize(JS::Realm&) override;
|
||||
virtual void children_changed() override;
|
||||
virtual void children_changed(ChildrenChangedMetadata const*) override;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue