Explorar o código

LibWeb: Add almost all obsolete but required IDL attributes

As according to https://html.spec.whatwg.org/multipage/obsolete.html
Section 16.3 "Requirements for implementations"

Not all of these attributes are included due to requiring a bit more
functionality.
Luke %!s(int64=4) %!d(string=hai) anos
pai
achega
3f73b0f896
Modificáronse 43 ficheiros con 264 adicións e 18 borrados
  1. 8 0
      Libraries/LibWeb/Bindings/NodeWrapperFactory.cpp
  2. 3 0
      Libraries/LibWeb/CMakeLists.txt
  3. 2 1
      Libraries/LibWeb/CodeGenerators/WrapperGenerator.cpp
  4. 3 0
      Libraries/LibWeb/DOM/ElementFactory.cpp
  5. 3 0
      Libraries/LibWeb/Forward.h
  6. 2 1
      Libraries/LibWeb/HTML/AttributeNames.cpp
  7. 35 0
      Libraries/LibWeb/HTML/AttributeNames.h
  8. 6 0
      Libraries/LibWeb/HTML/HTMLAnchorElement.idl
  9. 1 1
      Libraries/LibWeb/HTML/HTMLAreaElement.idl
  10. 1 1
      Libraries/LibWeb/HTML/HTMLBRElement.idl
  11. 6 1
      Libraries/LibWeb/HTML/HTMLBodyElement.idl
  12. 1 1
      Libraries/LibWeb/HTML/HTMLDListElement.idl
  13. 40 0
      Libraries/LibWeb/HTML/HTMLDirectoryElement.cpp
  14. 46 0
      Libraries/LibWeb/HTML/HTMLDirectoryElement.h
  15. 5 0
      Libraries/LibWeb/HTML/HTMLDirectoryElement.idl
  16. 1 1
      Libraries/LibWeb/HTML/HTMLDivElement.idl
  17. 3 0
      Libraries/LibWeb/HTML/HTMLEmbedElement.idl
  18. 2 0
      Libraries/LibWeb/HTML/HTMLFontElement.h
  19. 7 0
      Libraries/LibWeb/HTML/HTMLFontElement.idl
  20. 5 1
      Libraries/LibWeb/HTML/HTMLHRElement.idl
  21. 1 1
      Libraries/LibWeb/HTML/HTMLHeadingElement.idl
  22. 1 1
      Libraries/LibWeb/HTML/HTMLHtmlElement.idl
  23. 7 0
      Libraries/LibWeb/HTML/HTMLIFrameElement.idl
  24. 4 0
      Libraries/LibWeb/HTML/HTMLImageElement.idl
  25. 3 0
      Libraries/LibWeb/HTML/HTMLInputElement.idl
  26. 1 1
      Libraries/LibWeb/HTML/HTMLLIElement.idl
  27. 1 1
      Libraries/LibWeb/HTML/HTMLLegendElement.idl
  28. 4 0
      Libraries/LibWeb/HTML/HTMLLinkElement.idl
  29. 1 1
      Libraries/LibWeb/HTML/HTMLMenuElement.idl
  30. 2 0
      Libraries/LibWeb/HTML/HTMLMetaElement.idl
  31. 2 0
      Libraries/LibWeb/HTML/HTMLOListElement.idl
  32. 9 0
      Libraries/LibWeb/HTML/HTMLObjectElement.idl
  33. 1 1
      Libraries/LibWeb/HTML/HTMLParagraphElement.idl
  34. 3 0
      Libraries/LibWeb/HTML/HTMLParamElement.idl
  35. 4 0
      Libraries/LibWeb/HTML/HTMLScriptElement.idl
  36. 2 0
      Libraries/LibWeb/HTML/HTMLStyleElement.idl
  37. 1 1
      Libraries/LibWeb/HTML/HTMLTableCaptionElement.idl
  38. 12 0
      Libraries/LibWeb/HTML/HTMLTableCellElement.idl
  39. 5 1
      Libraries/LibWeb/HTML/HTMLTableColElement.idl
  40. 9 0
      Libraries/LibWeb/HTML/HTMLTableElement.idl
  41. 5 0
      Libraries/LibWeb/HTML/HTMLTableRowElement.idl
  42. 4 1
      Libraries/LibWeb/HTML/HTMLTableSectionElement.idl
  43. 2 1
      Libraries/LibWeb/HTML/HTMLUListElement.idl

+ 8 - 0
Libraries/LibWeb/Bindings/NodeWrapperFactory.cpp

@@ -43,10 +43,12 @@
 #include <LibWeb/Bindings/HTMLDataListElementWrapper.h>
 #include <LibWeb/Bindings/HTMLDetailsElementWrapper.h>
 #include <LibWeb/Bindings/HTMLDialogElementWrapper.h>
+#include <LibWeb/Bindings/HTMLDirectoryElementWrapper.h>
 #include <LibWeb/Bindings/HTMLDivElementWrapper.h>
 #include <LibWeb/Bindings/HTMLElementWrapper.h>
 #include <LibWeb/Bindings/HTMLEmbedElementWrapper.h>
 #include <LibWeb/Bindings/HTMLFieldSetElementWrapper.h>
+#include <LibWeb/Bindings/HTMLFontElementWrapper.h>
 #include <LibWeb/Bindings/HTMLFormElementWrapper.h>
 #include <LibWeb/Bindings/HTMLFrameElementWrapper.h>
 #include <LibWeb/Bindings/HTMLFrameSetElementWrapper.h>
@@ -118,9 +120,11 @@
 #include <LibWeb/HTML/HTMLDataListElement.h>
 #include <LibWeb/HTML/HTMLDetailsElement.h>
 #include <LibWeb/HTML/HTMLDialogElement.h>
+#include <LibWeb/HTML/HTMLDirectoryElement.h>
 #include <LibWeb/HTML/HTMLDivElement.h>
 #include <LibWeb/HTML/HTMLEmbedElement.h>
 #include <LibWeb/HTML/HTMLFieldSetElement.h>
+#include <LibWeb/HTML/HTMLFontElement.h>
 #include <LibWeb/HTML/HTMLFormElement.h>
 #include <LibWeb/HTML/HTMLFrameElement.h>
 #include <LibWeb/HTML/HTMLFrameSetElement.h>
@@ -207,6 +211,8 @@ NodeWrapper* wrap(JS::GlobalObject& global_object, DOM::Node& node)
         return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<HTML::HTMLDetailsElement>(node)));
     if (is<HTML::HTMLDialogElement>(node))
         return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<HTML::HTMLDialogElement>(node)));
+    if (is<HTML::HTMLDirectoryElement>(node))
+        return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<HTML::HTMLDirectoryElement>(node)));
     if (is<HTML::HTMLDivElement>(node))
         return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<HTML::HTMLDivElement>(node)));
     if (is<HTML::HTMLDListElement>(node))
@@ -215,6 +221,8 @@ NodeWrapper* wrap(JS::GlobalObject& global_object, DOM::Node& node)
         return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<HTML::HTMLEmbedElement>(node)));
     if (is<HTML::HTMLFieldSetElement>(node))
         return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<HTML::HTMLFieldSetElement>(node)));
+    if (is<HTML::HTMLFontElement>(node))
+        return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<HTML::HTMLFontElement>(node)));
     if (is<HTML::HTMLFormElement>(node))
         return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<HTML::HTMLFormElement>(node)));
     if (is<HTML::HTMLFrameElement>(node))

+ 3 - 0
Libraries/LibWeb/CMakeLists.txt

@@ -65,6 +65,7 @@ set(SOURCES
     HTML/HTMLDataListElement.cpp
     HTML/HTMLDetailsElement.cpp
     HTML/HTMLDialogElement.cpp
+    HTML/HTMLDirectoryElement.cpp
     HTML/HTMLDivElement.cpp
     HTML/HTMLElement.cpp
     HTML/HTMLEmbedElement.cpp
@@ -245,11 +246,13 @@ libweb_js_wrapper(HTML/HTMLDataElement)
 libweb_js_wrapper(HTML/HTMLDataListElement)
 libweb_js_wrapper(HTML/HTMLDetailsElement)
 libweb_js_wrapper(HTML/HTMLDialogElement)
+libweb_js_wrapper(HTML/HTMLDirectoryElement)
 libweb_js_wrapper(HTML/HTMLDivElement)
 libweb_js_wrapper(HTML/HTMLDListElement)
 libweb_js_wrapper(HTML/HTMLElement)
 libweb_js_wrapper(HTML/HTMLEmbedElement)
 libweb_js_wrapper(HTML/HTMLFieldSetElement)
+libweb_js_wrapper(HTML/HTMLFontElement)
 libweb_js_wrapper(HTML/HTMLFormElement)
 libweb_js_wrapper(HTML/HTMLFrameElement)
 libweb_js_wrapper(HTML/HTMLFrameSetElement)

+ 2 - 1
Libraries/LibWeb/CodeGenerators/WrapperGenerator.cpp

@@ -55,7 +55,7 @@ static String snake_name(const StringView& title_name)
 
 static String make_input_acceptable_cpp(const String& input)
 {
-    if (input == "class" || input == "template" || input == "for" || input == "default") {
+    if (input.is_one_of("class", "template", "for", "default", "char")) {
         StringBuilder builder;
         builder.append(input);
         builder.append('_');
@@ -227,6 +227,7 @@ static OwnPtr<Interface> parse_interface(const StringView& input)
             } else {
                 extended_attributes.set(name, {});
             }
+            lexer.consume_specific(',');
         }
         consume_whitespace();
         return extended_attributes;

+ 3 - 0
Libraries/LibWeb/DOM/ElementFactory.cpp

@@ -40,6 +40,7 @@
 #include <LibWeb/HTML/HTMLDataListElement.h>
 #include <LibWeb/HTML/HTMLDetailsElement.h>
 #include <LibWeb/HTML/HTMLDialogElement.h>
+#include <LibWeb/HTML/HTMLDirectoryElement.h>
 #include <LibWeb/HTML/HTMLDivElement.h>
 #include <LibWeb/HTML/HTMLEmbedElement.h>
 #include <LibWeb/HTML/HTMLFieldSetElement.h>
@@ -132,6 +133,8 @@ NonnullRefPtr<Element> create_element(Document& document, const FlyString& tag_n
         return adopt(*new HTML::HTMLDetailsElement(document, qualified_name));
     if (lowercase_tag_name == HTML::TagNames::dialog)
         return adopt(*new HTML::HTMLDialogElement(document, qualified_name));
+    if (lowercase_tag_name == HTML::TagNames::dir)
+        return adopt(*new HTML::HTMLDirectoryElement(document, qualified_name));
     if (lowercase_tag_name == HTML::TagNames::div)
         return adopt(*new HTML::HTMLDivElement(document, qualified_name));
     if (lowercase_tag_name == HTML::TagNames::dl)

+ 3 - 0
Libraries/LibWeb/Forward.h

@@ -70,6 +70,7 @@ class HTMLDataElement;
 class HTMLDataListElement;
 class HTMLDetailsElement;
 class HTMLDialogElement;
+class HTMLDirectoryElement;
 class HTMLDivElement;
 class HTMLDListElement;
 class HTMLDocumentParser;
@@ -194,11 +195,13 @@ class HTMLDataElementWrapper;
 class HTMLDataListElementWrapper;
 class HTMLDetailsElementWrapper;
 class HTMLDialogElementWrapper;
+class HTMLDirectoryElementWrapper;
 class HTMLDivElementWrapper;
 class HTMLDListElementWrapper;
 class HTMLElementWrapper;
 class HTMLEmbedElementWrapper;
 class HTMLFieldSetElementWrapper;
+class HTMLFontElementWrapper;
 class HTMLFormElementWrapper;
 class HTMLFrameElementWrapper;
 class HTMLFrameSetElementWrapper;

+ 2 - 1
Libraries/LibWeb/HTML/AttributeNames.cpp

@@ -48,10 +48,11 @@ ENUMERATE_HTML_ATTRIBUTES
     ENUMERATE_HTML_ATTRIBUTES
 #undef __ENUMERATE_HTML_ATTRIBUTE
 
-    // NOTE: Special case for the class and for attributes since they're C++ keywords.
+    // NOTE: Special cases for C++ keywords.
     class_ = "class";
     for_ = "for";
     default_ = "default";
+    char_ = "char";
 
     // NOTE: Special cases for attributes with dashes in them.
     accept_charset = "accept-charset";

+ 35 - 0
Libraries/LibWeb/HTML/AttributeNames.h

@@ -38,34 +38,52 @@ namespace AttributeNames {
     __ENUMERATE_HTML_ATTRIBUTE(accept_charset)  \
     __ENUMERATE_HTML_ATTRIBUTE(action)          \
     __ENUMERATE_HTML_ATTRIBUTE(align)           \
+    __ENUMERATE_HTML_ATTRIBUTE(alink)           \
     __ENUMERATE_HTML_ATTRIBUTE(allow)           \
     __ENUMERATE_HTML_ATTRIBUTE(allowfullscreen) \
     __ENUMERATE_HTML_ATTRIBUTE(alt)             \
+    __ENUMERATE_HTML_ATTRIBUTE(archive)         \
     __ENUMERATE_HTML_ATTRIBUTE(async)           \
     __ENUMERATE_HTML_ATTRIBUTE(autoplay)        \
+    __ENUMERATE_HTML_ATTRIBUTE(axis)            \
+    __ENUMERATE_HTML_ATTRIBUTE(background)      \
     __ENUMERATE_HTML_ATTRIBUTE(behaviour)       \
     __ENUMERATE_HTML_ATTRIBUTE(bgcolor)         \
+    __ENUMERATE_HTML_ATTRIBUTE(border)          \
+    __ENUMERATE_HTML_ATTRIBUTE(cellpadding)     \
+    __ENUMERATE_HTML_ATTRIBUTE(cellspacing)     \
+    __ENUMERATE_HTML_ATTRIBUTE(char_)           \
+    __ENUMERATE_HTML_ATTRIBUTE(charoff)         \
+    __ENUMERATE_HTML_ATTRIBUTE(charset)         \
     __ENUMERATE_HTML_ATTRIBUTE(checked)         \
     __ENUMERATE_HTML_ATTRIBUTE(cite)            \
     __ENUMERATE_HTML_ATTRIBUTE(class_)          \
+    __ENUMERATE_HTML_ATTRIBUTE(clear)           \
+    __ENUMERATE_HTML_ATTRIBUTE(code)            \
+    __ENUMERATE_HTML_ATTRIBUTE(codetype)        \
     __ENUMERATE_HTML_ATTRIBUTE(color)           \
     __ENUMERATE_HTML_ATTRIBUTE(cols)            \
     __ENUMERATE_HTML_ATTRIBUTE(colspan)         \
+    __ENUMERATE_HTML_ATTRIBUTE(compact)         \
     __ENUMERATE_HTML_ATTRIBUTE(content)         \
     __ENUMERATE_HTML_ATTRIBUTE(contenteditable) \
     __ENUMERATE_HTML_ATTRIBUTE(controls)        \
+    __ENUMERATE_HTML_ATTRIBUTE(coords)          \
     __ENUMERATE_HTML_ATTRIBUTE(data)            \
     __ENUMERATE_HTML_ATTRIBUTE(datetime)        \
+    __ENUMERATE_HTML_ATTRIBUTE(declare)         \
     __ENUMERATE_HTML_ATTRIBUTE(default_)        \
     __ENUMERATE_HTML_ATTRIBUTE(defer)           \
     __ENUMERATE_HTML_ATTRIBUTE(disabled)        \
     __ENUMERATE_HTML_ATTRIBUTE(download)        \
     __ENUMERATE_HTML_ATTRIBUTE(direction)       \
     __ENUMERATE_HTML_ATTRIBUTE(dirname)         \
+    __ENUMERATE_HTML_ATTRIBUTE(event)           \
     __ENUMERATE_HTML_ATTRIBUTE(face)            \
     __ENUMERATE_HTML_ATTRIBUTE(for_)            \
     __ENUMERATE_HTML_ATTRIBUTE(formnovalidate)  \
     __ENUMERATE_HTML_ATTRIBUTE(formtarget)      \
+    __ENUMERATE_HTML_ATTRIBUTE(frame)           \
     __ENUMERATE_HTML_ATTRIBUTE(frameborder)     \
     __ENUMERATE_HTML_ATTRIBUTE(headers)         \
     __ENUMERATE_HTML_ATTRIBUTE(height)          \
@@ -80,16 +98,22 @@ namespace AttributeNames {
     __ENUMERATE_HTML_ATTRIBUTE(ismap)           \
     __ENUMERATE_HTML_ATTRIBUTE(label)           \
     __ENUMERATE_HTML_ATTRIBUTE(lang)            \
+    __ENUMERATE_HTML_ATTRIBUTE(link)            \
     __ENUMERATE_HTML_ATTRIBUTE(longdesc)        \
     __ENUMERATE_HTML_ATTRIBUTE(loop)            \
     __ENUMERATE_HTML_ATTRIBUTE(max)             \
+    __ENUMERATE_HTML_ATTRIBUTE(marginheight)    \
+    __ENUMERATE_HTML_ATTRIBUTE(marginwidth)     \
     __ENUMERATE_HTML_ATTRIBUTE(media)           \
     __ENUMERATE_HTML_ATTRIBUTE(method)          \
     __ENUMERATE_HTML_ATTRIBUTE(min)             \
     __ENUMERATE_HTML_ATTRIBUTE(multiple)        \
     __ENUMERATE_HTML_ATTRIBUTE(name)            \
+    __ENUMERATE_HTML_ATTRIBUTE(nohref)          \
     __ENUMERATE_HTML_ATTRIBUTE(nomodule)        \
+    __ENUMERATE_HTML_ATTRIBUTE(noshade)         \
     __ENUMERATE_HTML_ATTRIBUTE(novalidate)      \
+    __ENUMERATE_HTML_ATTRIBUTE(nowrap)          \
     __ENUMERATE_HTML_ATTRIBUTE(open)            \
     __ENUMERATE_HTML_ATTRIBUTE(pattern)         \
     __ENUMERATE_HTML_ATTRIBUTE(ping)            \
@@ -99,23 +123,34 @@ namespace AttributeNames {
     __ENUMERATE_HTML_ATTRIBUTE(readonly)        \
     __ENUMERATE_HTML_ATTRIBUTE(rel)             \
     __ENUMERATE_HTML_ATTRIBUTE(required)        \
+    __ENUMERATE_HTML_ATTRIBUTE(rev)             \
     __ENUMERATE_HTML_ATTRIBUTE(reversed)        \
     __ENUMERATE_HTML_ATTRIBUTE(rows)            \
+    __ENUMERATE_HTML_ATTRIBUTE(rules)           \
+    __ENUMERATE_HTML_ATTRIBUTE(scheme)          \
     __ENUMERATE_HTML_ATTRIBUTE(scrolling)       \
     __ENUMERATE_HTML_ATTRIBUTE(selected)        \
+    __ENUMERATE_HTML_ATTRIBUTE(shape)           \
     __ENUMERATE_HTML_ATTRIBUTE(size)            \
     __ENUMERATE_HTML_ATTRIBUTE(sizes)           \
     __ENUMERATE_HTML_ATTRIBUTE(src)             \
     __ENUMERATE_HTML_ATTRIBUTE(srcdoc)          \
     __ENUMERATE_HTML_ATTRIBUTE(srclang)         \
     __ENUMERATE_HTML_ATTRIBUTE(srcset)          \
+    __ENUMERATE_HTML_ATTRIBUTE(standby)         \
     __ENUMERATE_HTML_ATTRIBUTE(step)            \
     __ENUMERATE_HTML_ATTRIBUTE(style)           \
+    __ENUMERATE_HTML_ATTRIBUTE(summary)         \
     __ENUMERATE_HTML_ATTRIBUTE(target)          \
+    __ENUMERATE_HTML_ATTRIBUTE(text)            \
     __ENUMERATE_HTML_ATTRIBUTE(title)           \
     __ENUMERATE_HTML_ATTRIBUTE(type)            \
     __ENUMERATE_HTML_ATTRIBUTE(usemap)          \
     __ENUMERATE_HTML_ATTRIBUTE(value)           \
+    __ENUMERATE_HTML_ATTRIBUTE(valuetype)       \
+    __ENUMERATE_HTML_ATTRIBUTE(valign)          \
+    __ENUMERATE_HTML_ATTRIBUTE(version)         \
+    __ENUMERATE_HTML_ATTRIBUTE(vlink)           \
     __ENUMERATE_HTML_ATTRIBUTE(width)           \
     __ENUMERATE_HTML_ATTRIBUTE(wrap)
 

+ 6 - 0
Libraries/LibWeb/HTML/HTMLAnchorElement.idl

@@ -7,4 +7,10 @@ interface HTMLAnchorElement : HTMLElement {
     [Reflect] attribute DOMString hreflang;
     [Reflect] attribute DOMString type;
 
+    [Reflect] attribute DOMString coords;
+    [Reflect] attribute DOMString charset;
+    [Reflect] attribute DOMString name;
+    [Reflect] attribute DOMString rev;
+    [Reflect] attribute DOMString shape;
+
 }

+ 1 - 1
Libraries/LibWeb/HTML/HTMLAreaElement.idl

@@ -1,5 +1,5 @@
 interface HTMLAreaElement : HTMLElement {
 
-
+    [Reflect=nohref] attribute boolean noHref;
 
 }

+ 1 - 1
Libraries/LibWeb/HTML/HTMLBRElement.idl

@@ -1,5 +1,5 @@
 interface HTMLBRElement : HTMLElement {
 
-
+    [Reflect] attribute DOMString clear;
 
 }

+ 6 - 1
Libraries/LibWeb/HTML/HTMLBodyElement.idl

@@ -1,5 +1,10 @@
 interface HTMLBodyElement : HTMLElement {
 
-
+    [LegacyNullToEmptyString, Reflect] attribute DOMString text;
+    [LegacyNullToEmptyString, Reflect] attribute DOMString link;
+    [LegacyNullToEmptyString, Reflect=vlink] attribute DOMString vLink;
+    [LegacyNullToEmptyString, Reflect=alink] attribute DOMString aLink;
+    [LegacyNullToEmptyString, Reflect=bgcolor] attribute DOMString bgColor;
+    [Reflect] attribute DOMString background;
 
 }

+ 1 - 1
Libraries/LibWeb/HTML/HTMLDListElement.idl

@@ -1,5 +1,5 @@
 interface HTMLDListElement : HTMLElement {
 
-
+    [Reflect] attribute boolean compact;
 
 }

+ 40 - 0
Libraries/LibWeb/HTML/HTMLDirectoryElement.cpp

@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2020, The SerenityOS developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ *    list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <LibWeb/HTML/HTMLDirectoryElement.h>
+
+namespace Web::HTML {
+
+HTMLDirectoryElement::HTMLDirectoryElement(DOM::Document& document, const QualifiedName& qualified_name)
+    : HTMLElement(document, qualified_name)
+{
+}
+
+HTMLDirectoryElement::~HTMLDirectoryElement()
+{
+}
+
+}

+ 46 - 0
Libraries/LibWeb/HTML/HTMLDirectoryElement.h

@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2020, The SerenityOS developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ *    list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <LibWeb/HTML/HTMLElement.h>
+
+namespace Web::HTML {
+
+// NOTE: This element is marked as obsolete, but is still listed as required by the specification.
+class HTMLDirectoryElement final : public HTMLElement {
+public:
+    using WrapperType = Bindings::HTMLDirectoryElementWrapper;
+
+    HTMLDirectoryElement(DOM::Document&, const QualifiedName& qualified_name);
+    virtual ~HTMLDirectoryElement() override;
+};
+
+}
+
+AK_BEGIN_TYPE_TRAITS(Web::HTML::HTMLDirectoryElement)
+static bool is_type(const Web::DOM::Node& node) { return node.is_html_element() && downcast<Web::HTML::HTMLElement>(node).local_name() == Web::HTML::TagNames::dir; }
+AK_END_TYPE_TRAITS()

+ 5 - 0
Libraries/LibWeb/HTML/HTMLDirectoryElement.idl

@@ -0,0 +1,5 @@
+interface HTMLDirectoryElement : HTMLElement {
+
+    [Reflect] attribute boolean compact;
+
+}

+ 1 - 1
Libraries/LibWeb/HTML/HTMLDivElement.idl

@@ -1,5 +1,5 @@
 interface HTMLDivElement : HTMLElement {
 
-
+    [Reflect] attribute DOMString align;
 
 }

+ 3 - 0
Libraries/LibWeb/HTML/HTMLEmbedElement.idl

@@ -5,4 +5,7 @@ interface HTMLEmbedElement : HTMLElement {
     [Reflect] attribute DOMString width;
     [Reflect] attribute DOMString height;
 
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString name;
+
 }

+ 2 - 0
Libraries/LibWeb/HTML/HTMLFontElement.h

@@ -32,6 +32,8 @@ namespace Web::HTML {
 
 class HTMLFontElement final : public HTMLElement {
 public:
+    using WrapperType = Bindings::HTMLFontElementWrapper;
+
     HTMLFontElement(DOM::Document&, const QualifiedName& qualified_name);
     virtual ~HTMLFontElement() override;
 

+ 7 - 0
Libraries/LibWeb/HTML/HTMLFontElement.idl

@@ -0,0 +1,7 @@
+interface HTMLFontElement : HTMLElement {
+
+    [LegacyNullToEmptyString, Reflect] attribute DOMString color;
+    [Reflect] attribute DOMString face;
+    [Reflect] attribute DOMString size;
+
+}

+ 5 - 1
Libraries/LibWeb/HTML/HTMLHRElement.idl

@@ -1,5 +1,9 @@
 interface HTMLHRElement : HTMLElement {
 
-
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString color;
+    [Reflect=noshade] attribute boolean noShade;
+    [Reflect] attribute DOMString size;
+    [Reflect] attribute DOMString width;
 
 }

+ 1 - 1
Libraries/LibWeb/HTML/HTMLHeadingElement.idl

@@ -1,5 +1,5 @@
 interface HTMLHeadingElement : HTMLElement {
 
-
+    [Reflect] attribute DOMString align;
 
 }

+ 1 - 1
Libraries/LibWeb/HTML/HTMLHtmlElement.idl

@@ -1,5 +1,5 @@
 interface HTMLHtmlElement : HTMLElement {
 
-
+    [Reflect] attribute DOMString version;
 
 }

+ 7 - 0
Libraries/LibWeb/HTML/HTMLIFrameElement.idl

@@ -9,4 +9,11 @@ interface HTMLIFrameElement : HTMLElement {
     [Reflect=allowfullscreen] attribute boolean allowFullscreen;
 
     [ReturnNullIfCrossOrigin] readonly attribute Document? contentDocument;
+
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString scrolling;
+    [Reflect=frameborder] attribute DOMString frameBorder;
+
+    [LegacyNullToEmptyString, Reflect=marginheight] attribute DOMString marginHeight;
+    [LegacyNullToEmptyString, Reflect=marginwidth] attribute DOMString marginWidth;
 }

+ 4 - 0
Libraries/LibWeb/HTML/HTMLImageElement.idl

@@ -7,4 +7,8 @@ interface HTMLImageElement : HTMLElement {
     [Reflect=usemap] attribute DOMString useMap;
     [Reflect=ismap] attribute boolean isMap;
 
+    [Reflect] attribute DOMString name;
+    [Reflect] attribute DOMString align;
+    [LegacyNullToEmptyString, Reflect] attribute DOMString border;
+
 }

+ 3 - 0
Libraries/LibWeb/HTML/HTMLInputElement.idl

@@ -21,4 +21,7 @@ interface HTMLInputElement : HTMLElement {
     [Reflect=readonly] attribute boolean readOnly;
     [Reflect] attribute boolean required;
 
+    [Reflect] attribute DOMString align;
+    [Reflect=usemap] attribute DOMString useMap;
+
 }

+ 1 - 1
Libraries/LibWeb/HTML/HTMLLIElement.idl

@@ -1,5 +1,5 @@
 interface HTMLLIElement : HTMLElement {
 
-
+    [Reflect] attribute DOMString type;
 
 }

+ 1 - 1
Libraries/LibWeb/HTML/HTMLLegendElement.idl

@@ -1,5 +1,5 @@
 interface HTMLLegendElement : HTMLElement {
 
-
+    [Reflect] attribute DOMString align;
 
 }

+ 4 - 0
Libraries/LibWeb/HTML/HTMLLinkElement.idl

@@ -10,4 +10,8 @@ interface HTMLLinkElement : HTMLElement {
     [Reflect=imagesizes] attribute DOMString imageSizes;
     [Reflect] attribute boolean disabled;
 
+    [Reflect] attribute DOMString charset;
+    [Reflect] attribute DOMString rev;
+    [Reflect] attribute DOMString target;
+
 }

+ 1 - 1
Libraries/LibWeb/HTML/HTMLMenuElement.idl

@@ -1,5 +1,5 @@
 interface HTMLMenuElement : HTMLElement {
 
-
+    [Reflect] attribute boolean compact;
 
 }

+ 2 - 0
Libraries/LibWeb/HTML/HTMLMetaElement.idl

@@ -4,4 +4,6 @@ interface HTMLMetaElement : HTMLElement {
     [Reflect] attribute DOMString content;
     [Reflect=http-equiv] attribute DOMString httpEquiv;
 
+    [Reflect] attribute DOMString scheme;
+
 }

+ 2 - 0
Libraries/LibWeb/HTML/HTMLOListElement.idl

@@ -3,4 +3,6 @@ interface HTMLOListElement : HTMLElement {
     [Reflect] attribute boolean reversed;
     [Reflect] attribute DOMString type;
 
+    [Reflect] attribute boolean compact;
+
 }

+ 9 - 0
Libraries/LibWeb/HTML/HTMLObjectElement.idl

@@ -7,4 +7,13 @@ interface HTMLObjectElement : HTMLElement {
     [Reflect] attribute DOMString width;
     [Reflect] attribute DOMString height;
 
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString archive;
+    [Reflect] attribute DOMString code;
+    [Reflect] attribute boolean declare;
+    [Reflect] attribute DOMString standby;
+    [Reflect=codetype] attribute DOMString codeType;
+
+    [LegacyNullToEmptyString, Reflect] attribute DOMString border;
+
 }

+ 1 - 1
Libraries/LibWeb/HTML/HTMLParagraphElement.idl

@@ -1,5 +1,5 @@
 interface HTMLParagraphElement : HTMLElement {
 
-
+    [Reflect] attribute DOMString align;
 
 }

+ 3 - 0
Libraries/LibWeb/HTML/HTMLParamElement.idl

@@ -3,4 +3,7 @@ interface HTMLParamElement : HTMLElement {
     [Reflect] attribute DOMString name;
     [Reflect] attribute DOMString value;
 
+    [Reflect] attribute DOMString type;
+    [Reflect=valuetype] attribute DOMString valueType;
+
 }

+ 4 - 0
Libraries/LibWeb/HTML/HTMLScriptElement.idl

@@ -6,4 +6,8 @@ interface HTMLScriptElement : HTMLElement {
     [Reflect] attribute boolean defer;
     [Reflect] attribute DOMString integrity;
 
+    [Reflect] attribute DOMString charset;
+    [Reflect] attribute DOMString event;
+    [Reflect=for] attribute DOMString htmlFor;
+
 }

+ 2 - 0
Libraries/LibWeb/HTML/HTMLStyleElement.idl

@@ -2,4 +2,6 @@ interface HTMLStyleElement : HTMLElement {
 
     [Reflect] attribute DOMString media;
 
+    [Reflect] attribute DOMString type;
+
 }

+ 1 - 1
Libraries/LibWeb/HTML/HTMLTableCaptionElement.idl

@@ -1,5 +1,5 @@
 interface HTMLTableCaptionElement : HTMLElement {
 
-
+    [Reflect] attribute DOMString align;
 
 }

+ 12 - 0
Libraries/LibWeb/HTML/HTMLTableCellElement.idl

@@ -3,4 +3,16 @@ interface HTMLTableCellElement : HTMLElement {
     [Reflect] attribute DOMString headers;
     [Reflect] attribute DOMString abbr;
 
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString axis;
+    [Reflect] attribute DOMString height;
+    [Reflect] attribute DOMString width;
+
+    [Reflect=char] attribute DOMString ch;
+    [Reflect=charoff] attribute DOMString chOff;
+    [Reflect=nowrap] attribute boolean noWrap;
+    [Reflect=valign] attribute DOMString vAlign;
+
+    [LegacyNullToEmptyString, Reflect=bgcolor] attribute DOMString bgColor;
+
 }

+ 5 - 1
Libraries/LibWeb/HTML/HTMLTableColElement.idl

@@ -1,5 +1,9 @@
 interface HTMLTableColElement : HTMLElement {
 
-
+    [Reflect] attribute DOMString align;
+    [Reflect=char] attribute DOMString ch;
+    [Reflect=charoff] attribute DOMString chOff;
+    [Reflect=valign] attribute DOMString vAlign;
+    [Reflect] attribute DOMString width;
 
 }

+ 9 - 0
Libraries/LibWeb/HTML/HTMLTableElement.idl

@@ -1,5 +1,14 @@
 interface HTMLTableElement : HTMLElement {
 
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString border;
+    [Reflect] attribute DOMString frame;
+    [Reflect] attribute DOMString rules;
+    [Reflect] attribute DOMString summary;
+    [Reflect] attribute DOMString width;
 
+    [LegacyNullToEmptyString, Reflect=bgcolor] attribute DOMString bgColor;
+    [LegacyNullToEmptyString, Reflect=cellpadding] attribute DOMString cellPadding;
+    [LegacyNullToEmptyString, Reflect=cellspacing] attribute DOMString cellSpacing;
 
 }

+ 5 - 0
Libraries/LibWeb/HTML/HTMLTableRowElement.idl

@@ -1,5 +1,10 @@
 interface HTMLTableRowElement : HTMLElement {
 
+    [Reflect] attribute DOMString align;
+    [Reflect=char] attribute DOMString ch;
+    [Reflect=charoff] attribute DOMString chOff;
+    [Reflect=valign] attribute DOMString vAlign;
 
+    [LegacyNullToEmptyString, Reflect=bgcolor] attribute DOMString bgColor;
 
 }

+ 4 - 1
Libraries/LibWeb/HTML/HTMLTableSectionElement.idl

@@ -1,5 +1,8 @@
 interface HTMLTableSectionElement : HTMLElement {
 
-
+    [Reflect] attribute DOMString align;
+    [Reflect=char] attribute DOMString ch;
+    [Reflect=charoff] attribute DOMString chOff;
+    [Reflect=valign] attribute DOMString vAlign;
 
 }

+ 2 - 1
Libraries/LibWeb/HTML/HTMLUListElement.idl

@@ -1,5 +1,6 @@
 interface HTMLUListElement : HTMLElement {
 
-
+    [Reflect] attribute boolean compact;
+    [Reflect] attribute DOMString type;
 
 }