diff --git a/Libraries/LibHTML/DOM/HTMLImageElement.cpp b/Libraries/LibHTML/DOM/HTMLImageElement.cpp
index 6fda6dee7fb..a0b32f57ca5 100644
--- a/Libraries/LibHTML/DOM/HTMLImageElement.cpp
+++ b/Libraries/LibHTML/DOM/HTMLImageElement.cpp
@@ -12,6 +12,23 @@ HTMLImageElement::~HTMLImageElement()
{
}
+void HTMLImageElement::parse_attribute(const String& name, const String& value)
+{
+ if (name == "src")
+ load_image(value);
+}
+
+void HTMLImageElement::load_image(const String& src)
+{
+ URL src_url = document().complete_url(src);
+ if (src_url.protocol() == "file") {
+ m_bitmap = GraphicsBitmap::load_from_file(src_url.path());
+ } else {
+ // FIXME: Implement! This whole thing should be at a different layer though..
+ ASSERT_NOT_REACHED();
+ }
+}
+
RefPtr HTMLImageElement::create_layout_node(const StyleResolver& resolver, const StyleProperties* parent_style) const
{
auto style = resolver.resolve_style(*this, parent_style);
@@ -26,15 +43,5 @@ RefPtr HTMLImageElement::create_layout_node(const StyleResolver& res
const GraphicsBitmap* HTMLImageElement::bitmap() const
{
- if (!m_bitmap) {
- URL src_url = document().complete_url(this->src());
- if (src_url.protocol() == "file") {
- m_bitmap = GraphicsBitmap::load_from_file(src_url.path());
- } else {
- // FIXME: Implement! This whole thing should be at a different layer though..
- ASSERT_NOT_REACHED();
- }
- }
-
return m_bitmap;
}
diff --git a/Libraries/LibHTML/DOM/HTMLImageElement.h b/Libraries/LibHTML/DOM/HTMLImageElement.h
index 33d5587b812..280a205babf 100644
--- a/Libraries/LibHTML/DOM/HTMLImageElement.h
+++ b/Libraries/LibHTML/DOM/HTMLImageElement.h
@@ -8,12 +8,16 @@ public:
HTMLImageElement(Document&, const String& tag_name);
virtual ~HTMLImageElement() override;
+ virtual void parse_attribute(const String& name, const String& value) override;
+
String alt() const { return attribute("alt"); }
String src() const { return attribute("src"); }
const GraphicsBitmap* bitmap() const;
private:
+ void load_image(const String& src);
+
virtual RefPtr create_layout_node(const StyleResolver&, const StyleProperties* parent_style) const override;
mutable RefPtr m_bitmap;