mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-27 18:17:22 +02:00
Constructed stylesheets updated their rule lists, but adopted documents and shadow roots were not restyled when replace(), replaceSync(), or disabled-state changes modified the sheet. That left several CSSOM tests passing stale computed styles. Invalidate stylesheet owners after those updates so adopted sheets recompute promptly. Also set replace()-produced rules' parent stylesheet so non-import rules keep their stylesheet context. The imported baseURL test assumes a tuple origin, so move it to the HTTP fixture now that replaceSync() actually triggers a restyle.
67 lines
2.7 KiB
C++
67 lines
2.7 KiB
C++
/*
|
|
* Copyright (c) 2018-2025, Andreas Kling <andreas@ladybird.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
namespace Web::DOM {
|
|
|
|
#define ENUMERATE_STYLE_INVALIDATION_REASONS(X) \
|
|
X(AdoptedStyleSheetsList) \
|
|
X(BaseURLChanged) \
|
|
X(CSSFontLoaded) \
|
|
X(CSSImportRule) \
|
|
X(CSSStylePropertiesRemoveProperty) \
|
|
X(CSSStylePropertiesSetProperty) \
|
|
X(CSSStylePropertiesSetPropertyStyleValue) \
|
|
X(CSSStylePropertiesTextChange) \
|
|
X(CustomElementStateChange) \
|
|
X(CustomStateSetChange) \
|
|
X(EditingInsertion) \
|
|
X(EditingDeletion) \
|
|
X(ElementAttributeChange) \
|
|
X(ElementSetShadowRoot) \
|
|
X(ElementSetActive) \
|
|
X(Fullscreen) \
|
|
X(HTMLDialogElementSetIsModal) \
|
|
X(HTMLDetailsOrDialogOpenAttributeChange) \
|
|
X(HTMLHyperlinkElementHrefChange) \
|
|
X(HTMLIFrameElementGeometryChange) \
|
|
X(HTMLInputElementSetChecked) \
|
|
X(HTMLInputElementSetIsOpen) \
|
|
X(HTMLInputElementSetType) \
|
|
X(HTMLObjectElementUpdateLayoutAndChildObjects) \
|
|
X(HTMLOptionElementSelectedChange) \
|
|
X(HTMLSelectElementSetIsOpen) \
|
|
X(MediaListSetMediaText) \
|
|
X(MediaListAppendMedium) \
|
|
X(MediaListDeleteMedium) \
|
|
X(MediaQueryChangedMatchState) \
|
|
X(NavigableSetViewportSize) \
|
|
X(NodeInsertBefore) \
|
|
X(NodeRemove) \
|
|
X(NodeSetTextContent) \
|
|
X(Other) \
|
|
X(SetSelectorText) \
|
|
X(SettingsChange) \
|
|
X(StyleSheetDisabledStateChange) \
|
|
X(StyleSheetDeleteRule) \
|
|
X(StyleSheetInsertRule) \
|
|
X(StyleSheetListAddSheet) \
|
|
X(StyleSheetListRemoveSheet) \
|
|
X(StyleSheetReplace)
|
|
|
|
enum class StyleInvalidationReason {
|
|
#define __ENUMERATE_STYLE_INVALIDATION_REASON(reason) reason,
|
|
ENUMERATE_STYLE_INVALIDATION_REASONS(__ENUMERATE_STYLE_INVALIDATION_REASON)
|
|
#undef __ENUMERATE_STYLE_INVALIDATION_REASON
|
|
};
|
|
|
|
struct StyleInvalidationOptions {
|
|
bool invalidate_self { false };
|
|
};
|
|
|
|
}
|