From 14d4f227f28a306daf58e7d9addf26d106e27e4c Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 29 Oct 2022 14:45:17 +0200 Subject: [PATCH] LibWeb: Don't invalidate style when adding/removing empty style sheet For whatever reason, web pages sometimes add and/or remove a completely empty style sheet. When this happens, we don't need to invalidate the document's style, since the outcome will be the same as before. --- Userland/Libraries/LibWeb/CSS/StyleSheetList.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Userland/Libraries/LibWeb/CSS/StyleSheetList.cpp b/Userland/Libraries/LibWeb/CSS/StyleSheetList.cpp index b7c3fc791a..0a59d5552a 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleSheetList.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleSheetList.cpp @@ -19,6 +19,11 @@ void StyleSheetList::add_sheet(CSSStyleSheet& sheet) sort_sheets(); + if (sheet.rules().length() == 0) { + // NOTE: If the added sheet has no rules, we don't have to invalidate anything. + return; + } + m_document.style_computer().invalidate_rule_cache(); m_document.style_computer().load_fonts_from_sheet(sheet); m_document.invalidate_style(); @@ -29,6 +34,11 @@ void StyleSheetList::remove_sheet(CSSStyleSheet& sheet) sheet.set_style_sheet_list({}, nullptr); m_sheets.remove_first_matching([&](auto& entry) { return entry.ptr() == &sheet; }); + if (sheet.rules().length() == 0) { + // NOTE: If the removed sheet had no rules, we don't have to invalidate anything. + return; + } + sort_sheets(); m_document.style_computer().invalidate_rule_cache();