Browse Source

LibWeb: Implement getSVGDocument() for BrowsingContextContainer

Specifically HTMLIFrameElement and HTMLObjectElement. HTMLEmbedElement
will gain it automatically once it's also converted to inherit from
BrowsingContextContainer.
Idan Horowitz 3 years ago
parent
commit
f82d4d001d

+ 13 - 0
Userland/Libraries/LibWeb/HTML/BrowsingContextContainer.cpp

@@ -90,4 +90,17 @@ DOM::Document const* BrowsingContextContainer::content_document_without_origin_c
     return m_nested_browsing_context->active_document();
 }
 
+// https://html.spec.whatwg.org/multipage/embedded-content-other.html#dom-media-getsvgdocument
+const DOM::Document* BrowsingContextContainer::get_svg_document() const
+{
+    // 1. Let document be this element's content document.
+    auto const* document = content_document();
+
+    // 2. If document is non-null and was created by the page load processing model for XML files section because the computed type of the resource in the navigate algorithm was image/svg+xml, then return document.
+    if (document && document->content_type() == "image/svg+xml"sv)
+        return document;
+    // 3. Return null.
+    return nullptr;
+}
+
 }

+ 2 - 0
Userland/Libraries/LibWeb/HTML/BrowsingContextContainer.h

@@ -21,6 +21,8 @@ public:
     const DOM::Document* content_document() const;
     DOM::Document const* content_document_without_origin_check() const;
 
+    DOM::Document const* get_svg_document() const;
+
 protected:
     void create_new_nested_browsing_context();
     void discard_nested_browsing_context();

+ 2 - 0
Userland/Libraries/LibWeb/HTML/HTMLIFrameElement.idl

@@ -19,4 +19,6 @@ interface HTMLIFrameElement : HTMLElement {
 
     [LegacyNullToEmptyString, Reflect=marginheight] attribute DOMString marginHeight;
     [LegacyNullToEmptyString, Reflect=marginwidth] attribute DOMString marginWidth;
+
+    Document? getSVGDocument();
 };

+ 1 - 0
Userland/Libraries/LibWeb/HTML/HTMLObjectElement.idl

@@ -20,4 +20,5 @@ interface HTMLObjectElement : HTMLElement {
 
     [LegacyNullToEmptyString, Reflect] attribute DOMString border;
 
+    Document? getSVGDocument();
 };