diff --git a/Ladybird/WebDriver/main.cpp b/Ladybird/WebDriver/main.cpp index 0367fa0ad4..f501597a72 100644 --- a/Ladybird/WebDriver/main.cpp +++ b/Ladybird/WebDriver/main.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -19,31 +20,16 @@ #include #include -#if defined(AK_OS_MACOS) -# include -#endif - extern DeprecatedString s_serenity_resource_root; -static char** environment() -{ -#if defined(AK_OS_MACOS) - return *_NSGetEnviron(); -#else - extern char** environ; - return environ; -#endif -} - -static ErrorOr launch_process(StringView application, char const* argv[]) +static ErrorOr launch_process(StringView application, ReadonlySpan arguments) { auto paths = TRY(get_paths_for_helper_process(application)); ErrorOr result = -1; for (auto const& path : paths) { auto path_view = path.bytes_as_string_view(); - argv[0] = path_view.characters_without_null_termination(); - result = Core::System::posix_spawn(path_view, nullptr, nullptr, const_cast(argv), environment()); + result = Core::Process::spawn(path_view, arguments, {}, Core::Process::KeepAsChild::Yes); if (!result.is_error()) break; } @@ -52,31 +38,24 @@ static ErrorOr launch_process(StringView application, char const* argv[]) static ErrorOr launch_browser(DeprecatedString const& socket_path) { - char const* argv[] = { - "ladybird", - "--webdriver-content-path", - socket_path.characters(), - nullptr, - }; - - return launch_process("ladybird"sv, argv); + return launch_process("ladybird"sv, + Array { + "--webdriver-content-path", + socket_path.characters(), + }); } static ErrorOr launch_headless_browser(DeprecatedString const& socket_path) { auto resources = DeprecatedString::formatted("{}/res", s_serenity_resource_root); - - char const* argv[] = { - "headless-browser", - "--resources", - resources.characters(), - "--webdriver-ipc-path", - socket_path.characters(), - "about:blank", - nullptr, - }; - - return launch_process("headless-browser"sv, argv); + return launch_process("headless-browser"sv, + Array { + "--resources", + resources.characters(), + "--webdriver-ipc-path", + socket_path.characters(), + "about:blank", + }); } ErrorOr serenity_main(Main::Arguments arguments)