LibWeb: Allow executing scripts for iframes with src=about:blank

Fixes https://github.com/SerenityOS/serenity/issues/23836
This commit is contained in:
Aliaksandr Kalenik 2024-04-08 18:22:06 +02:00 committed by Alexander Kalenik
parent c07d18c017
commit 94d72c174a
Notes: sideshowbarker 2024-07-17 02:39:10 +09:00
4 changed files with 24 additions and 1 deletions

View file

@ -0,0 +1 @@
message from test iframe

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<script src="../include.js"></script>
<body>
<iframe id="target" src="about:blank"></iframe>
<script>
asyncTest(done => {
window.addEventListener("message", event => {
println(event.data);
done();
});
var script = target.contentDocument.createElement("script");
script.innerHTML = `parent.postMessage("message from test iframe", "*");`;
target.contentDocument.body.appendChild(script);
});
</script>
</body>

View file

@ -583,6 +583,7 @@ public:
void ensure_animation_timer();
bool ready_to_run_scripts() const { return m_ready_to_run_scripts; }
void set_ready_to_run_scripts() { m_ready_to_run_scripts = true; }
JS::GCPtr<HTML::SessionHistoryEntry> latest_entry() const { return m_latest_entry; }
void set_latest_entry(JS::GCPtr<HTML::SessionHistoryEntry> e) { m_latest_entry = e; }

View file

@ -219,7 +219,12 @@ Optional<URL::URL> NavigableContainer::shared_attribute_processing_steps_for_ifr
// 4. If url matches about:blank and initialInsertion is true, then perform the URL and history update steps given element's content navigable's active document and url.
if (url_matches_about_blank(url) && initial_insertion) {
perform_url_and_history_update_steps(*m_content_navigable->active_document(), url);
auto& document = *m_content_navigable->active_document();
perform_url_and_history_update_steps(document, url);
// Spec issue: https://github.com/whatwg/html/issues/10261
document.set_ready_to_run_scripts();
}
// 5. Return url.