1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 03:37:43 +00:00

LibWeb: Make CSSImportRule::m_document a WeakPtr

It's not safe for this to be a raw reference, as CSSImportRule can
outlive the document.
This commit is contained in:
Andreas Kling 2021-12-05 15:28:38 +01:00
parent 0f9ca51c76
commit f47c658275
2 changed files with 6 additions and 3 deletions

View file

@ -21,7 +21,7 @@ CSSImportRule::CSSImportRule(AK::URL url, DOM::Document& document)
dbgln_if(CSS_LOADER_DEBUG, "CSSImportRule: Loading import URL: {}", m_url); dbgln_if(CSS_LOADER_DEBUG, "CSSImportRule: Loading import URL: {}", m_url);
auto request = LoadRequest::create_for_url_on_page(m_url, document.page()); auto request = LoadRequest::create_for_url_on_page(m_url, document.page());
set_resource(ResourceLoader::the().load_resource(Resource::Type::Generic, request)); set_resource(ResourceLoader::the().load_resource(Resource::Type::Generic, request));
m_document_load_event_delayer.emplace(m_document); m_document_load_event_delayer.emplace(document);
} }
CSSImportRule::~CSSImportRule() CSSImportRule::~CSSImportRule()
@ -62,6 +62,9 @@ void CSSImportRule::resource_did_load()
{ {
VERIFY(resource()); VERIFY(resource());
if (!m_document)
return;
m_document_load_event_delayer.clear(); m_document_load_event_delayer.clear();
if (!resource()->has_encoded_data()) { if (!resource()->has_encoded_data()) {
@ -70,7 +73,7 @@ void CSSImportRule::resource_did_load()
dbgln_if(CSS_LOADER_DEBUG, "CSSImportRule: Resource did load, has encoded data. URL: {}", resource()->url()); dbgln_if(CSS_LOADER_DEBUG, "CSSImportRule: Resource did load, has encoded data. URL: {}", resource()->url());
} }
auto sheet = parse_css(CSS::ParsingContext(m_document), resource()->encoded_data()); auto sheet = parse_css(CSS::ParsingContext(*m_document), resource()->encoded_data());
if (!sheet) { if (!sheet) {
dbgln_if(CSS_LOADER_DEBUG, "CSSImportRule: Failed to parse stylesheet: {}", resource()->url()); dbgln_if(CSS_LOADER_DEBUG, "CSSImportRule: Failed to parse stylesheet: {}", resource()->url());
return; return;

View file

@ -48,7 +48,7 @@ private:
virtual void resource_did_load() override; virtual void resource_did_load() override;
AK::URL m_url; AK::URL m_url;
DOM::Document& m_document; WeakPtr<DOM::Document> m_document;
Optional<DOM::DocumentLoadEventDelayer> m_document_load_event_delayer; Optional<DOM::DocumentLoadEventDelayer> m_document_load_event_delayer;
RefPtr<CSSStyleSheet> m_style_sheet; RefPtr<CSSStyleSheet> m_style_sheet;
}; };