
This introduces 3 classes: NodeList, StaticNodeList and LiveNodeList. NodeList is the base of the static and live versions. Static is a snapshot whereas live acts on the underlying data and thus inhibits the same issues we have currently with HTMLCollection. They were split into separate classes to not have them weirdly mis-mashed together. The create functions for static and live both return a NNRP to the base class. This is to prevent having to do awkward casting at creation and/or return, as the bindings expect to see the base NodeList only.
418 lines
9.4 KiB
C++
418 lines
9.4 KiB
C++
/*
|
|
* Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
|
|
* Copyright (c) 2021, the SerenityOS developers.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
namespace Web::Cookie {
|
|
struct Cookie;
|
|
struct ParsedCookie;
|
|
enum class Source;
|
|
}
|
|
|
|
namespace Web::Crypto {
|
|
class Crypto;
|
|
}
|
|
|
|
namespace Web::CSS {
|
|
class CalculatedStyleValue;
|
|
class CSSImportRule;
|
|
class CSSMediaRule;
|
|
class CSSRule;
|
|
class CSSStyleDeclaration;
|
|
class CSSStyleRule;
|
|
class CSSStyleSheet;
|
|
class ElementInlineCSSStyleDeclaration;
|
|
class Length;
|
|
class MediaQuery;
|
|
class MediaQueryList;
|
|
class PropertyOwningCSSStyleDeclaration;
|
|
class Screen;
|
|
class Selector;
|
|
class StyleProperties;
|
|
class StyleComputer;
|
|
class StyleSheet;
|
|
enum class Display;
|
|
|
|
class StyleValue;
|
|
class BackgroundRepeatStyleValue;
|
|
class BackgroundStyleValue;
|
|
class BorderRadiusStyleValue;
|
|
class BorderStyleValue;
|
|
class BoxShadowStyleValue;
|
|
class CalculatedStyleValue;
|
|
class ColorStyleValue;
|
|
class CustomStyleValue;
|
|
class FlexFlowStyleValue;
|
|
class FlexStyleValue;
|
|
class FontStyleValue;
|
|
class IdentifierStyleValue;
|
|
class ImageStyleValue;
|
|
class InheritStyleValue;
|
|
class InitialStyleValue;
|
|
class LengthStyleValue;
|
|
class ListStyleStyleValue;
|
|
class NumericStyleValue;
|
|
class OverflowStyleValue;
|
|
class StringStyleValue;
|
|
class TextDecorationStyleValue;
|
|
class TransformationStyleValue;
|
|
class UnsetStyleValue;
|
|
class StyleValueList;
|
|
}
|
|
|
|
namespace Web::DOM {
|
|
class AbortController;
|
|
class AbortSignal;
|
|
class CharacterData;
|
|
class Comment;
|
|
class CustomEvent;
|
|
class Document;
|
|
class DocumentFragment;
|
|
class DocumentLoadEventDelayer;
|
|
class DocumentType;
|
|
class DOMException;
|
|
class DOMImplementation;
|
|
class Element;
|
|
class Event;
|
|
class EventHandler;
|
|
class EventListener;
|
|
class EventTarget;
|
|
class HTMLCollection;
|
|
class LiveNodeList;
|
|
class Node;
|
|
class NodeList;
|
|
class ParentNode;
|
|
class Position;
|
|
class ProcessingInstruction;
|
|
class ShadowRoot;
|
|
class StaticNodeList;
|
|
class Text;
|
|
class Timer;
|
|
class Window;
|
|
class Range;
|
|
enum class QuirksMode;
|
|
|
|
template<typename ValueType>
|
|
class ExceptionOr;
|
|
}
|
|
|
|
namespace Web::Geometry {
|
|
class DOMRect;
|
|
}
|
|
|
|
namespace Web::HTML {
|
|
class CanvasRenderingContext2D;
|
|
class CloseEvent;
|
|
class DOMParser;
|
|
class DOMStringMap;
|
|
struct EventHandler;
|
|
class EventLoop;
|
|
class HTMLAnchorElement;
|
|
class HTMLAreaElement;
|
|
class HTMLAudioElement;
|
|
class HTMLBaseElement;
|
|
class HTMLBlinkElement;
|
|
class HTMLBodyElement;
|
|
class HTMLBRElement;
|
|
class HTMLButtonElement;
|
|
class HTMLCanvasElement;
|
|
class HTMLDataElement;
|
|
class HTMLDataListElement;
|
|
class HTMLDetailsElement;
|
|
class HTMLDialogElement;
|
|
class HTMLDirectoryElement;
|
|
class HTMLDivElement;
|
|
class HTMLDListElement;
|
|
class HTMLParser;
|
|
class HTMLElement;
|
|
class HTMLEmbedElement;
|
|
class HTMLFieldSetElement;
|
|
class HTMLFontElement;
|
|
class HTMLFormElement;
|
|
class HTMLFrameElement;
|
|
class HTMLFrameSetElement;
|
|
class HTMLHeadElement;
|
|
class HTMLHeadingElement;
|
|
class HTMLHRElement;
|
|
class HTMLHtmlElement;
|
|
class HTMLIFrameElement;
|
|
class HTMLImageElement;
|
|
class HTMLInputElement;
|
|
class HTMLLabelElement;
|
|
class HTMLLegendElement;
|
|
class HTMLLIElement;
|
|
class HTMLLinkElement;
|
|
class HTMLMapElement;
|
|
class HTMLMarqueeElement;
|
|
class HTMLMediaElement;
|
|
class HTMLMenuElement;
|
|
class HTMLMetaElement;
|
|
class HTMLMeterElement;
|
|
class HTMLModElement;
|
|
class HTMLObjectElement;
|
|
class HTMLOListElement;
|
|
class HTMLOptGroupElement;
|
|
class HTMLOptionElement;
|
|
class HTMLOutputElement;
|
|
class HTMLParagraphElement;
|
|
class HTMLParamElement;
|
|
class HTMLPictureElement;
|
|
class HTMLPreElement;
|
|
class HTMLProgressElement;
|
|
class HTMLQuoteElement;
|
|
class HTMLScriptElement;
|
|
class HTMLSelectElement;
|
|
class HTMLSlotElement;
|
|
class HTMLSourceElement;
|
|
class HTMLSpanElement;
|
|
class HTMLStyleElement;
|
|
class HTMLTableCaptionElement;
|
|
class HTMLTableCellElement;
|
|
class HTMLTableColElement;
|
|
class HTMLTableElement;
|
|
class HTMLTableRowElement;
|
|
class HTMLTableSectionElement;
|
|
class HTMLTemplateElement;
|
|
class HTMLTextAreaElement;
|
|
class HTMLTimeElement;
|
|
class HTMLTitleElement;
|
|
class HTMLTrackElement;
|
|
class HTMLUListElement;
|
|
class HTMLUnknownElement;
|
|
class HTMLVideoElement;
|
|
class ImageData;
|
|
class MessageChannel;
|
|
class MessageEvent;
|
|
class MessagePort;
|
|
class PageTransitionEvent;
|
|
class SubmitEvent;
|
|
class WebSocket;
|
|
}
|
|
|
|
namespace Web::HighResolutionTime {
|
|
class Performance;
|
|
}
|
|
|
|
namespace Web::NavigationTiming {
|
|
class PerformanceTiming;
|
|
}
|
|
|
|
namespace Web::RequestIdleCallback {
|
|
class IdleDeadline;
|
|
}
|
|
|
|
namespace Web::SVG {
|
|
class SVGElement;
|
|
class SVGGeometryElement;
|
|
class SVGGraphicsElement;
|
|
class SVGPathElement;
|
|
class SVGSVGElement;
|
|
}
|
|
|
|
namespace Web::Layout {
|
|
enum class LayoutMode;
|
|
enum class PaintPhase;
|
|
class BlockBox;
|
|
class BlockFormattingContext;
|
|
class Box;
|
|
class ButtonBox;
|
|
class CheckBox;
|
|
class FormattingContext;
|
|
class InitialContainingBlock;
|
|
class InlineFormattingContext;
|
|
class Label;
|
|
class LabelableNode;
|
|
class LineBox;
|
|
class LineBoxFragment;
|
|
class Node;
|
|
class NodeWithStyle;
|
|
class RadioButton;
|
|
class ReplacedBox;
|
|
class TextNode;
|
|
}
|
|
|
|
namespace Web {
|
|
class EventHandler;
|
|
class EditEventHandler;
|
|
class BrowsingContext;
|
|
class FrameLoader;
|
|
class InProcessWebView;
|
|
class LoadRequest;
|
|
class Origin;
|
|
class OutOfProcessWebView;
|
|
class Page;
|
|
class PageClient;
|
|
class PaintContext;
|
|
class Resource;
|
|
class ResourceLoader;
|
|
}
|
|
|
|
namespace Web::XHR {
|
|
class ProgressEvent;
|
|
class XMLHttpRequest;
|
|
class XMLHttpRequestEventTarget;
|
|
}
|
|
|
|
namespace Web::UIEvents {
|
|
class MouseEvent;
|
|
class KeyboardEvent;
|
|
class UIEvents;
|
|
}
|
|
|
|
namespace Web::URL {
|
|
class URL;
|
|
class URLSearchParams;
|
|
class URLSearchParamsIterator;
|
|
}
|
|
|
|
namespace Web::Bindings {
|
|
class AbortControllerWrapper;
|
|
class AbortSignalWrapper;
|
|
class CryptoWrapper;
|
|
class CSSRuleListWrapper;
|
|
class CSSRuleWrapper;
|
|
class CSSStyleDeclarationWrapper;
|
|
class CSSStyleRuleWrapper;
|
|
class CSSStyleSheetWrapper;
|
|
class CanvasRenderingContext2DWrapper;
|
|
class CharacterDataWrapper;
|
|
class CloseEventWrapper;
|
|
class CommentWrapper;
|
|
class CustomEventWrapper;
|
|
class DocumentFragmentWrapper;
|
|
class DocumentTypeWrapper;
|
|
class DocumentWrapper;
|
|
class DOMExceptionWrapper;
|
|
class DOMImplementationWrapper;
|
|
class DOMParserWrapper;
|
|
class DOMRectWrapper;
|
|
class DOMStringMapWrapper;
|
|
class ElementWrapper;
|
|
class EventListenerWrapper;
|
|
class EventTargetWrapper;
|
|
class EventWrapper;
|
|
class HistoryWrapper;
|
|
class HTMLAnchorElementWrapper;
|
|
class HTMLAreaElementWrapper;
|
|
class HTMLAudioElementWrapper;
|
|
class HTMLBaseElementWrapper;
|
|
class HTMLBodyElementWrapper;
|
|
class HTMLBRElementWrapper;
|
|
class HTMLButtonElementWrapper;
|
|
class HTMLCanvasElementWrapper;
|
|
class HTMLCollectionWrapper;
|
|
class HTMLDataElementWrapper;
|
|
class HTMLDataListElementWrapper;
|
|
class HTMLDetailsElementWrapper;
|
|
class HTMLDialogElementWrapper;
|
|
class HTMLDirectoryElementWrapper;
|
|
class HTMLDivElementWrapper;
|
|
class HTMLDListElementWrapper;
|
|
class HTMLElementWrapper;
|
|
class HTMLEmbedElementWrapper;
|
|
class HTMLFieldSetElementWrapper;
|
|
class HTMLFontElementWrapper;
|
|
class HTMLFormElementWrapper;
|
|
class HTMLFrameElementWrapper;
|
|
class HTMLFrameSetElementWrapper;
|
|
class HTMLHRElementWrapper;
|
|
class HTMLHeadElementWrapper;
|
|
class HTMLHeadingElementWrapper;
|
|
class HTMLHtmlElementWrapper;
|
|
class HTMLIFrameElementWrapper;
|
|
class HTMLImageElementWrapper;
|
|
class HTMLInputElementWrapper;
|
|
class HTMLLabelElementWrapper;
|
|
class HTMLLegendElementWrapper;
|
|
class HTMLLIElementWrapper;
|
|
class HTMLLinkElementWrapper;
|
|
class HTMLMapElementWrapper;
|
|
class HTMLMarqueeElementWrapper;
|
|
class HTMLMediaElementWrapper;
|
|
class HTMLMenuElementWrapper;
|
|
class HTMLMetaElementWrapper;
|
|
class HTMLMeterElementWrapper;
|
|
class HTMLModElementWrapper;
|
|
class HTMLObjectElementWrapper;
|
|
class HTMLOListElementWrapper;
|
|
class HTMLOptGroupElementWrapper;
|
|
class HTMLOptionElementWrapper;
|
|
class HTMLOutputElementWrapper;
|
|
class HTMLParagraphElementWrapper;
|
|
class HTMLParamElementWrapper;
|
|
class HTMLPictureElementWrapper;
|
|
class HTMLPreElementWrapper;
|
|
class HTMLProgressElementWrapper;
|
|
class HTMLQuoteElementWrapper;
|
|
class HTMLScriptElementWrapper;
|
|
class HTMLSelectElementWrapper;
|
|
class HTMLSlotElementWrapper;
|
|
class HTMLSourceElementWrapper;
|
|
class HTMLSpanElementWrapper;
|
|
class HTMLStyleElementWrapper;
|
|
class HTMLTableCaptionElementWrapper;
|
|
class HTMLTableCellElementWrapper;
|
|
class HTMLTableColElementWrapper;
|
|
class HTMLTableElementWrapper;
|
|
class HTMLTableRowElementWrapper;
|
|
class HTMLTableSectionElementWrapper;
|
|
class HTMLTemplateElementWrapper;
|
|
class HTMLTextAreaElementWrapper;
|
|
class HTMLTimeElementWrapper;
|
|
class HTMLTitleElementWrapper;
|
|
class HTMLTrackElementWrapper;
|
|
class HTMLUListElementWrapper;
|
|
class HTMLUnknownElementWrapper;
|
|
class HTMLVideoElementWrapper;
|
|
class IdleDeadlineWrapper;
|
|
class ImageDataWrapper;
|
|
class KeyboardEventWrapper;
|
|
class LocationObject;
|
|
class MediaQueryListWrapper;
|
|
class MessageChannelWrapper;
|
|
class MessageEventWrapper;
|
|
class MessagePortWrapper;
|
|
class MouseEventWrapper;
|
|
class NodeListWrapper;
|
|
class NodeWrapper;
|
|
class PageTransitionEventWrapper;
|
|
class PerformanceTimingWrapper;
|
|
class PerformanceWrapper;
|
|
class ProcessingInstructionWrapper;
|
|
class ProgressEventWrapper;
|
|
class ScreenWrapper;
|
|
class ScriptExecutionContext;
|
|
class SubmitEventWrapper;
|
|
class SVGElementWrapper;
|
|
class SVGGeometryElementWrapper;
|
|
class SVGGraphicsElementWrapper;
|
|
class SVGPathElementWrapper;
|
|
class SVGSVGElementWrapper;
|
|
class StyleSheetWrapper;
|
|
class StyleSheetListWrapper;
|
|
class TextWrapper;
|
|
class UIEventWrapper;
|
|
class WebSocketWrapper;
|
|
class WindowObject;
|
|
class Wrappable;
|
|
class Wrapper;
|
|
class XMLHttpRequestConstructor;
|
|
class XMLHttpRequestPrototype;
|
|
class XMLHttpRequestWrapper;
|
|
class XMLHttpRequestEventTargetWrapper;
|
|
class RangeConstructor;
|
|
class RangePrototype;
|
|
class RangeWrapper;
|
|
class URLConstructor;
|
|
class URLPrototype;
|
|
class URLWrapper;
|
|
class URLSearchParamsConstructor;
|
|
class URLSearchParamsPrototype;
|
|
class URLSearchParamsWrapper;
|
|
class URLSearchParamsIteratorPrototype;
|
|
class URLSearchParamsIteratorWrapper;
|
|
}
|