From 5fce94d2d73a41db6e577abf0362087d2af86ef3 Mon Sep 17 00:00:00 2001 From: ldm0 Date: Wed, 2 Sep 2026 06:14:24 +0800 Subject: [PATCH] fix(events): align lifecycle event initialization --- moli-renderer-v8/src/context_bootstrap/events.rs | 4 +++- moli-renderer-v8/src/context_bootstrap/navigation_events.rs | 6 ++---- .../src/native_bridge/context_host/child_documents/loads.rs | 3 +-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/moli-renderer-v8/src/context_bootstrap/events.rs b/moli-renderer-v8/src/context_bootstrap/events.rs index e15e808935..736f0a1d1c 100644 --- a/moli-renderer-v8/src/context_bootstrap/events.rs +++ b/moli-renderer-v8/src/context_bootstrap/events.rs @@ -115,7 +115,9 @@ fn new_before_unload_event<'s>( pub(crate) fn construct_original_before_unload_event<'s>( scope: &mut v8::PinScope<'s, '_>, ) -> Option> { - new_before_unload_event(scope, "beforeunload", true) + let event = new_before_unload_event(scope, "beforeunload", true)?; + mark_event_trusted(scope, event); + Some(event) } pub(in crate::context_bootstrap) fn new_uninitialized_before_unload_event<'s>( diff --git a/moli-renderer-v8/src/context_bootstrap/navigation_events.rs b/moli-renderer-v8/src/context_bootstrap/navigation_events.rs index 34cd46284b..7ba4e81051 100644 --- a/moli-renderer-v8/src/context_bootstrap/navigation_events.rs +++ b/moli-renderer-v8/src/context_bootstrap/navigation_events.rs @@ -1,6 +1,6 @@ use super::events::{ construct_original_before_unload_event, construct_original_event, - run_navigate_event_precommit_handlers, + construct_original_page_transition_event, run_navigate_event_precommit_handlers, }; use super::location_history_storage::{ NAVIGATION_ENTRY_EVENT_LISTENERS_SLOT, NAVIGATION_EVENT_LISTENERS_SLOT, @@ -654,9 +654,7 @@ pub(crate) fn dispatch_pagehide_for_runtime_owner<'s>( scope: &mut v8::PinScope<'s, '_>, owner: v8::Local<'s, v8::Object>, ) { - let Some(event) = - super::events::construct_original_page_transition_event(scope, "pagehide", false) - else { + let Some(event) = construct_original_page_transition_event(scope, "pagehide", false) else { return; }; dispatch_unload_lifecycle_event_for_runtime_owner(scope, owner, "pagehide", event); diff --git a/moli-renderer-v8/src/native_bridge/context_host/child_documents/loads.rs b/moli-renderer-v8/src/native_bridge/context_host/child_documents/loads.rs index 512553e5ed..fbb6b9dcfd 100644 --- a/moli-renderer-v8/src/native_bridge/context_host/child_documents/loads.rs +++ b/moli-renderer-v8/src/native_bridge/context_host/child_documents/loads.rs @@ -10,7 +10,7 @@ use crate::{ content_security_policy::{ ContentSecurityPolicyViolationEventFields, send_content_security_policy_reports, }, - context_bootstrap::{construct_original_event, mark_event_trusted}, + context_bootstrap::construct_original_event, document_response_decoder::decode_document_response, document_runtime::{ DocumentNavigationEmbeddingContext, DocumentPolicyContainer, DomHandle, EventTargetHandle, @@ -693,7 +693,6 @@ impl JsContextHost { if object_fallback_required { self.enter_object_fallback_state(scope, handle); if let Some(event) = construct_original_event(scope, "error") { - mark_event_trusted(scope, event); let host_ptr: *mut JsContextHost = self; let runtime = unsafe { &mut *self.runtime }; let _ = runtime.dispatch_public_event_best_effort(