mirror of
https://github.com/RGBCube/serenity
synced 2025-05-28 22:25:07 +00:00

You can now pass a file:/// URL to HtmlView and it will take care of the loading logic for you. Each Document remembers the URL it was loaded from, which allows us to also have reload(). This patch also adds a very simple function for resolving relative URL's into absolute ones.
63 lines
1.6 KiB
C++
63 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <AK/NonnullRefPtrVector.h>
|
|
#include <AK/OwnPtr.h>
|
|
#include <AK/String.h>
|
|
#include <AK/URL.h>
|
|
#include <AK/WeakPtr.h>
|
|
#include <LibHTML/CSS/StyleResolver.h>
|
|
#include <LibHTML/CSS/StyleSheet.h>
|
|
#include <LibHTML/DOM/ParentNode.h>
|
|
|
|
class Frame;
|
|
class HTMLBodyElement;
|
|
class HTMLHtmlElement;
|
|
class HTMLHeadElement;
|
|
class LayoutNode;
|
|
class StyleResolver;
|
|
class StyleSheet;
|
|
|
|
class Document : public ParentNode {
|
|
public:
|
|
Document();
|
|
virtual ~Document() override;
|
|
|
|
void set_url(const URL& url) { m_url = url; }
|
|
const URL& url() const { return m_url; }
|
|
|
|
URL complete_url(const String&) const;
|
|
|
|
void normalize();
|
|
|
|
StyleResolver& style_resolver();
|
|
|
|
void add_sheet(const StyleSheet& sheet) { m_sheets.append(sheet); }
|
|
const NonnullRefPtrVector<StyleSheet>& stylesheets() const { return m_sheets; }
|
|
|
|
virtual String tag_name() const override { return "#document"; }
|
|
|
|
void set_hovered_node(Node* node) { m_hovered_node = node; }
|
|
Node* hovered_node() { return m_hovered_node; }
|
|
const Node* hovered_node() const { return m_hovered_node; }
|
|
|
|
const HTMLHtmlElement* document_element() const;
|
|
const HTMLHeadElement* head() const;
|
|
const HTMLBodyElement* body() const;
|
|
|
|
String title() const;
|
|
|
|
void attach_to_frame(Badge<Frame>, Frame&);
|
|
void detach_from_frame(Badge<Frame>, Frame&);
|
|
|
|
Frame* frame() { return m_frame.ptr(); }
|
|
const Frame* frame() const { return m_frame.ptr(); }
|
|
|
|
Color background_color() const;
|
|
|
|
private:
|
|
OwnPtr<StyleResolver> m_style_resolver;
|
|
NonnullRefPtrVector<StyleSheet> m_sheets;
|
|
RefPtr<Node> m_hovered_node;
|
|
WeakPtr<Frame> m_frame;
|
|
URL m_url;
|
|
};
|