mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 11:28:12 +00:00
LibWeb: Just ignore <script> elements that failed to load the script
We're never gonna be able to run them if we can't load them so just let it go.
This commit is contained in:
parent
84f8c91a6f
commit
17d26b92f8
3 changed files with 18 additions and 8 deletions
|
@ -190,14 +190,19 @@ void HTMLScriptElement::prepare_script(Badge<HTMLDocumentParser>)
|
||||||
// FIXME: Check classic vs. module script type
|
// FIXME: Check classic vs. module script type
|
||||||
|
|
||||||
// FIXME: This load should be made asynchronous and the parser should spin an event loop etc.
|
// FIXME: This load should be made asynchronous and the parser should spin an event loop etc.
|
||||||
ResourceLoader::the().load_sync(url, [this, url](auto& data, auto&) {
|
ResourceLoader::the().load_sync(
|
||||||
if (data.is_null()) {
|
url,
|
||||||
dbg() << "HTMLScriptElement: Failed to load " << url;
|
[this, url](auto& data, auto&) {
|
||||||
return;
|
if (data.is_null()) {
|
||||||
}
|
dbg() << "HTMLScriptElement: Failed to load " << url;
|
||||||
m_script_source = String::copy(data);
|
return;
|
||||||
script_became_ready();
|
}
|
||||||
});
|
m_script_source = String::copy(data);
|
||||||
|
script_became_ready();
|
||||||
|
},
|
||||||
|
[this](auto&) {
|
||||||
|
m_failed_to_load = true;
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Check classic vs. module script type
|
// FIXME: Check classic vs. module script type
|
||||||
m_script_source = source_text;
|
m_script_source = source_text;
|
||||||
|
|
|
@ -41,6 +41,7 @@ public:
|
||||||
|
|
||||||
bool is_non_blocking() const { return m_non_blocking; }
|
bool is_non_blocking() const { return m_non_blocking; }
|
||||||
bool is_ready_to_be_parser_executed() const { return m_ready_to_be_parser_executed; }
|
bool is_ready_to_be_parser_executed() const { return m_ready_to_be_parser_executed; }
|
||||||
|
bool failed_to_load() const { return m_failed_to_load; }
|
||||||
|
|
||||||
void set_parser_document(Badge<HTMLDocumentParser>, Document&);
|
void set_parser_document(Badge<HTMLDocumentParser>, Document&);
|
||||||
void set_non_blocking(Badge<HTMLDocumentParser>, bool);
|
void set_non_blocking(Badge<HTMLDocumentParser>, bool);
|
||||||
|
@ -60,6 +61,7 @@ private:
|
||||||
bool m_from_an_external_file { false };
|
bool m_from_an_external_file { false };
|
||||||
bool m_script_ready { false };
|
bool m_script_ready { false };
|
||||||
bool m_ready_to_be_parser_executed { false };
|
bool m_ready_to_be_parser_executed { false };
|
||||||
|
bool m_failed_to_load { false };
|
||||||
|
|
||||||
Function<void()> m_script_ready_callback;
|
Function<void()> m_script_ready_callback;
|
||||||
|
|
||||||
|
|
|
@ -1476,6 +1476,9 @@ void HTMLDocumentParser::handle_text(HTMLToken& token)
|
||||||
// that is blocking scripts and the script's "ready to be parser-executed"
|
// that is blocking scripts and the script's "ready to be parser-executed"
|
||||||
// flag is set.
|
// flag is set.
|
||||||
|
|
||||||
|
if (the_script->failed_to_load())
|
||||||
|
return;
|
||||||
|
|
||||||
ASSERT(the_script->is_ready_to_be_parser_executed());
|
ASSERT(the_script->is_ready_to_be_parser_executed());
|
||||||
|
|
||||||
if (m_aborted)
|
if (m_aborted)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue