1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 07:38:10 +00:00
serenity/Userland/Libraries/LibWeb/DOM
Timothy Flynn 5ec76331e8 LibWeb: Invoke our internal attribute change handler from Attr
Currently, every public DOM::Element method which changes an attribute
fires this handler itself. This was missed in commit 720f7ba, so any
user of that API would not fire the internal handler.

To fix this, and prevent any missing invocations in the future, invoke
the handler from from Attr::handle_attribute_changes. This method is
reached for all attribute changes, including adding/removing attributes.
This ensures the handler will always be fired, and reduces the footprint
of this ad-hoc behavior.

Note that our ad-hoc handler is not the "attribute change steps" noted
by the spec. Those are overridden only by a couple of specific elements,
e.g. HTMLSlotElement. However, we could easily make our ad-hoc handler
hook into those steps in the future.
2023-09-02 13:55:32 -04:00
..
AbortController.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
AbortController.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
AbortController.idl LibWeb: Add imports to all IDL files that depend on others 2022-02-16 22:48:32 +03:30
AbortSignal.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
AbortSignal.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
AbortSignal.idl LibWeb: Replace ad-hoc EventHandler type with callback function typedef 2022-03-31 01:10:47 +02:00
AbstractRange.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
AbstractRange.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
AbstractRange.idl LibWeb: Remove the NoInstanceWrapper extended IDL attribute 2022-09-06 00:27:09 +02:00
AccessibilityTreeNode.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
AccessibilityTreeNode.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
Attr.cpp LibWeb: Invoke our internal attribute change handler from Attr 2023-09-02 13:55:32 -04:00
Attr.h LibWeb: Extract changing an attribute to its own method 2023-09-02 01:46:37 +03:30
Attr.idl LibWeb: Rename Attribute to Attr 2022-09-18 02:08:01 +02:00
CDATASection.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
CDATASection.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
CDATASection.idl LibWeb: Add CDATASection 2022-06-27 22:53:04 +01:00
CharacterData.cpp LibWeb: Invalidate layout-transformed text on DOM text node change 2023-08-16 12:16:05 +02:00
CharacterData.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
CharacterData.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
ChildNode.h LibWeb: Fix a few const-ness issues 2023-03-06 13:05:43 +00:00
ChildNode.idl LibWeb: Resolve circular IDL imports 2022-07-30 13:20:47 +02:00
Comment.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
Comment.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
Comment.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
CustomEvent.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
CustomEvent.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
CustomEvent.idl LibWeb: Port CustomEvent to new String 2023-04-07 22:41:01 +02:00
Document.cpp LibWeb: Fix int parsing in Document::shared_declarative_refresh_steps 2023-08-31 22:27:48 +01:00
Document.h LibWeb: Implement snapshotting source snapshot params per the spec 2023-08-28 09:47:11 +02:00
Document.idl LibWeb: Add a bunch of missing CEReactions 2023-04-06 11:36:56 +02:00
DocumentFragment.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
DocumentFragment.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
DocumentFragment.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
DocumentLoadEventDelayer.cpp LibWeb+LibJS: Make the EventTarget hierarchy (incl. DOM) GC-allocated 2022-09-06 00:27:09 +02:00
DocumentLoadEventDelayer.h LibWeb+LibJS: Make the EventTarget hierarchy (incl. DOM) GC-allocated 2022-09-06 00:27:09 +02:00
DocumentLoading.cpp LibWeb: Make Fetch::Infrastructure::Body be GC allocated 2023-08-19 15:12:00 +02:00
DocumentLoading.h LibWeb: Implement "attempt to populate the history entry's document" 2023-05-03 09:39:49 +02:00
DocumentObserver.cpp LibWeb: Add an interface to be notified of Document state changes 2023-05-04 16:48:10 +02:00
DocumentObserver.h LibWeb: Rename loaded observer event to match spec 2023-07-12 13:16:23 +02:00
DocumentType.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
DocumentType.h LibWeb: Port DocumentType from DeprecatedString to String 2023-08-27 05:34:54 +02:00
DocumentType.idl LibWeb: Port DocumentType from DeprecatedString to String 2023-08-27 05:34:54 +02:00
DOMEventListener.cpp LibJS+LibWeb: Normalize calls to Base::visit_edges in GC objects 2023-04-30 06:04:33 +02:00
DOMEventListener.h LibJS+LibWeb: Normalize calls to Base::visit_edges in GC objects 2023-04-30 06:04:33 +02:00
DOMImplementation.cpp LibWeb: Port DocumentType from DeprecatedString to String 2023-08-27 05:34:54 +02:00
DOMImplementation.h LibWeb: Port DOMImplementation from DeprecatedString to String 2023-08-27 05:34:54 +02:00
DOMImplementation.idl LibWeb: Port DOMImplementation from DeprecatedString to String 2023-08-27 05:34:54 +02:00
DOMTokenList.cpp LibWeb: Port DOMTokenList from DeprecatedString to String 2023-08-27 05:34:54 +02:00
DOMTokenList.h LibWeb: Port DOMTokenList from DeprecatedString to String 2023-08-27 05:34:54 +02:00
DOMTokenList.idl LibWeb: Port DOMTokenList from DeprecatedString to String 2023-08-27 05:34:54 +02:00
Element.cpp LibWeb: Invoke our internal attribute change handler from Attr 2023-09-02 13:55:32 -04:00
Element.h LibWeb: Invoke our internal attribute change handler from Attr 2023-09-02 13:55:32 -04:00
Element.idl LibWeb: Implement Element.hasAttributeNS 2023-08-09 22:10:58 -04:00
ElementFactory.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
ElementFactory.h LibWeb: Introduce CustomElementRegistry and creating custom elements 2023-04-06 11:36:56 +02:00
Event.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
Event.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
Event.idl LibWeb: Port {Mouse,UI,Wheel,}Event to new String 2023-04-07 22:41:01 +02:00
EventDispatcher.cpp LibWeb: Port DOMEventListener to new FlyString 2023-04-09 17:27:27 +02:00
EventDispatcher.h LibWeb+LibJS: Make the EventTarget hierarchy (incl. DOM) GC-allocated 2022-09-06 00:27:09 +02:00
EventHandler.idl LibWeb: Implement WindowEventHandlers 2022-06-29 21:21:50 +01:00
EventTarget.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
EventTarget.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
EventTarget.idl LibWeb: Implement the EventTarget constructor 2023-05-04 16:12:40 +02:00
HTMLCollection.cpp LibWeb: Port HTMLCollection from DeprecatedString to String 2023-08-27 05:34:54 +02:00
HTMLCollection.h LibWeb: Port HTMLCollection from DeprecatedString to String 2023-08-27 05:34:54 +02:00
HTMLCollection.idl LibWeb: Port HTMLCollection from DeprecatedString to String 2023-08-27 05:34:54 +02:00
HTMLFormControlsCollection.cpp LibWeb: Implement HTMLFormControlsCollection 2023-08-20 11:04:03 +02:00
HTMLFormControlsCollection.h LibWeb: Implement HTMLFormControlsCollection 2023-08-20 11:04:03 +02:00
HTMLFormControlsCollection.idl LibWeb: Implement HTMLFormControlsCollection 2023-08-20 11:04:03 +02:00
IDLEventListener.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
IDLEventListener.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
InnerHTML.idl LibWeb: Resolve circular IDL imports 2022-07-30 13:20:47 +02:00
LiveNodeList.cpp LibWeb: Implement LiveNodeList::first_matching 2023-08-26 13:51:18 +02:00
LiveNodeList.h LibWeb: Implement LiveNodeList::first_matching 2023-08-26 13:51:18 +02:00
MutationObserver.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
MutationObserver.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
MutationObserver.idl LibWeb: Introduce Mutation{Record,Observer} and observer microtasks 2022-07-11 22:35:08 +02:00
MutationRecord.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
MutationRecord.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
MutationRecord.idl LibWeb: Introduce Mutation{Record,Observer} and observer microtasks 2022-07-11 22:35:08 +02:00
MutationType.cpp AK: Make "foo"_fly_string infallible 2023-08-07 16:03:27 +02:00
MutationType.h AK: Make "foo"_fly_string infallible 2023-08-07 16:03:27 +02:00
NamedNodeMap.cpp LibWeb: Handle attribute changes after actually changing the attribute 2023-09-02 13:55:32 -04:00
NamedNodeMap.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
NamedNodeMap.idl LibWeb: Add NamedNodeMap::setNamedItemNS() method 2022-12-17 18:27:57 +01:00
Node.cpp LibWeb: Remove unnecessary layout node detach in DOM::Node::finalize() 2023-08-28 23:36:22 +02:00
Node.h LibWeb: Never blockify HTML <br> elements 2023-09-01 12:45:38 +02:00
Node.idl LibWeb: Add a bunch of missing CEReactions 2023-04-06 11:36:56 +02:00
NodeFilter.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
NodeFilter.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
NodeFilter.idl LibWeb: Expose NodeFilter on the Window object 2022-10-28 16:17:08 +01:00
NodeIterator.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
NodeIterator.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
NodeIterator.idl LibWeb: Remove the NoInstanceWrapper extended IDL attribute 2022-09-06 00:27:09 +02:00
NodeList.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
NodeList.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
NodeList.idl LibWeb: Add imports to all IDL files that depend on others 2022-02-16 22:48:32 +03:30
NodeOperations.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
NodeOperations.h AK+Everywhere: Rename String to DeprecatedString 2022-12-06 08:54:33 +01:00
NonDocumentTypeChildNode.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
NonElementParentNode.h LibWeb: Fix a few const-ness issues 2023-03-06 13:05:43 +00:00
ParentNode.cpp LibWeb: Cache lowercased tag name for getElementsByTagName() iteration 2023-08-23 08:06:25 +02:00
ParentNode.h LibWeb: Allow SVG painting to escape out of a shadow tree 2023-06-03 05:58:00 +02:00
ParentNode.idl LibWeb: Resolve circular IDL imports 2022-07-30 13:20:47 +02:00
Position.cpp LibWeb: Skip over grapheme clusters on left/right arrow key presses 2023-03-01 14:24:01 +00:00
Position.h LibWeb: Convert Web::DOM::Position::to_deprecated_string to String 2023-03-01 14:24:01 +00:00
ProcessingInstruction.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
ProcessingInstruction.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
ProcessingInstruction.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
QualifiedName.cpp LibWeb: Introduce CustomElementRegistry and creating custom elements 2023-04-06 11:36:56 +02:00
QualifiedName.h LibWeb: Cache lowercased tag name for getElementsByTagName() iteration 2023-08-23 08:06:25 +02:00
RadioNodeList.cpp LibWeb: Implement value attribute of RadioNodeList 2023-08-26 13:51:18 +02:00
RadioNodeList.h LibWeb: Implement value attribute of RadioNodeList 2023-08-26 13:51:18 +02:00
RadioNodeList.idl LibWeb: Implement value attribute of RadioNodeList 2023-08-26 13:51:18 +02:00
Range.cpp LibWeb: Port Range interface from DeprecatedString to String 2023-08-29 10:05:02 +02:00
Range.h LibWeb: Port Range interface from DeprecatedString to String 2023-08-29 10:05:02 +02:00
Range.idl LibWeb: Port History interface from DeprecatedString to String 2023-08-29 10:05:02 +02:00
ShadowRoot.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
ShadowRoot.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
ShadowRoot.idl LibWeb: Make ShadowRoot.mode return ShadowRootMode instead of String 2023-02-02 14:43:29 +01:00
StaticNodeList.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
StaticNodeList.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
StaticRange.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
StaticRange.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
StaticRange.idl LibWeb: Remove the NoInstanceWrapper extended IDL attribute 2022-09-06 00:27:09 +02:00
StyleElementUtils.cpp LibWeb: Don't parse inline style sheets during HTML fragment parsing 2023-08-09 17:09:28 +02:00
StyleElementUtils.h LibWeb: Extract updating a style block into StyleElementUtils 2023-06-09 17:14:50 +02:00
Text.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
Text.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
Text.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
TreeWalker.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
TreeWalker.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
TreeWalker.idl LibWeb: Remove the NoInstanceWrapper extended IDL attribute 2022-09-06 00:27:09 +02:00
XMLDocument.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
XMLDocument.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
XMLDocument.idl LibWeb: Add XMLDocument stub 2023-04-21 07:59:50 +02:00