mirror of
https://github.com/RGBCube/serenity
synced 2025-05-24 03:35:07 +00:00
LibWeb: Make SharedImageRequest store Page member as NonnullGCPtr
This allows us to remove one raw Web::Page& member. Or rather, it becomes a JS::NonnullGCPtr that we trace like anything else. :^) Co-Authored-By: Andreas Kling <kling@serenityos.org>
This commit is contained in:
parent
0ae5c070c7
commit
d277ac72e6
2 changed files with 7 additions and 5 deletions
|
@ -13,6 +13,7 @@
|
||||||
#include <LibWeb/HTML/AnimatedBitmapDecodedImageData.h>
|
#include <LibWeb/HTML/AnimatedBitmapDecodedImageData.h>
|
||||||
#include <LibWeb/HTML/DecodedImageData.h>
|
#include <LibWeb/HTML/DecodedImageData.h>
|
||||||
#include <LibWeb/HTML/SharedImageRequest.h>
|
#include <LibWeb/HTML/SharedImageRequest.h>
|
||||||
|
#include <LibWeb/Page/Page.h>
|
||||||
#include <LibWeb/Platform/ImageCodecPlugin.h>
|
#include <LibWeb/Platform/ImageCodecPlugin.h>
|
||||||
#include <LibWeb/SVG/SVGDecodedImageData.h>
|
#include <LibWeb/SVG/SVGDecodedImageData.h>
|
||||||
|
|
||||||
|
@ -20,7 +21,7 @@ namespace Web::HTML {
|
||||||
|
|
||||||
JS_DEFINE_ALLOCATOR(SharedImageRequest);
|
JS_DEFINE_ALLOCATOR(SharedImageRequest);
|
||||||
|
|
||||||
JS::NonnullGCPtr<SharedImageRequest> SharedImageRequest::get_or_create(JS::Realm& realm, Page& page, AK::URL const& url)
|
JS::NonnullGCPtr<SharedImageRequest> SharedImageRequest::get_or_create(JS::Realm& realm, JS::NonnullGCPtr<Page> page, AK::URL const& url)
|
||||||
{
|
{
|
||||||
auto document = Bindings::host_defined_environment_settings_object(realm).responsible_document();
|
auto document = Bindings::host_defined_environment_settings_object(realm).responsible_document();
|
||||||
VERIFY(document);
|
VERIFY(document);
|
||||||
|
@ -32,7 +33,7 @@ JS::NonnullGCPtr<SharedImageRequest> SharedImageRequest::get_or_create(JS::Realm
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedImageRequest::SharedImageRequest(Page& page, AK::URL url, JS::NonnullGCPtr<DOM::Document> document)
|
SharedImageRequest::SharedImageRequest(JS::NonnullGCPtr<Page> page, AK::URL url, JS::NonnullGCPtr<DOM::Document> document)
|
||||||
: m_page(page)
|
: m_page(page)
|
||||||
, m_url(move(url))
|
, m_url(move(url))
|
||||||
, m_document(document)
|
, m_document(document)
|
||||||
|
@ -50,6 +51,7 @@ void SharedImageRequest::visit_edges(JS::Cell::Visitor& visitor)
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
visitor.visit(m_fetch_controller);
|
visitor.visit(m_fetch_controller);
|
||||||
visitor.visit(m_document);
|
visitor.visit(m_document);
|
||||||
|
visitor.visit(m_page);
|
||||||
for (auto& callback : m_callbacks) {
|
for (auto& callback : m_callbacks) {
|
||||||
visitor.visit(callback.on_finish);
|
visitor.visit(callback.on_finish);
|
||||||
visitor.visit(callback.on_fail);
|
visitor.visit(callback.on_fail);
|
||||||
|
|
|
@ -22,7 +22,7 @@ class SharedImageRequest : public JS::Cell {
|
||||||
JS_DECLARE_ALLOCATOR(SharedImageRequest);
|
JS_DECLARE_ALLOCATOR(SharedImageRequest);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
[[nodiscard]] static JS::NonnullGCPtr<SharedImageRequest> get_or_create(JS::Realm&, Page&, AK::URL const&);
|
[[nodiscard]] static JS::NonnullGCPtr<SharedImageRequest> get_or_create(JS::Realm&, JS::NonnullGCPtr<Page>, AK::URL const&);
|
||||||
|
|
||||||
~SharedImageRequest();
|
~SharedImageRequest();
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ public:
|
||||||
virtual void visit_edges(JS::Cell::Visitor&) override;
|
virtual void visit_edges(JS::Cell::Visitor&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit SharedImageRequest(Page&, AK::URL, JS::NonnullGCPtr<DOM::Document>);
|
explicit SharedImageRequest(JS::NonnullGCPtr<Page>, AK::URL, JS::NonnullGCPtr<DOM::Document>);
|
||||||
|
|
||||||
void handle_successful_fetch(AK::URL const&, StringView mime_type, ByteBuffer data);
|
void handle_successful_fetch(AK::URL const&, StringView mime_type, ByteBuffer data);
|
||||||
void handle_failed_fetch();
|
void handle_failed_fetch();
|
||||||
|
@ -57,7 +57,7 @@ private:
|
||||||
|
|
||||||
State m_state { State::New };
|
State m_state { State::New };
|
||||||
|
|
||||||
Page& m_page;
|
JS::NonnullGCPtr<Page> m_page;
|
||||||
|
|
||||||
struct Callbacks {
|
struct Callbacks {
|
||||||
JS::GCPtr<JS::HeapFunction<void()>> on_finish;
|
JS::GCPtr<JS::HeapFunction<void()>> on_finish;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue