Fix: Add support for stylesheet MIME type quirk in quirks mode (#36338)

This PR implements the HTML spec quirk for stylesheets:
https://html.spec.whatwg.org/multipage/#link-type-stylesheet

The implementation adds a check in `stylesheet_loader.rs` to handle this
quirk condition correctly, and adds a new WPT test to verify that
same-origin non-CSS MIME type resources are properly treated as CSS in
quirks mode.

Testing: Added a new WPT test (`quirk-origin-check-positive.html`) that
verifies the positive case for this quirk.
Fixes: https://github.com/servo/servo/issues/36324

---------

Signed-off-by: saku-1101 <sakupi1101@outlook.jp>
This commit is contained in:
saku 2025-04-06 09:28:35 +09:00 committed by GitHub
parent 6031a12fd1
commit b4fd9ebb0e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 45 additions and 1 deletions

View file

@ -474568,6 +474568,14 @@
"80fbe8db6cbfc1f6e478b6c3cc8d2ae3c707c053",
[]
]
},
"stylesheet": {
"resources": {
"quirk-stylesheet.css.txt": [
"d2ae382583192b0284aa44c038811e7254a9386b",
[]
]
}
}
},
"meta": {
@ -719907,6 +719915,13 @@
}
},
"stylesheet": {
"quirk-origin-check-positive.html": [
"02ab832cbe207c9bbfb1d16cbdc9a685b474372c",
[
null,
{}
]
],
"quirk-origin-check-recursive-import.html": [
"c0053f1f29ad8f23dbebdd41b38dbdd8537e9e27",
[

View file

@ -0,0 +1,18 @@
<!-- quirks -->
<title>Same-origin stylesheet with non-CSS MIME type quirk</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/#link-type-stylesheet">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="stylesheet" href="resources/quirk-stylesheet.css.txt">
<p class="test">This text should be green.</p>
<script>
setup({ single_test: true });
onload = () => {
assert_equals(
getComputedStyle(document.querySelector('.test')).color,
'rgb(0, 128, 0)',
"Same-origin stylesheet with non-CSS MIME type should be applied in quirks mode"
);
done();
};
</script>

View file

@ -0,0 +1 @@
.test { color: green; }