Ver código fonte

LibWeb: Use SVGPresentationAttribute mode for SVG attributes

This replaces the previous TemporarilyEnableQuirksMode hack, which has
now been removed. :^)
Sam Atkins 1 ano atrás
pai
commit
28dbe8eb10

+ 0 - 21
Userland/Libraries/LibWeb/SVG/SVGElement.h

@@ -11,27 +11,6 @@
 
 namespace Web::SVG {
 
-namespace FIXME {
-class TemporarilyEnableQuirksMode {
-public:
-    TemporarilyEnableQuirksMode(DOM::Document const& document)
-        : m_document(const_cast<DOM::Document&>(document))
-        , m_previous_quirks_mode(document.mode())
-    {
-        m_document.set_quirks_mode(DOM::QuirksMode::Yes);
-    }
-
-    ~TemporarilyEnableQuirksMode()
-    {
-        m_document.set_quirks_mode(m_previous_quirks_mode);
-    }
-
-private:
-    DOM::Document& m_document;
-    DOM::QuirksMode m_previous_quirks_mode {};
-};
-}
-
 class SVGElement : public DOM::Element {
     WEB_PLATFORM_OBJECT(SVGElement, DOM::Element);
 

+ 1 - 4
Userland/Libraries/LibWeb/SVG/SVGGraphicsElement.cpp

@@ -118,10 +118,7 @@ Gfx::AffineTransform SVGGraphicsElement::get_transform() const
 
 void SVGGraphicsElement::apply_presentational_hints(CSS::StyleProperties& style) const
 {
-    // FIXME: Hack to ensure unitless SVG properties (such as font-size) are parsed.
-    FIXME::TemporarilyEnableQuirksMode enable_quirks(document());
-
-    CSS::Parser::ParsingContext parsing_context { document() };
+    CSS::Parser::ParsingContext parsing_context { document(), CSS::Parser::ParsingContext::Mode::SVGPresentationAttribute };
     for_each_attribute([&](auto& name, auto& value) {
         if (name.equals_ignoring_ascii_case("fill"sv)) {
             // FIXME: The `fill` attribute and CSS `fill` property are not the same! But our support is limited enough that they are equivalent for now.

+ 1 - 4
Userland/Libraries/LibWeb/SVG/SVGSVGElement.cpp

@@ -38,11 +38,8 @@ void SVGSVGElement::apply_presentational_hints(CSS::StyleProperties& style) cons
 {
     Base::apply_presentational_hints(style);
 
-    // NOTE: Hack to ensure SVG unitless widths/heights are parsed even with <!DOCTYPE html>
-    FIXME::TemporarilyEnableQuirksMode enable_quirks(document());
-
     auto width_attribute = deprecated_attribute(SVG::AttributeNames::width);
-    auto parsing_context = CSS::Parser::ParsingContext { document() };
+    auto parsing_context = CSS::Parser::ParsingContext { document(), CSS::Parser::ParsingContext::Mode::SVGPresentationAttribute };
     if (auto width_value = parse_css_value(parsing_context, deprecated_attribute(Web::HTML::AttributeNames::width), CSS::PropertyID::Width)) {
         style.set_property(CSS::PropertyID::Width, width_value.release_nonnull());
     } else if (width_attribute == "") {