diff --git a/Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp index 76569c551b..fdb2667f46 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp @@ -38,6 +38,7 @@ namespace Web::HTML { HTMLImageElement::HTMLImageElement(DOM::Document& document, QualifiedName qualified_name) : HTMLElement(document, move(qualified_name)) + , m_image_loader(*this) { m_image_loader.on_load = [this] { this->document().update_layout(); diff --git a/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.cpp index 0d8b986e57..812a134bff 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.cpp @@ -36,6 +36,7 @@ namespace Web::HTML { HTMLObjectElement::HTMLObjectElement(DOM::Document& document, QualifiedName qualified_name) : HTMLElement(document, move(qualified_name)) + , m_image_loader(*this) { m_image_loader.on_load = [this] { m_should_show_fallback_content = false; diff --git a/Userland/Libraries/LibWeb/Loader/ImageLoader.cpp b/Userland/Libraries/LibWeb/Loader/ImageLoader.cpp index 4d049c8d5f..0fa0f481d1 100644 --- a/Userland/Libraries/LibWeb/Loader/ImageLoader.cpp +++ b/Userland/Libraries/LibWeb/Loader/ImageLoader.cpp @@ -27,21 +27,24 @@ #include #include #include +#include +#include #include #include namespace Web { -ImageLoader::ImageLoader() - : m_timer(Core::Timer::construct()) +ImageLoader::ImageLoader(DOM::Element& owner_element) + : m_owner_element(owner_element) + , m_timer(Core::Timer::construct()) { } void ImageLoader::load(const URL& url) { m_loading_state = LoadingState::Loading; - LoadRequest request; - request.set_url(url); + + auto request = LoadRequest::create_for_url_on_page(url, m_owner_element.document().page()); set_resource(ResourceLoader::the().load_resource(Resource::Type::Image, request)); } diff --git a/Userland/Libraries/LibWeb/Loader/ImageLoader.h b/Userland/Libraries/LibWeb/Loader/ImageLoader.h index 1297958366..f4872cdaa0 100644 --- a/Userland/Libraries/LibWeb/Loader/ImageLoader.h +++ b/Userland/Libraries/LibWeb/Loader/ImageLoader.h @@ -34,7 +34,7 @@ namespace Web { class ImageLoader : public ImageResourceClient { public: - ImageLoader(); + ImageLoader(DOM::Element& owner_element); void load(const URL&); @@ -69,6 +69,8 @@ private: Failed, }; + DOM::Element& m_owner_element; + mutable bool m_visible_in_viewport { false }; size_t m_current_frame_index { 0 };