ladybird/Libraries/LibWeb/CMakeLists.txt
Callum Law 8ebdaeab69 LibWeb: Transfer animation ownership to AnimatedBitmapDecodedImageData
Previously animation ownership was a messy split between
`AnimatedBitmapDecodedImageData` and the consumers (i.e.
`ImageStyleValueResource`, `HTMLImageElement`, and `SVGImageElement`)
with `AnimatedBitmapDecodedImageData` owning the frames and a current
frame index, and the consumers owning the rest of the state (e.g. loop
count, timers to drive the animation forward, their own current index).

This had a couple of main issues:
 - While `AnimatedDecodedImageData` partially synchronized animations by
   dropping unexpected advancement notifications, this didn't apply to
   other animation state which meant, for instance, that a later started
   consumer could drive the animation of an earlier one past the max
   loop count (albeit without invalidating the earlier consumer).
 - Multiple consumers didn't share frame timings, meaning animations
   could be up to a full frame out of sync visually.
 - Animations were paused depending on whether there were any consumers,
   this is different to the behavior in other browsers (where they
   continue regardless of whether there are any consumers).
 - It was an overgeneralization of how animations need to work - only
   `AnimatedBitmapDecodedImageData` works with an indexed frame model,
   with animated SVGs (although not yet implemented) relying on their
   internal event loop to be driven forward.

Given the above the new approach implemented in this commit is:
 - The API for `DecodedImageData` is animation system agnostic, only
   exposing `default_frame`, `current_frame`, and `restart_animation`
   methods not reliant on providing a specific frame index.
 - `AnimatedBitmapDecodedImageData` owns its own timer, loop count,
   etc. The animation starts when the first consumer registers and ends
   when the document is hidden or becomes inactive (or completes in the
   case of finite animations).
 - Consumers are invalidated by `AnimatedBitmapDecodedImageData` when
   required.

Tests have been added for:
 - Animations being paused when the document becomes inactive and
   restarted when it becomes active again.
 - Frame timings being synchronized across consumers.
 - Restarts triggered by `HTMLImageElement` applying to all consumers.
 - Processing ending once a non-infinite animation plays to completion.

The tests to ensure animations are cancelled when consumers are removed
(e.g. `animated-background-image-timer-stops-when-hidden.html`) have
been updated to assert the inverse since animation state is now per
resource not per consumer.
2026-06-18 10:44:25 +02:00

1324 lines
44 KiB
CMake

include(libweb_generators)
set(SOURCES
Animations/Animatable.cpp
Animations/Animation.cpp
Animations/AnimationEffect.cpp
Animations/AnimationPlaybackEvent.cpp
Animations/AnimationTimeline.cpp
Animations/TimeValue.cpp
Animations/DocumentTimeline.cpp
Animations/KeyframeEffect.cpp
Animations/PseudoElementParsing.cpp
Animations/ScrollTimeline.cpp
ARIA/AriaData.cpp
ARIA/ARIAMixin.cpp
ARIA/AttributeNames.cpp
ARIA/Roles.cpp
ARIA/RoleType.cpp
ARIA/StateAndProperties.cpp
Bindings/AudioConstructor.cpp
Bindings/HostDefined.cpp
Bindings/ImageConstructor.cpp
Bindings/InterfaceObject.cpp
Bindings/Intrinsics.cpp
Bindings/MainThreadVM.cpp
Bindings/OptionConstructor.cpp
Bindings/PlatformObject.cpp
Bindings/PrincipalHostDefined.cpp
Clipboard/Clipboard.cpp
Clipboard/ClipboardEvent.cpp
Clipboard/ClipboardItem.cpp
Clipboard/SystemClipboard.cpp
Compositor/AsyncScrollTree.cpp
Compositor/AsyncScrollingState.cpp
Compositor/CompositorHost.cpp
Compositor/Types.cpp
Compression/CompressionStream.cpp
Compression/DecompressionStream.cpp
ContentSecurityPolicy/BlockingAlgorithms.cpp
ContentSecurityPolicy/Directives/BaseUriDirective.cpp
ContentSecurityPolicy/Directives/ChildSourceDirective.cpp
ContentSecurityPolicy/Directives/ConnectSourceDirective.cpp
ContentSecurityPolicy/Directives/DefaultSourceDirective.cpp
ContentSecurityPolicy/Directives/Directive.cpp
ContentSecurityPolicy/Directives/DirectiveFactory.cpp
ContentSecurityPolicy/Directives/DirectiveOperations.cpp
ContentSecurityPolicy/Directives/FontSourceDirective.cpp
ContentSecurityPolicy/Directives/FormActionDirective.cpp
ContentSecurityPolicy/Directives/FrameAncestorsDirective.cpp
ContentSecurityPolicy/Directives/FrameSourceDirective.cpp
ContentSecurityPolicy/Directives/ImageSourceDirective.cpp
ContentSecurityPolicy/Directives/KeywordSources.cpp
ContentSecurityPolicy/Directives/KeywordTrustedTypes.cpp
ContentSecurityPolicy/Directives/ManifestSourceDirective.cpp
ContentSecurityPolicy/Directives/MediaSourceDirective.cpp
ContentSecurityPolicy/Directives/Names.cpp
ContentSecurityPolicy/Directives/ObjectSourceDirective.cpp
ContentSecurityPolicy/Directives/ReportToDirective.cpp
ContentSecurityPolicy/Directives/ReportUriDirective.cpp
ContentSecurityPolicy/Directives/SandboxDirective.cpp
ContentSecurityPolicy/Directives/ScriptSourceAttributeDirective.cpp
ContentSecurityPolicy/Directives/ScriptSourceDirective.cpp
ContentSecurityPolicy/Directives/ScriptSourceElementDirective.cpp
ContentSecurityPolicy/Directives/SerializedDirective.cpp
ContentSecurityPolicy/Directives/SourceExpression.cpp
ContentSecurityPolicy/Directives/StyleSourceAttributeDirective.cpp
ContentSecurityPolicy/Directives/StyleSourceDirective.cpp
ContentSecurityPolicy/Directives/StyleSourceElementDirective.cpp
ContentSecurityPolicy/Directives/WebRTCDirective.cpp
ContentSecurityPolicy/Directives/WorkerSourceDirective.cpp
ContentSecurityPolicy/Policy.cpp
ContentSecurityPolicy/PolicyList.cpp
ContentSecurityPolicy/SecurityPolicyViolationEvent.cpp
ContentSecurityPolicy/SerializedPolicy.cpp
ContentSecurityPolicy/Violation.cpp
CookieStore/CookieChangeEvent.cpp
CookieStore/CookieStore.cpp
CredentialManagement/Credential.cpp
CredentialManagement/CredentialsContainer.cpp
CredentialManagement/FederatedCredential.cpp
CredentialManagement/FederatedCredentialOperations.cpp
CredentialManagement/PasswordCredential.cpp
CredentialManagement/PasswordCredentialOperations.cpp
Crypto/Crypto.cpp
Crypto/CryptoAlgorithms.cpp
Crypto/CryptoBindings.cpp
Crypto/CryptoKey.cpp
Crypto/KeyAlgorithms.cpp
Crypto/SubtleCrypto.cpp
CSS/Angle.cpp
CSS/AnimationEvent.cpp
CSS/BooleanExpression.cpp
CSS/CascadedProperties.cpp
CSS/Clip.cpp
CSS/ComputedProperties.cpp
CSS/ContainerQuery.cpp
CSS/CountersSet.cpp
CSS/CounterStyle.cpp
CSS/CounterStyleDefinition.cpp
CSS/CSS.cpp
CSS/CSSAnimation.cpp
CSS/CSSConditionRule.cpp
CSS/CSSContainerRule.cpp
CSS/CSSCounterStyleRule.cpp
CSS/CSSDescriptors.cpp
CSS/CSSFontFaceDescriptors.cpp
CSS/CSSFontFaceRule.cpp
CSS/CSSFontFeatureValuesMap.cpp
CSS/CSSFontFeatureValuesRule.cpp
CSS/CSSFunctionDeclarations.cpp
CSS/CSSFunctionDescriptors.cpp
CSS/CSSFunctionRule.cpp
CSS/CSSGroupingRule.cpp
CSS/CSSImageValue.cpp
CSS/CSSImportRule.cpp
CSS/CSSKeyframeRule.cpp
CSS/CSSKeyframesRule.cpp
CSS/CSSKeywordValue.cpp
CSS/CSSLayerBlockRule.cpp
CSS/CSSLayerStatementRule.cpp
CSS/CSSMarginRule.cpp
CSS/CSSMathClamp.cpp
CSS/CSSMathInvert.cpp
CSS/CSSMathMax.cpp
CSS/CSSMathMin.cpp
CSS/CSSMathNegate.cpp
CSS/CSSMathProduct.cpp
CSS/CSSMathSum.cpp
CSS/CSSMathValue.cpp
CSS/CSSMatrixComponent.cpp
CSS/CSSMediaRule.cpp
CSS/CSSNamespaceRule.cpp
CSS/CSSNestedDeclarations.cpp
CSS/CSSNumericArray.cpp
CSS/CSSNumericValue.cpp
CSS/CSSPageRule.cpp
CSS/CSSPageDescriptors.cpp
CSS/CSSPerspective.cpp
CSS/CSSPropertyRule.cpp
CSS/CSSRotate.cpp
CSS/CSSRule.cpp
CSS/CSSRuleList.cpp
CSS/CSSScale.cpp
CSS/CSSScopeRule.cpp
CSS/CSSSkew.cpp
CSS/CSSSkewX.cpp
CSS/CSSSkewY.cpp
CSS/CSSStyleDeclaration.cpp
CSS/CSSStyleProperties.cpp
CSS/CSSStyleRule.cpp
CSS/CSSStyleSheet.cpp
CSS/CSSStyleValue.cpp
CSS/CSSSupportsRule.cpp
CSS/CSSTransformComponent.cpp
CSS/CSSTransformValue.cpp
CSS/CSSTransition.cpp
CSS/CSSTranslate.cpp
CSS/CSSUnitValue.cpp
CSS/CSSUnparsedValue.cpp
CSS/CSSVariableReferenceValue.cpp
CSS/ColorFunctionDescriptor.cpp
CSS/ColorInterpolation.cpp
CSS/CustomPropertyData.cpp
CSS/Descriptor.cpp
CSS/Display.cpp
CSS/EasingFunction.cpp
CSS/EdgeRect.cpp
CSS/FeatureQuery.cpp
CSS/Fetch.cpp
CSS/Filter.cpp
CSS/Flex.cpp
CSS/FontComputer.cpp
CSS/FontFace.cpp
CSS/FontLoading.cpp
CSS/FontFaceSet.cpp
CSS/FontFaceSetLoadEvent.cpp
CSS/FontFeatureData.cpp
CSS/Frequency.cpp
CSS/GridTrackPlacement.cpp
CSS/GridTrackSize.cpp
CSS/Invalidation/AdoptedStyleSheetInvalidator.cpp
CSS/Invalidation/AttributeInvalidator.cpp
CSS/Invalidation/CustomElementInvalidator.cpp
CSS/Invalidation/EmbeddedContentInvalidator.cpp
CSS/Invalidation/ElementStateInvalidator.cpp
CSS/Invalidation/FormControlInvalidator.cpp
CSS/Invalidation/HasMutationFeatureCollector.cpp
CSS/Invalidation/HasMutationInvalidator.cpp
CSS/Invalidation/InvalidationSetMatcher.cpp
CSS/Invalidation/LanguageInvalidator.cpp
CSS/Invalidation/LinkInvalidator.cpp
CSS/Invalidation/MediaQueryInvalidator.cpp
CSS/Invalidation/NodeInvalidator.cpp
CSS/Invalidation/PartInvalidator.cpp
CSS/Invalidation/PseudoClassInvalidator.cpp
CSS/Invalidation/SlotInvalidator.cpp
CSS/Invalidation/StyleInvalidator.cpp
CSS/Invalidation/StructuralMutationInvalidator.cpp
CSS/Interpolation.cpp
CSS/InvalidationSet.cpp
CSS/Length.cpp
CSS/LengthBox.cpp
CSS/MediaList.cpp
CSS/MediaQuery.cpp
CSS/MediaQueryList.cpp
CSS/MediaQueryListEvent.cpp
CSS/Number.cpp
CSS/NumericType.cpp
CSS/PageSelector.cpp
CSS/ParsedFontFace.cpp
CSS/Parser/ArbitrarySubstitutionFunctions.cpp
CSS/Parser/ComponentValue.cpp
CSS/Parser/DescriptorParsing.cpp
CSS/Parser/ErrorReporter.cpp
CSS/Parser/GradientParsing.cpp
CSS/Parser/Helpers.cpp
CSS/Parser/MediaParsing.cpp
CSS/Parser/Parser.cpp
CSS/Parser/RustTokenizer.cpp
CSS/Parser/PropertyParsing.cpp
CSS/Parser/RuleContext.cpp
CSS/Parser/RuleParsing.cpp
CSS/Parser/SelectorParsing.cpp
CSS/Parser/Syntax.cpp
CSS/Parser/SyntaxParsing.cpp
CSS/Parser/Token.cpp
CSS/Parser/Tokenizer.cpp
CSS/Parser/Types.cpp
CSS/Parser/ValueParsing.cpp
CSS/Percentage.cpp
CSS/PreferredColorScheme.cpp
CSS/PreferredContrast.cpp
CSS/PreferredMotion.cpp
CSS/Ratio.cpp
CSS/Resolution.cpp
CSS/Screen.cpp
CSS/ScreenOrientation.cpp
CSS/Selector.cpp
CSS/SelectorEngine.cpp
CSS/Serialize.cpp
CSS/Size.cpp
CSS/Sizing.cpp
CSS/StyleComputer.cpp
CSS/StyleInvalidation.cpp
CSS/StyleInvalidationData.cpp
CSS/StyleProperty.cpp
CSS/StylePropertyMapReadOnly.cpp
CSS/StylePropertyMap.cpp
CSS/StyleScope.cpp
CSS/StyleSheet.cpp
CSS/StyleSheetIdentifier.cpp
CSS/StyleSheetInvalidation.cpp
CSS/StyleSheetList.cpp
CSS/StyleValues/AbstractImageStyleValue.cpp
CSS/StyleValues/AnchorStyleValue.cpp
CSS/StyleValues/AnchorSizeStyleValue.cpp
CSS/StyleValues/AngleStyleValue.cpp
CSS/StyleValues/BackgroundSizeStyleValue.cpp
CSS/StyleValues/BasicShapeStyleValue.cpp
CSS/StyleValues/BorderImageSliceStyleValue.cpp
CSS/StyleValues/BorderRadiusStyleValue.cpp
CSS/StyleValues/BorderRadiusRectStyleValue.cpp
CSS/StyleValues/CalculatedStyleValue.cpp
CSS/StyleValues/ColorFunctionStyleValue.cpp
CSS/StyleValues/ColorInterpolationMethodStyleValue.cpp
CSS/StyleValues/ColorMixStyleValue.cpp
CSS/StyleValues/ColorSchemeStyleValue.cpp
CSS/StyleValues/ColorStyleValue.cpp
CSS/StyleValues/ConicGradientStyleValue.cpp
CSS/StyleValues/ContentStyleValue.cpp
CSS/StyleValues/ContrastColorStyleValue.cpp
CSS/StyleValues/CounterDefinitionsStyleValue.cpp
CSS/StyleValues/CounterStyleSystemStyleValue.cpp
CSS/StyleValues/CounterStyleValue.cpp
CSS/StyleValues/CounterStyleStyleValue.cpp
CSS/StyleValues/CursorStyleValue.cpp
CSS/StyleValues/CustomIdentStyleValue.cpp
CSS/StyleValues/DimensionStyleValue.cpp
CSS/StyleValues/DisplayStyleValue.cpp
CSS/StyleValues/EasingStyleValue.cpp
CSS/StyleValues/EdgeStyleValue.cpp
CSS/StyleValues/FilterValueListStyleValue.cpp
CSS/StyleValues/FunctionStyleValue.cpp
CSS/StyleValues/FontSourceStyleValue.cpp
CSS/StyleValues/FontStyleStyleValue.cpp
CSS/StyleValues/GridAutoFlowStyleValue.cpp
CSS/StyleValues/GridTemplateAreaStyleValue.cpp
CSS/StyleValues/GridTrackPlacementStyleValue.cpp
CSS/StyleValues/GridTrackSizeListStyleValue.cpp
CSS/StyleValues/ImageSetStyleValue.cpp
CSS/StyleValues/ImageStyleValue.cpp
CSS/StyleValues/IntegerStyleValue.cpp
CSS/StyleValues/KeywordStyleValue.cpp
CSS/StyleValues/LengthStyleValue.cpp
CSS/StyleValues/LightDarkStyleValue.cpp
CSS/StyleValues/LinearGradientStyleValue.cpp
CSS/StyleValues/NumberStyleValue.cpp
CSS/StyleValues/OpacityValueStyleValue.cpp
CSS/StyleValues/OpenTypeTaggedStyleValue.cpp
CSS/StyleValues/OverflowClipMarginStyleValue.cpp
CSS/StyleValues/PositionStyleValue.cpp
CSS/StyleValues/RadialGradientStyleValue.cpp
CSS/StyleValues/RadialSizeStyleValue.cpp
CSS/StyleValues/RandomValueSharingStyleValue.cpp
CSS/StyleValues/RatioStyleValue.cpp
CSS/StyleValues/RectStyleValue.cpp
CSS/StyleValues/RepeatStyleStyleValue.cpp
CSS/StyleValues/ScrollbarColorStyleValue.cpp
CSS/StyleValues/ShadowStyleValue.cpp
CSS/StyleValues/ShorthandStyleValue.cpp
CSS/StyleValues/StyleValue.cpp
CSS/StyleValues/StyleValueList.cpp
CSS/StyleValues/SuperellipseStyleValue.cpp
CSS/StyleValues/TextIndentStyleValue.cpp
CSS/StyleValues/TextUnderlinePositionStyleValue.cpp
CSS/StyleValues/TransformationStyleValue.cpp
CSS/StyleValues/TreeCountingFunctionStyleValue.cpp
CSS/StyleValues/TupleStyleValue.cpp
CSS/StyleValues/UnicodeRangeStyleValue.cpp
CSS/StyleValues/UnresolvedStyleValue.cpp
CSS/Supports.cpp
CSS/SyntaxHighlighter/SyntaxHighlighter.cpp
CSS/SystemColor.cpp
CSS/Time.cpp
CSS/TransitionEvent.cpp
CSS/URL.cpp
CSS/ValueType.cpp
CSS/VisualViewport.cpp
DOM/AbortController.cpp
DOM/AbortSignal.cpp
DOM/AbstractElement.cpp
DOM/AbstractRange.cpp
DOM/AccessibilityTreeNode.cpp
DOM/AdoptedStyleSheets.cpp
DOM/AnchorNameMap.cpp
DOM/Attr.cpp
DOM/CDATASection.cpp
DOM/CaretPosition.cpp
DOM/CharacterData.cpp
DOM/Comment.cpp
DOM/CustomEvent.cpp
DOM/Document.cpp
DOM/DocumentFragment.cpp
DOM/DocumentLoadEventDelayer.cpp
DOM/DocumentLoading.cpp
DOM/DocumentObserver.cpp
DOM/DocumentType.cpp
DOM/DOMEventListener.cpp
DOM/DOMImplementation.cpp
DOM/DOMTokenList.cpp
DOM/EditingHostManager.cpp
DOM/Element.cpp
DOM/ElementByIdMap.cpp
DOM/ElementFactory.cpp
DOM/Event.cpp
DOM/EventDispatcher.cpp
DOM/EventTarget.cpp
DOM/HTMLCollection.cpp
DOM/IDLEventListener.cpp
DOM/LiveNodeList.cpp
DOM/MutationObserver.cpp
DOM/MutationRecord.cpp
DOM/MutationType.cpp
DOM/NamedNodeMap.cpp
DOM/Node.cpp
DOM/NodeFilter.cpp
DOM/NodeIterator.cpp
DOM/NodeList.cpp
DOM/NodeOperations.cpp
DOM/ParentNode.cpp
DOM/Position.cpp
DOM/ProcessingInstruction.cpp
DOM/PseudoElement.cpp
DOM/QualifiedName.cpp
DOM/Range.cpp
DOM/ShadowRoot.cpp
DOM/Slot.cpp
DOM/SlotRegistry.cpp
DOM/Slottable.cpp
DOM/StaticNodeList.cpp
DOM/StaticRange.cpp
DOM/StyleElementBase.cpp
DOM/Text.cpp
DOM/TreeWalker.cpp
DOM/Utils.cpp
DOM/XMLDocument.cpp
DOMURL/DOMURL.cpp
DOMURL/Origin.cpp
DOMURL/URLSearchParams.cpp
DOMURL/URLSearchParamsIterator.cpp
Dump.cpp
Editing/CommandNames.cpp
Editing/Commands.cpp
Editing/ExecCommand.cpp
Editing/Internal/Algorithms.cpp
Encoding/TextDecoder.cpp
Encoding/TextDecoderCommon.cpp
Encoding/TextDecoderStream.cpp
Encoding/TextEncoder.cpp
Encoding/TextEncoderCommon.cpp
Encoding/TextEncoderStream.cpp
EncryptedMediaExtensions/Algorithms.cpp
EncryptedMediaExtensions/MediaKeySystemAccess.cpp
EncryptedMediaExtensions/NavigatorEncryptedMediaExtensionsPartial.cpp
EntriesAPI/FileSystemEntry.cpp
EventTiming/PerformanceEventTiming.cpp
Fetch/Body.cpp
Fetch/BodyInit.cpp
Fetch/Enums.cpp
Fetch/Fetching/Checks.cpp
Fetch/Fetching/FetchedDataReceiver.cpp
Fetch/Fetching/Fetching.cpp
Fetch/Fetching/PendingResponse.cpp
Fetch/Fetching/RefCountedFlag.cpp
Fetch/FetchMethod.cpp
Fetch/Headers.cpp
Fetch/HeadersIterator.cpp
Fetch/Infrastructure/FetchAlgorithms.cpp
Fetch/Infrastructure/FetchController.cpp
Fetch/Infrastructure/FetchParams.cpp
Fetch/Infrastructure/FetchRecord.cpp
Fetch/Infrastructure/FetchTimingInfo.cpp
Fetch/Infrastructure/HTTP.cpp
Fetch/Infrastructure/HTTP/Bodies.cpp
Fetch/Infrastructure/HTTP/CORS.cpp
Fetch/Infrastructure/HTTP/MIME.cpp
Fetch/Infrastructure/HTTP/Requests.cpp
Fetch/Infrastructure/HTTP/Responses.cpp
Fetch/Infrastructure/HTTP/Statuses.cpp
Fetch/Infrastructure/IncrementalReadLoopReadRequest.cpp
Fetch/Infrastructure/MimeTypeBlocking.cpp
Fetch/Infrastructure/NetworkPartitionKey.cpp
Fetch/Infrastructure/NoSniffBlocking.cpp
Fetch/Infrastructure/PortBlocking.cpp
Fetch/Infrastructure/PreflightCache.cpp
Fetch/Infrastructure/Task.cpp
Fetch/Infrastructure/URL.cpp
Fetch/Request.cpp
Fetch/Response.cpp
FileAPI/Blob.cpp
FileAPI/BlobURLStore.cpp
FileAPI/File.cpp
FileAPI/FileList.cpp
FileAPI/FileReader.cpp
FileAPI/FileReaderSync.cpp
Gamepad/EventNames.cpp
Gamepad/Gamepad.cpp
Gamepad/GamepadButton.cpp
Gamepad/GamepadEvent.cpp
Gamepad/GamepadHapticActuator.cpp
Gamepad/NavigatorGamepad.cpp
Geolocation/Geolocation.cpp
Serial/Serial.cpp
Serial/SerialPort.cpp
Geolocation/GeolocationCoordinates.cpp
Geolocation/GeolocationPosition.cpp
Geolocation/GeolocationPositionError.cpp
Geometry/DOMMatrix.cpp
Geometry/DOMMatrixReadOnly.cpp
Geometry/DOMPoint.cpp
Geometry/DOMPointReadOnly.cpp
Geometry/DOMQuad.cpp
Geometry/DOMRect.cpp
Geometry/DOMRectList.cpp
Geometry/DOMRectReadOnly.cpp
GPC/GlobalPrivacyControl.cpp
GraphemeEdgeTracker.cpp
HighResolutionTime/Performance.cpp
HighResolutionTime/TimeOrigin.cpp
HTML/AbstractWorker.cpp
HTML/BitmapDecodedImageData.cpp
HTML/AnimationFrameCallbackDriver.cpp
HTML/AttributeNames.cpp
HTML/AudioTrack.cpp
HTML/AudioTrackList.cpp
HTML/AutocompleteElement.cpp
HTML/BarProp.cpp
HTML/BeforeUnloadEvent.cpp
HTML/BroadcastChannel.cpp
HTML/BroadcastChannelMessage.cpp
HTML/BrowsingContext.cpp
HTML/BrowsingContextGroup.cpp
HTML/Canvas/AbstractCanvasMixin.cpp
HTML/Canvas/CanvasDrawImage.cpp
HTML/Canvas/CanvasFillStrokeStyles.cpp
HTML/Canvas/CanvasPath.cpp
HTML/Canvas/CanvasState.cpp
HTML/Canvas/CanvasTextDrawingStyles.cpp
HTML/Canvas/DrawingState.cpp
HTML/Canvas/SerializeBitmap.cpp
HTML/CanvasGradient.cpp
HTML/CanvasPattern.cpp
HTML/CanvasRenderingContext2D.cpp
HTML/CloseEvent.cpp
HTML/CloseWatcher.cpp
HTML/CloseWatcherManager.cpp
HTML/CommandEvent.cpp
HTML/CORSSettingAttribute.cpp
HTML/CrossOrigin/AbstractOperations.cpp
HTML/CrossOrigin/Reporting.cpp
HTML/CustomElements/CustomElementDefinition.cpp
HTML/CustomElements/CustomElementName.cpp
HTML/CustomElements/CustomElementReactionNames.cpp
HTML/CustomElements/CustomElementRegistry.cpp
HTML/CustomElements/CustomStateSet.cpp
HTML/DataTransfer.cpp
HTML/DataTransferItem.cpp
HTML/DataTransferItemList.cpp
HTML/Dates.cpp
HTML/DecodedImageData.cpp
HTML/DedicatedWorkerGlobalScope.cpp
HTML/DocumentState.cpp
HTML/DOMParser.cpp
HTML/DOMStringList.cpp
HTML/DOMStringMap.cpp
HTML/DragDataStore.cpp
HTML/DragEvent.cpp
HTML/ElementInternals.cpp
HTML/EmbedderPolicy.cpp
HTML/ErrorEvent.cpp
HTML/ErrorInformation.cpp
HTML/EventHandler.cpp
HTML/EventLoop/EventLoop.cpp
HTML/EventLoop/Task.cpp
HTML/EventLoop/TaskQueue.cpp
HTML/EventNames.cpp
HTML/EventSource.cpp
HTML/External.cpp
HTML/FileFilter.cpp
HTML/Focus.cpp
HTML/FormAssociatedElement.cpp
HTML/FormControlInfrastructure.cpp
HTML/FormDataEvent.cpp
HTML/GlobalEventHandlers.cpp
HTML/HashChangeEvent.cpp
HTML/History.cpp
HTML/HTMLAllCollection.cpp
HTML/HTMLAnchorElement.cpp
HTML/HTMLAreaElement.cpp
HTML/HTMLAudioElement.cpp
HTML/HTMLBaseElement.cpp
HTML/HTMLBodyElement.cpp
HTML/HTMLBRElement.cpp
HTML/HTMLButtonElement.cpp
HTML/HTMLCanvasElement.cpp
HTML/HTMLDataElement.cpp
HTML/HTMLDataListElement.cpp
HTML/HTMLDetailsElement.cpp
HTML/HTMLDialogElement.cpp
HTML/HTMLDirectoryElement.cpp
HTML/HTMLDivElement.cpp
HTML/HTMLDListElement.cpp
HTML/HTMLDocument.cpp
HTML/HTMLElement.cpp
HTML/HTMLEmbedElement.cpp
HTML/HTMLFieldSetElement.cpp
HTML/HTMLFontElement.cpp
HTML/HTMLFormControlsCollection.cpp
HTML/HTMLFormElement.cpp
HTML/HTMLFrameElement.cpp
HTML/HTMLFrameSetElement.cpp
HTML/HTMLHeadElement.cpp
HTML/HTMLHeadingElement.cpp
HTML/HTMLHRElement.cpp
HTML/HTMLHtmlElement.cpp
HTML/HTMLHyperlinkElementUtils.cpp
HTML/HTMLIFrameElement.cpp
HTML/HTMLImageElement.cpp
HTML/HTMLInputElement.cpp
HTML/HTMLLabelElement.cpp
HTML/HTMLLegendElement.cpp
HTML/HTMLLIElement.cpp
HTML/HTMLLinkElement.cpp
HTML/HTMLMapElement.cpp
HTML/HTMLMarqueeElement.cpp
HTML/HTMLMediaElement.cpp
HTML/MediaControls.cpp
HTML/HTMLMenuElement.cpp
HTML/HTMLMetaElement.cpp
HTML/HTMLMeterElement.cpp
HTML/HTMLModElement.cpp
HTML/HTMLObjectElement.cpp
HTML/HTMLOListElement.cpp
HTML/HTMLOptGroupElement.cpp
HTML/HTMLOptionElement.cpp
HTML/HTMLOptionsCollection.cpp
HTML/HTMLOrSVGOrMathMLElement.cpp
HTML/HTMLOutputElement.cpp
HTML/HTMLParagraphElement.cpp
HTML/HTMLParamElement.cpp
HTML/HTMLPictureElement.cpp
HTML/HTMLPreElement.cpp
HTML/HTMLProgressElement.cpp
HTML/HTMLQuoteElement.cpp
HTML/HTMLScriptElement.cpp
HTML/HTMLSelectedContentElement.cpp
HTML/HTMLSelectElement.cpp
HTML/HTMLSlotElement.cpp
HTML/HTMLSourceElement.cpp
HTML/HTMLSpanElement.cpp
HTML/HTMLStyleElement.cpp
HTML/HTMLSummaryElement.cpp
HTML/HTMLTableCaptionElement.cpp
HTML/HTMLTableCellElement.cpp
HTML/HTMLTableColElement.cpp
HTML/HTMLTableElement.cpp
HTML/HTMLTableRowElement.cpp
HTML/HTMLTableSectionElement.cpp
HTML/HTMLTemplateElement.cpp
HTML/HTMLTextAreaElement.cpp
HTML/HTMLTimeElement.cpp
HTML/HTMLTitleElement.cpp
HTML/HTMLTrackElement.cpp
HTML/HTMLUListElement.cpp
HTML/HTMLUnknownElement.cpp
HTML/HTMLVideoElement.cpp
HTML/ImageBitmap.cpp
HTML/ImageData.cpp
HTML/ImageRequest.cpp
HTML/ListOfAvailableImages.cpp
HTML/Location.cpp
HTML/MediaError.cpp
HTML/MediaTrackBase.cpp
HTML/MessageChannel.cpp
HTML/MessageEvent.cpp
HTML/MessagePort.cpp
HTML/MimeType.cpp
HTML/MimeTypeArray.cpp
HTML/Navigable.cpp
HTML/NavigableContainer.cpp
HTML/NavigateEvent.cpp
HTML/Navigation.cpp
HTML/NavigationCurrentEntryChangeEvent.cpp
HTML/NavigationDestination.cpp
HTML/NavigationHistoryEntry.cpp
HTML/NavigationObserver.cpp
HTML/NavigationParams.cpp
HTML/NavigationTransition.cpp
HTML/Navigator.cpp
HTML/NavigatorBeacon.cpp
HTML/NavigatorConcurrentHardware.cpp
HTML/NavigatorDeviceMemory.cpp
HTML/NavigatorID.cpp
HTML/Numbers.cpp
HTML/OffscreenCanvas.cpp
HTML/OffscreenCanvasRenderingContext2D.cpp
HTML/PageTransitionEvent.cpp
HTML/Parser/Entities.cpp
HTML/Parser/HTMLEncodingDetection.cpp
HTML/Parser/HTMLParser.cpp
HTML/Parser/HTMLToken.cpp
HTML/Parser/HTMLTokenizer.cpp
HTML/Parser/IncrementalDocumentParser.cpp
HTML/Parser/SpeculativeHTMLParser.cpp
HTML/Path2D.cpp
HTML/Plugin.cpp
HTML/PluginArray.cpp
HTML/PolicyContainers.cpp
HTML/POSTResource.cpp
HTML/PopoverTargetAttributes.cpp
HTML/PopStateEvent.cpp
HTML/PotentialCORSRequest.cpp
HTML/PreloadEntry.cpp
HTML/PromiseRejectionEvent.cpp
HTML/RadioNodeList.cpp
HTML/SandboxingFlagSet.cpp
HTML/Scripting/Agent.cpp
HTML/Scripting/ClassicScript.cpp
HTML/Scripting/Environments.cpp
HTML/Scripting/EnvironmentSettingsSnapshot.cpp
HTML/Scripting/ExceptionReporter.cpp
HTML/Scripting/Fetching.cpp
HTML/Scripting/ImportMap.cpp
HTML/Scripting/ImportMapParseResult.cpp
HTML/Scripting/ModuleMap.cpp
HTML/Scripting/ModuleScript.cpp
HTML/Scripting/Script.cpp
HTML/Scripting/SerializedEnvironmentSettingsObject.cpp
HTML/Scripting/SimilarOriginWindowAgent.cpp
HTML/Scripting/TemporaryExecutionContext.cpp
HTML/Scripting/WindowEnvironmentSettingsObject.cpp
HTML/Scripting/WorkerAgent.cpp
HTML/Scripting/WorkerEnvironmentSettingsObject.cpp
HTML/SelectedFile.cpp
HTML/SelectItem.cpp
HTML/SerializedPolicyContainer.cpp
HTML/SessionHistoryEntry.cpp
HTML/SessionHistoryTraversalQueue.cpp
HTML/SharedResourceRequest.cpp
HTML/AnimatedBitmapDecodedImageData.cpp
HTML/AnimatedDecodedImageData.cpp
HTML/SharedWorker.cpp
HTML/SharedWorkerGlobalScope.cpp
HTML/SourceSet.cpp
HTML/SourceSnapshotParams.cpp
HTML/Storage.cpp
HTML/StorageEvent.cpp
HTML/StructuredSerialize.cpp
HTML/SubmitEvent.cpp
HTML/SupportedImageTypes.cpp
HTML/SyntaxHighlighter/SyntaxHighlighter.cpp
HTML/TagNames.cpp
HTML/TextMetrics.cpp
HTML/TextTrack.cpp
HTML/TextTrackCue.cpp
HTML/TextTrackCueList.cpp
HTML/TextTrackList.cpp
HTML/TextTrackObserver.cpp
HTML/Timer.cpp
HTML/TimeRanges.cpp
HTML/ToggleEvent.cpp
HTML/TokenizedFeatures.cpp
HTML/TrackEvent.cpp
HTML/TraversableNavigable.cpp
HTML/UniversalGlobalScope.cpp
HTML/UserActivation.cpp
HTML/UserNavigationInvolvement.cpp
HTML/ValidityState.cpp
HTML/VideoTrack.cpp
HTML/VideoTrackList.cpp
HTML/WebViewHints.cpp
HTML/Window.cpp
HTML/WindowEventHandlers.cpp
HTML/WindowOrWorkerGlobalScope.cpp
HTML/WindowProxy.cpp
HTML/Worker.cpp
HTML/WorkerAgentParent.cpp
HTML/WorkerDebugConsoleClient.cpp
HTML/WorkerGlobalScope.cpp
HTML/WorkerLocation.cpp
HTML/WorkerAgentTypes.cpp
HTML/WorkerNavigator.cpp
HTML/WorkletGlobalScope.cpp
HTML/XMLSerializer.cpp
IndexedDB/IDBCursor.cpp
IndexedDB/IDBDatabase.cpp
IndexedDB/IDBFactory.cpp
IndexedDB/IDBIndex.cpp
IndexedDB/IDBKeyRange.cpp
IndexedDB/IDBObjectStore.cpp
IndexedDB/IDBOpenDBRequest.cpp
IndexedDB/IDBRecord.cpp
IndexedDB/IDBRequest.cpp
IndexedDB/IDBTransaction.cpp
IndexedDB/IDBVersionChangeEvent.cpp
IndexedDB/Internal/Algorithms.cpp
IndexedDB/Internal/Database.cpp
IndexedDB/Internal/Index.cpp
IndexedDB/Internal/Key.cpp
IndexedDB/Internal/MutationLog.cpp
IndexedDB/Internal/ObjectStore.cpp
IndexedDB/Internal/RequestList.cpp
Infra/ByteSequences.cpp
Infra/JSON.cpp
Infra/Strings.cpp
Internals/FakeXRDevice.cpp
Internals/InternalAnimationTimeline.cpp
Internals/InternalGamepad.cpp
Internals/Internals.cpp
Internals/InternalsBase.cpp
Internals/WebUI.cpp
Internals/XRTest.cpp
IntersectionObserver/IntersectionObserver.cpp
IntersectionObserver/IntersectionObserverEntry.cpp
Layout/AudioBox.cpp
Layout/AvailableSpace.cpp
Layout/BlockContainer.cpp
Layout/BlockFormattingContext.cpp
Layout/Box.cpp
Layout/BreakNode.cpp
Layout/CanvasBox.cpp
Layout/CheckBox.cpp
Layout/FieldSetBox.cpp
Layout/FlexFormattingContext.cpp
Layout/FormattingContext.cpp
Layout/GridFormattingContext.cpp
Layout/ImageBox.cpp
Layout/ImageProvider.cpp
Layout/InlineFormattingContext.cpp
Layout/InlineLevelIterator.cpp
Layout/InlineNode.cpp
Layout/LayoutState.cpp
Layout/LegendBox.cpp
Layout/LineBox.cpp
Layout/LineBoxFragment.cpp
Layout/LineBuilder.cpp
Layout/ListItemBox.cpp
Layout/ListItemMarkerBox.cpp
Layout/NavigableContainerViewport.cpp
Layout/Node.cpp
Layout/RadioButton.cpp
Layout/RangeInputBox.cpp
Layout/ReplacedBox.cpp
Layout/ReplacedWithChildrenFormattingContext.cpp
Layout/SVGBox.cpp
Layout/SVGClipBox.cpp
Layout/SVGForeignObjectBox.cpp
Layout/SVGFormattingContext.cpp
Layout/SVGGeometryBox.cpp
Layout/SVGGraphicsBox.cpp
Layout/SVGImageBox.cpp
Layout/SVGMaskBox.cpp
Layout/SVGPatternBox.cpp
Layout/SVGSVGBox.cpp
Layout/SVGTextBox.cpp
Layout/SVGTextPathBox.cpp
Layout/TableFormattingContext.cpp
Layout/TableGrid.cpp
Layout/TableWrapper.cpp
Layout/TextAreaBox.cpp
Layout/TextInputBox.cpp
Layout/TextNode.cpp
Layout/TextOffsetMapping.cpp
Layout/TreeBuilder.cpp
Layout/VideoBox.cpp
Layout/Viewport.cpp
Loader/ContentBlocker.cpp
Loader/FileRequest.cpp
Loader/GeneratedPagesLoader.cpp
Loader/ProxyMappings.cpp
Loader/ResourceLoader.cpp
MathML/AttributeNames.cpp
MathML/MathMLElement.cpp
MathML/MathMLMiElement.cpp
MathML/MathMLMspaceElement.cpp
MathML/TagNames.cpp
MediaCapabilitiesAPI/MediaCapabilities.cpp
MediaCapture/MediaDeviceInfo.cpp
MediaCapture/MediaDevices.cpp
MediaCapture/MediaStream.cpp
MediaCapture/MediaStreamTrack.cpp
MediaCapture/MediaStreamTrackEvent.cpp
MediaSourceExtensions/BufferedChangeEvent.cpp
MediaSourceExtensions/EventNames.cpp
MediaSourceExtensions/ManagedMediaSource.cpp
MediaSourceExtensions/ManagedSourceBuffer.cpp
MediaSourceExtensions/MediaSource.cpp
MediaSourceExtensions/MediaSourceHandle.cpp
MediaSourceExtensions/SourceBuffer.cpp
MediaSourceExtensions/SourceBufferList.cpp
MediaSourceExtensions/SourceBufferProcessor.cpp
MediaSourceExtensions/WebMByteStreamParser.cpp
MediaSourceExtensions/TrackBuffer.cpp
MediaSourceExtensions/TrackBufferDemuxer.cpp
MimeSniff/MimeType.cpp
MimeSniff/Resource.cpp
MixedContent/AbstractOperations.cpp
Namespace.cpp
NavigationTiming/EntryNames.cpp
NavigationTiming/PerformanceNavigation.cpp
NavigationTiming/PerformanceTiming.cpp
NotificationsAPI/Notification.cpp
Page/AutoScrollHandler.cpp
Page/DragAndDropEventHandler.cpp
Page/ElementResizeAction.cpp
Page/EventHandler.cpp
Page/InputEvent.cpp
Page/MiddleButtonScrollHandler.cpp
Page/Page.cpp
Painting/AccumulatedVisualContext.cpp
Painting/BackgroundPainting.cpp
Painting/Blending.cpp
Painting/BorderPainting.cpp
Painting/BorderRadiiData.cpp
Painting/BorderRadiusCornerClipper.cpp
Painting/BordersData.cpp
Painting/BoxModelMetrics.cpp
Painting/CanvasPaintable.cpp
Painting/CheckBoxPaintable.cpp
Painting/DisplayList.cpp
Painting/DisplayListCommand.cpp
Painting/DisplayListPlayerSkia.cpp
Painting/DisplayListRecorder.cpp
Painting/DisplayListRecordingContext.cpp
Painting/DisplayListResourceTransaction.cpp
Painting/DisplayListResourceStorage.cpp
Painting/FieldSetPaintable.cpp
Painting/GradientPainting.cpp
Painting/HitTestDisplayList.cpp
Painting/ImagePaintable.cpp
Painting/MarkerPaintable.cpp
Painting/NavigableContainerViewportPaintable.cpp
Painting/Paintable.cpp
Painting/PaintableBox.cpp
Painting/PaintStyle.cpp
Painting/PaintableFragment.cpp
Painting/PaintableWithLines.cpp
Painting/RadioButtonPaintable.cpp
Painting/ReplacedElementCommon.cpp
Painting/ResolvedCSSFilter.cpp
Painting/ResizeHandle.cpp
Painting/Scrollbar.cpp
Painting/ScrollFrame.cpp
Painting/ScrollState.cpp
Painting/ShadowPainting.cpp
Painting/StackingContext.cpp
Painting/SVGClipPaintable.cpp
Painting/SVGForeignObjectPaintable.cpp
Painting/SVGGraphicsPaintable.cpp
Painting/SVGMaskable.cpp
Painting/SVGMaskPaintable.cpp
Painting/SVGPaintable.cpp
Painting/SVGPatternPaintable.cpp
Painting/SVGPathPaintable.cpp
Painting/SVGSVGPaintable.cpp
Painting/TableBordersPainting.cpp
Painting/TextPaintable.cpp
Painting/VideoPaintable.cpp
Painting/ViewportPaintable.cpp
PerformanceTimeline/EntryTypes.cpp
PerformanceTimeline/EventNames.cpp
PerformanceTimeline/PerformanceEntry.cpp
PerformanceTimeline/PerformanceObserver.cpp
PerformanceTimeline/PerformanceObserverEntryList.cpp
PermissionsPolicy/AutoplayAllowlist.cpp
PermissionsAPI/Permissions.cpp
PermissionsAPI/PermissionStore.cpp
PermissionsAPI/PermissionStatus.cpp
PixelUnits.cpp
Platform/EventLoopPlugin.cpp
Platform/FontPlugin.cpp
Platform/ImageCodecPlugin.cpp
Platform/Timer.cpp
ReferrerPolicy/AbstractOperations.cpp
ReferrerPolicy/ReferrerPolicy.cpp
RequestIdleCallback/IdleDeadline.cpp
ResizeObserver/ResizeObservation.cpp
ResizeObserver/ResizeObserver.cpp
ResizeObserver/ResizeObserverEntry.cpp
ResizeObserver/ResizeObserverSize.cpp
ResourceTiming/PerformanceResourceTiming.cpp
SecureContexts/AbstractOperations.cpp
Selection/Selection.cpp
ServiceWorker/Cache.cpp
ServiceWorker/CacheStorage.cpp
ServiceWorker/EventNames.cpp
ServiceWorker/Job.cpp
ServiceWorker/NameToCacheMap.cpp
ServiceWorker/Registration.cpp
ServiceWorker/ServiceWorker.cpp
ServiceWorker/ServiceWorkerContainer.cpp
ServiceWorker/ServiceWorkerGlobalScope.cpp
ServiceWorker/ServiceWorkerRecord.cpp
ServiceWorker/ServiceWorkerRegistration.cpp
Speech/SpeechGrammar.cpp
Speech/SpeechGrammarList.cpp
Speech/SpeechRecognition.cpp
Speech/SpeechRecognitionAlternative.cpp
Speech/SpeechRecognitionEvent.cpp
Speech/SpeechRecognitionPhrase.cpp
Speech/SpeechRecognitionResult.cpp
Speech/SpeechRecognitionResultList.cpp
Speech/SpeechSynthesis.cpp
Speech/SpeechSynthesisUtterance.cpp
Speech/SpeechSynthesisVoice.cpp
SRI/SRI.cpp
StorageAPI/NavigatorStorage.cpp
StorageAPI/StorageBottle.cpp
StorageAPI/StorageEndpoint.cpp
StorageAPI/StorageKey.cpp
StorageAPI/StorageManager.cpp
StorageAPI/StorageShed.cpp
StorageAPI/StorageShelf.cpp
Streams/AbstractOperations.cpp
Streams/ByteLengthQueuingStrategy.cpp
Streams/CountQueuingStrategy.cpp
Streams/GenericTransformStream.cpp
Streams/ReadableByteStreamController.cpp
Streams/ReadableStream.cpp
Streams/ReadableStreamAsyncIterator.cpp
Streams/ReadableStreamBYOBReader.cpp
Streams/ReadableStreamBYOBRequest.cpp
Streams/ReadableStreamDefaultController.cpp
Streams/ReadableStreamDefaultReader.cpp
Streams/ReadableStreamGenericReader.cpp
Streams/ReadableStreamOperations.cpp
Streams/ReadableStreamPipeTo.cpp
Streams/ReadableStreamTee.cpp
Streams/TransformStream.cpp
Streams/TransformStreamDefaultController.cpp
Streams/TransformStreamOperations.cpp
Streams/WritableStream.cpp
Streams/WritableStreamDefaultController.cpp
Streams/WritableStreamDefaultWriter.cpp
Streams/WritableStreamOperations.cpp
SVG/AttributeNames.cpp
SVG/AttributeParser.cpp
SVG/Path.cpp
SVG/SVGAElement.cpp
SVG/SVGAnimatedEnumeration.cpp
SVG/SVGAnimatedInteger.cpp
SVG/SVGAnimatedLength.cpp
SVG/SVGAnimatedLengthList.cpp
SVG/SVGAnimatedNumber.cpp
SVG/SVGAnimatedNumberList.cpp
SVG/SVGAnimatedRect.cpp
SVG/SVGAnimatedString.cpp
SVG/SVGAnimatedTransformList.cpp
SVG/SVGAnimationElement.cpp
SVG/SVGCircleElement.cpp
SVG/SVGClipPathElement.cpp
SVG/SVGComponentTransferFunctionElement.cpp
SVG/SVGDecodedImageData.cpp
SVG/SVGDefsElement.cpp
SVG/SVGDescElement.cpp
SVG/SVGElement.cpp
SVG/SVGEllipseElement.cpp
SVG/SVGFEBlendElement.cpp
SVG/SVGFEColorMatrixElement.cpp
SVG/SVGFEComponentTransferElement.cpp
SVG/SVGFECompositeElement.cpp
SVG/SVGFEDisplacementMapElement.cpp
SVG/SVGFEDropShadowElement.cpp
SVG/SVGFEFloodElement.cpp
SVG/SVGFEFuncAElement.cpp
SVG/SVGFEFuncBElement.cpp
SVG/SVGFEFuncGElement.cpp
SVG/SVGFEFuncRElement.cpp
SVG/SVGFEGaussianBlurElement.cpp
SVG/SVGFEImageElement.cpp
SVG/SVGFEMergeElement.cpp
SVG/SVGFEMergeNodeElement.cpp
SVG/SVGFEMorphologyElement.cpp
SVG/SVGFEOffsetElement.cpp
SVG/SVGFETurbulenceElement.cpp
SVG/SVGFilterElement.cpp
SVG/SVGFilterPrimitiveStandardAttributes.cpp
SVG/SVGFitToViewBox.cpp
SVG/SVGForeignObjectElement.cpp
SVG/SVGGElement.cpp
SVG/SVGGeometryElement.cpp
SVG/SVGGradientElement.cpp
SVG/SVGGraphicsElement.cpp
SVG/SVGImageElement.cpp
SVG/SVGLength.cpp
SVG/SVGLengthList.cpp
SVG/SVGLinearGradientElement.cpp
SVG/SVGLineElement.cpp
SVG/SVGList.cpp
SVG/SVGMaskElement.cpp
SVG/SVGMetadataElement.cpp
SVG/SVGNumber.cpp
SVG/SVGNumberList.cpp
SVG/SVGPathElement.cpp
SVG/SVGPatternElement.cpp
SVG/SVGPolygonElement.cpp
SVG/SVGPolylineElement.cpp
SVG/SVGRadialGradientElement.cpp
SVG/SVGRectElement.cpp
SVG/SVGScriptElement.cpp
SVG/SVGStopElement.cpp
SVG/SVGStyleElement.cpp
SVG/SVGSVGElement.cpp
SVG/SVGSymbolElement.cpp
SVG/SVGTextContentElement.cpp
SVG/SVGTextElement.cpp
SVG/SVGTextPathElement.cpp
SVG/SVGTextPositioningElement.cpp
SVG/SVGTitleElement.cpp
SVG/SVGTransform.cpp
SVG/SVGTransformList.cpp
SVG/SVGTSpanElement.cpp
SVG/SVGUseElement.cpp
SVG/SVGViewElement.cpp
SVG/TagNames.cpp
TrustedTypes/InjectionSink.cpp
TrustedTypes/RequireTrustedTypesForDirective.cpp
TrustedTypes/TrustedHTML.cpp
TrustedTypes/TrustedScript.cpp
TrustedTypes/TrustedScriptURL.cpp
TrustedTypes/TrustedTypePolicy.cpp
TrustedTypes/TrustedTypePolicyFactory.cpp
UIEvents/CompositionEvent.cpp
UIEvents/EventNames.cpp
UIEvents/FocusEvent.cpp
UIEvents/InputEvent.cpp
UIEvents/InputTypes.cpp
UIEvents/KeyboardEvent.cpp
UIEvents/MouseEvent.cpp
UIEvents/PointerEvent.cpp
UIEvents/PointerTypes.cpp
UIEvents/TextEvent.cpp
UIEvents/UIEvent.cpp
UIEvents/WheelEvent.cpp
URLPattern/URLPattern.cpp
UserTiming/PerformanceMark.cpp
UserTiming/PerformanceMeasure.cpp
ViewTransition/ViewTransition.cpp
WebAssembly/Global.cpp
WebAssembly/Instance.cpp
WebAssembly/Memory.cpp
WebAssembly/Module.cpp
WebAssembly/Table.cpp
WebAssembly/WebAssembly.cpp
WebAssembly/WebAssemblyModule.cpp
WebAudio/AnalyserNode.cpp
WebAudio/AudioBuffer.cpp
WebAudio/AudioBufferSourceNode.cpp
WebAudio/AudioContext.cpp
WebAudio/AudioDestinationNode.cpp
WebAudio/AudioListener.cpp
WebAudio/AudioNode.cpp
WebAudio/AudioParam.cpp
WebAudio/AudioScheduledSourceNode.cpp
WebAudio/BaseAudioContext.cpp
WebAudio/BiquadFilterNode.cpp
WebAudio/ChannelMergerNode.cpp
WebAudio/ChannelSplitterNode.cpp
WebAudio/ConstantSourceNode.cpp
WebAudio/ControlMessageQueue.cpp
WebAudio/DelayNode.cpp
WebAudio/DynamicsCompressorNode.cpp
WebAudio/GainNode.cpp
WebAudio/MediaElementAudioSourceNode.cpp
WebAudio/OfflineAudioCompletionEvent.cpp
WebAudio/OfflineAudioContext.cpp
WebAudio/OscillatorNode.cpp
WebAudio/PannerNode.cpp
WebAudio/PeriodicWave.cpp
WebAudio/ScriptProcessorNode.cpp
WebAudio/StereoPannerNode.cpp
WebDriver/Actions.cpp
WebDriver/Capabilities.cpp
WebDriver/Client.cpp
WebDriver/Contexts.cpp
WebDriver/ElementLocationStrategies.cpp
WebDriver/ElementReference.cpp
WebDriver/Error.cpp
WebDriver/ExecuteScript.cpp
WebDriver/InputSource.cpp
WebDriver/InputState.cpp
WebDriver/JSON.cpp
WebDriver/Proxy.cpp
WebDriver/Response.cpp
WebDriver/Screenshot.cpp
WebDriver/TimeoutsConfiguration.cpp
WebDriver/UserPrompt.cpp
WebGL/EventNames.cpp
WebGL/Extensions/ANGLEInstancedArrays.cpp
WebGL/Extensions/EXTBlendMinMax.cpp
WebGL/Extensions/EXTColorBufferFloat.cpp
WebGL/Extensions/EXTRenderSnorm.cpp
WebGL/Extensions/EXTTextureFilterAnisotropic.cpp
WebGL/Extensions/EXTTextureNorm16.cpp
WebGL/Extensions/OESElementIndexUint.cpp
WebGL/Extensions/OESStandardDerivatives.cpp
WebGL/Extensions/OESVertexArrayObject.cpp
WebGL/Extensions/WebGLCompressedTextureS3tc.cpp
WebGL/Extensions/WebGLCompressedTextureS3tcSrgb.cpp
WebGL/Extensions/WebGLDebugRendererInfo.cpp
WebGL/Extensions/WebGLDrawBuffers.cpp
WebGL/Extensions/WebGLVertexArrayObjectOES.cpp
WebGL/TextureUpload.cpp
WebGL/WebGL2RenderingContext.cpp
WebGL/WebGL2RenderingContextImpl.cpp
WebGL/WebGL2RenderingContextOverloads.cpp
WebGL/WebGLActiveInfo.cpp
WebGL/WebGLBuffer.cpp
WebGL/WebGLCommandList.cpp
WebGL/WebGLContextAttributes.cpp
WebGL/WebGLContextProxyBase.cpp
WebGL/WebGLContextEvent.cpp
WebGL/WebGLFramebuffer.cpp
WebGL/WebGLObject.cpp
WebGL/WebGLProgram.cpp
WebGL/WebGLQuery.cpp
WebGL/WebGLRenderbuffer.cpp
WebGL/WebGLRenderingContext.cpp
WebGL/WebGLRenderingContextBase.cpp
WebGL/WebGLRenderingContextImpl.cpp
WebGL/WebGLRenderingContextOverloads.cpp
WebGL/WebGLSampler.cpp
WebGL/WebGLShader.cpp
WebGL/WebGLShaderPrecisionFormat.cpp
WebGL/WebGLSync.cpp
WebGL/WebGLTexture.cpp
WebGL/WebGLTransformFeedback.cpp
WebGL/WebGLUniformLocation.cpp
WebGL/WebGLVertexArrayObject.cpp
WebIDL/AbstractOperations.cpp
WebIDL/AsyncIterator.cpp
WebIDL/Buffers.cpp
WebIDL/CallbackType.cpp
WebIDL/DOMException.cpp
WebIDL/ObservableArray.cpp
WebIDL/OverloadResolution.cpp
WebIDL/OverloadTypes.cpp
WebIDL/Promise.cpp
WebIDL/QuotaExceededError.cpp
WebIDL/Tracing.cpp
WebSockets/WebSocket.cpp
WebVTT/VTTCue.cpp
WebVTT/VTTRegion.cpp
WebXR/XRLayer.cpp
WebXR/XRRenderState.cpp
WebXR/XRSession.cpp
WebXR/XRSessionEvent.cpp
WebXR/XRSystem.cpp
WebXR/XRWebGLLayer.cpp
XHR/EventNames.cpp
XHR/FormData.cpp
XHR/FormDataIterator.cpp
XHR/ProgressEvent.cpp
XHR/XMLHttpRequest.cpp
XHR/XMLHttpRequestEventTarget.cpp
XHR/XMLHttpRequestUpload.cpp
XLink/AttributeNames.cpp
XML/XMLDocumentBuilder.cpp
XML/XMLFragmentParser.cpp
XPath/XPath.cpp
XPath/XPathEvaluator.cpp
XPath/XPathExpression.cpp
XPath/XPathNSResolver.cpp
XPath/XPathResult.cpp
)
compile_ipc(Worker/WebWorkerClient.ipc Worker/WebWorkerClientEndpoint.h)
compile_ipc(Worker/WebWorkerServer.ipc Worker/WebWorkerServerEndpoint.h)
invoke_py_generator(
"AriaRoles.cpp"
generate_libweb_aria_roles.py
"${CMAKE_CURRENT_SOURCE_DIR}/ARIA/AriaRoles.json"
"ARIA/AriaRoles.h"
"ARIA/AriaRoles.cpp"
arguments -j "${CMAKE_CURRENT_SOURCE_DIR}/ARIA/AriaRoles.json"
)
generate_css_implementation()
generate_html_implementation()
generate_webgl_implementation()
set(GENERATED_SOURCES
ARIA/AriaRoles.cpp
CSS/DefaultStyleSheetSource.cpp
CSS/DescriptorID.cpp
CSS/Enums.cpp
CSS/EnvironmentVariable.cpp
CSS/GeneratedCSSNumericFactoryMethods.cpp
CSS/GeneratedCSSNumericFactoryMethods.idl
CSS/GeneratedCSSStyleProperties.cpp
CSS/GeneratedCSSStyleProperties.idl
CSS/Keyword.cpp
CSS/MathFunctions.cpp
CSS/MediaFeatureID.cpp
CSS/Parser/GeneratedValueTypesParsing.cpp
CSS/PropertyID.cpp
CSS/PseudoClass.cpp
CSS/PseudoElement.cpp
CSS/QuirksModeStyleSheetSource.cpp
CSS/TransformFunctions.cpp
CSS/Units.cpp
MathML/MathMLStyleSheetSource.cpp
SVG/SVGStyleSheetSource.cpp
Worker/WebWorkerClientEndpoint.h
Worker/WebWorkerServerEndpoint.h
HTML/MediaControlsDOM.cpp
HTML/Parser/NamedCharacterReferences.cpp
WebGL/WebGLCommands.cpp
WebGL/WebGLContextProxy.cpp
)
ladybird_lib(LibWeb web EXPLICIT_SYMBOL_EXPORT)
add_dependencies(LibWeb generate_GLFunctions.cpp)
target_link_libraries(LibWeb PRIVATE LibCore LibCompress LibCrypto LibJS LibHTTP LibGfx LibIPC LibRegex LibSyntax LibTextCodec LibUnicode LibMedia LibWasm LibXML LibURL LibTLS LibRequests LibGC LibSync LibThreading skia SDL3::SDL3 LibXml2::LibXml2)
# LibWeb still includes ANGLE's GLES headers for WebGL constants and types, but
# the actual GL entry points live in the Compositor. Copy only ANGLE's compile
# interface here so LibWeb can include those headers without linking ANGLE into
# WebContent.
foreach(angle_target IN LISTS ANGLE_TARGETS)
target_include_directories(LibWeb PRIVATE $<TARGET_PROPERTY:${angle_target},INTERFACE_INCLUDE_DIRECTORIES>)
target_include_directories(LibWeb SYSTEM PRIVATE $<TARGET_PROPERTY:${angle_target},INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>)
target_compile_definitions(LibWeb PRIVATE $<TARGET_PROPERTY:${angle_target},INTERFACE_COMPILE_DEFINITIONS>)
target_compile_options(LibWeb PRIVATE $<TARGET_PROPERTY:${angle_target},INTERFACE_COMPILE_OPTIONS>)
endforeach()
import_rust_crate(MANIFEST_PATH Rust/Cargo.toml CRATE_NAME libweb_rust FFI_HEADER RustFFI.h)
set(content_blocker_rust_features "")
if (NOT BUILD_SHARED_LIBS)
set(content_blocker_rust_features FEATURES allocator)
endif()
import_rust_crate(MANIFEST_PATH ContentBlocker/Rust/Cargo.toml CRATE_NAME libweb_content_blocker_rust ${content_blocker_rust_features} FFI_HEADER ContentBlockerRustFFI.h)
target_link_libraries(LibWeb PRIVATE libweb_rust libweb_content_blocker_rust)
get_target_property(_libweb_rust_lib libweb_rust IMPORTED_LOCATION)
get_target_property(_libweb_content_blocker_rust_lib libweb_content_blocker_rust IMPORTED_LOCATION)
set_property(SOURCE HTML/Parser/HTMLTokenizer.cpp APPEND PROPERTY OBJECT_DEPENDS ${_libweb_rust_lib})
set_property(SOURCE HTML/Parser/HTMLParser.cpp APPEND PROPERTY OBJECT_DEPENDS ${_libweb_rust_lib})
set_property(SOURCE HTML/Parser/SpeculativeHTMLParser.cpp APPEND PROPERTY OBJECT_DEPENDS ${_libweb_rust_lib})
if ((LINUX OR BSD) AND NOT BUILD_SHARED_LIBS)
target_link_options(LibWeb INTERFACE LINKER:--allow-multiple-definition)
endif()
if(NOT BUILD_SHARED_LIBS)
add_custom_command(TARGET LibWeb POST_BUILD
COMMAND ${CMAKE_AR} -x $<TARGET_FILE:libweb_rust>
COMMAND ${CMAKE_AR} -x $<TARGET_FILE:libweb_content_blocker_rust>
COMMAND ${CMAKE_AR} -qS $<TARGET_FILE:LibWeb> *.o
COMMAND ${CMAKE_RANLIB} $<TARGET_FILE:LibWeb>
COMMAND ${CMAKE_COMMAND} -E remove -f *.o
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/rust_merge_tmp
COMMENT "Merging Rust archive into LibWeb"
)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/rust_merge_tmp)
# POST_BUILD steps don't track inputs, so when a Rust archive changes
# ninja leaves liblagom-web.a alone and the merged archive ends up with
# stale Rust objects. Force the C++ FFI bridge files to depend on the
# Rust archives: when they change, LibWeb re-archives, and POST_BUILD
# re-merges the fresh Rust objects.
set_property(SOURCE CSS/Parser/RustTokenizer.cpp APPEND PROPERTY OBJECT_DEPENDS ${_libweb_rust_lib})
set_property(SOURCE HTML/Parser/HTMLEncodingDetection.cpp APPEND PROPERTY OBJECT_DEPENDS ${_libweb_rust_lib})
set_property(SOURCE Loader/ContentBlocker.cpp APPEND PROPERTY OBJECT_DEPENDS ${_libweb_content_blocker_rust_lib})
endif()
if (HAS_FONTCONFIG)
target_link_libraries(LibWeb PRIVATE Fontconfig::Fontconfig)
endif()
generate_js_bindings(LibWeb)