LibWeb: Move DOM classes into the Web::DOM namespace

LibWeb keeps growing and the Web namespace is filling up fast.
Let's put DOM stuff into Web::DOM, just like we already started doing
with SVG stuff in Web::SVG.
This commit is contained in:
Andreas Kling 2020-07-26 19:37:56 +02:00
parent 96d13f75cf
commit 11ff9d0f17
Notes: sideshowbarker 2024-07-19 04:35:48 +09:00
178 changed files with 516 additions and 523 deletions

View file

@ -47,13 +47,13 @@ ConsoleWidget::ConsoleWidget()
set_layout<GUI::VerticalBoxLayout>();
set_fill_with_background_color(true);
auto base_document = adopt(*new Web::Document);
base_document->append_child(adopt(*new Web::DocumentType(base_document)));
auto html_element = create_element(base_document, "html");
auto base_document = adopt(*new Web::DOM::Document);
base_document->append_child(adopt(*new Web::DOM::DocumentType(base_document)));
auto html_element = Web::DOM::create_element(base_document, "html");
base_document->append_child(html_element);
auto head_element = create_element(base_document, "head");
auto head_element = Web::DOM::create_element(base_document, "head");
html_element->append_child(head_element);
auto body_element = create_element(base_document, "body");
auto body_element = Web::DOM::create_element(base_document, "body");
html_element->append_child(body_element);
m_output_container = body_element;

View file

@ -52,7 +52,7 @@ private:
RefPtr<GUI::TextBox> m_input;
RefPtr<Web::PageView> m_output_view;
RefPtr<Web::Element> m_output_container;
RefPtr<Web::DOM::Element> m_output_container;
WeakPtr<JS::Interpreter> m_interpreter;
OwnPtr<BrowserConsoleClient> m_console_client;
};

View file

@ -38,11 +38,11 @@
namespace Browser {
void InspectorWidget::set_inspected_node(Web::Node* node)
void InspectorWidget::set_inspected_node(Web::DOM::Node* node)
{
m_document->set_inspected_node(node);
if (node && node->is_element()) {
auto& element = downcast<Web::Element>(*node);
auto& element = downcast<Web::DOM::Element>(*node);
if (element.resolved_style()) {
m_style_table_view->set_model(Web::StylePropertiesModel::create(*element.resolved_style()));
m_computed_style_table_view->set_model(Web::StylePropertiesModel::create(*element.computed_style()));
@ -62,7 +62,7 @@ InspectorWidget::InspectorWidget()
m_dom_tree_view = top_tab_widget.add_tab<GUI::TreeView>("DOM");
m_dom_tree_view->on_selection = [this](auto& index) {
auto* node = static_cast<Web::Node*>(index.internal_data());
auto* node = static_cast<Web::DOM::Node*>(index.internal_data());
set_inspected_node(node);
};
@ -82,7 +82,7 @@ InspectorWidget::~InspectorWidget()
{
}
void InspectorWidget::set_document(Web::Document* document)
void InspectorWidget::set_document(Web::DOM::Document* document)
{
if (m_document == document)
return;

View file

@ -36,18 +36,18 @@ class InspectorWidget final : public GUI::Widget {
public:
virtual ~InspectorWidget();
void set_document(Web::Document*);
void set_document(Web::DOM::Document*);
private:
InspectorWidget();
void set_inspected_node(Web::Node*);
void set_inspected_node(Web::DOM::Node*);
RefPtr<GUI::TreeView> m_dom_tree_view;
RefPtr<GUI::TreeView> m_layout_tree_view;
RefPtr<GUI::TableView> m_style_table_view;
RefPtr<GUI::TableView> m_computed_style_table_view;
RefPtr<Web::Document> m_document;
RefPtr<Web::DOM::Document> m_document;
};
}

View file

@ -40,14 +40,14 @@ NonnullRefPtr<IRCLogBuffer> IRCLogBuffer::create()
IRCLogBuffer::IRCLogBuffer()
{
m_document = adopt(*new Web::Document);
m_document->append_child(adopt(*new Web::DocumentType(document())));
m_document = adopt(*new Web::DOM::Document);
m_document->append_child(adopt(*new Web::DOM::DocumentType(document())));
auto html_element = create_element(document(), "html");
m_document->append_child(html_element);
auto head_element = create_element(document(), "head");
html_element->append_child(head_element);
auto style_element = create_element(document(), "style");
style_element->append_child(adopt(*new Web::Text(document(), "div { font-family: Csilla; font-weight: lighter; }")));
style_element->append_child(adopt(*new Web::DOM::Text(document(), "div { font-family: Csilla; font-weight: lighter; }")));
head_element->append_child(style_element);
auto body_element = create_element(document(), "body");
html_element->append_child(body_element);
@ -76,7 +76,7 @@ void IRCLogBuffer::add_message(char prefix, const String& name, const String& te
escape_html_entities(nick_string).characters(),
escape_html_entities(text).characters());
auto wrapper = Web::create_element(*m_document, Web::HTML::TagNames::div);
auto wrapper = Web::DOM::create_element(*m_document, Web::HTML::TagNames::div);
wrapper->set_attribute(Web::HTML::AttributeNames::style, String::format("color: %s", color.to_string().characters()));
wrapper->set_inner_html(html);
m_container_element->append_child(wrapper);
@ -90,7 +90,7 @@ void IRCLogBuffer::add_message(const String& text, Color color)
"<span>%s</span>",
timestamp_string().characters(),
escape_html_entities(text).characters());
auto wrapper = Web::create_element(*m_document, Web::HTML::TagNames::div);
auto wrapper = Web::DOM::create_element(*m_document, Web::HTML::TagNames::div);
wrapper->set_attribute(Web::HTML::AttributeNames::style, String::format("color: %s", color.to_string().characters()));
wrapper->set_inner_html(html);
m_container_element->append_child(wrapper);

View file

@ -49,11 +49,11 @@ public:
void add_message(const String& text, Color = Color::Black);
void dump() const;
const Web::Document& document() const { return *m_document; }
Web::Document& document() { return *m_document; }
const Web::DOM::Document& document() const { return *m_document; }
Web::DOM::Document& document() { return *m_document; }
private:
IRCLogBuffer();
RefPtr<Web::Document> m_document;
RefPtr<Web::Element> m_container_element;
RefPtr<Web::DOM::Document> m_document;
RefPtr<Web::DOM::Element> m_container_element;
};

View file

@ -214,7 +214,7 @@ IRCWindow::~IRCWindow()
void IRCWindow::set_log_buffer(const IRCLogBuffer& log_buffer)
{
m_log_buffer = &log_buffer;
m_page_view->set_document(const_cast<Web::Document*>(&log_buffer.document()));
m_page_view->set_document(const_cast<Web::DOM::Document*>(&log_buffer.document()));
}
bool IRCWindow::is_active() const

View file

@ -33,7 +33,7 @@
namespace Web {
namespace Bindings {
EventListenerWrapper::EventListenerWrapper(JS::GlobalObject& global_object, EventListener& impl)
EventListenerWrapper::EventListenerWrapper(JS::GlobalObject& global_object, DOM::EventListener& impl)
: Wrapper(*global_object.object_prototype())
, m_impl(impl)
{

View file

@ -35,14 +35,14 @@ class EventListenerWrapper final : public Wrapper {
JS_OBJECT(EventListenerWrapper, Wrapper);
public:
EventListenerWrapper(JS::GlobalObject&, EventListener&);
EventListenerWrapper(JS::GlobalObject&, DOM::EventListener&);
virtual ~EventListenerWrapper() override;
EventListener& impl() { return *m_impl; }
const EventListener& impl() const { return *m_impl; }
DOM::EventListener& impl() { return *m_impl; }
const DOM::EventListener& impl() const { return *m_impl; }
private:
NonnullRefPtr<EventListener> m_impl;
NonnullRefPtr<DOM::EventListener> m_impl;
};
}

View file

@ -30,10 +30,10 @@
namespace Web {
namespace Bindings {
EventWrapper* wrap(JS::GlobalObject& global_object, Event& event)
EventWrapper* wrap(JS::GlobalObject& global_object, DOM::Event& event)
{
if (event.is_mouse_event())
return static_cast<MouseEventWrapper*>(wrap_impl(global_object, static_cast<MouseEvent&>(event)));
return static_cast<MouseEventWrapper*>(wrap_impl(global_object, static_cast<DOM::MouseEvent&>(event)));
return static_cast<EventWrapper*>(wrap_impl(global_object, event));
}

View file

@ -29,10 +29,8 @@
#include <LibJS/Forward.h>
#include <LibWeb/Forward.h>
namespace Web {
namespace Bindings {
namespace Web::Bindings {
EventWrapper* wrap(JS::GlobalObject&, Event&);
EventWrapper* wrap(JS::GlobalObject&, DOM::Event&);
}
}

View file

@ -38,20 +38,20 @@
namespace Web {
namespace Bindings {
NodeWrapper* wrap(JS::GlobalObject& global_object, Node& node)
NodeWrapper* wrap(JS::GlobalObject& global_object, DOM::Node& node)
{
if (is<Document>(node))
return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<Document>(node)));
if (is<DocumentType>(node))
return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<DocumentType>(node)));
if (is<DOM::Document>(node))
return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<DOM::Document>(node)));
if (is<DOM::DocumentType>(node))
return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<DOM::DocumentType>(node)));
if (is<HTMLCanvasElement>(node))
return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<HTMLCanvasElement>(node)));
if (is<HTMLImageElement>(node))
return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<HTMLImageElement>(node)));
if (is<HTMLElement>(node))
return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<HTMLElement>(node)));
if (is<Element>(node))
return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<Element>(node)));
if (is<DOM::Element>(node))
return static_cast<NodeWrapper*>(wrap_impl(global_object, downcast<DOM::Element>(node)));
return static_cast<NodeWrapper*>(wrap_impl(global_object, node));
}

View file

@ -32,7 +32,7 @@
namespace Web {
namespace Bindings {
NodeWrapper* wrap(JS::GlobalObject&, Node&);
NodeWrapper* wrap(JS::GlobalObject&, DOM::Node&);
}
}

View file

@ -48,7 +48,7 @@
namespace Web {
namespace Bindings {
WindowObject::WindowObject(Window& impl)
WindowObject::WindowObject(DOM::Window& impl)
: m_impl(impl)
{
impl.set_wrapper({}, *this);
@ -91,7 +91,7 @@ void WindowObject::visit_children(Visitor& visitor)
visitor.visit(m_xhr_prototype);
}
static Window* impl_from(JS::Interpreter& interpreter, JS::GlobalObject& global_object)
static DOM::Window* impl_from(JS::Interpreter& interpreter, JS::GlobalObject& global_object)
{
auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
if (!this_object) {

View file

@ -37,12 +37,12 @@ class WindowObject final
: public JS::GlobalObject
, public Weakable<WindowObject> {
public:
explicit WindowObject(Window&);
explicit WindowObject(DOM::Window&);
virtual void initialize() override;
virtual ~WindowObject() override;
Window& impl() { return *m_impl; }
const Window& impl() const { return *m_impl; }
DOM::Window& impl() { return *m_impl; }
const DOM::Window& impl() const { return *m_impl; }
XMLHttpRequestPrototype* xhr_prototype() { return m_xhr_prototype; }
XMLHttpRequestConstructor* xhr_constructor() { return m_xhr_constructor; }
@ -65,7 +65,7 @@ private:
JS_DECLARE_NATIVE_FUNCTION(atob);
JS_DECLARE_NATIVE_FUNCTION(btoa);
NonnullRefPtr<Window> m_impl;
NonnullRefPtr<DOM::Window> m_impl;
XMLHttpRequestConstructor* m_xhr_constructor { nullptr };
XMLHttpRequestPrototype* m_xhr_prototype { nullptr };

View file

@ -34,7 +34,7 @@ namespace Web {
namespace SelectorEngine {
static bool matches_hover_pseudo_class(const Element& element)
static bool matches_hover_pseudo_class(const DOM::Element& element)
{
auto* hovered_node = element.document().hovered_node();
if (!hovered_node)
@ -44,7 +44,7 @@ static bool matches_hover_pseudo_class(const Element& element)
return element.is_ancestor_of(*hovered_node);
}
bool matches(const Selector::SimpleSelector& component, const Element& element)
bool matches(const Selector::SimpleSelector& component, const DOM::Element& element)
{
switch (component.pseudo_class) {
case Selector::SimpleSelector::PseudoClass::None:
@ -76,7 +76,7 @@ bool matches(const Selector::SimpleSelector& component, const Element& element)
return false;
break;
case Selector::SimpleSelector::PseudoClass::Empty:
if (element.first_child_of_type<Element>() || element.first_child_of_type<Text>())
if (element.first_child_of_type<DOM::Element>() || element.first_child_of_type<DOM::Text>())
return false;
break;
case Selector::SimpleSelector::PseudoClass::Root:
@ -116,7 +116,7 @@ bool matches(const Selector::SimpleSelector& component, const Element& element)
}
}
bool matches(const Selector& selector, int component_list_index, const Element& element)
bool matches(const Selector& selector, int component_list_index, const DOM::Element& element)
{
auto& component_list = selector.complex_selectors()[component_list_index];
for (auto& component : component_list.compound_selector) {
@ -129,17 +129,17 @@ bool matches(const Selector& selector, int component_list_index, const Element&
case Selector::ComplexSelector::Relation::Descendant:
ASSERT(component_list_index != 0);
for (auto* ancestor = element.parent(); ancestor; ancestor = ancestor->parent()) {
if (!is<Element>(*ancestor))
if (!is<DOM::Element>(*ancestor))
continue;
if (matches(selector, component_list_index - 1, downcast<Element>(*ancestor)))
if (matches(selector, component_list_index - 1, downcast<DOM::Element>(*ancestor)))
return true;
}
return false;
case Selector::ComplexSelector::Relation::ImmediateChild:
ASSERT(component_list_index != 0);
if (!element.parent() || !is<Element>(*element.parent()))
if (!element.parent() || !is<DOM::Element>(*element.parent()))
return false;
return matches(selector, component_list_index - 1, downcast<Element>(*element.parent()));
return matches(selector, component_list_index - 1, downcast<DOM::Element>(*element.parent()));
case Selector::ComplexSelector::Relation::AdjacentSibling:
ASSERT(component_list_index != 0);
if (auto* sibling = element.previous_element_sibling())
@ -156,7 +156,7 @@ bool matches(const Selector& selector, int component_list_index, const Element&
ASSERT_NOT_REACHED();
}
bool matches(const Selector& selector, const Element& element)
bool matches(const Selector& selector, const DOM::Element& element)
{
ASSERT(!selector.complex_selectors().is_empty());
return matches(selector, selector.complex_selectors().size() - 1, element);

View file

@ -27,15 +27,10 @@
#pragma once
#include <LibWeb/CSS/Selector.h>
#include <LibWeb/DOM/Element.h>
namespace Web {
namespace Web::SelectorEngine {
class Element;
namespace SelectorEngine {
bool matches(const Selector&, const Element&);
}
bool matches(const Selector&, const DOM::Element&);
}

View file

@ -94,7 +94,7 @@ String StyleProperties::string_or_fallback(CSS::PropertyID id, const StringView&
return value.value()->to_string();
}
Color StyleProperties::color_or_fallback(CSS::PropertyID id, const Document& document, Color fallback) const
Color StyleProperties::color_or_fallback(CSS::PropertyID id, const DOM::Document& document, Color fallback) const
{
auto value = property(id);
if (!value.has_value())

View file

@ -59,7 +59,7 @@ public:
Length length_or_fallback(CSS::PropertyID, const Length& fallback) const;
LengthBox length_box(CSS::PropertyID left_id, CSS::PropertyID top_id, CSS::PropertyID right_id, CSS::PropertyID bottom_id) const;
String string_or_fallback(CSS::PropertyID, const StringView& fallback) const;
Color color_or_fallback(CSS::PropertyID, const Document&, Color fallback) const;
Color color_or_fallback(CSS::PropertyID, const DOM::Document&, Color fallback) const;
CSS::TextAlign text_align() const;
CSS::Display display() const;
Optional<CSS::Float> float_() const;

View file

@ -37,7 +37,7 @@
namespace Web {
StyleResolver::StyleResolver(Document& document)
StyleResolver::StyleResolver(DOM::Document& document)
: m_document(document)
{
}
@ -66,7 +66,7 @@ void StyleResolver::for_each_stylesheet(Callback callback) const
}
}
Vector<MatchingRule> StyleResolver::collect_matching_rules(const Element& element) const
Vector<MatchingRule> StyleResolver::collect_matching_rules(const DOM::Element& element) const
{
Vector<MatchingRule> matching_rules;
@ -203,7 +203,7 @@ static inline void set_property_border_style(StyleProperties& style, const Style
style.set_property(CSS::PropertyID::BorderLeftStyle, value);
}
static void set_property_expanding_shorthands(StyleProperties& style, CSS::PropertyID property_id, const StyleValue& value, Document& document)
static void set_property_expanding_shorthands(StyleProperties& style, CSS::PropertyID property_id, const StyleValue& value, DOM::Document& document)
{
CSS::ParsingContext context(document);
@ -519,7 +519,7 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope
style.set_property(property_id, value);
}
NonnullRefPtr<StyleProperties> StyleResolver::resolve_style(const Element& element, const StyleProperties* parent_style) const
NonnullRefPtr<StyleProperties> StyleResolver::resolve_style(const DOM::Element& element, const StyleProperties* parent_style) const
{
auto style = StyleProperties::create();

View file

@ -29,15 +29,10 @@
#include <AK/NonnullRefPtrVector.h>
#include <AK/OwnPtr.h>
#include <LibWeb/CSS/StyleProperties.h>
#include <LibWeb/Forward.h>
namespace Web {
class Document;
class Element;
class ParentNode;
class StyleRule;
class StyleSheet;
struct MatchingRule {
RefPtr<StyleRule> rule;
size_t style_sheet_index { 0 };
@ -47,15 +42,15 @@ struct MatchingRule {
class StyleResolver {
public:
explicit StyleResolver(Document&);
explicit StyleResolver(DOM::Document&);
~StyleResolver();
Document& document() { return m_document; }
const Document& document() const { return m_document; }
DOM::Document& document() { return m_document; }
const DOM::Document& document() const { return m_document; }
NonnullRefPtr<StyleProperties> resolve_style(const Element&, const StyleProperties* parent_style) const;
NonnullRefPtr<StyleProperties> resolve_style(const DOM::Element&, const StyleProperties* parent_style) const;
Vector<MatchingRule> collect_matching_rules(const Element&) const;
Vector<MatchingRule> collect_matching_rules(const DOM::Element&) const;
static bool is_inherited_property(CSS::PropertyID);
@ -63,7 +58,7 @@ private:
template<typename Callback>
void for_each_stylesheet(Callback) const;
Document& m_document;
DOM::Document& m_document;
};
}

View file

@ -33,7 +33,7 @@ void StyleSheetList::add_sheet(NonnullRefPtr<StyleSheet> sheet)
m_sheets.append(move(sheet));
}
StyleSheetList::StyleSheetList(Document& document)
StyleSheetList::StyleSheetList(DOM::Document& document)
: m_document(document)
{
}

View file

@ -33,7 +33,7 @@ namespace Web::CSS {
class StyleSheetList : public RefCounted<StyleSheetList> {
public:
static NonnullRefPtr<StyleSheetList> create(Document& document)
static NonnullRefPtr<StyleSheetList> create(DOM::Document& document)
{
return adopt(*new StyleSheetList(document));
}
@ -43,9 +43,9 @@ public:
const NonnullRefPtrVector<StyleSheet>& sheets() const { return m_sheets; }
private:
explicit StyleSheetList(Document&);
explicit StyleSheetList(DOM::Document&);
Document& m_document;
DOM::Document& m_document;
NonnullRefPtrVector<StyleSheet> m_sheets;
};

View file

@ -167,7 +167,7 @@ String IdentifierStyleValue::to_string() const
}
}
Color IdentifierStyleValue::to_color(const Document& document) const
Color IdentifierStyleValue::to_color(const DOM::Document& document) const
{
if (id() == CSS::ValueID::VendorSpecificLink)
return document.link_color();
@ -287,7 +287,7 @@ Color IdentifierStyleValue::to_color(const Document& document) const
}
}
ImageStyleValue::ImageStyleValue(const URL& url, Document& document)
ImageStyleValue::ImageStyleValue(const URL& url, DOM::Document& document)
: StyleValue(Type::Image)
, m_url(url)
, m_document(document.make_weak_ptr())

View file

@ -182,7 +182,7 @@ public:
virtual String to_string() const = 0;
virtual Length to_length() const { return Length::make_auto(); }
virtual Color to_color(const Document&) const { return {}; }
virtual Color to_color(const DOM::Document&) const { return {}; }
virtual bool is_auto() const { return false; }
@ -276,7 +276,7 @@ public:
Color color() const { return m_color; }
String to_string() const override { return m_color.to_string(); }
Color to_color(const Document&) const override { return m_color; }
Color to_color(const DOM::Document&) const override { return m_color; }
private:
explicit ColorStyleValue(Color color)
@ -299,7 +299,7 @@ public:
CSS::ValueID id() const { return m_id; }
virtual String to_string() const override;
virtual Color to_color(const Document&) const override;
virtual Color to_color(const DOM::Document&) const override;
private:
explicit IdentifierStyleValue(CSS::ValueID id)
@ -315,7 +315,7 @@ class ImageStyleValue final
: public StyleValue
, public ImageResourceClient {
public:
static NonnullRefPtr<ImageStyleValue> create(const URL& url, Document& document) { return adopt(*new ImageStyleValue(url, document)); }
static NonnullRefPtr<ImageStyleValue> create(const URL& url, DOM::Document& document) { return adopt(*new ImageStyleValue(url, document)); }
virtual ~ImageStyleValue() override { }
String to_string() const override { return String::format("Image{%s}", m_url.to_string().characters()); }
@ -323,13 +323,13 @@ public:
const Gfx::Bitmap* bitmap() const { return m_bitmap; }
private:
ImageStyleValue(const URL&, Document&);
ImageStyleValue(const URL&, DOM::Document&);
// ^ResourceClient
virtual void resource_did_load() override;
URL m_url;
WeakPtr<Document> m_document;
WeakPtr<DOM::Document> m_document;
RefPtr<Gfx::Bitmap> m_bitmap;
};

View file

@ -26,6 +26,7 @@
#include <AK/ByteBuffer.h>
#include <AK/HashMap.h>
#include <AK/LexicalPath.h>
#include <AK/StringBuilder.h>
#include <LibCore/ArgsParser.h>
#include <LibCore/File.h>
@ -108,6 +109,7 @@ struct Interface {
// Added for convenience after parsing
String wrapper_class;
String wrapper_base_class;
String fully_qualified_name;
};
OwnPtr<Interface> parse_interface(const StringView& input)
@ -312,6 +314,9 @@ int main(int argc, char** argv)
return 1;
}
LexicalPath lexical_path(path);
auto namespace_ = lexical_path.parts().at(lexical_path.parts().size() - 2);
auto data = file_or_error.value()->read_all();
auto interface = IDL::parse_interface(data);
@ -320,6 +325,17 @@ int main(int argc, char** argv)
return 1;
}
if (namespace_ == "DOM") {
StringBuilder builder;
builder.append(namespace_);
builder.append("::");
builder.append(interface->name);
interface->fully_qualified_name = builder.to_string();
} else {
interface->fully_qualified_name = interface->name;
}
#if 0
dbg() << "Attributes:";
for (auto& attribute : interface->attributes) {
@ -402,22 +418,21 @@ static void generate_header(const IDL::Interface& interface)
if (wrapper_base_class != "Wrapper")
out() << "#include <LibWeb/Bindings/" << wrapper_base_class << ".h>";
out() << "namespace Web {";
out() << "namespace Bindings {";
out() << "namespace Web::Bindings {";
out() << "class " << wrapper_class << " : public " << wrapper_base_class << " {";
out() << " JS_OBJECT(" << wrapper_class << ", " << wrapper_base_class << ");";
out() << "public:";
out() << " " << wrapper_class << "(JS::GlobalObject&, " << interface.name << "&);";
out() << " " << wrapper_class << "(JS::GlobalObject&, " << interface.fully_qualified_name << "&);";
out() << " virtual void initialize(JS::GlobalObject&) override;";
out() << " virtual ~" << wrapper_class << "() override;";
if (wrapper_base_class == "Wrapper") {
out() << " " << interface.name << "& impl() { return *m_impl; }";
out() << " const " << interface.name << "& impl() const { return *m_impl; }";
out() << " " << interface.fully_qualified_name << "& impl() { return *m_impl; }";
out() << " const " << interface.fully_qualified_name << "& impl() const { return *m_impl; }";
} else {
out() << " " << interface.name << "& impl() { return static_cast<" << interface.name << "&>(" << wrapper_base_class << "::impl()); }";
out() << " const " << interface.name << "& impl() const { return static_cast<const " << interface.name << "&>(" << wrapper_base_class << "::impl()); }";
out() << " " << interface.fully_qualified_name << "& impl() { return static_cast<" << interface.fully_qualified_name << "&>(" << wrapper_base_class << "::impl()); }";
out() << " const " << interface.fully_qualified_name << "& impl() const { return static_cast<const " << interface.fully_qualified_name << "&>(" << wrapper_base_class << "::impl()); }";
}
auto is_foo_wrapper_name = snake_name(String::format("Is%s", wrapper_class.characters()));
@ -436,17 +451,16 @@ static void generate_header(const IDL::Interface& interface)
}
if (wrapper_base_class == "Wrapper") {
out() << " NonnullRefPtr<" << interface.name << "> m_impl;";
out() << " NonnullRefPtr<" << interface.fully_qualified_name << "> m_impl;";
}
out() << "};";
if (should_emit_wrapper_factory(interface)) {
out() << wrapper_class << "* wrap(JS::GlobalObject&, " << interface.name << "&);";
out() << wrapper_class << "* wrap(JS::GlobalObject&, " << interface.fully_qualified_name << "&);";
}
out() << "}";
out() << "}";
}
void generate_implementation(const IDL::Interface& interface)
@ -473,11 +487,17 @@ void generate_implementation(const IDL::Interface& interface)
out() << "#include <LibWeb/Bindings/ImageDataWrapper.h>";
out() << "#include <LibWeb/Bindings/CanvasRenderingContext2DWrapper.h>";
out() << "namespace Web {";
out() << "namespace Bindings {";
// FIXME: This is a total hack until we can figure out the namespace for a given type somehow.
out() << "using Web::DOM::Node;";
out() << "using Web::DOM::Document;";
out() << "using Web::DOM::DocumentType;";
out() << "using Web::DOM::Element;";
out() << "using Web::DOM::EventListener;";
out() << "namespace Web::Bindings {";
// Implementation: Wrapper constructor
out() << wrapper_class << "::" << wrapper_class << "(JS::GlobalObject& global_object, " << interface.name << "& impl)";
out() << wrapper_class << "::" << wrapper_class << "(JS::GlobalObject& global_object, " << interface.fully_qualified_name << "& impl)";
if (wrapper_base_class == "Wrapper") {
out() << " : Wrapper(*global_object.object_prototype())";
out() << " , m_impl(impl)";
@ -510,13 +530,13 @@ void generate_implementation(const IDL::Interface& interface)
// Implementation: impl_from()
if (!interface.attributes.is_empty() || !interface.functions.is_empty()) {
out() << "static " << interface.name << "* impl_from(JS::Interpreter& interpreter, JS::GlobalObject& global_object)";
out() << "static " << interface.fully_qualified_name << "* impl_from(JS::Interpreter& interpreter, JS::GlobalObject& global_object)";
out() << "{";
out() << " auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);";
out() << " if (!this_object)";
out() << " return {};";
out() << " if (!this_object->inherits(\"" << wrapper_class << "\")) {";
out() << " interpreter.throw_exception<JS::TypeError>(JS::ErrorType::NotA, \"" << interface.name << "\");";
out() << " interpreter.throw_exception<JS::TypeError>(JS::ErrorType::NotA, \"" << interface.fully_qualified_name << "\");";
out() << " return nullptr;";
out() << " }";
out() << " return &static_cast<" << wrapper_class << "*>(this_object)->impl();";
@ -676,12 +696,11 @@ void generate_implementation(const IDL::Interface& interface)
// Implementation: Wrapper factory
if (should_emit_wrapper_factory(interface)) {
out() << wrapper_class << "* wrap(JS::GlobalObject& global_object, " << interface.name << "& impl)";
out() << wrapper_class << "* wrap(JS::GlobalObject& global_object, " << interface.fully_qualified_name << "& impl)";
out() << "{";
out() << " return static_cast<" << wrapper_class << "*>(wrap_impl(global_object, impl));";
out() << "}";
}
out() << "}";
out() << "}";
}

View file

@ -26,7 +26,7 @@
#include <LibWeb/DOM/CharacterData.h>
namespace Web {
namespace Web::DOM {
CharacterData::CharacterData(Document& document, NodeType type, const String& data)
: Node(document, type)

View file

@ -29,7 +29,7 @@
#include <AK/String.h>
#include <LibWeb/DOM/Node.h>
namespace Web {
namespace Web::DOM {
class CharacterData : public Node {
public:
@ -49,6 +49,6 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::CharacterData)
static bool is_type(const Web::Node& node) { return node.is_character_data(); }
AK_BEGIN_TYPE_TRAITS(Web::DOM::CharacterData)
static bool is_type(const Web::DOM::Node& node) { return node.is_character_data(); }
AK_END_TYPE_TRAITS()

View file

@ -27,7 +27,7 @@
#include <LibWeb/DOM/Comment.h>
#include <LibWeb/Layout/LayoutText.h>
namespace Web {
namespace Web::DOM {
Comment::Comment(Document& document, const String& data)
: CharacterData(document, NodeType::COMMENT_NODE, data)

View file

@ -29,7 +29,7 @@
#include <AK/FlyString.h>
#include <LibWeb/DOM/CharacterData.h>
namespace Web {
namespace Web::DOM {
class Comment final : public CharacterData {
public:
@ -41,6 +41,6 @@ public:
}
AK_BEGIN_TYPE_TRAITS(Web::Comment)
static bool is_type(const Web::Node& node) { return node.is_comment(); }
AK_BEGIN_TYPE_TRAITS(Web::DOM::Comment)
static bool is_type(const Web::DOM::Node& node) { return node.is_comment(); }
AK_END_TYPE_TRAITS()

View file

@ -59,7 +59,7 @@
#include <LibWeb/SVG/TagNames.h>
#include <stdio.h>
namespace Web {
namespace Web::DOM {
Document::Document(const URL& url)
: ParentNode(*this, NodeType::DOCUMENT_NODE)
@ -433,7 +433,7 @@ JS::Value Document::run_javascript(const StringView& source)
NonnullRefPtr<Element> Document::create_element(const String& tag_name)
{
return Web::create_element(*this, tag_name);
return DOM::create_element(*this, tag_name);
}
NonnullRefPtr<Text> Document::create_text_node(const String& data)

View file

@ -41,7 +41,7 @@
#include <LibWeb/DOM/NonElementParentNode.h>
#include <LibWeb/DOM/ParentNode.h>
namespace Web {
namespace Web::DOM {
enum class QuirksMode {
No,
@ -190,7 +190,6 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::Document)
static bool is_type(const Web::Node& node) { return node.is_document(); }
AK_BEGIN_TYPE_TRAITS(Web::DOM::Document)
static bool is_type(const Web::DOM::Node& node) { return node.is_document(); }
AK_END_TYPE_TRAITS()

View file

@ -30,7 +30,7 @@
#include <LibWeb/DOM/NonElementParentNode.h>
#include <LibWeb/DOM/ParentNode.h>
namespace Web {
namespace Web::DOM {
class DocumentFragment
: public ParentNode
@ -46,6 +46,6 @@ public:
}
AK_BEGIN_TYPE_TRAITS(Web::DocumentFragment)
static bool is_type(const Web::Node& node) { return node.is_document_fragment(); }
AK_BEGIN_TYPE_TRAITS(Web::DOM::DocumentFragment)
static bool is_type(const Web::DOM::Node& node) { return node.is_document_fragment(); }
AK_END_TYPE_TRAITS()

View file

@ -26,7 +26,7 @@
#include <LibWeb/DOM/DocumentType.h>
namespace Web {
namespace Web::DOM {
DocumentType::DocumentType(Document& document)
: Node(document, NodeType::DOCUMENT_TYPE_NODE)

View file

@ -29,7 +29,7 @@
#include <AK/FlyString.h>
#include <LibWeb/DOM/Node.h>
namespace Web {
namespace Web::DOM {
class DocumentType final : public Node {
public:
@ -57,6 +57,6 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::DocumentType)
static bool is_type(const Web::Node& node) { return node.type() == Web::NodeType::DOCUMENT_TYPE_NODE; }
AK_BEGIN_TYPE_TRAITS(Web::DOM::DocumentType)
static bool is_type(const Web::DOM::Node& node) { return node.type() == Web::DOM::NodeType::DOCUMENT_TYPE_NODE; }
AK_END_TYPE_TRAITS()

View file

@ -43,7 +43,7 @@
#include <LibWeb/Layout/LayoutTreeBuilder.h>
#include <LibWeb/Parser/HTMLDocumentParser.h>
namespace Web {
namespace Web::DOM {
Element::Element(Document& document, const FlyString& tag_name)
: ParentNode(document, NodeType::ELEMENT_NODE)

View file

@ -34,9 +34,7 @@
#include <LibWeb/DOM/TagNames.h>
#include <LibWeb/Layout/LayoutNode.h>
namespace Web {
class LayoutNodeWithStyle;
namespace Web::DOM {
class Element : public ParentNode {
public:
@ -101,6 +99,6 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::Element)
static bool is_type(const Web::Node& node) { return node.is_element(); }
AK_BEGIN_TYPE_TRAITS(Web::DOM::Element)
static bool is_type(const Web::DOM::Node& node) { return node.is_element(); }
AK_END_TYPE_TRAITS()

View file

@ -51,7 +51,7 @@
#include <LibWeb/SVG/SVGSVGElement.h>
#include <LibWeb/SVG/TagNames.h>
namespace Web {
namespace Web::DOM {
NonnullRefPtr<Element> create_element(Document& document, const FlyString& tag_name)
{

View file

@ -28,7 +28,7 @@
#include <LibWeb/DOM/Element.h>
namespace Web {
namespace Web::DOM {
NonnullRefPtr<Element> create_element(Document&, const FlyString& tag_name);

View file

@ -29,7 +29,7 @@
#include <AK/FlyString.h>
#include <LibWeb/Bindings/Wrappable.h>
namespace Web {
namespace Web::DOM {
class Event
: public RefCounted<Event>

View file

@ -27,7 +27,7 @@
#include <LibJS/Runtime/Function.h>
#include <LibWeb/DOM/EventListener.h>
namespace Web {
namespace Web::DOM {
JS::Function& EventListener::function()
{

View file

@ -30,7 +30,7 @@
#include <LibJS/Heap/Handle.h>
#include <LibWeb/Bindings/Wrappable.h>
namespace Web {
namespace Web::DOM {
class EventListener
: public RefCounted<EventListener>

View file

@ -27,7 +27,7 @@
#include <LibWeb/DOM/EventListener.h>
#include <LibWeb/DOM/EventTarget.h>
namespace Web {
namespace Web::DOM {
EventTarget::EventTarget()
{

View file

@ -31,7 +31,7 @@
#include <AK/Vector.h>
#include <LibWeb/Forward.h>
namespace Web {
namespace Web::DOM {
class EventTarget {
AK_MAKE_NONCOPYABLE(EventTarget);

View file

@ -28,9 +28,9 @@
#include <LibWeb/DOM/Event.h>
namespace Web {
namespace Web::DOM {
class MouseEvent final : public Event {
class MouseEvent final : public DOM::Event {
public:
using WrapperType = Bindings::MouseEventWrapper;

View file

@ -48,7 +48,7 @@
//#define EVENT_DEBUG
namespace Web {
namespace Web::DOM {
Node::Node(Document& document, NodeType type)
: m_document(&document)

View file

@ -35,7 +35,7 @@
#include <LibWeb/DOM/EventTarget.h>
#include <LibWeb/TreeNode.h>
namespace Web {
namespace Web::DOM {
enum class NodeType : unsigned {
INVALID = 0,
@ -47,15 +47,6 @@ enum class NodeType : unsigned {
DOCUMENT_FRAGMENT_NODE = 11,
};
class Document;
class Element;
class HTMLElement;
class HTMLAnchorElement;
class ParentNode;
class LayoutNode;
class StyleResolver;
class StyleProperties;
class Node
: public TreeNode<Node>
, public EventTarget

View file

@ -31,7 +31,7 @@
#include <LibWeb/Forward.h>
#include <LibWeb/TreeNode.h>
namespace Web {
namespace Web::DOM {
template<typename NodeType>
class NonElementParentNode {

View file

@ -26,7 +26,7 @@
#include <LibWeb/DOM/ParentNode.h>
namespace Web {
namespace Web::DOM {
void ParentNode::remove_all_children()
{

View file

@ -28,7 +28,7 @@
#include <LibWeb/DOM/Node.h>
namespace Web {
namespace Web::DOM {
class ParentNode : public Node {
public:
@ -60,6 +60,6 @@ inline void ParentNode::for_each_child(Callback callback)
}
AK_BEGIN_TYPE_TRAITS(Web::ParentNode)
static bool is_type(const Web::Node& node) { return node.is_parent_node(); }
AK_BEGIN_TYPE_TRAITS(Web::DOM::ParentNode)
static bool is_type(const Web::DOM::Node& node) { return node.is_parent_node(); }
AK_END_TYPE_TRAITS()

View file

@ -27,7 +27,7 @@
#include <LibWeb/DOM/Text.h>
#include <LibWeb/Layout/LayoutText.h>
namespace Web {
namespace Web::DOM {
Text::Text(Document& document, const String& data)
: CharacterData(document, NodeType::TEXT_NODE, data)

View file

@ -30,7 +30,7 @@
#include <AK/String.h>
#include <LibWeb/DOM/CharacterData.h>
namespace Web {
namespace Web::DOM {
class Text final : public CharacterData {
public:
@ -45,6 +45,6 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::Text)
static bool is_type(const Web::Node& node) { return node.is_text(); }
AK_BEGIN_TYPE_TRAITS(Web::DOM::Text)
static bool is_type(const Web::DOM::Node& node) { return node.is_text(); }
AK_END_TYPE_TRAITS()

View file

@ -30,7 +30,7 @@
#include <LibWeb/DOM/Timer.h>
#include <LibWeb/DOM/Window.h>
namespace Web {
namespace Web::DOM {
NonnullRefPtr<Timer> Timer::create_interval(Window& window, int milliseconds, JS::Function& callback)
{

View file

@ -31,7 +31,7 @@
#include <LibJS/Heap/Handle.h>
#include <LibWeb/Forward.h>
namespace Web {
namespace Web::DOM {
class Timer final : public RefCounted<Timer> {
public:

View file

@ -35,7 +35,7 @@
#include <LibWeb/Frame/Frame.h>
#include <LibWeb/PageView.h>
namespace Web {
namespace Web::DOM {
NonnullRefPtr<Window> Window::create_with_document(Document& document)
{

View file

@ -33,7 +33,7 @@
#include <LibWeb/Bindings/WindowObject.h>
#include <LibWeb/Bindings/Wrappable.h>
namespace Web {
namespace Web::DOM {
class Window : public RefCounted<Window> {
public:

View file

@ -38,7 +38,7 @@
namespace Web {
XMLHttpRequest::XMLHttpRequest(Window& window)
XMLHttpRequest::XMLHttpRequest(DOM::Window& window)
: m_window(window)
{
}
@ -78,22 +78,22 @@ void XMLHttpRequest::send()
return;
const_cast<XMLHttpRequest&>(*weak_this).m_response = data;
const_cast<XMLHttpRequest&>(*weak_this).set_ready_state(ReadyState::Done);
const_cast<XMLHttpRequest&>(*weak_this).dispatch_event(Event::create("load"));
const_cast<XMLHttpRequest&>(*weak_this).dispatch_event(DOM::Event::create("load"));
},
[weak_this = make_weak_ptr()](auto& error) {
if (!weak_this)
return;
dbg() << "XHR failed to load: " << error;
const_cast<XMLHttpRequest&>(*weak_this).set_ready_state(ReadyState::Done);
const_cast<XMLHttpRequest&>(*weak_this).dispatch_event(Event::create("error"));
const_cast<XMLHttpRequest&>(*weak_this).dispatch_event(DOM::Event::create("error"));
});
}
void XMLHttpRequest::dispatch_event(NonnullRefPtr<Event> event)
void XMLHttpRequest::dispatch_event(NonnullRefPtr<DOM::Event> event)
{
for (auto& listener : listeners()) {
if (listener.event_name == event->type()) {
auto& function = const_cast<EventListener&>(*listener.listener).function();
auto& function = const_cast<DOM::EventListener&>(*listener.listener).function();
auto& global_object = function.global_object();
auto* this_value = wrap(global_object, *this);
JS::MarkedValueList arguments(global_object.heap());

View file

@ -37,7 +37,7 @@ namespace Web {
class XMLHttpRequest final
: public RefCounted<XMLHttpRequest>
, public Weakable<XMLHttpRequest>
, public EventTarget
, public DOM::EventTarget
, public Bindings::Wrappable {
public:
enum class ReadyState {
@ -50,7 +50,7 @@ public:
using WrapperType = Bindings::XMLHttpRequestWrapper;
static NonnullRefPtr<XMLHttpRequest> create(Window& window) { return adopt(*new XMLHttpRequest(window)); }
static NonnullRefPtr<XMLHttpRequest> create(DOM::Window& window) { return adopt(*new XMLHttpRequest(window)); }
virtual ~XMLHttpRequest() override;
@ -65,13 +65,13 @@ public:
private:
virtual void ref_event_target() override { ref(); }
virtual void unref_event_target() override { unref(); }
virtual void dispatch_event(NonnullRefPtr<Event>) override;
virtual void dispatch_event(NonnullRefPtr<DOM::Event>) override;
void set_ready_state(ReadyState);
explicit XMLHttpRequest(Window&);
explicit XMLHttpRequest(DOM::Window&);
NonnullRefPtr<Window> m_window;
NonnullRefPtr<DOM::Window> m_window;
ReadyState m_ready_state { ReadyState::Unsent };

View file

@ -34,7 +34,7 @@
namespace Web {
DOMTreeModel::DOMTreeModel(Document& document)
DOMTreeModel::DOMTreeModel(DOM::Document& document)
: m_document(document)
{
m_document_icon.set_bitmap_for_size(16, Gfx::Bitmap::load_from_file("/res/icons/16x16/filetype-html.png"));
@ -51,7 +51,7 @@ GUI::ModelIndex DOMTreeModel::index(int row, int column, const GUI::ModelIndex&
if (!parent.is_valid()) {
return create_index(row, column, m_document.ptr());
}
auto& parent_node = *static_cast<Node*>(parent.internal_data());
auto& parent_node = *static_cast<DOM::Node*>(parent.internal_data());
return create_index(row, column, parent_node.child_at_index(row));
}
@ -59,7 +59,7 @@ GUI::ModelIndex DOMTreeModel::parent_index(const GUI::ModelIndex& index) const
{
if (!index.is_valid())
return {};
auto& node = *static_cast<Node*>(index.internal_data());
auto& node = *static_cast<DOM::Node*>(index.internal_data());
if (!node.parent())
return {};
@ -85,7 +85,7 @@ int DOMTreeModel::row_count(const GUI::ModelIndex& index) const
{
if (!index.is_valid())
return 1;
auto& node = *static_cast<Node*>(index.internal_data());
auto& node = *static_cast<DOM::Node*>(index.internal_data());
return node.child_count();
}
@ -117,7 +117,7 @@ static String with_whitespace_collapsed(const StringView& string)
GUI::Variant DOMTreeModel::data(const GUI::ModelIndex& index, Role role) const
{
auto& node = *static_cast<Node*>(index.internal_data());
auto& node = *static_cast<DOM::Node*>(index.internal_data());
if (role == Role::Icon) {
if (node.is_document())
return m_document_icon;
@ -128,10 +128,10 @@ GUI::Variant DOMTreeModel::data(const GUI::ModelIndex& index, Role role) const
}
if (role == Role::Display) {
if (node.is_text())
return String::format("%s", with_whitespace_collapsed(downcast<Text>(node).data()).characters());
return String::format("%s", with_whitespace_collapsed(downcast<DOM::Text>(node).data()).characters());
if (!node.is_element())
return node.node_name();
auto& element = downcast<Element>(node);
auto& element = downcast<DOM::Element>(node);
StringBuilder builder;
builder.append('<');
builder.append(element.local_name());

View file

@ -27,14 +27,13 @@
#pragma once
#include <LibGUI/Model.h>
#include <LibWeb/Forward.h>
namespace Web {
class Document;
class DOMTreeModel final : public GUI::Model {
public:
static NonnullRefPtr<DOMTreeModel> create(Document& document)
static NonnullRefPtr<DOMTreeModel> create(DOM::Document& document)
{
return adopt(*new DOMTreeModel(document));
}
@ -49,9 +48,9 @@ public:
virtual void update() override;
private:
explicit DOMTreeModel(Document&);
explicit DOMTreeModel(DOM::Document&);
NonnullRefPtr<Document> m_document;
NonnullRefPtr<DOM::Document> m_document;
GUI::Icon m_document_icon;
GUI::Icon m_element_icon;

View file

@ -43,31 +43,31 @@
namespace Web {
void dump_tree(const Node& node)
void dump_tree(const DOM::Node& node)
{
static int indent = 0;
for (int i = 0; i < indent; ++i)
dbgprintf(" ");
if (is<Document>(node)) {
if (is<DOM::Document>(node)) {
dbgprintf("*Document*\n");
} else if (is<Element>(node)) {
dbgprintf("<%s", downcast<Element>(node).local_name().characters());
downcast<Element>(node).for_each_attribute([](auto& name, auto& value) {
} else if (is<DOM::Element>(node)) {
dbgprintf("<%s", downcast<DOM::Element>(node).local_name().characters());
downcast<DOM::Element>(node).for_each_attribute([](auto& name, auto& value) {
dbgprintf(" %s=%s", name.characters(), value.characters());
});
dbgprintf(">\n");
} else if (is<Text>(node)) {
dbgprintf("\"%s\"\n", static_cast<const Text&>(node).data().characters());
} else if (is<DocumentType>(node)) {
} else if (is<DOM::Text>(node)) {
dbgprintf("\"%s\"\n", downcast<DOM::Text>(node).data().characters());
} else if (is<DOM::DocumentType>(node)) {
dbgprintf("<!DOCTYPE html>\n");
} else if (is<Comment>(node)) {
dbgprintf("<!--%s-->\n", downcast<Comment>(node).data().characters());
} else if (is<DocumentFragment>(node)) {
} else if (is<DOM::Comment>(node)) {
dbgprintf("<!--%s-->\n", downcast<DOM::Comment>(node).data().characters());
} else if (is<DOM::DocumentFragment>(node)) {
dbgprintf("#document-fragment\n");
}
++indent;
if (is<ParentNode>(node)) {
static_cast<const ParentNode&>(node).for_each_child([](auto& child) {
if (is<DOM::ParentNode>(node)) {
static_cast<const DOM::ParentNode&>(node).for_each_child([](auto& child) {
dump_tree(child);
});
}
@ -83,18 +83,18 @@ void dump_tree(const LayoutNode& layout_node)
FlyString tag_name;
if (layout_node.is_anonymous())
tag_name = "(anonymous)";
else if (is<Text>(layout_node.node()))
else if (is<DOM::Text>(layout_node.node()))
tag_name = "#text";
else if (is<Document>(layout_node.node()))
else if (is<DOM::Document>(layout_node.node()))
tag_name = "#document";
else if (is<Element>(layout_node.node()))
tag_name = downcast<Element>(*layout_node.node()).local_name();
else if (is<DOM::Element>(layout_node.node()))
tag_name = downcast<DOM::Element>(*layout_node.node()).local_name();
else
tag_name = "???";
String identifier = "";
if (layout_node.node() && is<Element>(*layout_node.node())) {
auto& element = downcast<Element>(*layout_node.node());
if (layout_node.node() && is<DOM::Element>(*layout_node.node())) {
auto& element = downcast<DOM::Element>(*layout_node.node());
StringBuilder builder;
auto id = element.attribute(HTML::AttributeNames::id);
if (!id.is_empty()) {

View file

@ -30,7 +30,7 @@
namespace Web {
void dump_tree(const Node&);
void dump_tree(const DOM::Node&);
void dump_tree(const LayoutNode&);
void dump_sheet(const StyleSheet&);
void dump_rule(const StyleRule&);

View file

@ -26,9 +26,7 @@
#pragma once
namespace Web {
class CanvasRenderingContext2D;
namespace Web::DOM {
class Document;
class DocumentType;
class Element;
@ -36,7 +34,19 @@ class Event;
class EventHandler;
class EventListener;
class EventTarget;
class MouseEvent;
class Node;
class ParentNode;
class Text;
class Timer;
class Window;
enum class QuirksMode;
}
namespace Web {
class CanvasRenderingContext2D;
class Frame;
class HTMLAnchorElement;
class HTMLBodyElement;
class HTMLCanvasElement;
class HTMLDocumentParser;
@ -46,35 +56,29 @@ class HTMLHeadElement;
class HTMLHtmlElement;
class HTMLImageElement;
class HTMLScriptElement;
class PageView;
class ImageData;
class LineBox;
class LineBoxFragment;
class LayoutBlock;
class LayoutDocument;
class LayoutNode;
class LayoutNodeWithStyle;
class LayoutReplaced;
class LineBox;
class LineBoxFragment;
class LoadRequest;
class MouseEvent;
class Node;
class Origin;
class Page;
class PageClient;
class PageView;
class PaintContext;
class Resource;
class ResourceLoader;
class Selector;
class StackingContext;
class StyleProperties;
class StyleResolver;
class StyleRule;
class StyleSheet;
class Text;
class Timer;
class Window;
class XMLHttpRequest;
enum class QuirksMode;
}
namespace Web::Bindings {

View file

@ -78,14 +78,14 @@ bool EventHandler::handle_mouseup(const Gfx::IntPoint& position, unsigned button
auto result = layout_root()->hit_test(position);
if (result.layout_node && result.layout_node->node()) {
RefPtr<Node> node = result.layout_node->node();
RefPtr<DOM::Node> node = result.layout_node->node();
if (is<HTMLIFrameElement>(*node)) {
if (auto* subframe = downcast<HTMLIFrameElement>(*node).hosted_frame())
return subframe->event_handler().handle_mouseup(position.translated(compute_mouse_event_offset({}, *result.layout_node)), button, modifiers);
return false;
}
auto offset = compute_mouse_event_offset(position, *result.layout_node);
node->dispatch_event(MouseEvent::create("mouseup", offset.x(), offset.y()));
node->dispatch_event(DOM::MouseEvent::create("mouseup", offset.x(), offset.y()));
handled_event = true;
}
@ -107,7 +107,7 @@ bool EventHandler::handle_mousedown(const Gfx::IntPoint& position, unsigned butt
if (!result.layout_node)
return false;
RefPtr<Node> node = result.layout_node->node();
RefPtr<DOM::Node> node = result.layout_node->node();
document->set_hovered_node(node);
if (!node)
return false;
@ -119,7 +119,7 @@ bool EventHandler::handle_mousedown(const Gfx::IntPoint& position, unsigned butt
}
auto offset = compute_mouse_event_offset(position, *result.layout_node);
node->dispatch_event(MouseEvent::create("mousedown", offset.x(), offset.y()));
node->dispatch_event(DOM::MouseEvent::create("mousedown", offset.x(), offset.y()));
if (!layout_root())
return true;
@ -173,7 +173,7 @@ bool EventHandler::handle_mousemove(const Gfx::IntPoint& position, unsigned butt
auto result = layout_root()->hit_test(position);
const HTMLAnchorElement* hovered_link_element = nullptr;
if (result.layout_node) {
RefPtr<Node> node = result.layout_node->node();
RefPtr<DOM::Node> node = result.layout_node->node();
if (node && is<HTMLIFrameElement>(*node)) {
if (auto* subframe = downcast<HTMLIFrameElement>(*node).hosted_frame())
@ -192,7 +192,7 @@ bool EventHandler::handle_mousemove(const Gfx::IntPoint& position, unsigned butt
is_hovering_link = true;
}
auto offset = compute_mouse_event_offset(position, *result.layout_node);
node->dispatch_event(MouseEvent::create("mousemove", offset.x(), offset.y()));
node->dispatch_event(DOM::MouseEvent::create("mousemove", offset.x(), offset.y()));
if (!layout_root())
return true;
}

View file

@ -33,7 +33,7 @@
namespace Web {
Frame::Frame(Element& host_element, Frame& main_frame)
Frame::Frame(DOM::Element& host_element, Frame& main_frame)
: m_page(main_frame.page())
, m_main_frame(main_frame)
, m_loader(*this)
@ -54,7 +54,7 @@ Frame::~Frame()
{
}
void Frame::set_document(Document* document)
void Frame::set_document(DOM::Document* document)
{
if (m_document == document)
return;

View file

@ -41,16 +41,16 @@ namespace Web {
class Frame : public TreeNode<Frame> {
public:
static NonnullRefPtr<Frame> create_subframe(Element& host_element, Frame& main_frame) { return adopt(*new Frame(host_element, main_frame)); }
static NonnullRefPtr<Frame> create_subframe(DOM::Element& host_element, Frame& main_frame) { return adopt(*new Frame(host_element, main_frame)); }
static NonnullRefPtr<Frame> create(Page& page) { return adopt(*new Frame(page)); }
~Frame();
bool is_main_frame() const { return this == &m_main_frame; }
const Document* document() const { return m_document; }
Document* document() { return m_document; }
const DOM::Document* document() const { return m_document; }
DOM::Document* document() { return m_document; }
void set_document(Document*);
void set_document(DOM::Document*);
Page& page() { return m_page; }
const Page& page() const { return m_page; }
@ -77,15 +77,15 @@ public:
Frame& main_frame() { return m_main_frame; }
const Frame& main_frame() const { return m_main_frame; }
Element* host_element() { return m_host_element; }
const Element* host_element() const { return m_host_element; }
DOM::Element* host_element() { return m_host_element; }
const DOM::Element* host_element() const { return m_host_element; }
Gfx::IntPoint to_main_frame_position(const Gfx::IntPoint&);
Gfx::IntRect to_main_frame_rect(const Gfx::IntRect&);
private:
explicit Frame(Element& host_element, Frame& main_frame);
explicit Frame(DOM::Element& host_element, Frame& main_frame);
explicit Frame(Page&);
Page& m_page;
@ -94,8 +94,8 @@ private:
FrameLoader m_loader;
EventHandler m_event_handler;
WeakPtr<Element> m_host_element;
RefPtr<Document> m_document;
WeakPtr<DOM::Element> m_host_element;
RefPtr<DOM::Document> m_document;
Gfx::IntSize m_size;
Gfx::IntRect m_viewport_rect;
};

View file

@ -28,7 +28,7 @@
namespace Web {
HTMLAnchorElement::HTMLAnchorElement(Document& document, const FlyString& tag_name)
HTMLAnchorElement::HTMLAnchorElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}

View file

@ -32,7 +32,7 @@ namespace Web {
class HTMLAnchorElement : public HTMLElement {
public:
HTMLAnchorElement(Document&, const FlyString& local_name);
HTMLAnchorElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLAnchorElement() override;
String href() const { return attribute(HTML::AttributeNames::href); }
@ -42,5 +42,5 @@ public:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLAnchorElement)
static bool is_type(const Web::Node& node) { return node.is_element() && downcast<Web::Element>(node).local_name() == Web::HTML::TagNames::a; }
static bool is_type(const Web::DOM::Node& node) { return node.is_element() && downcast<Web::DOM::Element>(node).local_name() == Web::HTML::TagNames::a; }
AK_END_TYPE_TRAITS()

View file

@ -29,7 +29,7 @@
namespace Web {
HTMLBRElement::HTMLBRElement(Document& document, const FlyString& tag_name)
HTMLBRElement::HTMLBRElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}

View file

@ -32,7 +32,7 @@ namespace Web {
class HTMLBRElement final : public HTMLElement {
public:
HTMLBRElement(Document&, const FlyString& local_name);
HTMLBRElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLBRElement() override;
virtual RefPtr<LayoutNode> create_layout_node(const StyleProperties* parent_style) override;
@ -41,5 +41,5 @@ public:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLBRElement)
static bool is_type(const Web::Node& node) { return node.is_element() && downcast<Web::Element>(node).local_name() == Web::HTML::TagNames::br; }
static bool is_type(const Web::DOM::Node& node) { return node.is_element() && downcast<Web::DOM::Element>(node).local_name() == Web::HTML::TagNames::br; }
AK_END_TYPE_TRAITS()

View file

@ -32,7 +32,7 @@
namespace Web {
HTMLBlinkElement::HTMLBlinkElement(Document& document, const FlyString& tag_name)
HTMLBlinkElement::HTMLBlinkElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
, m_timer(Core::Timer::construct())
{

View file

@ -33,7 +33,7 @@ namespace Web {
class HTMLBlinkElement : public HTMLElement {
public:
HTMLBlinkElement(Document&, const FlyString& local_name);
HTMLBlinkElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLBlinkElement() override;
private:
@ -45,5 +45,5 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLBlinkElement)
static bool is_type(const Web::Node& node) { return node.is_element() && downcast<Web::Element>(node).local_name() == Web::HTML::TagNames::blink; }
static bool is_type(const Web::DOM::Node& node) { return node.is_element() && downcast<Web::DOM::Element>(node).local_name() == Web::HTML::TagNames::blink; }
AK_END_TYPE_TRAITS()

View file

@ -31,7 +31,7 @@
namespace Web {
HTMLBodyElement::HTMLBodyElement(Document& document, const FlyString& tag_name)
HTMLBodyElement::HTMLBodyElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}
@ -74,7 +74,7 @@ void HTMLBodyElement::parse_attribute(const FlyString& name, const String& value
if (color.has_value())
document().set_visited_link_color(color.value());
} else if (name.equals_ignoring_case("background")) {
m_background_style_value = ImageStyleValue::create(document().complete_url(value), const_cast<Document&>(document()));
m_background_style_value = ImageStyleValue::create(document().complete_url(value), const_cast<DOM::Document&>(document()));
}
}

View file

@ -32,7 +32,7 @@ namespace Web {
class HTMLBodyElement : public HTMLElement {
public:
HTMLBodyElement(Document&, const FlyString& local_name);
HTMLBodyElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLBodyElement() override;
virtual void parse_attribute(const FlyString&, const String&) override;
@ -45,5 +45,5 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLBodyElement)
static bool is_type(const Web::Node& node) { return node.is_element() && downcast<Web::Element>(node).local_name() == Web::HTML::TagNames::body; }
static bool is_type(const Web::DOM::Node& node) { return node.is_element() && downcast<Web::DOM::Element>(node).local_name() == Web::HTML::TagNames::body; }
AK_END_TYPE_TRAITS()

View file

@ -36,7 +36,7 @@ namespace Web {
static constexpr auto max_canvas_area = 16384 * 16384;
HTMLCanvasElement::HTMLCanvasElement(Document& document, const FlyString& tag_name)
HTMLCanvasElement::HTMLCanvasElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}

View file

@ -38,7 +38,7 @@ class HTMLCanvasElement : public HTMLElement {
public:
using WrapperType = Bindings::HTMLCanvasElementWrapper;
HTMLCanvasElement(Document&, const FlyString& local_name);
HTMLCanvasElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLCanvasElement() override;
const Gfx::Bitmap* bitmap() const { return m_bitmap; }
@ -60,5 +60,5 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLCanvasElement)
static bool is_type(const Web::Node& node) { return node.is_element() && downcast<Web::Element>(node).local_name() == Web::HTML::TagNames::canvas; }
static bool is_type(const Web::DOM::Node& node) { return node.is_element() && downcast<Web::DOM::Element>(node).local_name() == Web::HTML::TagNames::canvas; }
AK_END_TYPE_TRAITS()

View file

@ -28,7 +28,7 @@
namespace Web {
HTMLElement::HTMLElement(Document& document, const FlyString& tag_name)
HTMLElement::HTMLElement(DOM::Document& document, const FlyString& tag_name)
: Element(document, tag_name)
{
}

View file

@ -30,11 +30,11 @@
namespace Web {
class HTMLElement : public Element {
class HTMLElement : public DOM::Element {
public:
using WrapperType = Bindings::HTMLElementWrapper;
HTMLElement(Document&, const FlyString& local_name);
HTMLElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLElement() override;
String title() const { return attribute(HTML::AttributeNames::title); }
@ -46,5 +46,5 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLElement)
static bool is_type(const Web::Node& node) { return node.is_html_element(); }
static bool is_type(const Web::DOM::Node& node) { return node.is_html_element(); }
AK_END_TYPE_TRAITS()

View file

@ -30,7 +30,7 @@
namespace Web {
HTMLFontElement::HTMLFontElement(Document& document, const FlyString& tag_name)
HTMLFontElement::HTMLFontElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}

View file

@ -32,7 +32,7 @@ namespace Web {
class HTMLFontElement : public HTMLElement {
public:
HTMLFontElement(Document&, const FlyString& local_name);
HTMLFontElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLFontElement() override;
virtual void apply_presentational_hints(StyleProperties&) const override;
@ -41,5 +41,5 @@ public:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLFontElement)
static bool is_type(const Web::Node& node) { return node.is_element() && downcast<Web::Element>(node).local_name() == Web::HTML::TagNames::font; }
static bool is_type(const Web::DOM::Node& node) { return node.is_element() && downcast<Web::DOM::Element>(node).local_name() == Web::HTML::TagNames::font; }
AK_END_TYPE_TRAITS()

View file

@ -33,7 +33,7 @@
namespace Web {
HTMLFormElement::HTMLFormElement(Document& document, const FlyString& tag_name)
HTMLFormElement::HTMLFormElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}

View file

@ -33,7 +33,7 @@ namespace Web {
class HTMLFormElement : public HTMLElement {
public:
HTMLFormElement(Document&, const FlyString& local_name);
HTMLFormElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLFormElement() override;
String action() const { return attribute(HTML::AttributeNames::action); }
@ -45,5 +45,5 @@ public:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLFormElement)
static bool is_type(const Web::Node& node) { return node.is_html_element() && downcast<Web::HTMLElement>(node).local_name() == Web::HTML::TagNames::form; }
static bool is_type(const Web::DOM::Node& node) { return node.is_html_element() && downcast<Web::HTMLElement>(node).local_name() == Web::HTML::TagNames::form; }
AK_END_TYPE_TRAITS()

View file

@ -28,7 +28,7 @@
namespace Web {
HTMLHRElement::HTMLHRElement(Document& document, const FlyString& tag_name)
HTMLHRElement::HTMLHRElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}

View file

@ -32,12 +32,12 @@ namespace Web {
class HTMLHRElement : public HTMLElement {
public:
HTMLHRElement(Document&, const FlyString& local_name);
HTMLHRElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLHRElement() override;
};
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLHRElement)
static bool is_type(const Web::Node& node) { return node.is_html_element() && downcast<Web::HTMLElement>(node).local_name() == Web::HTML::TagNames::hr; }
static bool is_type(const Web::DOM::Node& node) { return node.is_html_element() && downcast<Web::HTMLElement>(node).local_name() == Web::HTML::TagNames::hr; }
AK_END_TYPE_TRAITS()

View file

@ -28,7 +28,7 @@
namespace Web {
HTMLHeadElement::HTMLHeadElement(Document& document, const FlyString& tag_name)
HTMLHeadElement::HTMLHeadElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}

View file

@ -32,12 +32,12 @@ namespace Web {
class HTMLHeadElement : public HTMLElement {
public:
HTMLHeadElement(Document&, const FlyString& local_name);
HTMLHeadElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLHeadElement() override;
};
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLHeadElement)
static bool is_type(const Web::Node& node) { return node.is_element() && downcast<Web::Element>(node).local_name() == Web::HTML::TagNames::head; }
static bool is_type(const Web::DOM::Node& node) { return node.is_element() && downcast<Web::DOM::Element>(node).local_name() == Web::HTML::TagNames::head; }
AK_END_TYPE_TRAITS()

View file

@ -28,7 +28,7 @@
namespace Web {
HTMLHeadingElement::HTMLHeadingElement(Document& document, const FlyString& tag_name)
HTMLHeadingElement::HTMLHeadingElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}

View file

@ -32,7 +32,7 @@ namespace Web {
class HTMLHeadingElement : public HTMLElement {
public:
HTMLHeadingElement(Document&, const FlyString& local_name);
HTMLHeadingElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLHeadingElement() override;
};

View file

@ -28,7 +28,7 @@
namespace Web {
HTMLHtmlElement::HTMLHtmlElement(Document& document, const FlyString& tag_name)
HTMLHtmlElement::HTMLHtmlElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}

View file

@ -32,12 +32,12 @@ namespace Web {
class HTMLHtmlElement : public HTMLElement {
public:
HTMLHtmlElement(Document&, const FlyString& local_name);
HTMLHtmlElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLHtmlElement() override;
};
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLHtmlElement)
static bool is_type(const Web::Node& node) { return node.is_html_element() && downcast<Web::HTMLElement>(node).local_name() == Web::HTML::TagNames::html; }
static bool is_type(const Web::DOM::Node& node) { return node.is_html_element() && downcast<Web::HTMLElement>(node).local_name() == Web::HTML::TagNames::html; }
AK_END_TYPE_TRAITS()

View file

@ -41,7 +41,7 @@
namespace Web {
HTMLIFrameElement::HTMLIFrameElement(Document& document, const FlyString& tag_name)
HTMLIFrameElement::HTMLIFrameElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}
@ -82,7 +82,7 @@ void HTMLIFrameElement::load_src(const String& value)
m_hosted_frame->loader().load(url, FrameLoader::Type::IFrame);
}
const Document* HTMLIFrameElement::hosted_document() const
const DOM::Document* HTMLIFrameElement::hosted_document() const
{
return m_hosted_frame ? m_hosted_frame->document() : nullptr;
}

View file

@ -32,7 +32,7 @@ namespace Web {
class HTMLIFrameElement final : public HTMLElement {
public:
HTMLIFrameElement(Document&, const FlyString& local_name);
HTMLIFrameElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLIFrameElement() override;
virtual RefPtr<LayoutNode> create_layout_node(const StyleProperties* parent_style) override;
@ -40,7 +40,7 @@ public:
Frame* hosted_frame() { return m_hosted_frame; }
const Frame* hosted_frame() const { return m_hosted_frame; }
const Document* hosted_document() const;
const DOM::Document* hosted_document() const;
private:
virtual void document_did_attach_to_frame(Frame&) override;
@ -54,5 +54,5 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLIFrameElement)
static bool is_type(const Web::Node& node) { return node.is_html_element() && downcast<Web::HTMLElement>(node).local_name() == Web::HTML::TagNames::iframe; }
static bool is_type(const Web::DOM::Node& node) { return node.is_html_element() && downcast<Web::HTMLElement>(node).local_name() == Web::HTML::TagNames::iframe; }
AK_END_TYPE_TRAITS()

View file

@ -37,18 +37,18 @@
namespace Web {
HTMLImageElement::HTMLImageElement(Document& document, const FlyString& tag_name)
HTMLImageElement::HTMLImageElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
m_image_loader.on_load = [this] {
this->document().update_layout();
dispatch_event(Event::create("load"));
dispatch_event(DOM::Event::create("load"));
};
m_image_loader.on_fail = [this] {
dbg() << "HTMLImageElement: Resource did fail: " << this->src();
this->document().update_layout();
dispatch_event(Event::create("error"));
dispatch_event(DOM::Event::create("error"));
};
m_image_loader.on_animate = [this] {

View file

@ -40,7 +40,7 @@ class HTMLImageElement final : public HTMLElement {
public:
using WrapperType = Bindings::HTMLImageElementWrapper;
HTMLImageElement(Document&, const FlyString& local_name);
HTMLImageElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLImageElement() override;
virtual void parse_attribute(const FlyString& name, const String& value) override;
@ -63,5 +63,5 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLImageElement)
static bool is_type(const Web::Node& node) { return node.is_element() && downcast<Web::Element>(node).local_name() == Web::HTML::TagNames::img; }
static bool is_type(const Web::DOM::Node& node) { return node.is_element() && downcast<Web::DOM::Element>(node).local_name() == Web::HTML::TagNames::img; }
AK_END_TYPE_TRAITS()

View file

@ -37,7 +37,7 @@
namespace Web {
HTMLInputElement::HTMLInputElement(Document& document, const FlyString& tag_name)
HTMLInputElement::HTMLInputElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}
@ -76,7 +76,7 @@ RefPtr<LayoutNode> HTMLInputElement::create_layout_node(const StyleProperties* p
int text_width = Gfx::Font::default_font().width(value());
button.set_relative_rect(0, 0, text_width + 20, 20);
button.on_click = [this](auto) {
const_cast<HTMLInputElement*>(this)->dispatch_event(Event::create("click"));
const_cast<HTMLInputElement*>(this)->dispatch_event(DOM::Event::create("click"));
};
widget = button;
} else {

View file

@ -32,7 +32,7 @@ namespace Web {
class HTMLInputElement : public HTMLElement {
public:
HTMLInputElement(Document&, const FlyString& local_name);
HTMLInputElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLInputElement() override;
virtual RefPtr<LayoutNode> create_layout_node(const StyleProperties* parent_style) override;
@ -45,5 +45,5 @@ public:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLInputElement)
static bool is_type(const Web::Node& node) { return node.is_html_element() && downcast<Web::HTMLElement>(node).local_name() == Web::HTML::TagNames::input; }
static bool is_type(const Web::DOM::Node& node) { return node.is_html_element() && downcast<Web::HTMLElement>(node).local_name() == Web::HTML::TagNames::input; }
AK_END_TYPE_TRAITS()

View file

@ -34,7 +34,7 @@
namespace Web {
HTMLLinkElement::HTMLLinkElement(Document& document, const FlyString& tag_name)
HTMLLinkElement::HTMLLinkElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
}

View file

@ -35,7 +35,7 @@ class HTMLLinkElement final
: public HTMLElement
, public ResourceClient {
public:
HTMLLinkElement(Document&, const FlyString& local_name);
HTMLLinkElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLLinkElement() override;
virtual void inserted_into(Node&) override;
@ -67,5 +67,5 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLLinkElement)
static bool is_type(const Web::Node& node) { return node.is_html_element() && downcast<Web::HTMLElement>(node).local_name() == Web::HTML::TagNames::link; }
static bool is_type(const Web::DOM::Node& node) { return node.is_html_element() && downcast<Web::HTMLElement>(node).local_name() == Web::HTML::TagNames::link; }
AK_END_TYPE_TRAITS()

View file

@ -35,7 +35,7 @@
namespace Web {
HTMLObjectElement::HTMLObjectElement(Document& document, const FlyString& tag_name)
HTMLObjectElement::HTMLObjectElement(DOM::Document& document, const FlyString& tag_name)
: HTMLElement(document, tag_name)
{
m_image_loader.on_load = [this] {

View file

@ -37,7 +37,7 @@ class LayoutDocument;
class HTMLObjectElement final : public HTMLElement {
public:
HTMLObjectElement(Document&, const FlyString& local_name);
HTMLObjectElement(DOM::Document&, const FlyString& local_name);
virtual ~HTMLObjectElement() override;
virtual void parse_attribute(const FlyString& name, const String& value) override;
@ -55,5 +55,5 @@ private:
}
AK_BEGIN_TYPE_TRAITS(Web::HTMLObjectElement)
static bool is_type(const Web::Node& node) { return node.is_element() && downcast<Web::Element>(node).local_name() == Web::HTML::TagNames::object; }
static bool is_type(const Web::DOM::Node& node) { return node.is_element() && downcast<Web::DOM::Element>(node).local_name() == Web::HTML::TagNames::object; }
AK_END_TYPE_TRAITS()

Some files were not shown because too many files have changed in this diff Show more