From 8a43f5a64ac566e3d9d7fe958f881f8bfac76ffe Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 10 Jun 2023 19:53:36 +0200 Subject: [PATCH] LibWeb: Forward media attribute from link element to loaded style sheet Otherwise, we will treat the loaded style sheet as if it had media="all" which is not always appropriate. --- .../expected/link-element-media-attribute.txt | 1 + .../Text/input/body-background-color-red.css | 3 +++ .../input/link-element-media-attribute.html | 17 +++++++++++++++++ .../Libraries/LibWeb/HTML/HTMLLinkElement.cpp | 1 + 4 files changed, 22 insertions(+) create mode 100644 Tests/LibWeb/Text/expected/link-element-media-attribute.txt create mode 100644 Tests/LibWeb/Text/input/body-background-color-red.css create mode 100644 Tests/LibWeb/Text/input/link-element-media-attribute.html diff --git a/Tests/LibWeb/Text/expected/link-element-media-attribute.txt b/Tests/LibWeb/Text/expected/link-element-media-attribute.txt new file mode 100644 index 0000000000..9dad5d2e15 --- /dev/null +++ b/Tests/LibWeb/Text/expected/link-element-media-attribute.txt @@ -0,0 +1 @@ +document background: rgb(0, 128, 0) diff --git a/Tests/LibWeb/Text/input/body-background-color-red.css b/Tests/LibWeb/Text/input/body-background-color-red.css new file mode 100644 index 0000000000..e8f24f94a3 --- /dev/null +++ b/Tests/LibWeb/Text/input/body-background-color-red.css @@ -0,0 +1,3 @@ +body { + background-color: red; +} diff --git a/Tests/LibWeb/Text/input/link-element-media-attribute.html b/Tests/LibWeb/Text/input/link-element-media-attribute.html new file mode 100644 index 0000000000..a905760f26 --- /dev/null +++ b/Tests/LibWeb/Text/input/link-element-media-attribute.html @@ -0,0 +1,17 @@ + + + diff --git a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp index df314cb0dd..e9b3a241cd 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp @@ -364,6 +364,7 @@ void HTMLLinkElement::process_stylesheet_resource(bool success, Fetch::Infrastru if (m_loaded_style_sheet) { m_loaded_style_sheet->set_owner_node(this); + m_loaded_style_sheet->set_media(attribute(HTML::AttributeNames::media)); document().style_sheets().add_sheet(*m_loaded_style_sheet); } else { dbgln_if(CSS_LOADER_DEBUG, "HTMLLinkElement: Failed to parse stylesheet: {}", resource()->url());