diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/css/style_engine.h')
-rw-r--r-- | chromium/third_party/blink/renderer/core/css/style_engine.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/core/css/style_engine.h b/chromium/third_party/blink/renderer/core/css/style_engine.h index d69d367f5f5..ef07ad95662 100644 --- a/chromium/third_party/blink/renderer/core/css/style_engine.h +++ b/chromium/third_party/blink/renderer/core/css/style_engine.h @@ -177,6 +177,20 @@ class CORE_EXPORT StyleEngine final : public GarbageCollected<StyleEngine>, base::AutoReset<bool> allow_marking_; }; + // Set up the condition for allowing to skip style recalc before starting + // RecalcStyle(). + class SkipStyleRecalcScope { + STACK_ALLOCATED(); + + public: + explicit SkipStyleRecalcScope(StyleEngine& engine) + : allow_skip_(&engine.allow_skip_style_recalc_, + engine.AllowSkipStyleRecalcForScope()) {} + + private: + base::AutoReset<bool> allow_skip_; + }; + explicit StyleEngine(Document&); ~StyleEngine() override; @@ -341,6 +355,10 @@ class CORE_EXPORT StyleEngine final : public GarbageCollected<StyleEngine>, bool MarkReattachAllowed() const; + // Returns true if we can skip style recalc for a size container subtree and + // resume it during layout. + bool SkipStyleRecalcAllowed() const { return allow_skip_style_recalc_; } + CSSFontSelector* GetFontSelector() { return font_selector_; } void RemoveFontFaceRules(const HeapVector<Member<const StyleRuleFontFace>>&); @@ -747,6 +765,9 @@ class CORE_EXPORT StyleEngine final : public GarbageCollected<StyleEngine>, Element& changed_element, bool for_pseudo_change); + // Initialization value for SkipStyleRecalcScope. + bool AllowSkipStyleRecalcForScope() const; + Member<Document> document_; // Tracks the number of currently loading top-level stylesheets. Sheets loaded @@ -816,6 +837,9 @@ class CORE_EXPORT StyleEngine final : public GarbageCollected<StyleEngine>, // AllowMarkStyleDirtyFromRecalcScope. bool allow_mark_for_reattach_from_rebuild_layout_tree_{false}; + // Set to true if we are allowed to skip recalc for a size container subtree. + bool allow_skip_style_recalc_{false}; + // Set to true if we have detected an element which is a size query container // rendered in legacy layout. bool legacy_layout_query_container_{false}; |