From de79eb4410ef40712a7d1f35412b86137d6cb8aa Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Sun, 15 Jun 2025 15:04:23 +1200 Subject: [PATCH] LibWeb: Give NonFetchSchemeNavigationParams a constructor --- Libraries/LibWeb/HTML/Navigable.cpp | 34 +++++++++++------------- Libraries/LibWeb/HTML/NavigationParams.h | 19 +++++++++++++ 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/Libraries/LibWeb/HTML/Navigable.cpp b/Libraries/LibWeb/HTML/Navigable.cpp index 8e2aca5c44a..ed789075a8f 100644 --- a/Libraries/LibWeb/HTML/Navigable.cpp +++ b/Libraries/LibWeb/HTML/Navigable.cpp @@ -1111,15 +1111,14 @@ static WebIDL::ExceptionOr create_navigation // - initiator origin: responseOrigin // FIXME: - navigation timing type: navTimingType // - user involvement: userInvolvement - auto navigation_params = vm.heap().allocate(); - navigation_params->id = navigation_id; - navigation_params->navigable = navigable; - navigation_params->url = location_url.release_value().value(); - navigation_params->target_snapshot_sandboxing_flags = target_snapshot_params.sandboxing_flags; - navigation_params->source_snapshot_has_transient_activation = source_snapshot_params.has_transient_activation; - navigation_params->initiator_origin = move(*response_origin); - navigation_params->user_involvement = user_involvement; - return navigation_params; + return vm.heap().allocate( + navigation_id, + navigable, + location_url.release_value().value(), + target_snapshot_params.sandboxing_flags, + source_snapshot_params.has_transient_activation, + move(*response_origin), + user_involvement); } // 21. If any of the following are true: @@ -1234,15 +1233,14 @@ WebIDL::ExceptionOr Navigable::populate_session_history_entry_document( // - initiator origin: entry's document state's initiator origin // FIXME: - navigation timing type: navTimingType // - user involvement: userInvolvement - auto non_fetching_scheme_navigation_params = vm().heap().allocate(); - non_fetching_scheme_navigation_params->id = navigation_id; - non_fetching_scheme_navigation_params->navigable = this; - non_fetching_scheme_navigation_params->url = entry->url(); - non_fetching_scheme_navigation_params->target_snapshot_sandboxing_flags = target_snapshot_params.sandboxing_flags; - non_fetching_scheme_navigation_params->source_snapshot_has_transient_activation = source_snapshot_params.has_transient_activation; - non_fetching_scheme_navigation_params->initiator_origin = *entry->document_state()->initiator_origin(); - non_fetching_scheme_navigation_params->user_involvement = user_involvement; - navigation_params = non_fetching_scheme_navigation_params; + navigation_params = vm().heap().allocate( + navigation_id, + this, + entry->url(), + target_snapshot_params.sandboxing_flags, + source_snapshot_params.has_transient_activation, + *entry->document_state()->initiator_origin(), + user_involvement); } } diff --git a/Libraries/LibWeb/HTML/NavigationParams.h b/Libraries/LibWeb/HTML/NavigationParams.h index 36eb5b6444c..02be441cf06 100644 --- a/Libraries/LibWeb/HTML/NavigationParams.h +++ b/Libraries/LibWeb/HTML/NavigationParams.h @@ -140,6 +140,25 @@ struct NonFetchSchemeNavigationParams : JS::Cell { // a user navigation involvement used when obtaining a browsing context for the new Document (if one is created) UserNavigationInvolvement user_involvement; +protected: + NonFetchSchemeNavigationParams( + Optional id, + GC::Ptr navigable, + URL::URL url, + SandboxingFlagSet target_snapshot_sandboxing_flags, + bool source_snapshot_has_transient_activation, + URL::Origin initiator_origin, + UserNavigationInvolvement user_involvement) + : id(move(id)) + , navigable(navigable) + , url(move(url)) + , target_snapshot_sandboxing_flags(target_snapshot_sandboxing_flags) + , source_snapshot_has_transient_activation(source_snapshot_has_transient_activation) + , initiator_origin(move(initiator_origin)) + , user_involvement(user_involvement) + { + } + void visit_edges(Visitor& visitor) override; };