diff options
Diffstat (limited to 'devel/electron18/files/patch-content_app_content__main__runner__impl.cc')
-rw-r--r-- | devel/electron18/files/patch-content_app_content__main__runner__impl.cc | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/devel/electron18/files/patch-content_app_content__main__runner__impl.cc b/devel/electron18/files/patch-content_app_content__main__runner__impl.cc new file mode 100644 index 000000000000..f19af120307e --- /dev/null +++ b/devel/electron18/files/patch-content_app_content__main__runner__impl.cc @@ -0,0 +1,120 @@ +--- content/app/content_main_runner_impl.cc.orig 2022-05-20 04:30:53 UTC ++++ content/app/content_main_runner_impl.cc +@@ -130,13 +130,13 @@ + #include "base/posix/global_descriptors.h" + #include "content/public/common/content_descriptors.h" + +-#if !BUILDFLAG(IS_MAC) ++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD) + #include "content/public/common/zygote/zygote_fork_delegate_linux.h" + #endif + + #endif // BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "base/native_library.h" + #include "base/rand_util.h" + #include "content/public/common/zygote/sandbox_support_linux.h" +@@ -170,6 +170,10 @@ + #include "media/base/media_switches.h" + #endif + ++#if BUILDFLAG(IS_BSD) ++#include "base/system/sys_info.h" ++#endif ++ + #if BUILDFLAG(IS_ANDROID) + #include "base/system/sys_info.h" + #include "components/power_scheduler/power_scheduler.h" +@@ -337,7 +341,7 @@ void InitializeZygoteSandboxForBrowserProcess( + } + #endif // BUILDFLAG(USE_ZYGOTE_HANDLE) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + #if BUILDFLAG(ENABLE_PLUGINS) + // Loads the (native) libraries but does not initialize them (i.e., does not +@@ -373,7 +377,7 @@ void PreloadLibraryCdms() { + } + #endif // BUILDFLAG(ENABLE_LIBRARY_CDMS) + +-#if BUILDFLAG(USE_ZYGOTE_HANDLE) ++#if BUILDFLAG(USE_ZYGOTE_HANDLE) || BUILDFLAG(IS_BSD) + void PreSandboxInit() { + // Pre-acquire resources needed by BoringSSL. See + // https://boringssl.googlesource.com/boringssl/+/HEAD/SANDBOXING.md +@@ -389,6 +393,11 @@ void PreSandboxInit() { + #endif + InitializeWebRtcModule(); + ++#if BUILDFLAG(IS_BSD) ++ // "cache" the amount of physical memory before pledge(2) ++ base::SysInfo::AmountOfPhysicalMemoryMB(); ++#endif ++ + // Set the android SkFontMgr for blink. We need to ensure this is done + // before the sandbox is initialized to allow the font manager to access + // font configuration files on disk. +@@ -558,7 +567,7 @@ int NO_STACK_PROTECTOR RunZygote(ContentMainDelegate* + delegate->ZygoteStarting(&zygote_fork_delegates); + media::InitializeMediaLibrary(); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + PreSandboxInit(); + #endif + +@@ -744,11 +753,10 @@ int ContentMainRunnerImpl::Initialize(ContentMainParam + kFieldTrialDescriptor + base::GlobalDescriptors::kBaseDescriptor); + #endif // !BUILDFLAG(IS_ANDROID) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + g_fds->Set(kCrashDumpSignal, + kCrashDumpSignal + base::GlobalDescriptors::kBaseDescriptor); +-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || +- // BUILDFLAG(IS_OPENBSD) ++#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + + #endif // !BUILDFLAG(IS_WIN) + +@@ -946,6 +954,16 @@ int ContentMainRunnerImpl::Initialize(ContentMainParam + } + #endif + ++#if BUILDFLAG(IS_BSD) ++ if (process_type.empty()) { ++ sandbox::policy::SandboxLinux::Options sandbox_options; ++ sandbox::policy::SandboxLinux::GetInstance()->InitializeSandbox( ++ sandbox::policy::SandboxTypeFromCommandLine( ++ *base::CommandLine::ForCurrentProcess()), ++ sandbox::policy::SandboxLinux::PreSandboxHook(), sandbox_options); ++ } ++#endif ++ + delegate_->SandboxInitialized(process_type); + + #if BUILDFLAG(USE_ZYGOTE_HANDLE) +@@ -1001,7 +1019,7 @@ int NO_STACK_PROTECTOR ContentMainRunnerImpl::Run() { + mojo::core::InitFeatures(); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // If dynamic Mojo Core is being used, ensure that it's loaded very early in + // the child/zygote process, before any sandbox is initialized. The library + // is not fully initialized with IPC support until a ChildProcess is later +@@ -1034,6 +1052,11 @@ int NO_STACK_PROTECTOR ContentMainRunnerImpl::Run() { + content_main_params_.reset(); + + RegisterMainThreadFactories(); ++ ++#if BUILDFLAG(IS_BSD) ++ if (!process_type.empty()) ++ PreSandboxInit(); ++#endif + + if (process_type.empty()) + return RunBrowser(std::move(main_params), start_minimal_browser); |