aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroki Tagato <tagattie@FreeBSD.org>2024-06-03 07:51:16 +0000
committerHiroki Tagato <tagattie@FreeBSD.org>2024-06-03 07:53:15 +0000
commit05dc81551923e759ef7a018e3219acdfd534c65a (patch)
treebd14944f63c8cb183ca9a1bec9b3ade1289c318b
parente3bf124b2c0d35b395d2704220612949a32c17cd (diff)
devel/electron30: add port: Build cross-platform desktop apps with JavaScript, HTML, and CSS
Build cross platform desktop apps with JavaScript, HTML, and CSS. It's easier than you think. If you can build a website, you can build a desktop app. Electron is a framework for creating native applications with web technologies like JavaScript, HTML, and CSS. It takes care of the hard parts so you can focus on the core of your application. WWW: https://electronjs.org/
-rw-r--r--devel/Makefile1
-rw-r--r--devel/electron30/Makefile463
-rw-r--r--devel/electron30/Makefile.version2
-rw-r--r--devel/electron30/distinfo23
-rw-r--r--devel/electron30/files/apply-electron-patches.sh26
-rw-r--r--devel/electron30/files/extra-patch-electron_shell_browser_electron__browser__context.h64
-rw-r--r--devel/electron30/files/extra-patch-electron_shell_browser_ui_gtk_menu__gtk.h11
-rw-r--r--devel/electron30/files/extra-patch-electron_shell_browser_ui_status__icon__gtk.h10
-rw-r--r--devel/electron30/files/package.json156
-rw-r--r--devel/electron30/files/patch-BUILD.gn89
-rw-r--r--devel/electron30/files/patch-apps_ui_views_app__window__frame__view.cc11
-rw-r--r--devel/electron30/files/patch-ash_display_mirror__window__controller.cc14
-rw-r--r--devel/electron30/files/patch-base_BUILD.gn157
-rw-r--r--devel/electron30/files/patch-base_allocator_dispatcher_tls.h11
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_partition__alloc.gni20
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_address__space__randomization.h20
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_page__allocator.h11
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_page__allocator__constants.h11
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_page__allocator__internals__posix.h16
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_debug_stack__trace__posix.cc34
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_rand__util__posix.cc13
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_threading_platform__thread.h11
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_threading_platform__thread__internal__posix.h11
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_threading_platform__thread__posix.cc11
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__config.h20
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__constants.h11
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__forward.h16
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__root.cc29
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_spinning__mutex.cc53
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_starscan_stack_stack.cc50
-rw-r--r--devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_thread__isolation_pkey.cc11
-rw-r--r--devel/electron30/files/patch-base_atomicops.h14
-rw-r--r--devel/electron30/files/patch-base_base__paths__posix.cc108
-rw-r--r--devel/electron30/files/patch-base_compiler__specific.h11
-rw-r--r--devel/electron30/files/patch-base_debug_debugger__posix.cc69
-rw-r--r--devel/electron30/files/patch-base_debug_elf__reader.cc13
-rw-r--r--devel/electron30/files/patch-base_debug_proc__maps__linux.cc11
-rw-r--r--devel/electron30/files/patch-base_debug_stack__trace.cc29
-rw-r--r--devel/electron30/files/patch-base_debug_stack__trace__posix.cc101
-rw-r--r--devel/electron30/files/patch-base_files_dir__reader__linux.h39
-rw-r--r--devel/electron30/files/patch-base_files_dir__reader__posix.h20
-rw-r--r--devel/electron30/files/patch-base_files_file__path__watcher.h11
-rw-r--r--devel/electron30/files/patch-base_files_file__path__watcher__bsd.cc57
-rw-r--r--devel/electron30/files/patch-base_files_file__path__watcher__kqueue.h10
-rw-r--r--devel/electron30/files/patch-base_files_file__path__watcher__unittest.cc29
-rw-r--r--devel/electron30/files/patch-base_files_file__util__posix.cc53
-rw-r--r--devel/electron30/files/patch-base_files_file__util__unittest.cc20
-rw-r--r--devel/electron30/files/patch-base_files_important__file__writer__cleaner.cc12
-rw-r--r--devel/electron30/files/patch-base_files_scoped__file.cc11
-rw-r--r--devel/electron30/files/patch-base_functional_unretained__traits.h11
-rw-r--r--devel/electron30/files/patch-base_i18n_icu__util.cc20
-rw-r--r--devel/electron30/files/patch-base_linux__util.cc25
-rw-r--r--devel/electron30/files/patch-base_logging__unittest.cc31
-rw-r--r--devel/electron30/files/patch-base_memory_discardable__memory.cc38
-rw-r--r--devel/electron30/files/patch-base_memory_discardable__memory__internal.h11
-rw-r--r--devel/electron30/files/patch-base_memory_madv__free__discardable__memory__posix.cc21
-rw-r--r--devel/electron30/files/patch-base_memory_platform__shared__memory__region.h29
-rw-r--r--devel/electron30/files/patch-base_memory_platform__shared__memory__region__posix.cc29
-rw-r--r--devel/electron30/files/patch-base_message__loop_message__pump__glib.cc28
-rw-r--r--devel/electron30/files/patch-base_native__library__posix.cc11
-rw-r--r--devel/electron30/files/patch-base_native__library__unittest.cc11
-rw-r--r--devel/electron30/files/patch-base_posix_can__lower__nice__to.cc16
-rw-r--r--devel/electron30/files/patch-base_posix_sysctl.cc10
-rw-r--r--devel/electron30/files/patch-base_posix_unix__domain__socket.cc57
-rw-r--r--devel/electron30/files/patch-base_posix_unix__domain__socket__unittest.cc11
-rw-r--r--devel/electron30/files/patch-base_process_internal__linux.h20
-rw-r--r--devel/electron30/files/patch-base_process_kill.h11
-rw-r--r--devel/electron30/files/patch-base_process_kill__posix.cc11
-rw-r--r--devel/electron30/files/patch-base_process_launch.h11
-rw-r--r--devel/electron30/files/patch-base_process_launch__posix.cc12
-rw-r--r--devel/electron30/files/patch-base_process_memory__linux.cc44
-rw-r--r--devel/electron30/files/patch-base_process_process__handle.cc11
-rw-r--r--devel/electron30/files/patch-base_process_process__handle.h11
-rw-r--r--devel/electron30/files/patch-base_process_process__handle__freebsd.cc25
-rw-r--r--devel/electron30/files/patch-base_process_process__handle__openbsd.cc133
-rw-r--r--devel/electron30/files/patch-base_process_process__iterator__freebsd.cc51
-rw-r--r--devel/electron30/files/patch-base_process_process__iterator__openbsd.cc45
-rw-r--r--devel/electron30/files/patch-base_process_process__metrics.cc49
-rw-r--r--devel/electron30/files/patch-base_process_process__metrics.h115
-rw-r--r--devel/electron30/files/patch-base_process_process__metrics__freebsd.cc304
-rw-r--r--devel/electron30/files/patch-base_process_process__metrics__openbsd.cc232
-rw-r--r--devel/electron30/files/patch-base_process_process__metrics__posix.cc20
-rw-r--r--devel/electron30/files/patch-base_process_process__metrics__unittest.cc12
-rw-r--r--devel/electron30/files/patch-base_process_process__posix.cc94
-rw-r--r--devel/electron30/files/patch-base_process_process__unittest.cc11
-rw-r--r--devel/electron30/files/patch-base_profiler_module__cache.cc11
-rw-r--r--devel/electron30/files/patch-base_profiler_sampling__profiler__thread__token.cc20
-rw-r--r--devel/electron30/files/patch-base_profiler_sampling__profiler__thread__token.h20
-rw-r--r--devel/electron30/files/patch-base_profiler_stack__base__address__posix.cc59
-rw-r--r--devel/electron30/files/patch-base_profiler_stack__sampling__profiler__test__util.cc11
-rw-r--r--devel/electron30/files/patch-base_profiler_stack__sampling__profiler__unittest.cc11
-rw-r--r--devel/electron30/files/patch-base_profiler_thread__delegate__posix.cc20
-rw-r--r--devel/electron30/files/patch-base_rand__util.h11
-rw-r--r--devel/electron30/files/patch-base_rand__util__posix.cc62
-rw-r--r--devel/electron30/files/patch-base_strings_safe__sprintf__unittest.cc18
-rw-r--r--devel/electron30/files/patch-base_synchronization_lock__impl.h23
-rw-r--r--devel/electron30/files/patch-base_syslog__logging.cc20
-rw-r--r--devel/electron30/files/patch-base_system_sys__info.cc11
-rw-r--r--devel/electron30/files/patch-base_system_sys__info.h20
-rw-r--r--devel/electron30/files/patch-base_system_sys__info__freebsd.cc115
-rw-r--r--devel/electron30/files/patch-base_system_sys__info__openbsd.cc94
-rw-r--r--devel/electron30/files/patch-base_system_sys__info__posix.cc29
-rw-r--r--devel/electron30/files/patch-base_system_sys__info__unittest.cc20
-rw-r--r--devel/electron30/files/patch-base_task_thread__pool_environment__config__unittest.cc11
-rw-r--r--devel/electron30/files/patch-base_test_launcher_test__launcher.cc10
-rw-r--r--devel/electron30/files/patch-base_test_test__file__util__linux.cc13
-rw-r--r--devel/electron30/files/patch-base_test_test__file__util__posix.cc11
-rw-r--r--devel/electron30/files/patch-base_threading_hang__watcher.cc11
-rw-r--r--devel/electron30/files/patch-base_threading_platform__thread.h11
-rw-r--r--devel/electron30/files/patch-base_threading_platform__thread__bsd.cc34
-rw-r--r--devel/electron30/files/patch-base_threading_platform__thread__internal__posix.cc11
-rw-r--r--devel/electron30/files/patch-base_threading_platform__thread__posix.cc54
-rw-r--r--devel/electron30/files/patch-base_threading_platform__thread__unittest.cc38
-rw-r--r--devel/electron30/files/patch-base_trace__event_malloc__dump__provider.cc30
-rw-r--r--devel/electron30/files/patch-base_trace__event_memory__dump__manager.cc11
-rw-r--r--devel/electron30/files/patch-base_trace__event_process__memory__dump.cc20
-rw-r--r--devel/electron30/files/patch-base_tracing_trace__time.cc28
-rw-r--r--devel/electron30/files/patch-base_tracing_trace__time.h11
-rw-r--r--devel/electron30/files/patch-build_config_BUILD.gn13
-rw-r--r--devel/electron30/files/patch-build_config_BUILDCONFIG.gn45
-rw-r--r--devel/electron30/files/patch-build_config_clang_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-build_config_compiler_BUILD.gn141
-rw-r--r--devel/electron30/files/patch-build_config_linux_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-build_config_linux_pkg-config.py11
-rw-r--r--devel/electron30/files/patch-build_config_ozone.gni19
-rw-r--r--devel/electron30/files/patch-build_config_rust.gni13
-rw-r--r--devel/electron30/files/patch-build_config_v8__target__cpu.gni13
-rw-r--r--devel/electron30/files/patch-build_detect__host__arch.py11
-rw-r--r--devel/electron30/files/patch-build_gn__run__binary.py11
-rw-r--r--devel/electron30/files/patch-build_linux_chrome.map13
-rw-r--r--devel/electron30/files/patch-build_linux_strip__binary.py10
-rw-r--r--devel/electron30/files/patch-build_linux_unbundle_icu.gn18
-rw-r--r--devel/electron30/files/patch-build_linux_unbundle_libevent.gn15
-rw-r--r--devel/electron30/files/patch-build_linux_unbundle_libusb.gn30
-rw-r--r--devel/electron30/files/patch-build_linux_unbundle_libwebp.gn27
-rw-r--r--devel/electron30/files/patch-build_rust_std_BUILD.gn10
-rw-r--r--devel/electron30/files/patch-build_toolchain_freebsd_BUILD.gn69
-rw-r--r--devel/electron30/files/patch-build_toolchain_gcc__solink__wrapper.py11
-rw-r--r--devel/electron30/files/patch-build_toolchain_gcc__toolchain.gni44
-rw-r--r--devel/electron30/files/patch-build_toolchain_openbsd_BUILD.gn69
-rw-r--r--devel/electron30/files/patch-build_toolchain_toolchain.gni11
-rw-r--r--devel/electron30/files/patch-cc_BUILD.gn19
-rw-r--r--devel/electron30/files/patch-cc_base_features.cc11
-rw-r--r--devel/electron30/files/patch-chrome_app_chrome__command__ids.h17
-rw-r--r--devel/electron30/files/patch-chrome_app_chrome__main.cc43
-rw-r--r--devel/electron30/files/patch-chrome_app_chrome__main__delegate.cc162
-rw-r--r--devel/electron30/files/patch-chrome_browser_BUILD.gn16
-rw-r--r--devel/electron30/files/patch-chrome_browser_about__flags.cc209
-rw-r--r--devel/electron30/files/patch-chrome_browser_accessibility_pdf__ocr__controller.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_after__startup__task__utils.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_apps_app__service_publishers_extension__apps.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.cc65
-rw-r--r--devel/electron30/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_background_background__mode__manager.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_background_background__mode__optimizer.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_browser__features.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_browser__process__impl.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_browser__process__impl.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_chrome__browser__interface__binders.cc81
-rw-r--r--devel/electron30/files/patch-chrome_browser_chrome__browser__main.cc118
-rw-r--r--devel/electron30/files/patch-chrome_browser_chrome__browser__main__extra__parts__linux.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_chrome__browser__main__extra__parts__ozone.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_chrome__browser__main__linux.cc39
-rw-r--r--devel/electron30/files/patch-chrome_browser_chrome__browser__main__linux.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_chrome__browser__main__posix.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_chrome__content__browser__client.cc161
-rw-r--r--devel/electron30/files/patch-chrome_browser_chrome__content__browser__client.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_component__updater_widevine__cdm__component__installer.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_custom__handlers_chrome__protocol__handler__registry__delegate.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_defaults.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_diagnostics_diagnostics__writer.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_download_download__commands.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_download_download__commands.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_download_download__file__picker.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_download_download__item__model.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_download_download__prefs.cc90
-rw-r--r--devel/electron30/files/patch-chrome_browser_download_download__prefs.h20
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_browser__management_browser__management__service.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_browser__management_browser__management__service.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_connectors_analysis_analysis__service__settings.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_connectors_connectors__service.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__connector__service__factory.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__service__factory.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_browser_commands_key__rotation__command__factory.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_core_persistence_key__persistence__delegate__factory.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_connectors_device__trust_signals_signals__service__factory.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_connectors_reporting_crash__reporting__context.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_connectors_reporting_realtime__reporting__client.cc38
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_connectors_reporting_realtime__reporting__client.h20
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_identifiers_profile__id__delegate__impl.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_profile__management_profile__management__navigation__throttle.cc13
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_remote__commands_cbcm__remote__commands__factory.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_signals_device__info__fetcher.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_signals_device__info__fetcher__linux.cc78
-rw-r--r--devel/electron30/files/patch-chrome_browser_enterprise_watermark_watermark__view.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_BUILD.gn13
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_api__browser__context__keyed__service__factories.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.cc38
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.h29
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_management_chrome__management__api__delegate.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_messaging_native__process__launcher__posix.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_passwords__private_passwords__private__delegate__impl.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc13
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_tabs_tabs__api.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_api_webstore__private_webstore__private__api.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_extensions_external__provider__impl.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_first__run_first__run__dialog.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_first__run_first__run__internal.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_flag__descriptions.cc92
-rw-r--r--devel/electron30/files/patch-chrome_browser_flag__descriptions.h90
-rw-r--r--devel/electron30/files/patch-chrome_browser_gcm_gcm__profile__service__factory.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_gcm_instance__id_instance__id__profile__service__factory.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_headless_headless__mode__util.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_intranet__redirect__detector.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc15
-rw-r--r--devel/electron30/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc16
-rw-r--r--devel/electron30/files/patch-chrome_browser_media_audio__service__util.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_media_router_discovery_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc48
-rw-r--r--devel/electron30/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc30
-rw-r--r--devel/electron30/files/patch-chrome_browser_media_webrtc_chrome__screen__enumerator.cc47
-rw-r--r--devel/electron30/files/patch-chrome_browser_media_webrtc_chrome__screen__enumerator.h20
-rw-r--r--devel/electron30/files/patch-chrome_browser_media_webrtc_desktop__media__picker__controller.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc33
-rw-r--r--devel/electron30/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h20
-rw-r--r--devel/electron30/files/patch-chrome_browser_memory__details.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc55
-rw-r--r--devel/electron30/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.h20
-rw-r--r--devel/electron30/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc83
-rw-r--r--devel/electron30/files/patch-chrome_browser_metrics_perf_cpu__identity.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_metrics_power_process__metrics__recorder__util.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_metrics_power_process__monitor.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_metrics_power_process__monitor.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_net_system__network__context__manager.cc174
-rw-r--r--devel/electron30/files/patch-chrome_browser_net_system__network__context__manager.h29
-rw-r--r--devel/electron30/files/patch-chrome_browser_new__tab__page_modules_drive_drive__service.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_new__tab__page_new__tab__page__util.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_notifications_notification__display__service__impl.cc38
-rw-r--r--devel/electron30/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_password__manager_password__reuse__manager__factory.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_platform__util__linux.cc12
-rw-r--r--devel/electron30/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc38
-rw-r--r--devel/electron30/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc264
-rw-r--r--devel/electron30/files/patch-chrome_browser_policy_device__management__service__configuration.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_policy_policy__value__and__status__aggregator.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_prefs_browser__prefs.cc57
-rw-r--r--devel/electron30/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_printing_print__backend__service__manager.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_printing_printer__query.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_process__singleton__posix.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc114
-rw-r--r--devel/electron30/files/patch-chrome_browser_profiles_profile__impl.cc40
-rw-r--r--devel/electron30/files/patch-chrome_browser_profiles_profiles__state.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_renderer__preferences__util.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_resources_settings_autofill__page_passwords__shared.css11
-rw-r--r--devel/electron30/files/patch-chrome_browser_resources_signin_signin__shared.css11
-rw-r--r--devel/electron30/files/patch-chrome_browser_safe__browsing_cloud__content__scanning_binary__upload__service.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.h29
-rw-r--r--devel/electron30/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_screen__ai_screen__ai__install__state.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_screen__ai_screen__ai__service__router.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_search__engine__choice_search__engine__choice__client__side__trial.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_search__engine__choice_search__engine__choice__service__factory.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_sharing_sharing__device__registration.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_signin_signin__util.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_supervised__user_supervised__user__extensions__delegate__impl.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_supervised__user_supervised__user__extensions__manager.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_supervised__user_supervised__user__extensions__manager.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_supervised__user_supervised__user__navigation__observer.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_sync_chrome__sync__client.cc38
-rw-r--r--devel/electron30/files/patch-chrome_browser_sync_device__info__sync__client__impl.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_sync_sync__service__factory.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_sync_sync__service__util.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_task__manager_sampling_task__group.cc38
-rw-r--r--devel/electron30/files/patch-chrome_browser_task__manager_sampling_task__group.h38
-rw-r--r--devel/electron30/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc47
-rw-r--r--devel/electron30/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h38
-rw-r--r--devel/electron30/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_task__manager_task__manager__observer.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_themes_theme__helper.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_themes_theme__service.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_themes_theme__service__aura__linux.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_themes_theme__service__factory.cc37
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_actions_chrome__action__id.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_autofill_payments_desktop__payments__window__manager.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_autofill_payments_desktop__payments__window__manager.h38
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_browser.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_browser__command__controller.cc53
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_browser__ui__prefs.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_browser__view__prefs.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_chrome__pages.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_chrome__pages.h20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_color_native__chrome__color__mixer.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_omnibox_omnibox__pedal__implementations.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_passwords_bubble__controllers_relaunch__chrome__bubble__controller.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_passwords_manage__passwords__ui__controller.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_sad__tab.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_sharing__hub_sharing__hub__bubble__controller.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_signin_signin__view__controller.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_signin_signin__view__controller__delegate.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc38
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_startup_startup__tab__provider.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_tab__helpers.cc26
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_test_popup__browsertest.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_test_test__browser__ui.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_ui__features.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_ui__features.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_accelerator__table.cc43
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_chrome__views__delegate.h16
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_chrome__views__delegate__linux.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_compose_compose__dialog__view.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_browser__frame.cc56
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_browser__frame.h20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_browser__frame__view__layout__linux.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_browser__frame__view__layout__linux__native.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_browser__frame__view__linux.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_browser__view.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc38
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.h20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__layout__delegate.h20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_picture__in__picture__browser__frame__view.cc92
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_picture__in__picture__browser__frame__view.h47
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_frame_tab__strip__region__view.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_hung__renderer__view.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_passwords_password__bubble__view__base.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_profiles_profile__menu__view__base.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.cc47
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.h20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_tab__search__bubble__host.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_tabs_tab.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc56
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_tabs_tab__hover__card__bubble__view.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_tabs_tab__style__views.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_user__education_browser__user__education__service.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_views_web__apps_web__app__integration__test__driver.cc83
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_web__applications_web__app__dialogs.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_web__applications_web__app__ui__manager__impl.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_web__applications_web__app__ui__manager__impl.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_about_about__ui.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_app__home_app__home__page__handler.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc92
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_connectors__internals_device__trust__utils.cc29
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_management_management__ui.cc16
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_management_management__ui__handler.cc53
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_management_management__ui__handler.h37
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_password__manager_promo__cards__handler.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_password__manager_promo__cards_relaunch__chrome__promo.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_settings_accessibility__main__handler.cc46
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_settings_accessibility__main__handler.h47
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc65
-rw-r--r--devel/electron30/files/patch-chrome_browser_ui_window__sizer_window__sizer.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_commands_install__app__locally__command.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_extension__status__utils.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_extensions_extension__status__utils.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_os__integration_os__integration__test__override.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_os__integration_run__on__os__login__sub__manager.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_os__integration_shortcut__sub__manager.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_os__integration_web__app__file__handler__registration.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut.cc20
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut.h20
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut__manager.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_policy_web__app__policy__manager.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_test_os__integration__test__override__impl.cc119
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_test_os__integration__test__override__impl.h38
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_web__app__helpers.cc11
-rw-r--r--devel/electron30/files/patch-chrome_browser_web__applications_web__app__install__info.h11
-rw-r--r--devel/electron30/files/patch-chrome_browser_webauthn_chrome__authenticator__request__delegate.cc11
-rw-r--r--devel/electron30/files/patch-chrome_common_channel__info.h18
-rw-r--r--devel/electron30/files/patch-chrome_common_channel__info__posix.cc20
-rw-r--r--devel/electron30/files/patch-chrome_common_chrome__features.cc74
-rw-r--r--devel/electron30/files/patch-chrome_common_chrome__features.h45
-rw-r--r--devel/electron30/files/patch-chrome_common_chrome__paths.cc84
-rw-r--r--devel/electron30/files/patch-chrome_common_chrome__paths.h29
-rw-r--r--devel/electron30/files/patch-chrome_common_chrome__paths__internal.h11
-rw-r--r--devel/electron30/files/patch-chrome_common_chrome__switches.cc19
-rw-r--r--devel/electron30/files/patch-chrome_common_chrome__switches.h17
-rw-r--r--devel/electron30/files/patch-chrome_common_extensions_permissions_chrome__permission__message__rules.cc11
-rw-r--r--devel/electron30/files/patch-chrome_common_media_cdm__host__file__path.cc11
-rw-r--r--devel/electron30/files/patch-chrome_common_media_cdm__registration.cc52
-rw-r--r--devel/electron30/files/patch-chrome_common_media_component__widevine__cdm__hint__file__linux.h11
-rw-r--r--devel/electron30/files/patch-chrome_common_pref__names.h91
-rw-r--r--devel/electron30/files/patch-chrome_common_url__constants.h11
-rw-r--r--devel/electron30/files/patch-chrome_common_webui__url__constants.cc68
-rw-r--r--devel/electron30/files/patch-chrome_common_webui__url__constants.h57
-rw-r--r--devel/electron30/files/patch-chrome_renderer_chrome__render__frame__observer.cc11
-rw-r--r--devel/electron30/files/patch-chrome_services_file__util_public_mojom_safe__document__analyzer__mojom__traits.h11
-rw-r--r--devel/electron30/files/patch-chrome_services_printing_print__backend__service__impl.cc47
-rw-r--r--devel/electron30/files/patch-chrome_services_speech_audio__source__fetcher__impl.cc11
-rw-r--r--devel/electron30/files/patch-chrome_test_chromedriver_chrome__launcher.cc10
-rw-r--r--devel/electron30/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc29
-rw-r--r--devel/electron30/files/patch-chrome_test_chromedriver_key__converter__unittest.cc20
-rw-r--r--devel/electron30/files/patch-chrome_test_chromedriver_keycode__text__conversion__unittest.cc20
-rw-r--r--devel/electron30/files/patch-chrome_updater_configurator.cc11
-rw-r--r--devel/electron30/files/patch-chrome_updater_util_posix__util.cc11
-rw-r--r--devel/electron30/files/patch-chrome_utility_services.cc56
-rw-r--r--devel/electron30/files/patch-chromecast_browser_cast__browser__main__parts.cc38
-rw-r--r--devel/electron30/files/patch-chromecast_browser_cast__content__browser__client.cc11
-rw-r--r--devel/electron30/files/patch-chromecast_media_base_default__monotonic__clock.cc20
-rw-r--r--devel/electron30/files/patch-components_autofill_core_browser_personal__data__manager.cc12
-rw-r--r--devel/electron30/files/patch-components_autofill_core_common_autofill__payments__features.cc11
-rw-r--r--devel/electron30/files/patch-components_autofill_core_common_autofill__util.cc11
-rw-r--r--devel/electron30/files/patch-components_commerce_core_commerce__feature__list.cc20
-rw-r--r--devel/electron30/files/patch-components_constrained__window_constrained__window__views.cc11
-rw-r--r--devel/electron30/files/patch-components_content__settings_core_browser_website__settings__registry.cc11
-rw-r--r--devel/electron30/files/patch-components_cookie__config_cookie__store__util.cc11
-rw-r--r--devel/electron30/files/patch-components_crash_core_app_BUILD.gn43
-rw-r--r--devel/electron30/files/patch-components_crash_core_app_chrome__crashpad__handler.cc12
-rw-r--r--devel/electron30/files/patch-components_crash_core_app_crashpad__handler__main.cc20
-rw-r--r--devel/electron30/files/patch-components_crash_core_browser_crash__upload__list__crashpad.cc26
-rw-r--r--devel/electron30/files/patch-components_crash_core_common_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-components_device__signals_core_browser_mock__signals__aggregator.h11
-rw-r--r--devel/electron30/files/patch-components_device__signals_core_browser_signals__aggregator.h11
-rw-r--r--devel/electron30/files/patch-components_device__signals_core_browser_signals__aggregator__impl.cc11
-rw-r--r--devel/electron30/files/patch-components_device__signals_core_browser_signals__aggregator__impl.h11
-rw-r--r--devel/electron30/files/patch-components_device__signals_core_browser_user__permission__service.h11
-rw-r--r--devel/electron30/files/patch-components_device__signals_core_browser_user__permission__service__impl.cc11
-rw-r--r--devel/electron30/files/patch-components_device__signals_core_browser_user__permission__service__impl.h11
-rw-r--r--devel/electron30/files/patch-components_device__signals_core_common_signals__features.cc11
-rw-r--r--devel/electron30/files/patch-components_device__signals_core_common_signals__features.h11
-rw-r--r--devel/electron30/files/patch-components_device__signals_core_system__signals_platform__delegate.cc11
-rw-r--r--devel/electron30/files/patch-components_device__signals_test_signals__contract.cc11
-rw-r--r--devel/electron30/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc11
-rw-r--r--devel/electron30/files/patch-components_embedder__support_user__agent__utils.cc12
-rw-r--r--devel/electron30/files/patch-components_embedder__support_user__agent__utils__unittest.cc20
-rw-r--r--devel/electron30/files/patch-components_eye__dropper_eye__dropper__view.cc11
-rw-r--r--devel/electron30/files/patch-components_feature__engagement_public_event__constants.cc11
-rw-r--r--devel/electron30/files/patch-components_feature__engagement_public_event__constants.h11
-rw-r--r--devel/electron30/files/patch-components_feature__engagement_public_feature__configurations.cc39
-rw-r--r--devel/electron30/files/patch-components_feature__engagement_public_feature__constants.cc30
-rw-r--r--devel/electron30/files/patch-components_feature__engagement_public_feature__constants.h29
-rw-r--r--devel/electron30/files/patch-components_feature__engagement_public_feature__list.cc29
-rw-r--r--devel/electron30/files/patch-components_feature__engagement_public_feature__list.h56
-rw-r--r--devel/electron30/files/patch-components_feed_core_proto_v2_wire_version.proto13
-rw-r--r--devel/electron30/files/patch-components_feed_core_v2_feed__network__impl__unittest.cc13
-rw-r--r--devel/electron30/files/patch-components_feed_core_v2_proto__util.cc24
-rw-r--r--devel/electron30/files/patch-components_feed_core_v2_proto__util__unittest.cc13
-rw-r--r--devel/electron30/files/patch-components_feed_core_v2_test_proto__printer.cc13
-rw-r--r--devel/electron30/files/patch-components_flags__ui_flags__state.cc11
-rw-r--r--devel/electron30/files/patch-components_gwp__asan_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-components_gwp__asan_client_guarded__page__allocator__posix.cc13
-rw-r--r--devel/electron30/files/patch-components_gwp__asan_client_gwp__asan.cc11
-rw-r--r--devel/electron30/files/patch-components_gwp__asan_client_gwp__asan__features.cc11
-rw-r--r--devel/electron30/files/patch-components_gwp__asan_crash__handler_crash__analyzer.cc20
-rw-r--r--devel/electron30/files/patch-components_live__caption_caption__util.cc20
-rw-r--r--devel/electron30/files/patch-components_live__caption_caption__util.h11
-rw-r--r--devel/electron30/files/patch-components_media__router_common_media__source.cc11
-rw-r--r--devel/electron30/files/patch-components_media__router_common_providers_cast_channel_cast__message__util.cc11
-rw-r--r--devel/electron30/files/patch-components_metrics_drive__metrics__provider__linux.cc16
-rw-r--r--devel/electron30/files/patch-components_metrics_metrics__log.cc38
-rw-r--r--devel/electron30/files/patch-components_metrics_motherboard.cc10
-rw-r--r--devel/electron30/files/patch-components_named__mojo__ipc__server_connection__info.h20
-rw-r--r--devel/electron30/files/patch-components_named__mojo__ipc__server_named__mojo__ipc__server__client__util.cc11
-rw-r--r--devel/electron30/files/patch-components_neterror_resources_neterror.js11
-rw-r--r--devel/electron30/files/patch-components_network__session__configurator_browser_network__session__configurator.cc11
-rw-r--r--devel/electron30/files/patch-components_network__session__configurator_browser_network__session__configurator__unittest.cc11
-rw-r--r--devel/electron30/files/patch-components_optimization__guide_core_optimization__guide__util.cc11
-rw-r--r--devel/electron30/files/patch-components_os__crypt_sync_libsecret__util__linux.cc27
-rw-r--r--devel/electron30/files/patch-components_os__crypt_sync_os__crypt.h72
-rw-r--r--devel/electron30/files/patch-components_paint__preview_browser_paint__preview__client.cc13
-rw-r--r--devel/electron30/files/patch-components_paint__preview_browser_paint__preview__client__unittest.cc13
-rw-r--r--devel/electron30/files/patch-components_paint__preview_common_proto_paint__preview.proto13
-rw-r--r--devel/electron30/files/patch-components_paint__preview_player_player__compositor__delegate.cc13
-rw-r--r--devel/electron30/files/patch-components_password__manager_core_browser_features_password__features.cc20
-rw-r--r--devel/electron30/files/patch-components_password__manager_core_browser_features_password__features.h11
-rw-r--r--devel/electron30/files/patch-components_password__manager_core_browser_password__form__manager.cc29
-rw-r--r--devel/electron30/files/patch-components_password__manager_core_browser_password__manager.cc11
-rw-r--r--devel/electron30/files/patch-components_password__manager_core_browser_password__store_login__database__async__helper.cc11
-rw-r--r--devel/electron30/files/patch-components_password__manager_core_browser_password__store_login__database__unittest.cc11
-rw-r--r--devel/electron30/files/patch-components_password__manager_core_browser_sync_password__sync__bridge.cc11
-rw-r--r--devel/electron30/files/patch-components_password__manager_core_common_password__manager__features.cc11
-rw-r--r--devel/electron30/files/patch-components_password__manager_core_common_password__manager__features.h11
-rw-r--r--devel/electron30/files/patch-components_password__manager_core_common_password__manager__pref__names.h11
-rw-r--r--devel/electron30/files/patch-components_performance__manager_public_features.h11
-rw-r--r--devel/electron30/files/patch-components_permissions_prediction__service_prediction__common.cc20
-rw-r--r--devel/electron30/files/patch-components_policy_core_browser_policy__pref__mapping__test.cc11
-rw-r--r--devel/electron30/files/patch-components_policy_core_common_cloud_cloud__policy__client.cc11
-rw-r--r--devel/electron30/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc55
-rw-r--r--devel/electron30/files/patch-components_policy_core_common_policy__loader__common.cc20
-rw-r--r--devel/electron30/files/patch-components_policy_core_common_policy__paths.cc11
-rw-r--r--devel/electron30/files/patch-components_policy_core_common_policy__utils.cc11
-rw-r--r--devel/electron30/files/patch-components_policy_tools_generate__policy__source.py14
-rw-r--r--devel/electron30/files/patch-components_power__metrics_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-components_power__metrics_energy__metrics__provider.cc21
-rw-r--r--devel/electron30/files/patch-components_safe__browsing_content_common_file__type__policies__unittest.cc11
-rw-r--r--devel/electron30/files/patch-components_safe__browsing_content_resources_gen__file__type__proto.py20
-rw-r--r--devel/electron30/files/patch-components_safe__browsing_core_browser_db_v4__protocol__manager__util.cc11
-rw-r--r--devel/electron30/files/patch-components_safe__browsing_core_browser_realtime_url__lookup__service__base.cc11
-rw-r--r--devel/electron30/files/patch-components_search__engines_search__engine__choice_search__engine__choice__service.cc11
-rw-r--r--devel/electron30/files/patch-components_search__engines_template__url__service.cc11
-rw-r--r--devel/electron30/files/patch-components_security__interstitials_content_utils.cc11
-rw-r--r--devel/electron30/files/patch-components_segmentation__platform_embedder_default__model_cross__device__user__segment.cc11
-rw-r--r--devel/electron30/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc29
-rw-r--r--devel/electron30/files/patch-components_signin_public_base_signin__switches.cc20
-rw-r--r--devel/electron30/files/patch-components_signin_public_base_signin__switches.h11
-rw-r--r--devel/electron30/files/patch-components_startup__metric__utils_common_startup__metric__utils.cc11
-rw-r--r--devel/electron30/files/patch-components_storage__monitor_BUILD.gn20
-rw-r--r--devel/electron30/files/patch-components_storage__monitor_removable__device__constants.cc11
-rw-r--r--devel/electron30/files/patch-components_storage__monitor_removable__device__constants.h11
-rw-r--r--devel/electron30/files/patch-components_supervised__user_core_browser_supervised__user__service.cc11
-rw-r--r--devel/electron30/files/patch-components_supervised__user_core_common_features.cc20
-rw-r--r--devel/electron30/files/patch-components_supervised__user_core_common_features.h11
-rw-r--r--devel/electron30/files/patch-components_supervised__user_core_common_pref__names.h11
-rw-r--r--devel/electron30/files/patch-components_sync__device__info_local__device__info__util.cc29
-rw-r--r--devel/electron30/files/patch-components_sync__device__info_local__device__info__util__linux.cc14
-rw-r--r--devel/electron30/files/patch-components_sync_base_features.cc11
-rw-r--r--devel/electron30/files/patch-components_system__cpu_cpu__probe.cc12
-rw-r--r--devel/electron30/files/patch-components_translate_core_common_translate__util.cc11
-rw-r--r--devel/electron30/files/patch-components_update__client_update__query__params.cc11
-rw-r--r--devel/electron30/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc11
-rw-r--r--devel/electron30/files/patch-components_user__education_views_help__bubble__view.cc11
-rw-r--r--devel/electron30/files/patch-components_variations_service_variations__service.cc11
-rw-r--r--devel/electron30/files/patch-components_viz_host_host__display__client.cc11
-rw-r--r--devel/electron30/files/patch-components_viz_host_host__display__client.h11
-rw-r--r--devel/electron30/files/patch-components_viz_service_display__embedder_skia__output__surface__impl.cc11
-rw-r--r--devel/electron30/files/patch-components_viz_service_display__embedder_software__output__surface.cc20
-rw-r--r--devel/electron30/files/patch-components_viz_service_display__embedder_software__output__surface.h20
-rw-r--r--devel/electron30/files/patch-components_viz_service_display_skia__renderer.cc11
-rw-r--r--devel/electron30/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc20
-rw-r--r--devel/electron30/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h11
-rw-r--r--devel/electron30/files/patch-components_viz_test_fake__display__client.cc11
-rw-r--r--devel/electron30/files/patch-components_viz_test_fake__display__client.h11
-rw-r--r--devel/electron30/files/patch-components_viz_test_mock__display__client.h11
-rw-r--r--devel/electron30/files/patch-content_app_content__main.cc11
-rw-r--r--devel/electron30/files/patch-content_app_content__main__runner__impl.cc122
-rw-r--r--devel/electron30/files/patch-content_browser_BUILD.gn16
-rw-r--r--devel/electron30/files/patch-content_browser_audio_audio__service.cc20
-rw-r--r--devel/electron30/files/patch-content_browser_browser__child__process__host__impl.cc19
-rw-r--r--devel/electron30/files/patch-content_browser_browser__child__process__host__impl.h20
-rw-r--r--devel/electron30/files/patch-content_browser_browser__child__process__host__impl__receiver__bindings.cc11
-rw-r--r--devel/electron30/files/patch-content_browser_browser__main__loop.cc37
-rw-r--r--devel/electron30/files/patch-content_browser_child__process__launcher__helper.h11
-rw-r--r--devel/electron30/files/patch-content_browser_child__process__launcher__helper__linux.cc139
-rw-r--r--devel/electron30/files/patch-content_browser_child__thread__type__switcher__linux.cc20
-rw-r--r--devel/electron30/files/patch-content_browser_compositor_viz__process__transport__factory.cc11
-rw-r--r--devel/electron30/files/patch-content_browser_devtools_devtools__frontend__host__impl.cc38
-rw-r--r--devel/electron30/files/patch-content_browser_devtools_devtools__frontend__host__impl.h11
-rw-r--r--devel/electron30/files/patch-content_browser_devtools_protocol_system__info__handler.cc11
-rw-r--r--devel/electron30/files/patch-content_browser_file__system__access_file__system__access__local__path__watcher.cc11
-rw-r--r--devel/electron30/files/patch-content_browser_font__access_font__enumeration__data__source.cc29
-rw-r--r--devel/electron30/files/patch-content_browser_gpu_compositor__util.cc20
-rw-r--r--devel/electron30/files/patch-content_browser_gpu_gpu__data__manager__impl.cc11
-rw-r--r--devel/electron30/files/patch-content_browser_gpu_gpu__data__manager__impl.h11
-rw-r--r--devel/electron30/files/patch-content_browser_gpu_gpu__data__manager__impl__private.cc11
-rw-r--r--devel/electron30/files/patch-content_browser_gpu_gpu__data__manager__impl__private.h20
-rw-r--r--devel/electron30/files/patch-content_browser_gpu_gpu__memory__buffer__manager__singleton.cc20
-rw-r--r--devel/electron30/files/patch-content_browser_gpu_gpu__process__host.cc19
-rw-r--r--devel/electron30/files/patch-content_browser_media_frameless__media__interface__proxy.h20
-rw-r--r--devel/electron30/files/patch-content_browser_media_media__keys__listener__manager__impl.cc11
-rw-r--r--devel/electron30/files/patch-content_browser_network__service__instance__impl.cc29
-rw-r--r--devel/electron30/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc20
-rw-r--r--devel/electron30/files/patch-content_browser_renderer__host_delegated__frame__host.cc11
-rw-r--r--devel/electron30/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc29
-rw-r--r--devel/electron30/files/patch-content_browser_renderer__host_media_service__video__capture__device__launcher.cc20
-rw-r--r--devel/electron30/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc20
-rw-r--r--devel/electron30/files/patch-content_browser_renderer__host_render__process__host__impl.cc64
-rw-r--r--devel/electron30/files/patch-content_browser_renderer__host_render__process__host__impl.h11
-rw-r--r--devel/electron30/files/patch-content_browser_renderer__host_render__view__host__impl.cc11
-rw-r--r--devel/electron30/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc47
-rw-r--r--devel/electron30/files/patch-content_browser_renderer__host_render__widget__host__view__aura.h11
-rw-r--r--devel/electron30/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc11
-rw-r--r--devel/electron30/files/patch-content_browser_sandbox__host__linux.cc18
-rw-r--r--devel/electron30/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc11
-rw-r--r--devel/electron30/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc20
-rw-r--r--devel/electron30/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h47
-rw-r--r--devel/electron30/files/patch-content_browser_utility__process__host.cc72
-rw-r--r--devel/electron30/files/patch-content_browser_utility__process__host.h20
-rw-r--r--devel/electron30/files/patch-content_browser_utility__process__host__receiver__bindings.cc33
-rw-r--r--devel/electron30/files/patch-content_browser_utility__sandbox__delegate.cc28
-rw-r--r--devel/electron30/files/patch-content_browser_v8__snapshot__files.cc11
-rw-r--r--devel/electron30/files/patch-content_browser_web__contents_web__contents__view__aura.cc29
-rw-r--r--devel/electron30/files/patch-content_browser_webui_web__ui__main__frame__observer.cc38
-rw-r--r--devel/electron30/files/patch-content_browser_webui_web__ui__main__frame__observer.h20
-rw-r--r--devel/electron30/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc81
-rw-r--r--devel/electron30/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h29
-rw-r--r--devel/electron30/files/patch-content_child_BUILD.gn16
-rw-r--r--devel/electron30/files/patch-content_child_child__process.cc11
-rw-r--r--devel/electron30/files/patch-content_common_BUILD.gn36
-rw-r--r--devel/electron30/files/patch-content_common_features.cc20
-rw-r--r--devel/electron30/files/patch-content_common_features.h20
-rw-r--r--devel/electron30/files/patch-content_common_font__list__unittest.cc11
-rw-r--r--devel/electron30/files/patch-content_common_gpu__pre__sandbox__hook__bsd.cc71
-rw-r--r--devel/electron30/files/patch-content_common_gpu__pre__sandbox__hook__bsd.h23
-rw-r--r--devel/electron30/files/patch-content_common_gpu__pre__sandbox__hook__linux.h16
-rw-r--r--devel/electron30/files/patch-content_common_mojo__core__library__support.cc11
-rw-r--r--devel/electron30/files/patch-content_common_user__agent.cc37
-rw-r--r--devel/electron30/files/patch-content_gpu_gpu__child__thread.cc21
-rw-r--r--devel/electron30/files/patch-content_gpu_gpu__main.cc73
-rw-r--r--devel/electron30/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc29
-rw-r--r--devel/electron30/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h11
-rw-r--r--devel/electron30/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc23
-rw-r--r--devel/electron30/files/patch-content_public_browser_content__browser__client.cc11
-rw-r--r--devel/electron30/files/patch-content_public_browser_service__process__host.cc11
-rw-r--r--devel/electron30/files/patch-content_public_browser_zygote__host_zygote__host__linux.h16
-rw-r--r--devel/electron30/files/patch-content_public_common_content__features.cc41
-rw-r--r--devel/electron30/files/patch-content_public_common_content__switches.cc20
-rw-r--r--devel/electron30/files/patch-content_public_common_content__switches.h19
-rw-r--r--devel/electron30/files/patch-content_public_common_zygote_features.gni8
-rw-r--r--devel/electron30/files/patch-content_renderer_render__process__impl.cc11
-rw-r--r--devel/electron30/files/patch-content_renderer_render__thread__impl.cc38
-rw-r--r--devel/electron30/files/patch-content_renderer_renderer__blink__platform__impl.cc45
-rw-r--r--devel/electron30/files/patch-content_renderer_renderer__blink__platform__impl.h11
-rw-r--r--devel/electron30/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc18
-rw-r--r--devel/electron30/files/patch-content_shell_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-content_shell_app_shell__main__delegate.cc11
-rw-r--r--devel/electron30/files/patch-content_shell_browser_shell__browser__main__parts.cc47
-rw-r--r--devel/electron30/files/patch-content_shell_browser_shell__paths.cc20
-rw-r--r--devel/electron30/files/patch-content_shell_utility_shell__content__utility__client.cc20
-rw-r--r--devel/electron30/files/patch-content_utility_services.cc99
-rw-r--r--devel/electron30/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.cc37
-rw-r--r--devel/electron30/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.h16
-rw-r--r--devel/electron30/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc29
-rw-r--r--devel/electron30/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h11
-rw-r--r--devel/electron30/files/patch-content_utility_utility__main.cc128
-rw-r--r--devel/electron30/files/patch-content_utility_utility__thread__impl.cc21
-rw-r--r--devel/electron30/files/patch-content_zygote_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-content_zygote_zygote__linux.cc15
-rw-r--r--devel/electron30/files/patch-content_zygote_zygote__main__linux.cc58
-rw-r--r--devel/electron30/files/patch-device_bluetooth_bluetooth__adapter.cc11
-rw-r--r--devel/electron30/files/patch-device_bluetooth_cast__bluetooth.gni9
-rw-r--r--devel/electron30/files/patch-device_gamepad_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-device_gamepad_gamepad__provider.cc11
-rw-r--r--devel/electron30/files/patch-device_gamepad_hid__writer__linux.cc11
-rw-r--r--devel/electron30/files/patch-electron_BUILD.gn60
-rw-r--r--devel/electron30/files/patch-electron_build_args_all.gn13
-rw-r--r--devel/electron30/files/patch-electron_build_args_release.gn11
-rw-r--r--devel/electron30/files/patch-electron_default__app_default__app.ts11
-rw-r--r--devel/electron30/files/patch-electron_filenames.gni13
-rw-r--r--devel/electron30/files/patch-electron_lib_browser_api_app.ts11
-rw-r--r--devel/electron30/files/patch-electron_lib_browser_api_dialog.ts11
-rw-r--r--devel/electron30/files/patch-electron_lib_browser_api_menu-item-roles.ts11
-rw-r--r--devel/electron30/files/patch-electron_lib_browser_api_power-monitor.ts11
-rw-r--r--devel/electron30/files/patch-electron_lib_browser_init.ts11
-rw-r--r--devel/electron30/files/patch-electron_lib_browser_rpc-server.ts11
-rw-r--r--devel/electron30/files/patch-electron_lib_renderer_api_clipboard.ts11
-rw-r--r--devel/electron30/files/patch-electron_script_lib_config.py12
-rw-r--r--devel/electron30/files/patch-electron_script_lib_utils.js11
-rw-r--r--devel/electron30/files/patch-electron_script_spec-runner.js11
-rw-r--r--devel/electron30/files/patch-electron_shell_app_electron__crash__reporter__client.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_app_electron__crash__reporter__client.h11
-rw-r--r--devel/electron30/files/patch-electron_shell_app_electron__main__delegate.cc57
-rw-r--r--devel/electron30/files/patch-electron_shell_app_node__main.cc38
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_api_electron__api__app.cc47
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_api_electron__api__base__window.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc72
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_api_electron__api__desktop__capturer.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_api_electron__api__power__monitor.cc23
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_api_electron__api__power__monitor.h11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_api_electron__api__safe__storage.cc29
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_api_electron__api__web__contents.cc61
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_api_electron__api__web__contents.h11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_api_process__metric.h20
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_browser.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_browser.h24
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_browser__linux.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_browser__process__impl.cc20
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_browser__process__impl.h29
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_electron__browser__main__parts.cc84
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_electron__browser__main__parts.h20
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_electron__browser__main__parts__posix.cc19
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_extensions_api_runtime_electron__runtime__api__delegate.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_native__window.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_native__window__views.cc200
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_native__window__views.h29
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_net_system__network__context__manager.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_osr_osr__host__display__client.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_osr_osr__host__display__client.h11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_printing_printing__utils.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_relauncher__linux.cc32
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_ui_inspectable__web__contents__view__delegate.h11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_ui_views_electron__views__delegate.cc38
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_ui_views_electron__views__delegate.h11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_ui_views_inspectable__web__contents__view__views.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_ui_views_menu__bar.cc38
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_ui_views_menu__bar.h11
-rw-r--r--devel/electron30/files/patch-electron_shell_browser_ui_views_submenu__button.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_common_api_electron__api__clipboard.cc20
-rw-r--r--devel/electron30/files/patch-electron_shell_common_api_electron__api__native__image.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_common_api_electron__api__native__image.h11
-rw-r--r--devel/electron30/files/patch-electron_shell_common_api_electron__bindings.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_common_electron__command__line.cc11
-rw-r--r--devel/electron30/files/patch-electron_shell_common_electron__command__line.h11
-rw-r--r--devel/electron30/files/patch-electron_shell_common_electron__paths.h11
-rw-r--r--devel/electron30/files/patch-electron_shell_common_gin__converters_std__converter.h11
-rw-r--r--devel/electron30/files/patch-electron_shell_common_node__bindings.cc29
-rw-r--r--devel/electron30/files/patch-electron_shell_common_node__bindings__linux.cc69
-rw-r--r--devel/electron30/files/patch-electron_shell_common_platform__util.h11
-rw-r--r--devel/electron30/files/patch-electron_shell_renderer_api_electron__api__crash__reporter__renderer.cc36
-rw-r--r--devel/electron30/files/patch-electron_spec_api-app-spec.ts133
-rw-r--r--devel/electron30/files/patch-electron_spec_api-browser-window-spec.ts155
-rw-r--r--devel/electron30/files/patch-electron_spec_api-clipboard-spec.ts29
-rw-r--r--devel/electron30/files/patch-electron_spec_api-content-tracing-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_api-crash-reporter-spec.ts56
-rw-r--r--devel/electron30/files/patch-electron_spec_api-desktop-capturer-spec.ts47
-rw-r--r--devel/electron30/files/patch-electron_spec_api-menu-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_api-native-image-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_api-net-log-spec.ts29
-rw-r--r--devel/electron30/files/patch-electron_spec_api-notification-dbus-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_api-power-monitor-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_api-process-spec.ts20
-rw-r--r--devel/electron30/files/patch-electron_spec_api-protocol-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_api-safe-storage-spec.ts20
-rw-r--r--devel/electron30/files/patch-electron_spec_api-screen-spec.ts29
-rw-r--r--devel/electron30/files/patch-electron_spec_api-shell-spec.ts23
-rw-r--r--devel/electron30/files/patch-electron_spec_api-subframe-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_api-tray-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_api-utility-process-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_api-web-frame-main-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_chromium-spec.ts44
-rw-r--r--devel/electron30/files/patch-electron_spec_crash-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_fixtures_api_safe-storage_decrypt-app_main.js11
-rw-r--r--devel/electron30/files/patch-electron_spec_fixtures_api_safe-storage_encrypt-app_main.js11
-rw-r--r--devel/electron30/files/patch-electron_spec_fixtures_crash-cases_safe-storage_index.js11
-rw-r--r--devel/electron30/files/patch-electron_spec_fixtures_native-addon_uv-dlopen_index.js11
-rw-r--r--devel/electron30/files/patch-electron_spec_node-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_version-bump-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_visibility-state-spec.ts11
-rw-r--r--devel/electron30/files/patch-electron_spec_webview-spec.ts11
-rw-r--r--devel/electron30/files/patch-extensions_browser_api_api__browser__context__keyed__service__factories.cc11
-rw-r--r--devel/electron30/files/patch-extensions_browser_api_management_management__api.cc11
-rw-r--r--devel/electron30/files/patch-extensions_browser_api_messaging_message__service.cc20
-rw-r--r--devel/electron30/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc20
-rw-r--r--devel/electron30/files/patch-extensions_common_api___permission__features.json29
-rw-r--r--devel/electron30/files/patch-extensions_common_api_runtime.json10
-rw-r--r--devel/electron30/files/patch-extensions_common_command.cc11
-rw-r--r--devel/electron30/files/patch-extensions_common_features_feature.cc11
-rw-r--r--devel/electron30/files/patch-extensions_renderer_bindings_api__binding__util.cc11
-rw-r--r--devel/electron30/files/patch-extensions_renderer_bindings_argument__spec.cc11
-rw-r--r--devel/electron30/files/patch-extensions_shell_app_shell__main__delegate.cc20
-rw-r--r--devel/electron30/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc11
-rw-r--r--devel/electron30/files/patch-extensions_shell_browser_shell__browser__main__parts.cc11
-rw-r--r--devel/electron30/files/patch-extensions_shell_browser_shell__extensions__api__client.cc11
-rw-r--r--devel/electron30/files/patch-extensions_shell_browser_shell__extensions__api__client.h20
-rw-r--r--devel/electron30/files/patch-google__apis_gcm_engine_heartbeat__manager.cc29
-rw-r--r--devel/electron30/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc20
-rw-r--r--devel/electron30/files/patch-gpu_command__buffer_service_dawn__context__provider.cc11
-rw-r--r--devel/electron30/files/patch-gpu_command__buffer_service_gles2__cmd__decoder.cc11
-rw-r--r--devel/electron30/files/patch-gpu_command__buffer_service_shared__image_angle__vulkan__image__backing__factory.cc11
-rw-r--r--devel/electron30/files/patch-gpu_command__buffer_service_shared__image_external__vk__image__backing.cc20
-rw-r--r--devel/electron30/files/patch-gpu_command__buffer_service_shared__image_external__vk__image__backing__factory.cc11
-rw-r--r--devel/electron30/files/patch-gpu_command__buffer_service_shared__image_shared__image__factory.cc11
-rw-r--r--devel/electron30/files/patch-gpu_command__buffer_service_shared__image_shared__image__manager.cc11
-rw-r--r--devel/electron30/files/patch-gpu_command__buffer_service_shared__image_wrapped__sk__image__backing.cc11
-rw-r--r--devel/electron30/files/patch-gpu_command__buffer_service_webgpu__decoder__impl.cc20
-rw-r--r--devel/electron30/files/patch-gpu_command__buffer_tests_gl__gpu__memory__buffer__unittest.cc20
-rw-r--r--devel/electron30/files/patch-gpu_config_gpu__control__list.cc20
-rw-r--r--devel/electron30/files/patch-gpu_config_gpu__finch__features.cc20
-rw-r--r--devel/electron30/files/patch-gpu_config_gpu__info__collector.cc11
-rw-r--r--devel/electron30/files/patch-gpu_config_gpu__test__config.cc11
-rw-r--r--devel/electron30/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc20
-rw-r--r--devel/electron30/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h11
-rw-r--r--devel/electron30/files/patch-gpu_ipc_service_gpu__init.cc74
-rw-r--r--devel/electron30/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc20
-rw-r--r--devel/electron30/files/patch-gpu_ipc_service_x__util.h11
-rw-r--r--devel/electron30/files/patch-gpu_vulkan_generate__bindings.py11
-rw-r--r--devel/electron30/files/patch-gpu_vulkan_semaphore__handle.cc20
-rw-r--r--devel/electron30/files/patch-gpu_vulkan_vulkan__device__queue.cc20
-rw-r--r--devel/electron30/files/patch-gpu_vulkan_vulkan__device__queue.h11
-rw-r--r--devel/electron30/files/patch-gpu_vulkan_vulkan__function__pointers.cc20
-rw-r--r--devel/electron30/files/patch-gpu_vulkan_vulkan__function__pointers.h27
-rw-r--r--devel/electron30/files/patch-gpu_vulkan_vulkan__image.h20
-rw-r--r--devel/electron30/files/patch-gpu_vulkan_vulkan__util.cc11
-rw-r--r--devel/electron30/files/patch-headless_lib_browser_headless__browser__main__parts__posix.cc39
-rw-r--r--devel/electron30/files/patch-headless_lib_browser_headless__content__browser__client.h11
-rw-r--r--devel/electron30/files/patch-headless_lib_browser_headless__request__context__manager.cc11
-rw-r--r--devel/electron30/files/patch-headless_lib_browser_headless__web__contents__impl.cc11
-rw-r--r--devel/electron30/files/patch-headless_lib_headless__content__main__delegate.cc11
-rw-r--r--devel/electron30/files/patch-ipc_ipc__channel.h11
-rw-r--r--devel/electron30/files/patch-ipc_ipc__channel__common.cc11
-rw-r--r--devel/electron30/files/patch-ipc_ipc__channel__mojo.cc11
-rw-r--r--devel/electron30/files/patch-ipc_ipc__message__utils.cc11
-rw-r--r--devel/electron30/files/patch-ipc_ipc__message__utils.h11
-rw-r--r--devel/electron30/files/patch-media_BUILD.gn12
-rw-r--r--devel/electron30/files/patch-media_audio_BUILD.gn24
-rw-r--r--devel/electron30/files/patch-media_audio_alsa_audio__manager__alsa.cc54
-rw-r--r--devel/electron30/files/patch-media_audio_audio__input__device.cc11
-rw-r--r--devel/electron30/files/patch-media_audio_audio__output__proxy__unittest.cc14
-rw-r--r--devel/electron30/files/patch-media_audio_sndio_audio__manager__sndio.cc184
-rw-r--r--devel/electron30/files/patch-media_audio_sndio_audio__manager__sndio.h69
-rw-r--r--devel/electron30/files/patch-media_audio_sndio_sndio__input.cc203
-rw-r--r--devel/electron30/files/patch-media_audio_sndio_sndio__input.h94
-rw-r--r--devel/electron30/files/patch-media_audio_sndio_sndio__output.cc190
-rw-r--r--devel/electron30/files/patch-media_audio_sndio_sndio__output.h91
-rw-r--r--devel/electron30/files/patch-media_base_audio__latency.cc11
-rw-r--r--devel/electron30/files/patch-media_base_libaom__thread__wrapper.cc24
-rw-r--r--devel/electron30/files/patch-media_base_libvpx__thread__wrapper.cc25
-rw-r--r--devel/electron30/files/patch-media_base_media__switches.cc103
-rw-r--r--devel/electron30/files/patch-media_base_media__switches.h38
-rw-r--r--devel/electron30/files/patch-media_base_user__input__monitor__unittest.cc29
-rw-r--r--devel/electron30/files/patch-media_base_video__frame.cc74
-rw-r--r--devel/electron30/files/patch-media_base_video__frame.h47
-rw-r--r--devel/electron30/files/patch-media_capture_video_create__video__capture__device__factory.cc20
-rw-r--r--devel/electron30/files/patch-media_capture_video_fake__video__capture__device__factory.cc11
-rw-r--r--devel/electron30/files/patch-media_capture_video_file__video__capture__device__factory.cc11
-rw-r--r--devel/electron30/files/patch-media_capture_video_linux_fake__v4l2__impl.cc11
-rw-r--r--devel/electron30/files/patch-media_capture_video_linux_fake__v4l2__impl.h25
-rw-r--r--devel/electron30/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc156
-rw-r--r--devel/electron30/files/patch-media_capture_video_linux_v4l2__capture__delegate.h51
-rw-r--r--devel/electron30/files/patch-media_capture_video_linux_v4l2__capture__device.h11
-rw-r--r--devel/electron30/files/patch-media_capture_video_linux_v4l2__capture__device__impl.cc11
-rw-r--r--devel/electron30/files/patch-media_capture_video_linux_v4l2__capture__device__impl.h11
-rw-r--r--devel/electron30/files/patch-media_capture_video_linux_video__capture__device__factory__v4l2.cc71
-rw-r--r--devel/electron30/files/patch-media_capture_video_linux_video__capture__device__factory__v4l2.h11
-rw-r--r--devel/electron30/files/patch-media_capture_video_video__capture__buffer__tracker__factory__impl.cc20
-rw-r--r--devel/electron30/files/patch-media_capture_video_video__capture__device__client.cc11
-rw-r--r--devel/electron30/files/patch-media_cdm_cdm__paths__unittest.cc11
-rw-r--r--devel/electron30/files/patch-media_cdm_library__cdm_cdm__paths.gni11
-rw-r--r--devel/electron30/files/patch-media_gpu_buffer__validation.cc46
-rw-r--r--devel/electron30/files/patch-media_gpu_chromeos_libyuv__image__processor__backend.cc29
-rw-r--r--devel/electron30/files/patch-media_gpu_chromeos_mailbox__video__frame__converter.cc11
-rw-r--r--devel/electron30/files/patch-media_gpu_chromeos_native__pixmap__frame__resource.cc11
-rw-r--r--devel/electron30/files/patch-media_gpu_chromeos_platform__video__frame__utils.cc29
-rw-r--r--devel/electron30/files/patch-media_gpu_chromeos_video__decoder__pipeline.cc29
-rw-r--r--devel/electron30/files/patch-media_gpu_gpu__video__encode__accelerator__factory.cc11
-rw-r--r--devel/electron30/files/patch-media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.cc44
-rw-r--r--devel/electron30/files/patch-media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.h16
-rw-r--r--devel/electron30/files/patch-media_gpu_sandbox_hardware__video__encoding__sandbox__hook__linux.cc26
-rw-r--r--devel/electron30/files/patch-media_gpu_sandbox_hardware__video__encoding__sandbox__hook__linux.h23
-rw-r--r--devel/electron30/files/patch-media_gpu_vaapi_vaapi__video__decoder.cc11
-rw-r--r--devel/electron30/files/patch-media_gpu_vaapi_vaapi__wrapper.cc11
-rw-r--r--devel/electron30/files/patch-media_media__options.gni30
-rw-r--r--devel/electron30/files/patch-media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.cc20
-rw-r--r--devel/electron30/files/patch-media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.h11
-rw-r--r--devel/electron30/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc11
-rw-r--r--devel/electron30/files/patch-media_video_fake__gpu__memory__buffer.cc38
-rw-r--r--devel/electron30/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc29
-rw-r--r--devel/electron30/files/patch-media_video_video__encode__accelerator__adapter.cc20
-rw-r--r--devel/electron30/files/patch-media_video_video__encode__accelerator__adapter__test.cc11
-rw-r--r--devel/electron30/files/patch-media_webrtc_audio__processor.cc11
-rw-r--r--devel/electron30/files/patch-media_webrtc_helpers.cc19
-rw-r--r--devel/electron30/files/patch-media_webrtc_helpers__unittests.cc38
-rw-r--r--devel/electron30/files/patch-mojo_core_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-mojo_core_channel.cc14
-rw-r--r--devel/electron30/files/patch-mojo_core_embedder_features.h11
-rw-r--r--devel/electron30/files/patch-mojo_public_c_system_thunks.cc38
-rw-r--r--devel/electron30/files/patch-mojo_public_tools_bindings_mojom.gni19
-rw-r--r--devel/electron30/files/patch-net_BUILD.gn78
-rw-r--r--devel/electron30/files/patch-net_base_features.cc24
-rw-r--r--devel/electron30/files/patch-net_base_mock__network__change__notifier.cc11
-rw-r--r--devel/electron30/files/patch-net_base_mock__network__change__notifier.h20
-rw-r--r--devel/electron30/files/patch-net_base_network__change__notifier.cc21
-rw-r--r--devel/electron30/files/patch-net_base_network__change__notifier__passive.cc11
-rw-r--r--devel/electron30/files/patch-net_base_network__interfaces__posix.h11
-rw-r--r--devel/electron30/files/patch-net_base_sockaddr__util__posix.cc12
-rw-r--r--devel/electron30/files/patch-net_base_sockaddr__util__posix__unittest.cc12
-rw-r--r--devel/electron30/files/patch-net_cert_cert__verify__proc.h11
-rw-r--r--devel/electron30/files/patch-net_disk__cache_simple_simple__file__tracker.cc20
-rw-r--r--devel/electron30/files/patch-net_dns_BUILD.gn41
-rw-r--r--devel/electron30/files/patch-net_dns_address__info.cc16
-rw-r--r--devel/electron30/files/patch-net_dns_address__sorter__posix.cc10
-rw-r--r--devel/electron30/files/patch-net_dns_dns__config__service__posix.cc27
-rw-r--r--devel/electron30/files/patch-net_dns_dns__reloader.cc10
-rw-r--r--devel/electron30/files/patch-net_dns_dns__util.cc11
-rw-r--r--devel/electron30/files/patch-net_dns_host__resolver__proc.cc13
-rw-r--r--devel/electron30/files/patch-net_dns_public_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-net_dns_public_resolv__reader.h10
-rw-r--r--devel/electron30/files/patch-net_dns_public_scoped__res__state.h10
-rw-r--r--devel/electron30/files/patch-net_filter_zstd__source__stream.cc10
-rw-r--r--devel/electron30/files/patch-net_http_http__auth__gssapi__posix.cc14
-rw-r--r--devel/electron30/files/patch-net_http_http__auth__gssapi__posix.h12
-rw-r--r--devel/electron30/files/patch-net_http_http__auth__handler__negotiate.cc11
-rw-r--r--devel/electron30/files/patch-net_http_http__auth__preferences.cc11
-rw-r--r--devel/electron30/files/patch-net_http_http__auth__preferences.h29
-rw-r--r--devel/electron30/files/patch-net_http_http__network__session.cc12
-rw-r--r--devel/electron30/files/patch-net_proxy__resolution_proxy__config__service.cc35
-rw-r--r--devel/electron30/files/patch-net_proxy__resolution_proxy__config__service__linux.cc40
-rw-r--r--devel/electron30/files/patch-net_socket_socket__posix.cc11
-rw-r--r--devel/electron30/files/patch-net_socket_socks5__client__socket.cc12
-rw-r--r--devel/electron30/files/patch-net_socket_tcp__socket__posix.cc20
-rw-r--r--devel/electron30/files/patch-net_socket_udp__socket__posix.cc39
-rw-r--r--devel/electron30/files/patch-net_socket_udp__socket__unittest.cc47
-rw-r--r--devel/electron30/files/patch-net_third__party_quiche_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-net_tools_cert__verify__tool_cert__verify__comparision__tool.cc29
-rw-r--r--devel/electron30/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc29
-rw-r--r--devel/electron30/files/patch-net_tools_net__watcher_net__watcher.cc29
-rw-r--r--devel/electron30/files/patch-net_traffic__annotation_network__traffic__annotation.h20
-rw-r--r--devel/electron30/files/patch-net_url__request_url__request__context.cc11
-rw-r--r--devel/electron30/files/patch-net_url__request_url__request__context.h11
-rw-r--r--devel/electron30/files/patch-net_url__request_url__request__context__builder.cc11
-rw-r--r--devel/electron30/files/patch-pdf_pdfium_pdfium__engine.cc20
-rw-r--r--devel/electron30/files/patch-printing_backend_cups__ipp__helper.cc11
-rw-r--r--devel/electron30/files/patch-printing_mojom_printing__context__mojom__traits.cc29
-rw-r--r--devel/electron30/files/patch-printing_mojom_printing__context__mojom__traits.h11
-rw-r--r--devel/electron30/files/patch-printing_print__settings.cc38
-rw-r--r--devel/electron30/files/patch-printing_print__settings.h47
-rw-r--r--devel/electron30/files/patch-printing_print__settings__conversion.cc11
-rw-r--r--devel/electron30/files/patch-printing_printing__context__linux.cc38
-rw-r--r--devel/electron30/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.cc50
-rw-r--r--devel/electron30/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.h16
-rw-r--r--devel/electron30/files/patch-remoting_base_chromoting__event.cc11
-rw-r--r--devel/electron30/files/patch-remoting_base_host__settings.cc20
-rw-r--r--devel/electron30/files/patch-remoting_client_display_sys__opengl.h11
-rw-r--r--devel/electron30/files/patch-remoting_codec_webrtc__video__encoder__vpx.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_base_desktop__environment__options.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_base_switches.cc18
-rw-r--r--devel/electron30/files/patch-remoting_host_base_switches.h18
-rw-r--r--devel/electron30/files/patch-remoting_host_basic__desktop__environment.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_chromoting__host.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_chromoting__host.h29
-rw-r--r--devel/electron30/files/patch-remoting_host_chromoting__host__context.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_chromoting__host__services__client.cc20
-rw-r--r--devel/electron30/files/patch-remoting_host_client__session.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_desktop__and__cursor__conditional__composer.cc20
-rw-r--r--devel/electron30/files/patch-remoting_host_desktop__capturer__proxy.cc29
-rw-r--r--devel/electron30/files/patch-remoting_host_desktop__capturer__wrapper.cc29
-rw-r--r--devel/electron30/files/patch-remoting_host_evaluate__capability.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_host__attributes.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_host__details.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_host__main.cc29
-rw-r--r--devel/electron30/files/patch-remoting_host_ipc__constants.cc20
-rw-r--r--devel/electron30/files/patch-remoting_host_it2me_it2me__host.cc29
-rw-r--r--devel/electron30/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc47
-rw-r--r--devel/electron30/files/patch-remoting_host_me2me__desktop__environment.cc38
-rw-r--r--devel/electron30/files/patch-remoting_host_mouse__cursor__monitor__proxy.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_policy__watcher.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_remote__open__url_remote__open__url__client.cc20
-rw-r--r--devel/electron30/files/patch-remoting_host_remote__open__url_remote__open__url__util.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_remote__open__url_url__forwarder__configurator.cc11
-rw-r--r--devel/electron30/files/patch-remoting_host_remoting__me2me__host.cc169
-rw-r--r--devel/electron30/files/patch-remoting_host_setup_start__host__main.cc29
-rw-r--r--devel/electron30/files/patch-remoting_host_webauthn_remote__webauthn__caller__security__utils.cc29
-rw-r--r--devel/electron30/files/patch-remoting_host_webauthn_remote__webauthn__extension__notifier.cc28
-rw-r--r--devel/electron30/files/patch-remoting_protocol_webrtc__video__stream.cc11
-rw-r--r--devel/electron30/files/patch-sandbox_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-sandbox_features.gni11
-rw-r--r--devel/electron30/files/patch-sandbox_linux_BUILD.gn35
-rw-r--r--devel/electron30/files/patch-sandbox_linux_services_init__process__reaper.cc15
-rw-r--r--devel/electron30/files/patch-sandbox_linux_services_libc__interceptor.cc21
-rw-r--r--devel/electron30/files/patch-sandbox_policy_BUILD.gn39
-rw-r--r--devel/electron30/files/patch-sandbox_policy_features.cc23
-rw-r--r--devel/electron30/files/patch-sandbox_policy_features.h11
-rw-r--r--devel/electron30/files/patch-sandbox_policy_freebsd_sandbox__freebsd.cc248
-rw-r--r--devel/electron30/files/patch-sandbox_policy_freebsd_sandbox__freebsd.h281
-rw-r--r--devel/electron30/files/patch-sandbox_policy_mojom_sandbox.mojom15
-rw-r--r--devel/electron30/files/patch-sandbox_policy_openbsd_sandbox__openbsd.cc427
-rw-r--r--devel/electron30/files/patch-sandbox_policy_openbsd_sandbox__openbsd.h285
-rw-r--r--devel/electron30/files/patch-sandbox_policy_sandbox.cc22
-rw-r--r--devel/electron30/files/patch-sandbox_policy_sandbox.h24
-rw-r--r--devel/electron30/files/patch-sandbox_policy_sandbox__type.cc115
-rw-r--r--devel/electron30/files/patch-sandbox_policy_switches.cc26
-rw-r--r--devel/electron30/files/patch-sandbox_policy_switches.h25
-rw-r--r--devel/electron30/files/patch-services_audio_audio__sandbox__hook__linux.cc31
-rw-r--r--devel/electron30/files/patch-services_audio_audio__sandbox__hook__linux.h16
-rw-r--r--devel/electron30/files/patch-services_device_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-services_device_geolocation_location__arbitrator.cc11
-rw-r--r--devel/electron30/files/patch-services_device_hid_BUILD.gn30
-rw-r--r--devel/electron30/files/patch-services_device_hid_hid__connection__fido.cc219
-rw-r--r--devel/electron30/files/patch-services_device_hid_hid__connection__fido.h63
-rw-r--r--devel/electron30/files/patch-services_device_hid_hid__connection__freebsd.cc243
-rw-r--r--devel/electron30/files/patch-services_device_hid_hid__connection__freebsd.h70
-rw-r--r--devel/electron30/files/patch-services_device_hid_hid__service.cc24
-rw-r--r--devel/electron30/files/patch-services_device_hid_hid__service__fido.cc399
-rw-r--r--devel/electron30/files/patch-services_device_hid_hid__service__fido.h68
-rw-r--r--devel/electron30/files/patch-services_device_hid_hid__service__freebsd.cc398
-rw-r--r--devel/electron30/files/patch-services_device_hid_hid__service__freebsd.h52
-rw-r--r--devel/electron30/files/patch-services_device_public_cpp_generic__sensor_sensor__reading.h11
-rw-r--r--devel/electron30/files/patch-services_device_public_mojom_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-services_device_serial_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-services_device_serial_serial__device__enumerator.cc20
-rw-r--r--devel/electron30/files/patch-services_device_serial_serial__io__handler__posix.cc11
-rw-r--r--devel/electron30/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc14
-rw-r--r--devel/electron30/files/patch-services_device_usb_BUILD.gn52
-rw-r--r--devel/electron30/files/patch-services_device_usb_usb__service.cc39
-rw-r--r--devel/electron30/files/patch-services_device_usb_usb__service__fake.cc52
-rw-r--r--devel/electron30/files/patch-services_device_usb_usb__service__fake.h51
-rw-r--r--devel/electron30/files/patch-services_network_BUILD.gn10
-rw-r--r--devel/electron30/files/patch-services_network_network__context.cc20
-rw-r--r--devel/electron30/files/patch-services_network_network__context.h11
-rw-r--r--devel/electron30/files/patch-services_network_network__sandbox__hook__linux.cc37
-rw-r--r--devel/electron30/files/patch-services_network_network__sandbox__hook__linux.h14
-rw-r--r--devel/electron30/files/patch-services_network_network__service.cc29
-rw-r--r--devel/electron30/files/patch-services_network_network__service.h29
-rw-r--r--devel/electron30/files/patch-services_network_public_cpp_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-services_network_public_cpp_features.cc11
-rw-r--r--devel/electron30/files/patch-services_network_public_mojom_BUILD.gn25
-rw-r--r--devel/electron30/files/patch-services_network_shared__dictionary_shared__dictionary__writer__in__memory.h11
-rw-r--r--devel/electron30/files/patch-services_on__device__model_on__device__model__service.h22
-rw-r--r--devel/electron30/files/patch-services_on__device__model_pre__sandbox__init.cc38
-rw-r--r--devel/electron30/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc65
-rw-r--r--devel/electron30/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_BUILD.gn16
-rw-r--r--devel/electron30/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h20
-rw-r--r--devel/electron30/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__bsd.cc61
-rw-r--r--devel/electron30/files/patch-services_screen__ai_public_cpp_utilities.cc29
-rw-r--r--devel/electron30/files/patch-services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.cc18
-rw-r--r--devel/electron30/files/patch-services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.h16
-rw-r--r--devel/electron30/files/patch-services_service__manager_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-services_tracing_public_cpp_stack__sampling_tracing__sampler__profiler.cc11
-rw-r--r--devel/electron30/files/patch-services_video__capture_public_mojom_video__capture__service.mojom15
-rw-r--r--devel/electron30/files/patch-services_video__capture_video__capture__service__impl.cc38
-rw-r--r--devel/electron30/files/patch-services_video__capture_video__capture__service__impl.h29
-rw-r--r--devel/electron30/files/patch-skia_ext_SkMemory__new__handler.cpp20
-rw-r--r--devel/electron30/files/patch-skia_ext_font__utils.cc20
-rw-r--r--devel/electron30/files/patch-skia_ext_skcolorspace__trfn.cc11
-rw-r--r--devel/electron30/files/patch-third__party_abseil-cpp_absl_base_config.h21
-rw-r--r--devel/electron30/files/patch-third__party_abseil-cpp_absl_base_internal_sysinfo.cc65
-rw-r--r--devel/electron30/files/patch-third__party_abseil-cpp_absl_debugging_internal_elf__mem__image.h11
-rw-r--r--devel/electron30/files/patch-third__party_angle_BUILD.gn29
-rw-r--r--devel/electron30/files/patch-third__party_angle_src_common_platform.h19
-rw-r--r--devel/electron30/files/patch-third__party_angle_src_common_platform__helpers.h11
-rw-r--r--devel/electron30/files/patch-third__party_angle_src_common_system__utils.cpp11
-rw-r--r--devel/electron30/files/patch-third__party_angle_src_common_system__utils__linux.cpp35
-rw-r--r--devel/electron30/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h16
-rw-r--r--devel/electron30/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp90
-rw-r--r--devel/electron30/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp35
-rw-r--r--devel/electron30/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp60
-rw-r--r--devel/electron30/files/patch-third__party_angle_src_libANGLE_Display.cpp47
-rw-r--r--devel/electron30/files/patch-third__party_angle_src_libANGLE_formatutils.cpp11
-rw-r--r--devel/electron30/files/patch-third__party_angle_src_libANGLE_renderer_gl_glx_FunctionsGLX.cpp15
-rw-r--r--devel/electron30/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h11
-rw-r--r--devel/electron30/files/patch-third__party_angle_util_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences.h11
-rw-r--r--devel/electron30/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h11
-rw-r--r--devel/electron30/files/patch-third__party_blink_public_platform_platform.h11
-rw-r--r--devel/electron30/files/patch-third__party_blink_public_platform_web__vector.h11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_build_scripts_run__with__pythonpath.py10
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_controller_blink__initializer.cc35
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc21
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h47
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_core_execution__context_navigator__base.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_core_exported_web__view__impl.cc20
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_core_frame_web__frame__test.cc20
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_core_layout_layout__view.cc20
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc20
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_core_xml_xslt__processor.h14
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_core_xml_xslt__processor__libxslt.cc14
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_modules_media_audio_audio__device__factory.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_modules_media_audio_audio__renderer__mixer__manager__test.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_modules_ml_webnn_features.gni11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_modules_ml_webnn_ml__graph__xnnpack.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_modules_webgl_webgl__rendering__context__base.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_modules_webgpu_gpu__queue.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc20
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h47
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc20
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc29
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_fonts_font__platform__data.cc20
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc20
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc20
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_graphics_begin__frame__provider.cc15
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_instrumentation_partition__alloc__memory__dump__provider.cc28
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_peerconnection_rtc__video__encoder__factory.cc17
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json556
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_scheduler_common_thread.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_video__capture_video__capture__impl.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_widget_compositing_blink__categorized__worker__pool__delegate.cc11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h11
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_wtf_math__extras.h23
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc37
-rw-r--r--devel/electron30/files/patch-third__party_blink_renderer_platform_wtf_text_text__codec__icu.cc18
-rw-r--r--devel/electron30/files/patch-third__party_boringssl_src_util_generate__build__files.py34
-rw-r--r--devel/electron30/files/patch-third__party_brotli_common_platform.h11
-rw-r--r--devel/electron30/files/patch-third__party_cpuinfo_cpuinfo.gni11
-rw-r--r--devel/electron30/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni11
-rw-r--r--devel/electron30/files/patch-third__party_crashpad_crashpad_client_BUILD.gn16
-rw-r--r--devel/electron30/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc43
-rw-r--r--devel/electron30/files/patch-third__party_crashpad_crashpad_minidump_minidump__misc__info__writer.cc13
-rw-r--r--devel/electron30/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h20
-rw-r--r--devel/electron30/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h22
-rw-r--r--devel/electron30/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc11
-rw-r--r--devel/electron30/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc11
-rw-r--r--devel/electron30/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc11
-rw-r--r--devel/electron30/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc11
-rw-r--r--devel/electron30/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc33
-rw-r--r--devel/electron30/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc20
-rw-r--r--devel/electron30/files/patch-third__party_crc32c_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-third__party_dawn_include_dawn_native_VulkanBackend.h11
-rw-r--r--devel/electron30/files/patch-third__party_dawn_src_dawn_common_Platform.h14
-rw-r--r--devel/electron30/files/patch-third__party_dawn_src_dawn_native_vulkan_BackendVk.cpp11
-rw-r--r--devel/electron30/files/patch-third__party_electron__node_deps_uv_BUILD.gn46
-rw-r--r--devel/electron30/files/patch-third__party_electron__node_deps_uv_src_unix_pipe.c18
-rw-r--r--devel/electron30/files/patch-third__party_ffmpeg_BUILD.gn10
-rw-r--r--devel/electron30/files/patch-third__party_ffmpeg_chromium_scripts_build__ffmpeg.py75
-rw-r--r--devel/electron30/files/patch-third__party_ffmpeg_chromium_scripts_robo__lib_config.py55
-rw-r--r--devel/electron30/files/patch-third__party_ffmpeg_configure13
-rw-r--r--devel/electron30/files/patch-third__party_ffmpeg_libavcodec_x86_cabac.h12
-rw-r--r--devel/electron30/files/patch-third__party_ffmpeg_libavutil_cpu.c14
-rw-r--r--devel/electron30/files/patch-third__party_ffmpeg_libavutil_mem.c12
-rw-r--r--devel/electron30/files/patch-third__party_ffmpeg_libavutil_random__seed.c14
-rw-r--r--devel/electron30/files/patch-third__party_ffmpeg_libavutil_x86_x86inc.asm23
-rw-r--r--devel/electron30/files/patch-third__party_fontconfig_include_config.h49
-rw-r--r--devel/electron30/files/patch-third__party_fontconfig_src_src_fccompat.c13
-rw-r--r--devel/electron30/files/patch-third__party_ipcz_src_reference__drivers_random.cc20
-rw-r--r--devel/electron30/files/patch-third__party_ipcz_src_standalone_base_logging.cc12
-rw-r--r--devel/electron30/files/patch-third__party_leveldatabase_env__chromium.cc12
-rw-r--r--devel/electron30/files/patch-third__party_libaom_source_libaom_aom__ports_aarch64__cpudetect.c49
-rw-r--r--devel/electron30/files/patch-third__party_libc++_src_src_chrono.cpp11
-rw-r--r--devel/electron30/files/patch-third__party_libc++_src_src_filesystem_filesystem__clock.cpp11
-rw-r--r--devel/electron30/files/patch-third__party_libc++abi_src_src_cxa__guard__impl.h24
-rw-r--r--devel/electron30/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h11
-rw-r--r--devel/electron30/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h11
-rw-r--r--devel/electron30/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h20
-rw-r--r--devel/electron30/files/patch-third__party_libsync_src_include_sync_sync.h12
-rw-r--r--devel/electron30/files/patch-third__party_libsync_src_sync.c25
-rw-r--r--devel/electron30/files/patch-third__party_libusb_BUILD.gn52
-rw-r--r--devel/electron30/files/patch-third__party_libusb_src_libusb_core.c11
-rw-r--r--devel/electron30/files/patch-third__party_libusb_src_libusb_libusb.h11
-rw-r--r--devel/electron30/files/patch-third__party_libusb_src_libusb_os_threads__posix.c24
-rw-r--r--devel/electron30/files/patch-third__party_libvpx_source_libvpx_vpx__ports_aarch64__cpudetect.c27
-rw-r--r--devel/electron30/files/patch-third__party_lzma__sdk_C_CpuArch.c44
-rw-r--r--devel/electron30/files/patch-third__party_maldoca_BUILD.gn13
-rw-r--r--devel/electron30/files/patch-third__party_maldoca_src_maldoca_base_get__runfiles__dir.cc32
-rw-r--r--devel/electron30/files/patch-third__party_maldoca_src_maldoca_service_common_process__doc__wrapper.cc29
-rw-r--r--devel/electron30/files/patch-third__party_material__color__utilities_src_cpp_palettes_tones.cc11
-rw-r--r--devel/electron30/files/patch-third__party_nasm_BUILD.gn16
-rw-r--r--devel/electron30/files/patch-third__party_nasm_config_config-linux.h102
-rw-r--r--devel/electron30/files/patch-third__party_node_node.gni11
-rw-r--r--devel/electron30/files/patch-third__party_node_node.py11
-rw-r--r--devel/electron30/files/patch-third__party_pdfium_core_fxge_cfx__fontmapper.cpp11
-rw-r--r--devel/electron30/files/patch-third__party_pdfium_core_fxge_linux_fx__linux__impl.cpp23
-rw-r--r--devel/electron30/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp22
-rw-r--r--devel/electron30/files/patch-third__party_pdfium_pdfium.gni11
-rw-r--r--devel/electron30/files/patch-third__party_pdfium_xfa_fxfa_parser_cxfa__timezoneprovider.cpp41
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_include_perfetto_base_build__config.h66
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h22
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_include_perfetto_base_time.h34
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h11
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h15
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_include_perfetto_tracing_internal_track__event__legacy.h11
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_protos_perfetto_trace_ftrace_v4l2.proto56
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_src_base_event__fd.cc22
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_src_base_periodic__task.cc20
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_src_base_string__utils.cc15
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_src_base_subprocess__posix.cc22
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_src_base_test_vm__test__utils.cc11
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_src_base_thread__task__runner.cc14
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_src_base_unix__socket.cc26
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_src_tracing_core_clock__snapshots.cc12
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_src_tracing_ipc_memfd.cc12
-rw-r--r--devel/electron30/files/patch-third__party_perfetto_src_tracing_track.cc11
-rw-r--r--devel/electron30/files/patch-third__party_protobuf_src_google_protobuf_arenastring.cc12
-rw-r--r--devel/electron30/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h11
-rw-r--r--devel/electron30/files/patch-third__party_skia_src_ports_SkMemory__malloc.cpp20
-rw-r--r--devel/electron30/files/patch-third__party_skia_src_ports_SkOSFile__posix.cpp11
-rw-r--r--devel/electron30/files/patch-third__party_speech-dispatcher_libspeechd__version.h32
-rw-r--r--devel/electron30/files/patch-third__party_speech-dispatcher_speechd__types.h142
-rw-r--r--devel/electron30/files/patch-third__party_sqlite_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-third__party_sqlite_src_amalgamation_sqlite3.c23
-rw-r--r--devel/electron30/files/patch-third__party_swiftshader_src_Reactor_Debug.cpp11
-rw-r--r--devel/electron30/files/patch-third__party_swiftshader_src_System_Configurator.cpp12
-rw-r--r--devel/electron30/files/patch-third__party_swiftshader_src_System_Linux_MemFd.cpp37
-rw-r--r--devel/electron30/files/patch-third__party_swiftshader_src_Vulkan_VkSemaphoreExternalLinux.hpp20
-rw-r--r--devel/electron30/files/patch-third__party_swiftshader_src_WSI_libXCB.cpp20
-rw-r--r--devel/electron30/files/patch-third__party_swiftshader_third__party_llvm-10.0_configs_linux_include_llvm_Config_config.h174
-rw-r--r--devel/electron30/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h47
-rw-r--r--devel/electron30/files/patch-third__party_swiftshader_third__party_marl_src_memory.cpp11
-rw-r--r--devel/electron30/files/patch-third__party_swiftshader_third__party_marl_src_thread.cpp11
-rw-r--r--devel/electron30/files/patch-third__party_test__fonts_fontconfig_BUILD.gn15
-rw-r--r--devel/electron30/files/patch-third__party_test__fonts_fontconfig_fontconfig__util__linux.cc27
-rw-r--r--devel/electron30/files/patch-third__party_test__fonts_fontconfig_generate__fontconfig__caches.cc11
-rw-r--r--devel/electron30/files/patch-third__party_tflite_features.gni14
-rw-r--r--devel/electron30/files/patch-third__party_unrar_src_crypt.cpp11
-rw-r--r--devel/electron30/files/patch-third__party_vulkan-deps_vulkan-loader_src_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_vk__loader__platform.h19
-rw-r--r--devel/electron30/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_external_vma_vk__mem__alloc.h11
-rw-r--r--devel/electron30/files/patch-third__party_vulkan__memory__allocator_include_vk__mem__alloc.h11
-rw-r--r--devel/electron30/files/patch-third__party_wayland_BUILD.gn14
-rw-r--r--devel/electron30/files/patch-third__party_wayland_include_config.h29
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_BUILD.gn12
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_modules_desktop__capture_linux_wayland_egl__dmabuf.cc18
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_modules_desktop__capture_linux_x11_x__server__pixel__buffer.cc23
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_rtc__base_byte__order.h11
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_rtc__base_ip__address.cc12
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_rtc__base_net__test__helpers.cc10
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_rtc__base_network.cc15
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc114
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h11
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc37
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_rtc__base_third__party_sigslot_sigslot.h23
-rw-r--r--devel/electron30/files/patch-third__party_webrtc_system__wrappers_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-third__party_widevine_cdm_widevine.gni11
-rw-r--r--devel/electron30/files/patch-third__party_zlib_BUILD.gn31
-rw-r--r--devel/electron30/files/patch-third__party_zlib_cpu__features.c51
-rw-r--r--devel/electron30/files/patch-tools_generate__shim__headers_generate__shim__headers.py21
-rw-r--r--devel/electron30/files/patch-tools_generate__stubs_rules.gni10
-rw-r--r--devel/electron30/files/patch-tools_gn_bootstrap_bootstrap.py11
-rw-r--r--devel/electron30/files/patch-tools_gn_build_build__linux.ninja.template11
-rw-r--r--devel/electron30/files/patch-tools_gn_build_gen.py34
-rw-r--r--devel/electron30/files/patch-tools_gn_src_base_files_file__posix.cc11
-rw-r--r--devel/electron30/files/patch-tools_gn_src_gn_version.h15
-rw-r--r--devel/electron30/files/patch-tools_gn_src_util_exe__path.cc90
-rw-r--r--devel/electron30/files/patch-tools_grit_grit_node_base.py12
-rw-r--r--devel/electron30/files/patch-tools_json__schema__compiler_cpp__bundle__generator.py11
-rw-r--r--devel/electron30/files/patch-tools_json__schema__compiler_feature__compiler.py11
-rw-r--r--devel/electron30/files/patch-tools_memory_partition__allocator_inspect__utils.h11
-rw-r--r--devel/electron30/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn20
-rw-r--r--devel/electron30/files/patch-tools_protoc__wrapper_protoc__wrapper.py24
-rw-r--r--devel/electron30/files/patch-tools_variations_fieldtrial__to__struct.py11
-rw-r--r--devel/electron30/files/patch-ui_aura_client_drag__drop__client.h11
-rw-r--r--devel/electron30/files/patch-ui_aura_screen__ozone.cc11
-rw-r--r--devel/electron30/files/patch-ui_aura_screen__ozone.h20
-rw-r--r--devel/electron30/files/patch-ui_base_clipboard_clipboard__constants.cc11
-rw-r--r--devel/electron30/files/patch-ui_base_clipboard_clipboard__constants.h11
-rw-r--r--devel/electron30/files/patch-ui_base_clipboard_clipboard__non__backed.cc11
-rw-r--r--devel/electron30/files/patch-ui_base_cursor_cursor__factory.cc11
-rw-r--r--devel/electron30/files/patch-ui_base_cursor_cursor__factory.h11
-rw-r--r--devel/electron30/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc20
-rw-r--r--devel/electron30/files/patch-ui_base_dragdrop_os__exchange__data__provider__non__backed.cc11
-rw-r--r--devel/electron30/files/patch-ui_base_ime_dummy__text__input__client.cc11
-rw-r--r--devel/electron30/files/patch-ui_base_ime_dummy__text__input__client.h11
-rw-r--r--devel/electron30/files/patch-ui_base_ime_fake__text__input__client.cc11
-rw-r--r--devel/electron30/files/patch-ui_base_ime_fake__text__input__client.h11
-rw-r--r--devel/electron30/files/patch-ui_base_ime_init_input__method__initializer.cc29
-rw-r--r--devel/electron30/files/patch-ui_base_ime_linux_linux__input__method__context__factory.cc20
-rw-r--r--devel/electron30/files/patch-ui_base_ime_text__input__client.h11
-rw-r--r--devel/electron30/files/patch-ui_base_resource_resource__bundle.cc11
-rw-r--r--devel/electron30/files/patch-ui_base_test_skia__gold__pixel__diff.cc11
-rw-r--r--devel/electron30/files/patch-ui_base_test_ui__controls.h11
-rw-r--r--devel/electron30/files/patch-ui_base_ui__base__features.cc20
-rw-r--r--devel/electron30/files/patch-ui_base_ui__base__switches.cc18
-rw-r--r--devel/electron30/files/patch-ui_base_ui__base__switches.h16
-rw-r--r--devel/electron30/files/patch-ui_base_webui_web__ui__util.cc20
-rw-r--r--devel/electron30/files/patch-ui_base_x_x11__cursor__factory.cc20
-rw-r--r--devel/electron30/files/patch-ui_base_x_x11__cursor__factory.h20
-rw-r--r--devel/electron30/files/patch-ui_base_x_x11__cursor__loader.cc41
-rw-r--r--devel/electron30/files/patch-ui_base_x_x11__display__manager.cc20
-rw-r--r--devel/electron30/files/patch-ui_base_x_x11__display__util.cc365
-rw-r--r--devel/electron30/files/patch-ui_base_x_x11__shm__image__pool.cc71
-rw-r--r--devel/electron30/files/patch-ui_base_x_x11__util.cc23
-rw-r--r--devel/electron30/files/patch-ui_base_x_x11__util.h13
-rw-r--r--devel/electron30/files/patch-ui_color_color__id.h11
-rw-r--r--devel/electron30/files/patch-ui_color_color__provider__utils.cc11
-rw-r--r--devel/electron30/files/patch-ui_color_system__theme.h11
-rw-r--r--devel/electron30/files/patch-ui_compositor_compositor.cc11
-rw-r--r--devel/electron30/files/patch-ui_compositor_compositor.h11
-rw-r--r--devel/electron30/files/patch-ui_compositor_compositor__observer.h11
-rw-r--r--devel/electron30/files/patch-ui_display_screen.cc11
-rw-r--r--devel/electron30/files/patch-ui_display_screen.h20
-rw-r--r--devel/electron30/files/patch-ui_events_devices_x11_device__data__manager__x11.cc10
-rw-r--r--devel/electron30/files/patch-ui_events_event.cc29
-rw-r--r--devel/electron30/files/patch-ui_events_event__switches.cc11
-rw-r--r--devel/electron30/files/patch-ui_events_event__switches.h11
-rw-r--r--devel/electron30/files/patch-ui_events_keycodes_dom_keycode__converter.cc38
-rw-r--r--devel/electron30/files/patch-ui_events_keycodes_dom_keycode__converter.h11
-rw-r--r--devel/electron30/files/patch-ui_gfx_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-ui_gfx_canvas__skia.cc11
-rw-r--r--devel/electron30/files/patch-ui_gfx_codec_png__codec.cc11
-rw-r--r--devel/electron30/files/patch-ui_gfx_font__fallback__linux.cc11
-rw-r--r--devel/electron30/files/patch-ui_gfx_font__render__params.h20
-rw-r--r--devel/electron30/files/patch-ui_gfx_font__render__params__linux.cc20
-rw-r--r--devel/electron30/files/patch-ui_gfx_font__util.cc20
-rw-r--r--devel/electron30/files/patch-ui_gfx_gpu__memory__buffer.cc11
-rw-r--r--devel/electron30/files/patch-ui_gfx_gpu__memory__buffer.h20
-rw-r--r--devel/electron30/files/patch-ui_gfx_linux_dmabuf__uapi.h36
-rw-r--r--devel/electron30/files/patch-ui_gfx_linux_gbm__wrapper.cc11
-rw-r--r--devel/electron30/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc20
-rw-r--r--devel/electron30/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.cc34
-rw-r--r--devel/electron30/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.h36
-rw-r--r--devel/electron30/files/patch-ui_gfx_native__pixmap__handle.cc62
-rw-r--r--devel/electron30/files/patch-ui_gfx_native__pixmap__handle.h38
-rw-r--r--devel/electron30/files/patch-ui_gfx_native__widget__types.h20
-rw-r--r--devel/electron30/files/patch-ui_gfx_platform__font__skia.cc20
-rw-r--r--devel/electron30/files/patch-ui_gfx_render__text__api__fuzzer.cc20
-rw-r--r--devel/electron30/files/patch-ui_gfx_render__text__fuzzer.cc20
-rw-r--r--devel/electron30/files/patch-ui_gfx_switches.cc11
-rw-r--r--devel/electron30/files/patch-ui_gfx_switches.h11
-rw-r--r--devel/electron30/files/patch-ui_gfx_x_generated__protos_dri3.cc11
-rw-r--r--devel/electron30/files/patch-ui_gfx_x_generated__protos_shm.cc11
-rw-r--r--devel/electron30/files/patch-ui_gfx_x_xlib__support.cc21
-rw-r--r--devel/electron30/files/patch-ui_gl_BUILD.gn35
-rw-r--r--devel/electron30/files/patch-ui_gl_gl__bindings.h11
-rw-r--r--devel/electron30/files/patch-ui_gl_gl__context.cc11
-rw-r--r--devel/electron30/files/patch-ui_gl_gl__fence.cc11
-rw-r--r--devel/electron30/files/patch-ui_gl_gl__implementation.cc11
-rw-r--r--devel/electron30/files/patch-ui_gl_gl__switches.cc29
-rw-r--r--devel/electron30/files/patch-ui_gl_sync__control__vsync__provider.cc38
-rw-r--r--devel/electron30/files/patch-ui_gl_sync__control__vsync__provider.h20
-rw-r--r--devel/electron30/files/patch-ui_gtk_gtk__compat.cc53
-rw-r--r--devel/electron30/files/patch-ui_gtk_printing_print__dialog__gtk.cc11
-rw-r--r--devel/electron30/files/patch-ui_message__center_views_message__popup__view.cc11
-rw-r--r--devel/electron30/files/patch-ui_native__theme_native__theme.h11
-rw-r--r--devel/electron30/files/patch-ui_native__theme_native__theme__base.cc11
-rw-r--r--devel/electron30/files/patch-ui_native__theme_native__theme__features.cc20
-rw-r--r--devel/electron30/files/patch-ui_ozone_common_egl__util.cc14
-rw-r--r--devel/electron30/files/patch-ui_ozone_common_features.cc11
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_headless_headless__surface__factory.cc20
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_headless_ozone__platform__headless.cc11
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_headless_vulkan__implementation__headless.cc29
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_common_wayland__util.cc11
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_emulate_wayland__input__emulate.cc11
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_emulate_wayland__input__emulate.h11
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_gpu_vulkan__implementation__wayland.cc14
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_host_wayland__connection.cc11
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_host_wayland__input__method__context.cc11
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_host_wayland__toplevel__window.cc11
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_host_wayland__toplevel__window.h11
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_host_wayland__window.cc44
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_host_wayland__window.h38
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_host_xdg__toplevel__wrapper__impl.cc11
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_host_zwp__text__input__wrapper__v1.cc21
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_wayland_ozone__platform__wayland.cc54
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_x11_vulkan__implementation__x11.cc14
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_x11_x11__screen__ozone.cc29
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_x11_x11__screen__ozone.h38
-rw-r--r--devel/electron30/files/patch-ui_ozone_platform_x11_x11__window.cc11
-rw-r--r--devel/electron30/files/patch-ui_ozone_test_mock__platform__window__delegate.h11
-rw-r--r--devel/electron30/files/patch-ui_platform__window_platform__window__delegate.cc11
-rw-r--r--devel/electron30/files/patch-ui_platform__window_platform__window__delegate.h11
-rw-r--r--devel/electron30/files/patch-ui_platform__window_platform__window__init__properties.h20
-rw-r--r--devel/electron30/files/patch-ui_qt_BUILD.gn11
-rw-r--r--devel/electron30/files/patch-ui_strings_translations_app__locale__settings__bn.xtb11
-rw-r--r--devel/electron30/files/patch-ui_strings_translations_app__locale__settings__ja.xtb11
-rw-r--r--devel/electron30/files/patch-ui_strings_translations_app__locale__settings__ko.xtb11
-rw-r--r--devel/electron30/files/patch-ui_strings_translations_app__locale__settings__ml.xtb11
-rw-r--r--devel/electron30/files/patch-ui_strings_translations_app__locale__settings__th.xtb11
-rw-r--r--devel/electron30/files/patch-ui_strings_translations_app__locale__settings__zh-CN.xtb11
-rw-r--r--devel/electron30/files/patch-ui_strings_translations_app__locale__settings__zh-TW.xtb11
-rw-r--r--devel/electron30/files/patch-ui_views_controls_prefix__selector.cc11
-rw-r--r--devel/electron30/files/patch-ui_views_controls_prefix__selector.h11
-rw-r--r--devel/electron30/files/patch-ui_views_controls_textfield_textfield.cc64
-rw-r--r--devel/electron30/files/patch-ui_views_controls_textfield_textfield.h20
-rw-r--r--devel/electron30/files/patch-ui_views_corewm_tooltip__aura.cc11
-rw-r--r--devel/electron30/files/patch-ui_views_examples_widget__example.cc11
-rw-r--r--devel/electron30/files/patch-ui_views_focus_focus__manager.cc20
-rw-r--r--devel/electron30/files/patch-ui_views_style_platform__style.cc29
-rw-r--r--devel/electron30/files/patch-ui_views_test_ui__controls__factory__desktop__aura__ozone.cc11
-rw-r--r--devel/electron30/files/patch-ui_views_views__delegate.cc11
-rw-r--r--devel/electron30/files/patch-ui_views_views__delegate.h11
-rw-r--r--devel/electron30/files/patch-ui_views_widget_desktop__aura_desktop__drag__drop__client__ozone.cc11
-rw-r--r--devel/electron30/files/patch-ui_views_widget_desktop__aura_desktop__drag__drop__client__ozone.h20
-rw-r--r--devel/electron30/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc38
-rw-r--r--devel/electron30/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform__impl__interactive__uitest.cc11
-rw-r--r--devel/electron30/files/patch-ui_views_widget_root__view.cc11
-rw-r--r--devel/electron30/files/patch-ui_views_widget_widget.cc20
-rw-r--r--devel/electron30/files/patch-ui_views_widget_widget.h11
-rw-r--r--devel/electron30/files/patch-ui_views_window_custom__frame__view.cc11
-rw-r--r--devel/electron30/files/patch-ui_views_window_dialog__delegate.cc11
-rw-r--r--devel/electron30/files/patch-ui_views_window_frame__background.cc11
-rw-r--r--devel/electron30/files/patch-v8_BUILD.gn58
-rw-r--r--devel/electron30/files/patch-v8_include_v8-internal.h11
-rw-r--r--devel/electron30/files/patch-v8_include_v8config.h37
-rw-r--r--devel/electron30/files/patch-v8_src_api_api.cc20
-rw-r--r--devel/electron30/files/patch-v8_src_base_atomicops.h24
-rw-r--r--devel/electron30/files/patch-v8_src_base_platform_memory.h16
-rw-r--r--devel/electron30/files/patch-v8_src_base_platform_platform-freebsd.cc32
-rw-r--r--devel/electron30/files/patch-v8_src_base_platform_platform-openbsd.cc28
-rw-r--r--devel/electron30/files/patch-v8_src_base_platform_platform-posix.cc62
-rw-r--r--devel/electron30/files/patch-v8_src_base_small-vector.h11
-rw-r--r--devel/electron30/files/patch-v8_src_base_sys-info.cc11
-rw-r--r--devel/electron30/files/patch-v8_src_diagnostics_perf-jit.cc11
-rw-r--r--devel/electron30/files/patch-v8_src_diagnostics_perf-jit.h11
-rw-r--r--devel/electron30/files/patch-v8_src_execution_isolate.cc27
-rw-r--r--devel/electron30/files/patch-v8_src_flags_flags.cc36
-rw-r--r--devel/electron30/files/patch-v8_src_sandbox_sandbox.cc11
-rw-r--r--devel/electron30/files/patch-v8_src_snapshot_embedded_platform-embedded-file-writer-base.cc11
-rw-r--r--devel/electron30/files/patch-v8_src_snapshot_embedded_platform-embedded-file-writer-base.h10
-rw-r--r--devel/electron30/files/patch-v8_src_snapshot_embedded_platform-embedded-file-writer-generic.cc42
-rw-r--r--devel/electron30/files/patch-v8_src_trap-handler_handler-inside-posix.cc26
-rw-r--r--devel/electron30/files/patch-v8_src_trap-handler_handler-inside-posix.h11
-rw-r--r--devel/electron30/files/patch-v8_src_trap-handler_trap-handler.h11
-rw-r--r--devel/electron30/files/patch-v8_src_wasm_baseline_ia32_liftoff-assembler-ia32-inl.h128
-rw-r--r--devel/electron30/files/patch-v8_tools_run.py11
-rw-r--r--devel/electron30/files/yarn.lock7377
-rw-r--r--devel/electron30/pkg-descr8
-rw-r--r--devel/electron30/pkg-plist210
1394 files changed, 45016 insertions, 0 deletions
diff --git a/devel/Makefile b/devel/Makefile
index 04d8f3ab8c29..04b646c78173 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -626,6 +626,7 @@
SUBDIR += electron27
SUBDIR += electron28
SUBDIR += electron29
+ SUBDIR += electron30
SUBDIR += elf
SUBDIR += elf-dissector
SUBDIR += elfcat
diff --git a/devel/electron30/Makefile b/devel/electron30/Makefile
new file mode 100644
index 000000000000..d385c0626a48
--- /dev/null
+++ b/devel/electron30/Makefile
@@ -0,0 +1,463 @@
+PORTNAME= electron
+DISTVERSIONPREFIX= v
+DISTVERSION= ${ELECTRON_VER:S/-beta./.b/}
+CATEGORIES= devel
+MASTER_SITES= https://github.com/tagattie/FreeBSD-Electron/releases/download/v30.0.9/:chromium \
+ https://commondatastorage.googleapis.com/chromium-nodejs/:chromium_node \
+ https://commondatastorage.googleapis.com/chromium-fonts/:chromium_testfonts
+PKGNAMESUFFIX= ${ELECTRON_VER_MAJOR}
+DISTFILES= chromium-${CHROMIUM_VER}${EXTRACT_SUFX}:chromium \
+ ${CHROMIUM_NODE_MODULES_HASH}:chromium_node \
+ ${CHROMIUM_TEST_FONTS_HASH}:chromium_testfonts \
+ electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX}:prefetch
+DIST_SUBDIR= ${PORTNAME}
+
+MAINTAINER= tagattie@FreeBSD.org
+COMMENT= Build cross-platform desktop apps with JavaScript, HTML, and CSS
+WWW= https://electronjs.org/
+
+LICENSE= BSD3CLAUSE LGPL21 MPL11 MIT
+LICENSE_COMB= multi
+LICENSE_FILE= ${WRKSRC}/electron/LICENSE
+
+ONLY_FOR_ARCHS= aarch64 amd64 i386
+
+FETCH_DEPENDS= yarn${NODEJS_SUFFIX}>0:www/yarn${NODEJS_SUFFIX}
+EXTRACT_DEPENDS=yarn${NODEJS_SUFFIX}>0:www/yarn${NODEJS_SUFFIX}
+PATCH_DEPENDS= git:devel/git \
+ jq:textproc/jq
+BUILD_DEPENDS= gperf:devel/gperf \
+ yasm:devel/yasm \
+ ${LOCALBASE}/libdata/pkgconfig/dri.pc:graphics/mesa-dri \
+ rustc:lang/rust \
+ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
+ node${NODEJS_VERSION}>0:www/node${NODEJS_VERSION} \
+ npm${NODEJS_SUFFIX}>0:www/npm${NODEJS_SUFFIX}
+LIB_DEPENDS= libatk-bridge-2.0.so:accessibility/at-spi2-core \
+ libatspi.so:accessibility/at-spi2-core \
+ libFLAC.so:audio/flac \
+ libopus.so:audio/opus \
+ libdbus-1.so:devel/dbus \
+ libicuuc.so:devel/icu \
+ libepoll-shim.so:devel/libepoll-shim \
+ libevent.so:devel/libevent \
+ libffi.so:devel/libffi \
+ libnotify.so:devel/libnotify \
+ libpci.so:devel/libpci \
+ libnspr4.so:devel/nspr \
+ libre2.so:devel/re2 \
+ libdrm.so:graphics/libdrm \
+ libpng.so:graphics/png \
+ libwayland-client.so:graphics/wayland \
+ libwebp.so:graphics/webp \
+ libdav1d.so:multimedia/dav1d \
+ libva.so:multimedia/libva \
+ libopenh264.so:multimedia/openh264 \
+ libfreetype.so:print/freetype2 \
+ libharfbuzz.so:print/harfbuzz \
+ libsecret-1.so:security/libsecret \
+ libnss3.so:security/nss \
+ libexpat.so:textproc/expat2 \
+ libxkbcommon.so:x11/libxkbcommon \
+ libxshmfence.so:x11/libxshmfence \
+ libfontconfig.so:x11-fonts/fontconfig
+RUN_DEPENDS= xdg-open:devel/xdg-utils
+TEST_DEPENDS= git:devel/git \
+ ${PYTHON_PKGNAMEPREFIX}python-dbusmock>0:devel/py-python-dbusmock@${PY_FLAVOR} \
+ npm${NODEJS_SUFFIX}>0:www/npm${NODEJS_SUFFIX}
+
+USES= bison compiler:c++17-lang cpe gettext-tools gl gmake gnome \
+ iconv:wchar_t jpeg localbase:ldflags ninja nodejs:20,build \
+ pkgconfig python:build,test shebangfix tar:xz xorg
+
+CPE_VENDOR= electronjs
+USE_GITHUB= yes
+GH_TAGNAME= ${DISTVERSIONPREFIX}${ELECTRON_VER}
+GH_TUPLE= nodejs:node:v${NODE_VER}:node \
+ nodejs:nan:${NAN_VER}:nan \
+ Squirrel:Squirrel.Mac:${SQUIRREL_MAC_VER}:squirrel_mac \
+ ReactiveCocoa:ReactiveObjC:${REACTIVEOBJC_VER}:reactiveobjc \
+ Mantle:Mantle:${MANTLE_VER}:mantle \
+ EngFlow:reclient-configs:${ENGFLOW_RECLIENT_CONFIGS_VER}:reclient_configs
+USE_GL= gbm gl glesv2
+USE_GNOME= atk cairo gdkpixbuf2 gtk30 libxml2 libxslt pango
+USE_LDCONFIG= ${DATADIR}
+USE_XORG= x11 xcb xcomposite xcursor xdamage xext xfixes xi xrandr \
+ xrender xscrnsaver xtst
+
+SHEBANG_FILES= chrome/tools/build/linux/chrome-wrapper buildtools/linux64/clang-format
+
+MAKE_ARGS= -C out/${BUILDTYPE}
+MAKE_ENV+= C_INCLUDE_PATH=${LOCALBASE}/include \
+ CPLUS_INCLUDE_PATH=${LOCALBASE}/include
+ALL_TARGET= electron electron:node_headers
+POST_BUILD_TARGETS= licenses version
+POST_BUILD_DIST_TARGETS=electron_dist_zip electron_chromedriver_zip \
+ electron_mksnapshot_zip
+
+DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX}
+BINARY_ALIAS= python3=${PYTHON_CMD}
+
+NO_WRKSUBDIR= yes
+WRKSRC_SUBDIR= src
+
+GN_ARGS+= clang_use_chrome_plugins=false \
+ enable_backup_ref_ptr_support=false \
+ enable_hangout_services_extension=true \
+ enable_log_error_not_reached=true \
+ enable_nacl=false \
+ enable_remoting=false \
+ fatal_linker_warnings=false \
+ icu_use_data_file=false \
+ is_clang=true \
+ optimize_webui=true \
+ toolkit_views=true \
+ treat_warnings_as_errors=false \
+ use_allocator_shim=false \
+ use_aura=true \
+ use_custom_libcxx=true \
+ use_custom_libunwind=true \
+ use_lld=true \
+ use_partition_alloc=true \
+ use_partition_alloc_as_malloc=false \
+ use_sysroot=false \
+ use_system_freetype=false \
+ use_system_harfbuzz=true \
+ use_system_libffi=true \
+ use_system_libjpeg=true \
+ use_udev=false \
+ chrome_pgo_phase=0 \
+ extra_cflags="${CFLAGS}" \
+ extra_cxxflags="${CXXFLAGS}" \
+ extra_ldflags="${LDFLAGS}" \
+ ffmpeg_branding="${FFMPEG_BRAND}" \
+ override_electron_version="${ELECTRON_VER}"
+
+# TODO: investigate building with these options:
+# use_system_minigbm
+GN_BOOTSTRAP_FLAGS= --no-clean --no-rebuild --skip-generate-buildfiles
+
+PLIST_SUB= ELECTRON_VER=${ELECTRON_VER} \
+ ELECTRON_VER_MAJOR=${ELECTRON_VER_MAJOR}
+
+OPTIONS_DEFINE= CODECS CUPS DEBUG DIST DRIVER KERBEROS LTO PIPEWIRE
+OPTIONS_DEFAULT= CODECS CUPS DRIVER KERBEROS PIPEWIRE SNDIO
+OPTIONS_EXCLUDE_aarch64=LTO
+OPTIONS_GROUP= AUDIO
+OPTIONS_GROUP_AUDIO= ALSA PULSEAUDIO SNDIO
+OPTIONS_RADIO= KERBEROS
+OPTIONS_RADIO_KERBEROS= HEIMDAL HEIMDAL_BASE MIT
+OPTIONS_SUB= yes
+CODECS_DESC= Compile and enable patented codecs like H.264
+DIST_DESC= Build distribution zip files
+DRIVER_DESC= Install chromedriver
+HEIMDAL_BASE_DESC= Heimdal Kerberos (base)
+HEIMDAL_DESC= Heimdal Kerberos (security/heimdal)
+MIT_DESC= MIT Kerberos (security/krb5)
+PIPEWIRE_DESC= Screen capture via PipeWire
+
+ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
+ALSA_RUN_DEPENDS= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins \
+ alsa-lib>=1.1.1_1:audio/alsa-lib
+ALSA_VARS= GN_ARGS+=use_alsa=true
+ALSA_VARS_OFF= GN_ARGS+=use_alsa=false
+
+CODECS_VARS= GN_ARGS+=proprietary_codecs=true \
+ FFMPEG_BRAND="Chrome"
+CODECS_VARS_OFF= GN_ARGS+=proprietary_codecs=false \
+ FFMPEG_BRAND="Chromium"
+
+CUPS_LIB_DEPENDS= libcups.so:print/cups
+CUPS_VARS= GN_ARGS+=use_cups=true
+CUPS_VARS_OFF= GN_ARGS+=use_cups=false
+
+DEBUG_BUILD_DEPENDS= esbuild:devel/esbuild
+DEBUG_VARS= BUILDTYPE=Debug \
+ GN_FILE=testing.gn \
+ GN_ARGS+=is_debug=true \
+ GN_ARGS+=is_component_build=false \
+ GN_ARGS+=symbol_level=1 \
+ GN_BOOTSTRAP_FLAGS+=--debug \
+ WANTSPACE="21 GB"
+DEBUG_VARS_OFF= BUILDTYPE=Release \
+ GN_FILE=release.gn \
+ GN_ARGS+=blink_symbol_level=0 \
+ GN_ARGS+=is_debug=false \
+ GN_ARGS+=is_official_build=true \
+ GN_ARGS+=symbol_level=0 \
+ WANTSPACE="14 GB"
+
+DIST_IMPLIES= DRIVER
+DRIVER_MAKE_ARGS= chromedriver
+
+HEIMDAL_LIB_DEPENDS= libkrb5.so.26:security/heimdal
+KERBEROS_VARS= GN_ARGS+=use_kerberos=true
+KERBEROS_VARS_OFF= GN_ARGS+=use_kerberos=false
+
+LTO_VARS= GN_ARGS+=use_thin_lto=true \
+ GN_ARGS+=thin_lto_enable_optimizations=true \
+ WANTSPACE="14 GB"
+LTO_VARS_OFF= GN_ARGS+=use_thin_lto=false
+
+MIT_LIB_DEPENDS= libkrb5.so.3:security/krb5
+
+PIPEWIRE_LIB_DEPENDS= libpipewire-0.3.so:multimedia/pipewire
+PIPEWIRE_VARS= GN_ARGS+=rtc_use_pipewire=true \
+ GN_ARGS+=rtc_link_pipewire=true
+PIPEWIRE_VARS_OFF= GN_ARGS+=rtc_use_pipewire=false \
+ GN_ARGS+=rtc_link_pipewire=false
+
+PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
+PULSEAUDIO_VARS= GN_ARGS+=use_pulseaudio=true
+PULSEAUDIO_VARS_OFF= GN_ARGS+=use_pulseaudio=false
+
+# With SNDIO=on we exclude audio_manager_linux from the build (see
+# media/audio/BUILD.gn) and use audio_manager_openbsd which does not
+# support falling back to ALSA or PulseAudio.
+SNDIO_PREVENTS= ALSA PULSEAUDIO
+SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio
+SNDIO_VARS= GN_ARGS+=use_sndio=true
+SNDIO_VARS_OFF= GN_ARGS+=use_sndio=false
+
+# See ${WRKSRC}/electron/DEPS for CHROMIUM_VER
+CHROMIUM_VER= 124.0.6367.233
+# See ${WRKSRC}/third_party/node/node_modules.tar.gz.sha1 for CHROMIUM_NODE_MODULES_HASH
+CHROMIUM_NODE_MODULES_HASH= 97a0b3c4c39cf05de1eafb6ffdec0fddd643f0a2
+# See ${WRKSRC}/third_party/test_fonts/test_fonts.tar.gz.sha1 for CHROMIUM_TEST_FONTS_HASH
+CHROMIUM_TEST_FONTS_HASH= 336e775eec536b2d785cc80eff6ac39051931286
+# See ${WRKSRC}/electron/DEPS for NODE_VER
+NODE_VER= 20.11.1
+# See ${WRKSRC}/electron/DEPS for NAN_VER
+NAN_VER= e14bdcd1f72d62bca1d541b66da43130384ec213
+# See ${WRKSRC}/electron/DEPS for SQUIRREL_MAC_VER
+SQUIRREL_MAC_VER= 0e5d146ba13101a1302d59ea6e6e0b3cace4ae38
+# See ${WRKSRC}/electron/DEPS for REACTIVEOBJC_VER
+REACTIVEOBJC_VER= 74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76
+# See ${WRKSRC}/electron/DEPS for MANTLE_VER
+MANTLE_VER= 78d3966b3c331292ea29ec38661b25df0a245948
+# See ${WRKSRC}/electron/DEPS for ENGFLOW_RECLIENT_CONFIGS_VER
+ENGFLOW_RECLIENT_CONFIGS_VER= 955335c30a752e9ef7bff375baab5e0819b6c00d
+
+YARN_TIMESTAMP= 61171200
+
+.include "Makefile.version"
+.include <bsd.port.pre.mk>
+
+# libc++ < 16 needs these extra patches
+.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1302507
+EXTRA_PATCHES= ${PATCHDIR}/extra-patch-electron_shell_browser_electron__browser__context.h \
+ ${PATCHDIR}/extra-patch-electron_shell_browser_ui_gtk_menu__gtk.h \
+ ${PATCHDIR}/extra-patch-electron_shell_browser_ui_status__icon__gtk.h
+.endif
+
+.if ${PORT_OPTIONS:MHEIMDAL_BASE} && !exists(/usr/lib/libkrb5.so)
+IGNORE= you have selected HEIMDAL_BASE but do not have Heimdal installed in base
+.endif
+
+.if ${COMPILER_VERSION} < 170
+LLVM_DEFAULT= 17
+BUILD_DEPENDS+= clang${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT}
+BINARY_ALIAS+= cpp=${LOCALBASE}/bin/clang-cpp${LLVM_DEFAULT} \
+ cc=${LOCALBASE}/bin/clang${LLVM_DEFAULT} \
+ c++=${LOCALBASE}/bin/clang++${LLVM_DEFAULT} \
+ ar=${LOCALBASE}/bin/llvm-ar${LLVM_DEFAULT} \
+ nm=${LOCALBASE}/bin/llvm-nm${LLVM_DEFAULT} \
+ ld=${LOCALBASE}/bin/ld.lld${LLVM_DEFAULT}
+.else
+BINARY_ALIAS+= ar=/usr/bin/llvm-ar \
+ nm=/usr/bin/llvm-nm
+.endif
+CFLAGS+= -Wno-error=implicit-function-declaration
+
+.if ${ARCH} == "aarch64"
+PLIST_SUB+= AARCH64="" \
+ AMD64="@comment " \
+ I386="@comment " \
+ NOT_AARCH64="@comment "
+FFMPEG_TARGET= arm64
+.elif ${ARCH} == "amd64"
+BUILD_DEPENDS+= nasm:devel/nasm
+PLIST_SUB+= AARCH64="@comment " \
+ AMD64="" \
+ I386="@comment " \
+ NOT_AARCH64=""
+FFMPEG_TARGET= x64
+.elif ${ARCH} == "i386"
+BUILD_DEPENDS+= nasm:devel/nasm
+PLIST_SUB+= AARCH64="@comment " \
+ AMD64="@comment " \
+ I386="" \
+ NOT_AARCH64=""
+FFMPEG_TARGET= ia32
+.endif
+
+FFMPEG_BDIR= ${WRKSRC}/build.${FFMPEG_TARGET}.freebsd/${FFMPEG_BRAND}
+FFMPEG_CDIR= ${WRKSRC}/third_party/ffmpeg/chromium/config/${FFMPEG_BRAND}/freebsd/${FFMPEG_TARGET}
+
+# Allow relocations against read-only segments (override lld default)
+LDFLAGS_i386= -Wl,-znotext
+
+# TODO: -isystem, would be just as ugly as this approach, but more reliably
+# build would fail without C_INCLUDE_PATH/CPLUS_INCLUDE_PATH env var set.
+MAKE_ENV+= C_INCLUDE_PATH=${LOCALBASE}/include \
+ CPLUS_INCLUDE_PATH=${LOCALBASE}/include
+
+# rust
+RUSTC_VERSION!= rustc -V 2>/dev/null || true
+MAKE_ENV+= RUSTC_BOOTSTRAP=1
+GN_ARGS+= enable_rust=true \
+ rust_sysroot_absolute="${LOCALBASE}" \
+ rustc_version="${RUSTC_VERSION}"
+
+pre-everything::
+ @${ECHO_MSG}
+ @${ECHO_MSG} "To build electron, you should have around 2GB of memory"
+ @${ECHO_MSG} "and around ${WANTSPACE} of free disk space."
+ @${ECHO_MSG}
+
+pre-fetch:
+ @${MKDIR} ${DISTDIR}/${DIST_SUBDIR}
+ if [ ! -f ${DISTDIR}/${DIST_SUBDIR}/electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX} ]; \
+ then ${MKDIR} ${WRKDIR}; \
+ ${ECHO_CMD} 'yarn-offline-mirror "./yarn-offline-cache"' >> \
+ ${WRKDIR}/.yarnrc; \
+ ${CP} ${FILESDIR}/package.json ${FILESDIR}/yarn.lock ${WRKDIR}; \
+ cd ${WRKDIR} && ${SETENV} HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache \
+ yarn --frozen-lockfile --ignore-scripts; \
+ ${MTREE_CMD} -cbnSp yarn-offline-cache | ${MTREE_CMD} -C | ${SED} \
+ -e 's:time=[0-9.]*:time=${YARN_TIMESTAMP}.000000000:' \
+ -e 's:\([gu]id\)=[0-9]*:\1=0:g' \
+ -e 's:mode=\([0-9]\)7[0-9][0-9]:mode=\1755:' \
+ -e 's:mode=\([0-9]\)6[0-9][0-9]:mode=\1644:' \
+ -e 's:flags=.*:flags=none:' \
+ -e 's:^\.:./yarn-offline-cache:' > yarn-offline-cache.mtree; \
+ ${TAR} cJf ${DISTDIR}/${DIST_SUBDIR}/electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX} \
+ @yarn-offline-cache.mtree; \
+ ${RM} -r ${WRKDIR}; \
+ fi
+
+post-extract:
+# Move extracted sources to appropriate locations
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_VER} ${WRKSRC}
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${PORTNAME}-${ELECTRON_VER} ${WRKSRC}/electron
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_nan}-${NAN_VER} \
+ ${WRKSRC}/third_party/nan
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_node}-${NODE_VER} \
+ ${WRKSRC}/third_party/electron_node
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_squirrel_mac}-${SQUIRREL_MAC_VER} \
+ ${WRKSRC}/third_party/squirrel.mac
+ ${MKDIR} ${WRKSRC}/third_party/squirrel.mac/vendor
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_reactiveobjc}-${REACTIVEOBJC_VER} \
+ ${WRKSRC}/third_party/squirrel.mac/vendor/ReactiveObjC
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_mantle}-${MANTLE_VER} \
+ ${WRKSRC}/third_party/squirrel.mac/vendor/Mantle
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_reclient_configs}-${ENGFLOW_RECLIENT_CONFIGS_VER} \
+ ${WRKSRC}/third_party/engflow-reclient-configs
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/node_modules ${WRKSRC}/third_party/node
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/test_fonts ${WRKSRC}/third_party/test_fonts
+# Install node modules for electron
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/yarn-offline-cache ${WRKDIR}
+ ${ECHO_CMD} 'yarn-offline-mirror "../../../yarn-offline-cache"' >> ${WRKSRC}/electron/.yarnrc
+ ${MV} ${WRKSRC}/electron/package.json ${WRKSRC}/electron/package.json.bak
+ ${CP} ${FILESDIR}/package.json ${WRKSRC}/electron
+ cd ${WRKSRC}/electron && \
+ ${SETENV} HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache yarn --frozen-lockfile --offline
+
+pre-patch:
+ ${SH} ${FILESDIR}/apply-electron-patches.sh ${WRKSRC}
+ # ${FIND} ${WRKSRC} -type f -name '*.orig' -print -delete
+ # ${FIND} ${WRKSRC} -type f -name '*~' -print -delete
+
+pre-configure:
+ # We used to remove bundled libraries to be sure that chromium uses
+ # system libraries and not shipped ones.
+ # cd ${WRKSRC} && ${PYTHON_CMD} \
+ #./build/linux/unbundle/remove_bundled_libraries.py [list of preserved]
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} \
+ ./build/linux/unbundle/replace_gn_files.py --system-libraries \
+ dav1d flac fontconfig freetype harfbuzz-ng icu libdrm libevent \
+ libpng libusb libwebp libxml libxslt openh264 opus || ${FALSE}
+ # Chromium uses an unreleased version of FFmpeg, so configure it
+ cd ${WRKSRC}/third_party/ffmpeg && \
+ ${PYTHON_CMD} chromium/scripts/build_ffmpeg.py freebsd ${FFMPEG_TARGET} \
+ --config-only --branding=${FFMPEG_BRAND}
+ cd ${FFMPEG_BDIR} && ${GMAKE} ffversion.h
+ ${MKDIR} ${FFMPEG_CDIR}
+.for _e in config.h config.asm config_components.h libavcodec libavformat libavutil
+ -${CP} -pR ${FFMPEG_BDIR}/${_e} ${FFMPEG_CDIR}
+.endfor
+
+do-configure:
+ # GN generator bootstrapping and generating ninja files
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} CC=${CC} CXX=${CXX} LD=${CXX} \
+ READELF=${READELF} AR=${AR} NM=${NM} ${PYTHON_CMD} \
+ ./tools/gn/bootstrap/bootstrap.py ${GN_BOOTSTRAP_FLAGS}
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ./out/${BUILDTYPE}/gn gen out/${BUILDTYPE} \
+ --args='import("//electron/build/args/${GN_FILE}") ${GN_ARGS}'
+
+ # Setup nodejs dependency
+ @${MKDIR} ${WRKSRC}/third_party/node/freebsd/node-freebsd/bin
+ ${LN} -sf ${LOCALBASE}/bin/node ${WRKSRC}/third_party/node/freebsd/node-freebsd/bin/node
+
+ # Setup buildtools/freebsd
+ @${MKDIR} ${WRKSRC}/buildtools/freebsd
+ ${LN} -sf ${WRKSRC}/buildtools/linux64/clang-format ${WRKSRC}/buildtools/freebsd
+ ${LN} -sf ${WRKSRC}/out/${BUILDTYPE}/gn ${WRKSRC}/buildtools/freebsd
+ ${LN} -sf /usr/bin/strip ${WRKSRC}/buildtools/freebsd/strip
+
+post-build:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_TARGETS}
+
+post-build-DIST-on:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_DIST_TARGETS}
+ cd ${WRKSRC}/out/${BUILDTYPE} && \
+ ${CP} chromedriver.zip chromedriver-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${CP} dist.zip electron-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${CP} mksnapshot.zip mksnapshot-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${SHA256} -r *-v${ELECTRON_VER}-freebsd-*.zip | ${SED} -e 's/ / */' > SHASUMS256.txt
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${DATADIR}
+.for f in electron mksnapshot v8_context_snapshot_generator
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+.for f in libEGL.so libGLESv2.so libffmpeg.so libvk_swiftshader.so
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/libvulkan.so.1 ${STAGEDIR}${DATADIR}/libvulkan.so
+.for f in LICENSE LICENSES.chromium.html snapshot_blob.bin v8_context_snapshot.bin version vk_swiftshader_icd.json
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+.for f in chrome_100_percent.pak chrome_200_percent.pak resources.pak
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${MKDIR} ${STAGEDIR}${DATADIR}/locales
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/locales/*.pak ${STAGEDIR}${DATADIR}/locales
+ ${MKDIR} ${STAGEDIR}${DATADIR}/resources
+.for f in default_app.asar
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/resources/${f} ${STAGEDIR}${DATADIR}/resources
+.endfor
+ cd ${WRKSRC}/out/${BUILDTYPE}/gen && ${COPYTREE_SHARE} node_headers ${STAGEDIR}${DATADIR}
+ cd ${WRKSRC}/out/${BUILDTYPE} && ${COPYTREE_SHARE} gen/electron/buildflags ${STAGEDIR}${DATADIR}
+ cd ${WRKSRC}/out/${BUILDTYPE} && ${COPYTREE_SHARE} gen/v8/embedded.S ${STAGEDIR}${DATADIR}
+ ${RLN} ${STAGEDIR}${DATADIR}/electron ${STAGEDIR}${PREFIX}/bin/electron${PKGNAMESUFFIX}
+
+post-install-DIST-on:
+ ${MKDIR} ${STAGEDIR}${DATADIR}/releases
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/SHASUMS256.txt ${STAGEDIR}${DATADIR}/releases
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/*-v${ELECTRON_VER}-freebsd-*.zip ${STAGEDIR}${DATADIR}/releases
+
+post-install-DRIVER-on:
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/chromedriver.unstripped \
+ ${STAGEDIR}${DATADIR}/chromedriver
+
+do-test:
+# Note 1: "npm install" will run before actual tests are executed
+# Note 2: Xvfb or something similar is necessary for headless testing
+ cd ${WRKSRC}/electron && \
+ ${SETENV} ${TEST_ENV} ELECTRON_OUT_DIR=${BUILDTYPE} LOCAL_GIT_DIRECTORY=${LOCALBASE} \
+ npm run test -- --ci
+
+.include <bsd.port.post.mk>
diff --git a/devel/electron30/Makefile.version b/devel/electron30/Makefile.version
new file mode 100644
index 000000000000..f78f39b30457
--- /dev/null
+++ b/devel/electron30/Makefile.version
@@ -0,0 +1,2 @@
+ELECTRON_VER= 30.0.9
+ELECTRON_VER_MAJOR= ${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron30/distinfo b/devel/electron30/distinfo
new file mode 100644
index 000000000000..fd0ca1b44599
--- /dev/null
+++ b/devel/electron30/distinfo
@@ -0,0 +1,23 @@
+TIMESTAMP = 1717224350
+SHA256 (electron/chromium-124.0.6367.233.tar.xz) = fd32510c63a86c5352ffb44ca4e5745459efbcbe0af855d0348c58ac5f6e3a5c
+SIZE (electron/chromium-124.0.6367.233.tar.xz) = 1632409680
+SHA256 (electron/97a0b3c4c39cf05de1eafb6ffdec0fddd643f0a2) = dcfaea4d353d1df3d4ac2d245ea7e32ad177d4bea1351f363714c9c22ca5c4f8
+SIZE (electron/97a0b3c4c39cf05de1eafb6ffdec0fddd643f0a2) = 9761601
+SHA256 (electron/336e775eec536b2d785cc80eff6ac39051931286) = a2ca2962daf482a8f943163541e1c73ba4b2694fabcd2510981f2db4eda493c8
+SIZE (electron/336e775eec536b2d785cc80eff6ac39051931286) = 32624734
+SHA256 (electron/electron-yarn-cache-30.0.9.tar.xz) = bfe45219c248d463ef8fcbdce755ad4d5deb9b757984da4760f47c20630aee84
+SIZE (electron/electron-yarn-cache-30.0.9.tar.xz) = 29229056
+SHA256 (electron/electron-electron-v30.0.9_GH0.tar.gz) = 23e8553c2a2e2b4087281cbed943cd4f289cb35a89c481769e7ad79dd7432c2d
+SIZE (electron/electron-electron-v30.0.9_GH0.tar.gz) = 13352877
+SHA256 (electron/nodejs-node-v20.11.1_GH0.tar.gz) = 82e77c282f273947f85440c8c5e6f8ccf368177eaa79bf1e112b8c6c0db924e5
+SIZE (electron/nodejs-node-v20.11.1_GH0.tar.gz) = 115530287
+SHA256 (electron/nodejs-nan-e14bdcd1f72d62bca1d541b66da43130384ec213_GH0.tar.gz) = 02edf8d5b3fef9af94d8a1355da60564a57e7f2c99cb422bce042400607ed2eb
+SIZE (electron/nodejs-nan-e14bdcd1f72d62bca1d541b66da43130384ec213_GH0.tar.gz) = 180646
+SHA256 (electron/Squirrel-Squirrel.Mac-0e5d146ba13101a1302d59ea6e6e0b3cace4ae38_GH0.tar.gz) = f4ebb40a8d85dbb7ef02aa0571b2f8e22182c6d73b6992484a53c90047779d01
+SIZE (electron/Squirrel-Squirrel.Mac-0e5d146ba13101a1302d59ea6e6e0b3cace4ae38_GH0.tar.gz) = 2112918
+SHA256 (electron/ReactiveCocoa-ReactiveObjC-74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76_GH0.tar.gz) = 88e65f116c7a06fccedb43970fba63080a57a4e5dc29147d2cdfe1ee58dd0546
+SIZE (electron/ReactiveCocoa-ReactiveObjC-74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76_GH0.tar.gz) = 1136238
+SHA256 (electron/Mantle-Mantle-78d3966b3c331292ea29ec38661b25df0a245948_GH0.tar.gz) = a365df6d83e0be3cc000b70bd39734d80c28f0d9983ebe44698337a2ca464bb1
+SIZE (electron/Mantle-Mantle-78d3966b3c331292ea29ec38661b25df0a245948_GH0.tar.gz) = 62962
+SHA256 (electron/EngFlow-reclient-configs-955335c30a752e9ef7bff375baab5e0819b6c00d_GH0.tar.gz) = c148f76220fc41a89ffeaf370c2cc175577be184688b12aa6fec5f8ac6c714c4
+SIZE (electron/EngFlow-reclient-configs-955335c30a752e9ef7bff375baab5e0819b6c00d_GH0.tar.gz) = 13014
diff --git a/devel/electron30/files/apply-electron-patches.sh b/devel/electron30/files/apply-electron-patches.sh
new file mode 100644
index 000000000000..367de24e9a71
--- /dev/null
+++ b/devel/electron30/files/apply-electron-patches.sh
@@ -0,0 +1,26 @@
+#! /bin/sh
+
+PATH=/bin:/usr/bin:/usr/local/bin
+
+GIT_CMD="git"
+PATCH_CMD="${GIT_CMD} apply"
+#PATCH_FLAGS="--numstat --check" # for debugging
+PATCH_FLAGS="--verbose --reject"
+
+WRKSRC=$1
+PATCH_CONF=${WRKSRC}/electron/patches/config.json
+
+${GIT_CMD} status "${WRKSRC}" > /dev/null 2>&1 && IS_GIT_REPO=1
+
+PATCHD_REPOD_PAIRS=$(jq -r '.[] | .patch_dir + ":" + .repo' "${PATCH_CONF}")
+for prp in ${PATCHD_REPOD_PAIRS}; do
+ pd=$(echo "${prp}" | awk -F: '{print $1}' | sed -e 's/src/./')
+ rd=$(echo "${prp}" | awk -F: '{print $2}' | sed -e 's/src/./')
+ (cd "${WRKSRC}/${rd}" && \
+ if [ -n "${IS_GIT_REPO}" ]; then
+ PATCH_FLAGS="${PATCH_FLAGS} --directory=$(${GIT_CMD} rev-parse --show-prefix)"
+ fi && \
+ while read -r p; do
+ ${PATCH_CMD} ${PATCH_FLAGS} "${WRKSRC}/${pd}/${p}"
+ done < "${WRKSRC}/${pd}/.patches")
+done
diff --git a/devel/electron30/files/extra-patch-electron_shell_browser_electron__browser__context.h b/devel/electron30/files/extra-patch-electron_shell_browser_electron__browser__context.h
new file mode 100644
index 000000000000..945fd33f12a9
--- /dev/null
+++ b/devel/electron30/files/extra-patch-electron_shell_browser_electron__browser__context.h
@@ -0,0 +1,64 @@
+--- electron/shell/browser/electron_browser_context.h.orig 2024-01-23 19:02:02 UTC
++++ electron/shell/browser/electron_browser_context.h
+@@ -8,7 +8,6 @@
+ #include <map>
+ #include <memory>
+ #include <string>
+-#include <string_view>
+ #include <variant>
+ #include <vector>
+ #include "base/memory/raw_ptr.h"
+@@ -79,22 +78,41 @@ class ElectronBrowserContext : public content::Browser
+
+ // partition_id => browser_context
+ struct PartitionKey {
+- PartitionKey(const std::string_view partition, bool in_memory)
+- : type_{Type::Partition}, location_{partition}, in_memory_{in_memory} {}
++ enum class KeyType { Partition, FilePath };
++ std::string location;
++ bool in_memory;
++ KeyType partition_type;
+
++ PartitionKey(const std::string& partition, bool in_memory)
++ : location(partition),
++ in_memory(in_memory),
++ partition_type(KeyType::Partition) {}
+ explicit PartitionKey(const base::FilePath& file_path)
+- : type_{Type::Path},
+- location_{file_path.AsUTF8Unsafe()},
+- in_memory_{false} {}
++ : location(file_path.AsUTF8Unsafe()),
++ in_memory(false),
++ partition_type(KeyType::FilePath) {}
+
+- friend auto operator<=>(const PartitionKey&, const PartitionKey&) = default;
++ bool operator<(const PartitionKey& other) const {
++ if (partition_type == KeyType::Partition) {
++ if (location == other.location)
++ return in_memory < other.in_memory;
++ return location < other.location;
++ } else {
++ if (location == other.location)
++ return false;
++ return location < other.location;
++ }
++ }
+
+- private:
+- enum class Type { Partition, Path };
+-
+- Type type_;
+- std::string location_;
+- bool in_memory_;
++ bool operator==(const PartitionKey& other) const {
++ if (partition_type == KeyType::Partition) {
++ return (location == other.location) && (in_memory < other.in_memory);
++ } else {
++ if (location == other.location)
++ return true;
++ return false;
++ }
++ }
+ };
+
+ using BrowserContextMap =
diff --git a/devel/electron30/files/extra-patch-electron_shell_browser_ui_gtk_menu__gtk.h b/devel/electron30/files/extra-patch-electron_shell_browser_ui_gtk_menu__gtk.h
new file mode 100644
index 000000000000..2ae6219150ae
--- /dev/null
+++ b/devel/electron30/files/extra-patch-electron_shell_browser_ui_gtk_menu__gtk.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/ui/gtk/menu_gtk.h.orig 2023-12-20 13:32:58 UTC
++++ electron/shell/browser/ui/gtk/menu_gtk.h
+@@ -5,6 +5,8 @@
+ #ifndef ELECTRON_SHELL_BROWSER_UI_GTK_MENU_GTK_H_
+ #define ELECTRON_SHELL_BROWSER_UI_GTK_MENU_GTK_H_
+
++#include <vector>
++
+ #include "base/functional/callback.h"
+ #include "base/memory/raw_ptr.h"
+ #include "ui/base/glib/scoped_gobject.h"
diff --git a/devel/electron30/files/extra-patch-electron_shell_browser_ui_status__icon__gtk.h b/devel/electron30/files/extra-patch-electron_shell_browser_ui_status__icon__gtk.h
new file mode 100644
index 000000000000..21acde5bb351
--- /dev/null
+++ b/devel/electron30/files/extra-patch-electron_shell_browser_ui_status__icon__gtk.h
@@ -0,0 +1,10 @@
+--- electron/shell/browser/ui/status_icon_gtk.h.orig 2023-12-20 13:31:04 UTC
++++ electron/shell/browser/ui/status_icon_gtk.h
+@@ -6,6 +6,7 @@
+ #define ELECTRON_SHELL_BROWSER_UI_STATUS_ICON_GTK_H_
+
+ #include <memory>
++#include <vector>
+
+ #include "ui/base/glib/glib_integers.h"
+ #include "ui/base/glib/scoped_gobject.h"
diff --git a/devel/electron30/files/package.json b/devel/electron30/files/package.json
new file mode 100644
index 000000000000..b9adc74eba9b
--- /dev/null
+++ b/devel/electron30/files/package.json
@@ -0,0 +1,156 @@
+{
+ "name": "electron",
+ "version": "0.0.0-development",
+ "repository": "https://github.com/electron/electron",
+ "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS",
+ "devDependencies": {
+ "@azure/storage-blob": "^12.9.0",
+ "@electron/asar": "^3.2.1",
+ "@electron/docs-parser": "^1.2.0",
+ "@electron/fiddle-core": "^1.0.4",
+ "@electron/github-app-auth": "^2.0.0",
+ "@electron/lint-roller": "^1.12.1",
+ "@electron/typescript-definitions": "^8.15.2",
+ "@octokit/rest": "^19.0.7",
+ "@primer/octicons": "^10.0.0",
+ "@types/basic-auth": "^1.1.3",
+ "@types/busboy": "^1.5.0",
+ "@types/chai": "^4.2.12",
+ "@types/chai-as-promised": "^7.1.3",
+ "@types/dirty-chai": "^2.0.2",
+ "@types/express": "^4.17.13",
+ "@types/fs-extra": "^9.0.1",
+ "@types/klaw": "^3.0.1",
+ "@types/minimist": "^1.2.0",
+ "@types/mocha": "^7.0.2",
+ "@types/node": "^20.9.0",
+ "@types/semver": "^7.3.3",
+ "@types/send": "^0.14.5",
+ "@types/split": "^1.0.0",
+ "@types/stream-json": "^1.5.1",
+ "@types/temp": "^0.8.34",
+ "@types/uuid": "^3.4.6",
+ "@types/w3c-web-serial": "^1.0.3",
+ "@types/webpack": "^5.28.0",
+ "@types/webpack-env": "^1.17.0",
+ "@typescript-eslint/eslint-plugin": "^5.59.7",
+ "@typescript-eslint/parser": "^5.59.7",
+ "buffer": "^6.0.3",
+ "check-for-leaks": "^1.2.1",
+ "colors": "1.4.0",
+ "dotenv-safe": "^4.0.4",
+ "dugite": "^2.3.0",
+ "eslint": "^8.41.0",
+ "eslint-config-standard": "^14.1.1",
+ "eslint-plugin-import": "^2.26.0",
+ "eslint-plugin-mocha": "^7.0.1",
+ "eslint-plugin-node": "^11.1.0",
+ "eslint-plugin-promise": "^4.2.1",
+ "eslint-plugin-standard": "^4.0.1",
+ "eslint-plugin-unicorn": "^46.0.1",
+ "events": "^3.2.0",
+ "express": "^4.16.4",
+ "folder-hash": "^2.1.1",
+ "fs-extra": "^9.0.1",
+ "got": "^11.8.5",
+ "husky": "^8.0.1",
+ "klaw": "^3.0.0",
+ "lint": "^1.1.2",
+ "lint-staged": "^10.2.11",
+ "minimist": "^1.2.6",
+ "null-loader": "^4.0.0",
+ "pre-flight": "^1.1.0",
+ "process": "^0.11.10",
+ "remark-cli": "^10.0.0",
+ "remark-preset-lint-markdown-style-guide": "^4.0.0",
+ "semver": "^7.5.2",
+ "shx": "^0.3.2",
+ "stream-json": "^1.7.1",
+ "tap-xunit": "^2.4.1",
+ "temp": "^0.8.3",
+ "timers-browserify": "1.4.2",
+ "ts-loader": "^8.0.2",
+ "ts-node": "6.2.0",
+ "typescript": "^5.1.2",
+ "url": "^0.11.0",
+ "webpack": "^5.76.0",
+ "webpack-cli": "^4.10.0",
+ "wrapper-webpack-plugin": "^2.2.0"
+ },
+ "private": true,
+ "scripts": {
+ "asar": "asar",
+ "generate-version-json": "node script/generate-version-json.js",
+ "lint": "node ./script/lint.js && npm run lint:docs",
+ "lint:js": "node ./script/lint.js --js",
+ "lint:clang-format": "python3 script/run-clang-format.py -r -c shell/ || (echo \"\\nCode not formatted correctly.\" && exit 1)",
+ "lint:clang-tidy": "ts-node ./script/run-clang-tidy.ts",
+ "lint:cpp": "node ./script/lint.js --cc",
+ "lint:objc": "node ./script/lint.js --objc",
+ "lint:py": "node ./script/lint.js --py",
+ "lint:gn": "node ./script/lint.js --gn",
+ "lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:ts-check-js-in-markdown && npm run lint:docs-fiddles && npm run lint:docs-relative-links && npm run lint:markdown",
+ "lint:docs-fiddles": "standard \"docs/fiddles/**/*.js\"",
+ "lint:docs-relative-links": "electron-lint-markdown-links --root docs \"**/*.md\"",
+ "lint:markdown": "node ./script/lint.js --md",
+ "lint:ts-check-js-in-markdown": "electron-lint-markdown-ts-check --root docs \"**/*.md\" --ignore \"breaking-changes.md\"",
+ "lint:js-in-markdown": "electron-lint-markdown-standard --root docs \"**/*.md\"",
+ "create-api-json": "node script/create-api-json.js",
+ "create-typescript-definitions": "npm run create-api-json && electron-typescript-definitions --api=electron-api.json && node spec/ts-smoke/runner.js",
+ "gn-typescript-definitions": "npm run create-typescript-definitions && shx cp electron.d.ts",
+ "pre-flight": "pre-flight",
+ "gn-check": "node ./script/gn-check.js",
+ "gn-format": "python3 script/run-gn-format.py",
+ "precommit": "lint-staged",
+ "preinstall": "node -e 'process.exit(0)'",
+ "pretest": "npm run create-typescript-definitions",
+ "prepack": "check-for-leaks",
+ "repl": "node ./script/start.js --interactive",
+ "start": "node ./script/start.js",
+ "test": "node ./script/spec-runner.js",
+ "tsc": "tsc",
+ "webpack": "webpack"
+ },
+ "license": "MIT",
+ "author": "Electron Community",
+ "keywords": [
+ "electron"
+ ],
+ "lint-staged": {
+ "*.{js,ts}": [
+ "node script/lint.js --js --fix --only --"
+ ],
+ "*.{js,ts,d.ts}": [
+ "ts-node script/gen-filenames.ts"
+ ],
+ "*.{cc,mm,c,h}": [
+ "python3 script/run-clang-format.py -r -c --fix"
+ ],
+ "*.md": [
+ "npm run lint:docs"
+ ],
+ "*.{gn,gni}": [
+ "npm run gn-check",
+ "npm run gn-format"
+ ],
+ "*.py": [
+ "node script/lint.js --py --fix --only --"
+ ],
+ "docs/api/**/*.md": [
+ "ts-node script/gen-filenames.ts",
+ "electron-markdownlint --config .markdownlint.autofix.json --fix",
+ "git add filenames.auto.gni"
+ ],
+ "{*.patch,.patches}": [
+ "node script/lint.js --patches --only --",
+ "ts-node script/check-patch-diff.ts"
+ ],
+ "DEPS": [
+ "node script/gen-hunspell-filenames.js",
+ "node script/gen-libc++-filenames.js"
+ ]
+ },
+ "resolutions": {
+ "nan": "nodejs/nan#e14bdcd1f72d62bca1d541b66da43130384ec213"
+ }
+}
diff --git a/devel/electron30/files/patch-BUILD.gn b/devel/electron30/files/patch-BUILD.gn
new file mode 100644
index 000000000000..e7e9774074b1
--- /dev/null
+++ b/devel/electron30/files/patch-BUILD.gn
@@ -0,0 +1,89 @@
+--- BUILD.gn.orig 2024-04-28 08:50:04 UTC
++++ BUILD.gn
+@@ -64,7 +64,7 @@ declare_args() {
+ root_extra_deps = []
+ }
+
+-if (is_official_build) {
++if (is_official_build && !is_bsd) {
+ # An official (maximally optimized!) component (optimized for build times)
+ # build doesn't make sense and usually doesn't work.
+ assert(!is_component_build)
+@@ -96,7 +96,6 @@ group("gn_all") {
+ "//codelabs",
+ "//components:components_unittests",
+ "//components/gwp_asan:gwp_asan_unittests",
+- "//infra/orchestrator:orchestrator_all",
+ "//net:net_unittests",
+ "//sandbox:sandbox_unittests",
+ "//services:services_unittests",
+@@ -427,7 +426,7 @@ group("gn_all") {
+ }
+ }
+
+- if (is_linux || is_chromeos || is_android) {
++ if ((is_linux && !is_bsd) || is_chromeos || is_android) {
+ deps += [
+ "//third_party/breakpad:breakpad_unittests",
+ "//third_party/breakpad:core-2-minidump",
+@@ -627,6 +626,15 @@ group("gn_all") {
+ }
+ }
+
++ if (is_bsd) {
++ deps -= [
++ "//third_party/breakpad:dump_syms($host_toolchain)",
++ "//third_party/breakpad:microdump_stackwalk($host_toolchain)",
++ "//third_party/breakpad:minidump_dump($host_toolchain)",
++ "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
++ ]
++ }
++
+ if (is_mac) {
+ deps += [
+ "//third_party/breakpad:dump_syms",
+@@ -673,7 +681,7 @@ group("gn_all") {
+ host_os == "win") {
+ deps += [ "//chrome/test/mini_installer:mini_installer_tests" ]
+ }
+- } else if (!is_android && !is_ios && !is_fuchsia) {
++ } else if (!is_android && !is_ios && !is_fuchsia && !is_bsd) {
+ deps += [ "//third_party/breakpad:symupload($host_toolchain)" ]
+ }
+
+@@ -1097,7 +1105,7 @@ if (use_blink && !is_cronet_build) {
+ ]
+ }
+
+- if (!is_chromeos_ash && !is_ios && !is_fuchsia && !is_android && !is_castos) {
++ if (!is_chromeos_ash && !is_ios && !is_fuchsia && !is_android && !is_castos && !is_bsd) {
+ script_test("chrome_wpt_tests") {
+ script = "//third_party/blink/tools/run_wpt_tests.py"
+ args = [
+@@ -1188,7 +1196,7 @@ if (use_blink && !is_cronet_build) {
+ data_deps += [ "//content/web_test:web_test_common_mojom_js_data_deps" ]
+ }
+
+- if (!is_win && !is_android) {
++ if (!is_win && !is_android && !is_bsd) {
+ data_deps +=
+ [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
+@@ -1197,7 +1205,7 @@ if (use_blink && !is_cronet_build) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux && !is_bsd) || is_chromeos) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
+@@ -1657,7 +1665,7 @@ group("chromium_builder_perf") {
+ data_deps += [ "//chrome/test:performance_browser_tests" ]
+ }
+
+- if (!is_win) {
++ if (!is_win && !is_bsd) {
+ data_deps +=
+ [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
diff --git a/devel/electron30/files/patch-apps_ui_views_app__window__frame__view.cc b/devel/electron30/files/patch-apps_ui_views_app__window__frame__view.cc
new file mode 100644
index 000000000000..18fd90e902a4
--- /dev/null
+++ b/devel/electron30/files/patch-apps_ui_views_app__window__frame__view.cc
@@ -0,0 +1,11 @@
+--- apps/ui/views/app_window_frame_view.cc.orig 2024-02-21 00:20:29 UTC
++++ apps/ui/views/app_window_frame_view.cc
+@@ -148,7 +148,7 @@ gfx::Rect AppWindowFrameView::GetWindowBoundsForClient
+ gfx::Rect window_bounds = client_bounds;
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ // Get the difference between the widget's client area bounds and window
+ // bounds, and grow |window_bounds| by that amount.
+ gfx::Insets native_frame_insets =
diff --git a/devel/electron30/files/patch-ash_display_mirror__window__controller.cc b/devel/electron30/files/patch-ash_display_mirror__window__controller.cc
new file mode 100644
index 000000000000..76b5d1103bda
--- /dev/null
+++ b/devel/electron30/files/patch-ash_display_mirror__window__controller.cc
@@ -0,0 +1,14 @@
+--- ash/display/mirror_window_controller.cc.orig 2023-10-19 19:57:56 UTC
++++ ash/display/mirror_window_controller.cc
+@@ -294,7 +294,11 @@ void MirrorWindowController::UpdateWindow(
+ if (!base::Contains(display_info_list, iter->first,
+ &display::ManagedDisplayInfo::id)) {
+ CloseAndDeleteHost(iter->second, true);
++#if defined(__llvm__)
++ mirroring_host_info_map_.erase(iter++);
++#else
+ iter = mirroring_host_info_map_.erase(iter);
++#endif
+ } else {
+ ++iter;
+ }
diff --git a/devel/electron30/files/patch-base_BUILD.gn b/devel/electron30/files/patch-base_BUILD.gn
new file mode 100644
index 000000000000..b621858336ad
--- /dev/null
+++ b/devel/electron30/files/patch-base_BUILD.gn
@@ -0,0 +1,157 @@
+--- base/BUILD.gn.orig 2024-04-28 08:50:04 UTC
++++ base/BUILD.gn
+@@ -200,7 +200,7 @@ buildflag_header("ios_cronet_buildflags") {
+ flags = [ "CRONET_BUILD=$is_cronet_build" ]
+ }
+
+-enable_message_pump_epoll = is_linux || is_chromeos || is_android
++enable_message_pump_epoll = (is_linux || is_chromeos || is_android) && !is_bsd
+ buildflag_header("message_pump_buildflags") {
+ header = "message_pump_buildflags.h"
+ header_dir = "base/message_loop"
+@@ -1132,11 +1132,24 @@ component("base") {
+ # Needed for <atomic> if using newer C++ library than sysroot, except if
+ # building inside the cros_sdk environment - use host_toolchain as a
+ # more robust check for this.
+- if (!use_sysroot && (is_android || is_chromeos || (is_linux && !is_castos)) &&
++ if (!use_sysroot && (is_android || is_chromeos || (is_linux && !is_castos && !is_bsd)) &&
+ host_toolchain != "//build/toolchain/cros:host") {
+ libs += [ "atomic" ]
+ }
+
++ # *BSD needs libkvm
++ if (is_bsd) {
++ libs += [ "kvm" ]
++ }
++
++ if (is_freebsd) {
++ libs += [
++ "execinfo",
++ "util",
++ "z",
++ ]
++ }
++
+ if (use_allocator_shim) {
+ if (is_apple) {
+ sources += [ "allocator/early_zone_registration_apple.h" ]
+@@ -1156,7 +1169,7 @@ component("base") {
+
+ # Allow more direct string conversions on platforms with native utf8
+ # strings
+- if (is_apple || is_chromeos || is_castos || is_cast_android || is_fuchsia) {
++ if (is_apple || is_chromeos || is_castos || is_cast_android || is_fuchsia || is_bsd) {
+ defines += [ "SYSTEM_NATIVE_UTF8" ]
+ }
+
+@@ -2114,6 +2127,22 @@ component("base") {
+ ]
+ }
+
++ if (is_openbsd) {
++ sources += [
++ "process/process_handle_openbsd.cc",
++ "process/process_iterator_openbsd.cc",
++ "process/process_metrics_openbsd.cc",
++ "system/sys_info_openbsd.cc",
++ ]
++ } else if (is_freebsd) {
++ sources += [
++ "process/process_handle_freebsd.cc",
++ "process/process_iterator_freebsd.cc",
++ "process/process_metrics_freebsd.cc",
++ "system/sys_info_freebsd.cc",
++ ]
++ }
++
+ # iOS
+ if (is_ios) {
+ sources += [
+@@ -2250,6 +2279,33 @@ component("base") {
+ }
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "files/file_path_watcher_inotify.cc",
++ "files/scoped_file_linux.cc",
++ "process/set_process_title_linux.cc",
++ "process/set_process_title_linux.h",
++ "system/sys_info_linux.cc",
++ "process/process_iterator_linux.cc",
++ "process/process_linux.cc",
++ "process/process_metrics_linux.cc",
++ "process/process_handle_linux.cc",
++ "profiler/stack_copier_signal.cc",
++ "profiler/stack_copier_signal.h",
++ "profiler/thread_delegate_posix.cc",
++ "profiler/thread_delegate_posix.h",
++ "threading/platform_thread_linux.cc",
++ "stack_canary_linux.cc",
++ "stack_canary_linux.h",
++ ]
++ sources += [
++ "files/file_path_watcher_kqueue.cc",
++ "files/file_path_watcher_kqueue.h",
++ "files/file_path_watcher_bsd.cc",
++ "threading/platform_thread_bsd.cc",
++ ]
++ }
++
+ if (use_blink) {
+ sources += [
+ "files/file_path_watcher.cc",
+@@ -2260,7 +2316,7 @@ component("base") {
+ }
+
+ if (dep_libevent) {
+- deps += [ "//third_party/libevent" ]
++ public_deps += [ "//third_party/libevent" ]
+ }
+
+ if (use_libevent) {
+@@ -3073,7 +3129,7 @@ if (is_apple) {
+ }
+ }
+
+-if (!is_nacl && (is_linux || is_chromeos)) {
++if (!is_nacl && !is_bsd && (is_linux || is_chromeos)) {
+ # This test must compile with -fstack-protector-all
+ source_set("stack_canary_linux_unittests") {
+ testonly = true
+@@ -3717,7 +3773,7 @@ test("base_unittests") {
+ ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if (!is_bsd && (is_linux || is_chromeos)) {
+ sources += [
+ "debug/proc_maps_linux_unittest.cc",
+ "files/scoped_file_linux_unittest.cc",
+@@ -3744,7 +3800,7 @@ test("base_unittests") {
+ "posix/file_descriptor_shuffle_unittest.cc",
+ "posix/unix_domain_socket_unittest.cc",
+ ]
+- if (!is_nacl && !is_apple) {
++ if (!is_nacl && !is_apple && !is_bsd) {
+ sources += [
+ "profiler/stack_base_address_posix_unittest.cc",
+ "profiler/stack_copier_signal_unittest.cc",
+@@ -3755,7 +3811,7 @@ test("base_unittests") {
+
+ # Allow more direct string conversions on platforms with native utf8
+ # strings
+- if (is_apple || is_chromeos || is_castos || is_cast_android || is_fuchsia) {
++ if (is_apple || is_chromeos || is_castos || is_cast_android || is_fuchsia || is_bsd) {
+ defines += [ "SYSTEM_NATIVE_UTF8" ]
+ }
+
+@@ -4023,7 +4079,7 @@ test("base_unittests") {
+ }
+ }
+
+- if (is_fuchsia || is_linux || is_chromeos) {
++ if ((is_fuchsia || is_linux || is_chromeos) && !is_bsd) {
+ sources += [
+ "debug/elf_reader_unittest.cc",
+ "debug/test_elf_image_builder.cc",
diff --git a/devel/electron30/files/patch-base_allocator_dispatcher_tls.h b/devel/electron30/files/patch-base_allocator_dispatcher_tls.h
new file mode 100644
index 000000000000..647e6dac4b40
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_dispatcher_tls.h
@@ -0,0 +1,11 @@
+--- base/allocator/dispatcher/tls.h.orig 2024-04-15 20:33:42 UTC
++++ base/allocator/dispatcher/tls.h
+@@ -76,7 +76,7 @@ struct BASE_EXPORT MMapAllocator {
+ constexpr static size_t AllocationChunkSize = 16384;
+ #elif BUILDFLAG(IS_ANDROID) && defined(ARCH_CPU_64_BITS)
+ constexpr static size_t AllocationChunkSize = 16384;
+-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)
++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64)
+ constexpr static size_t AllocationChunkSize = 16384;
+ #else
+ constexpr static size_t AllocationChunkSize = 4096;
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_partition__alloc.gni b/devel/electron30/files/patch-base_allocator_partition__allocator_partition__alloc.gni
new file mode 100644
index 000000000000..a96450181160
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_partition__alloc.gni
@@ -0,0 +1,20 @@
+--- base/allocator/partition_allocator/partition_alloc.gni.orig 2024-04-15 20:33:42 UTC
++++ base/allocator/partition_allocator/partition_alloc.gni
+@@ -33,7 +33,7 @@ has_memory_tagging =
+ use_large_empty_slot_span_ring = is_mac
+
+ has_memory_tagging =
+- current_cpu == "arm64" && is_clang && !is_asan && (is_linux || is_android)
++ current_cpu == "arm64" && is_clang && !is_asan && !is_bsd && (is_linux || is_android)
+
+ declare_args() {
+ # Causes all the allocations to be routed via allocator_shim.cc. Usually,
+@@ -351,7 +351,7 @@ declare_args() {
+ # dependencies that use partition_allocator are compiled in AOSP against a
+ # version of glibc that does not include pkeys syscall numbers.
+ enable_pkeys =
+- (is_linux || is_chromeos) && target_cpu == "x64" && !is_cronet_build
++ !is_bsd && (is_linux || is_chromeos) && target_cpu == "x64" && !is_cronet_build
+ }
+ assert(!enable_pkeys || ((is_linux || is_chromeos) && target_cpu == "x64"),
+ "Pkeys are only supported on x64 linux and ChromeOS")
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_BUILD.gn b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_BUILD.gn
new file mode 100644
index 000000000000..4f6e942f4541
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_BUILD.gn
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/src/partition_alloc/BUILD.gn.orig 2024-04-15 20:33:42 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/BUILD.gn
+@@ -851,7 +851,7 @@ if (is_clang_or_gcc) {
+ configs -= [ "//build/config/compiler:enable_arc" ]
+ }
+ }
+- if (is_chromeos || is_linux) {
++ if ((is_chromeos || is_linux) && !is_bsd) {
+ shim_headers += [
+ "shim/allocator_shim_override_cpp_symbols.h",
+ "shim/allocator_shim_override_glibc_weak_symbols.h",
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_address__space__randomization.h b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_address__space__randomization.h
new file mode 100644
index 000000000000..cf82c7718529
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_address__space__randomization.h
@@ -0,0 +1,20 @@
+--- base/allocator/partition_allocator/src/partition_alloc/address_space_randomization.h.orig 2024-04-15 20:33:42 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/address_space_randomization.h
+@@ -38,7 +38,7 @@ AslrMask(uintptr_t bits) {
+
+ #if defined(ARCH_CPU_64_BITS)
+
+- #if defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
++ #if defined(MEMORY_TOOL_REPLACES_ALLOCATOR) && !BUILDFLAG(IS_BSD)
+
+ // We shouldn't allocate system pages at all for sanitizer builds. However,
+ // we do, and if random hint addresses interfere with address ranges
+@@ -128,7 +128,7 @@ AslrMask(uintptr_t bits) {
+ return AslrAddress(0x20000000ULL);
+ }
+
+- #elif BUILDFLAG(IS_LINUX)
++ #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+
+ // Linux on arm64 can use 39, 42, 48, or 52-bit user space, depending on
+ // page size and number of levels of translation pages used. We use
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_page__allocator.h b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_page__allocator.h
new file mode 100644
index 000000000000..1147ec64b3d2
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_page__allocator.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/src/partition_alloc/page_allocator.h.orig 2024-04-15 20:33:42 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/page_allocator.h
+@@ -259,7 +259,7 @@ constexpr PA_COMPONENT_EXPORT(
+ // recommitted. Do not assume that this will not change over time.
+ constexpr PA_COMPONENT_EXPORT(
+ PARTITION_ALLOC) bool DecommittedMemoryIsAlwaysZeroed() {
+-#if BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ return false;
+ #else
+ return true;
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_page__allocator__constants.h b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_page__allocator__constants.h
new file mode 100644
index 000000000000..c71ace41d01d
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_page__allocator__constants.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h.orig 2024-04-15 20:33:42 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h
+@@ -26,7 +26,7 @@
+ #define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const))
+
+ #elif (BUILDFLAG(IS_ANDROID) && defined(ARCH_CPU_64_BITS)) || \
+- (BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64))
++ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64))
+ // This should work for all POSIX (if needed), but currently all other
+ // supported OS/architecture combinations use either hard-coded values
+ // (such as x86) or have means to determine these values without needing
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_page__allocator__internals__posix.h b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_page__allocator__internals__posix.h
new file mode 100644
index 000000000000..9f12a5acc856
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_page__allocator__internals__posix.h
@@ -0,0 +1,16 @@
+--- base/allocator/partition_allocator/src/partition_alloc/page_allocator_internals_posix.h.orig 2024-02-21 00:20:30 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/page_allocator_internals_posix.h
+@@ -411,8 +411,12 @@ void DiscardSystemPagesInternal(uintptr_t address, siz
+
+ void DiscardSystemPagesInternal(uintptr_t address, size_t length) {
+ void* ptr = reinterpret_cast<void*>(address);
+-#if BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
++#if BUILDFLAG(IS_BSD)
++ int ret = madvise(ptr, length, MADV_FREE);
++#else
+ int ret = madvise(ptr, length, MADV_FREE_REUSABLE);
++#endif
+ if (ret) {
+ // MADV_FREE_REUSABLE sometimes fails, so fall back to MADV_DONTNEED.
+ ret = madvise(ptr, length, MADV_DONTNEED);
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_debug_stack__trace__posix.cc b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_debug_stack__trace__posix.cc
new file mode 100644
index 000000000000..1ee5c9aea368
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_debug_stack__trace__posix.cc
@@ -0,0 +1,34 @@
+--- base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/debug/stack_trace_posix.cc.orig 2024-02-21 00:20:30 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/debug/stack_trace_posix.cc
+@@ -13,11 +13,11 @@
+ #include "partition_alloc/partition_alloc_base/posix/eintr_wrapper.h"
+ #include "partition_alloc/partition_alloc_base/strings/safe_sprintf.h"
+
+-#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_APPLE)
++#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD)
+ #include <link.h> // For ElfW() macro.
+ #endif
+
+-#if BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ #include <dlfcn.h>
+ #endif
+
+@@ -25,7 +25,7 @@ namespace {
+
+ namespace {
+
+-#if !BUILDFLAG(IS_APPLE)
++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD)
+
+ // On Android the 'open' function has two versions:
+ // int open(const char *pathname, int flags);
+@@ -369,7 +369,7 @@ void PrintStackTraceInternal(const void** trace, size_
+ }
+ #endif // !BUILDFLAG(IS_APPLE)
+
+-#if BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ // Since /proc/self/maps is not available, use dladdr() to obtain module
+ // names and offsets inside the modules from the given addresses.
+ void PrintStackTraceInternal(const void* const* trace, size_t size) {
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_rand__util__posix.cc b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_rand__util__posix.cc
new file mode 100644
index 000000000000..067756bb2822
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_rand__util__posix.cc
@@ -0,0 +1,13 @@
+--- base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/rand_util_posix.cc.orig 2024-02-21 00:20:30 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/rand_util_posix.cc
+@@ -102,6 +102,10 @@ void RandBytes(void* output, size_t output_length) {
+ if (getentropy(output, output_length) == 0) {
+ return;
+ }
++#elif BUILDFLAG(IS_BSD)
++ if (getentropy(output, output_length) == 0) {
++ return;
++ }
+ #endif
+ // If getrandom(2) above returned with an error and the /dev/urandom fallback
+ // took place on Linux/ChromeOS bots, they would fail with a CHECK in
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_threading_platform__thread.h b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_threading_platform__thread.h
new file mode 100644
index 000000000000..161bdc68e794
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_threading_platform__thread.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/threading/platform_thread.h.orig 2024-02-21 00:20:30 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/threading/platform_thread.h
+@@ -37,6 +37,8 @@ typedef mach_port_t PlatformThreadId;
+ typedef zx_handle_t PlatformThreadId;
+ #elif BUILDFLAG(IS_APPLE)
+ typedef mach_port_t PlatformThreadId;
++#elif BUILDFLAG(IS_BSD)
++typedef uint64_t PlatformThreadId;
+ #elif BUILDFLAG(IS_POSIX)
+ typedef pid_t PlatformThreadId;
+ #endif
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_threading_platform__thread__internal__posix.h b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_threading_platform__thread__internal__posix.h
new file mode 100644
index 000000000000..35a8106e9704
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_threading_platform__thread__internal__posix.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/threading/platform_thread_internal_posix.h.orig 2023-11-29 21:39:39 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/threading/platform_thread_internal_posix.h
+@@ -10,7 +10,7 @@ namespace partition_alloc::internal::base::internal {
+
+ namespace partition_alloc::internal::base::internal {
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Current thread id is cached in thread local storage for performance reasons.
+ // In some rare cases it's important to invalidate that cache explicitly (e.g.
+ // after going through clone() syscall which does not call pthread_atfork()
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_threading_platform__thread__posix.cc b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_threading_platform__thread__posix.cc
new file mode 100644
index 000000000000..87717522b862
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__base_threading_platform__thread__posix.cc
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/threading/platform_thread_posix.cc.orig 2024-02-21 00:20:30 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/threading/platform_thread_posix.cc
+@@ -18,7 +18,7 @@
+ #include "partition_alloc/partition_alloc_base/logging.h"
+ #include "partition_alloc/partition_alloc_base/threading/platform_thread_internal_posix.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include <sys/syscall.h>
+ #include <atomic>
+ #endif
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__config.h b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__config.h
new file mode 100644
index 000000000000..7eee50a2446e
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__config.h
@@ -0,0 +1,20 @@
+--- base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.orig 2024-04-15 20:33:42 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h
+@@ -251,7 +251,7 @@ constexpr bool kUseLazyCommit = false;
+ // On these platforms, lock all the partitions before fork(), and unlock after.
+ // This may be required on more platforms in the future.
+ #define PA_CONFIG_HAS_ATFORK_HANDLER() \
+- (BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
++ (BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD))
+
+ // PartitionAlloc uses PartitionRootEnumerator to acquire all
+ // PartitionRoots at BeforeFork and to release at AfterFork.
+@@ -299,7 +299,7 @@ constexpr bool kUseLazyCommit = false;
+ //
+ // Also enabled on ARM64 macOS and iOS, as the 16kiB pages on this platform lead
+ // to larger slot spans.
+-#if BUILDFLAG(IS_LINUX) || (BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_ARM64))
++#if BUILDFLAG(IS_LINUX) || (BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_ARM64)) || BUILDFLAG(IS_BSD)
+ #define PA_CONFIG_PREFER_SMALLER_SLOT_SPANS() 1
+ #else
+ #define PA_CONFIG_PREFER_SMALLER_SLOT_SPANS() 0
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__constants.h b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__constants.h
new file mode 100644
index 000000000000..4ee6540f5f20
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__constants.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/src/partition_alloc/partition_alloc_constants.h.orig 2024-04-15 20:33:42 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/partition_alloc_constants.h
+@@ -313,7 +313,7 @@ constexpr size_t kNumPools = kMaxPoolHandle - 1;
+ // 8GB for each of the glued pools).
+ #if BUILDFLAG(HAS_64_BIT_POINTERS)
+ #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || \
+- BUILDFLAG(ENABLE_POINTER_COMPRESSION)
++ BUILDFLAG(ENABLE_POINTER_COMPRESSION) || BUILDFLAG(IS_BSD)
+ constexpr size_t kPoolMaxSize = 8 * kGiB;
+ #else
+ constexpr size_t kPoolMaxSize = 16 * kGiB;
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__forward.h b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__forward.h
new file mode 100644
index 000000000000..03cf424478d2
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__alloc__forward.h
@@ -0,0 +1,16 @@
+--- base/allocator/partition_allocator/src/partition_alloc/partition_alloc_forward.h.orig 2023-11-29 21:39:39 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/partition_alloc_forward.h
+@@ -28,9 +28,13 @@ namespace internal {
+ // the second one 16. We could technically return something different for
+ // malloc() and operator new(), but this would complicate things, and most of
+ // our allocations are presumably coming from operator new() anyway.
++#if defined(__i386__) && defined(OS_FREEBSD)
++constexpr size_t kAlignment = 8;
++#else
+ constexpr size_t kAlignment =
+ std::max(alignof(max_align_t),
+ static_cast<size_t>(__STDCPP_DEFAULT_NEW_ALIGNMENT__));
++#endif
+ static_assert(kAlignment <= 16,
+ "PartitionAlloc doesn't support a fundamental alignment larger "
+ "than 16 bytes.");
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__root.cc b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__root.cc
new file mode 100644
index 000000000000..40b13de7ff92
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_partition__root.cc
@@ -0,0 +1,29 @@
+--- base/allocator/partition_allocator/src/partition_alloc/partition_root.cc.orig 2024-04-15 20:33:42 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/partition_root.cc
+@@ -47,7 +47,7 @@
+ #include "wow64apiset.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include <pthread.h>
+ #endif
+
+@@ -279,7 +279,7 @@ void PartitionAllocMallocInitOnce() {
+ return;
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // When fork() is called, only the current thread continues to execute in the
+ // child process. If the lock is held, but *not* by this thread when fork() is
+ // called, we have a deadlock.
+@@ -950,7 +950,7 @@ void PartitionRoot::Init(PartitionOptions opts) {
+ // apple OSes.
+ PA_CHECK((internal::SystemPageSize() == (size_t{1} << 12)) ||
+ (internal::SystemPageSize() == (size_t{1} << 14)));
+-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)
++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64)
+ // Check runtime pagesize. Though the code is currently the same, it is
+ // not merged with the IS_APPLE case above as a 1 << 16 case needs to be
+ // added here in the future, to allow 64 kiB pagesize. That is only
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_spinning__mutex.cc b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_spinning__mutex.cc
new file mode 100644
index 000000000000..ce2b6988121c
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_spinning__mutex.cc
@@ -0,0 +1,53 @@
+--- base/allocator/partition_allocator/src/partition_alloc/spinning_mutex.cc.orig 2024-02-21 00:20:30 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/spinning_mutex.cc
+@@ -17,7 +17,16 @@
+ #endif
+
+ #if PA_CONFIG(HAS_LINUX_KERNEL)
++#if defined(OS_OPENBSD)
++#include <sys/time.h>
++#include <sys/futex.h>
++#elif defined(OS_FREEBSD)
++#include <sys/types.h>
++#include <sys/thr.h>
++#include <sys/umtx.h>
++#else
+ #include <linux/futex.h>
++#endif
+ #include <sys/syscall.h>
+ #include <unistd.h>
+
+@@ -109,8 +118,16 @@ void SpinningMutex::FutexWait() {
+ // |kLockedContended| anymore. Note that even without spurious wakeups, the
+ // value of |state_| is not guaranteed when this returns, as another thread
+ // may get the lock before we get to run.
++#if defined(OS_FREEBSD)
++ int err = _umtx_op(&state_, UMTX_OP_WAIT_UINT_PRIVATE,
++ kLockedContended, nullptr, nullptr);
++#elif defined(OS_OPENBSD)
++ int err = futex(reinterpret_cast<volatile unsigned int *>(&state_), FUTEX_WAIT | FUTEX_PRIVATE_FLAG,
++ kLockedContended, nullptr, nullptr);
++#else
+ int err = syscall(SYS_futex, &state_, FUTEX_WAIT | FUTEX_PRIVATE_FLAG,
+ kLockedContended, nullptr, nullptr, 0);
++#endif
+
+ if (err) {
+ // These are programming error, check them.
+@@ -122,8 +139,16 @@ void SpinningMutex::FutexWake() {
+
+ void SpinningMutex::FutexWake() {
+ int saved_errno = errno;
++#if defined(OS_FREEBSD)
++ long retval = _umtx_op(&state_, UMTX_OP_WAKE_PRIVATE,
++ 1 /* wake up a single waiter */, nullptr, nullptr);
++#elif defined(OS_OPENBSD)
++ long retval = futex(reinterpret_cast<volatile unsigned int *>(&state_), FUTEX_WAKE | FUTEX_PRIVATE_FLAG,
++ 1 /* wake up a single waiter */, nullptr, nullptr);
++#else
+ long retval = syscall(SYS_futex, &state_, FUTEX_WAKE | FUTEX_PRIVATE_FLAG,
+ 1 /* wake up a single waiter */, nullptr, nullptr, 0);
++#endif
+ PA_CHECK(retval != -1);
+ errno = saved_errno;
+ }
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_starscan_stack_stack.cc b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_starscan_stack_stack.cc
new file mode 100644
index 000000000000..1704067c880b
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_starscan_stack_stack.cc
@@ -0,0 +1,50 @@
+--- base/allocator/partition_allocator/src/partition_alloc/starscan/stack/stack.cc.orig 2023-11-29 21:39:39 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/starscan/stack/stack.cc
+@@ -18,6 +18,10 @@
+ #include <pthread.h>
+ #endif
+
++#if BUILDFLAG(IS_BSD)
++#include <pthread_np.h>
++#endif
++
+ #if defined(LIBC_GLIBC)
+ extern "C" void* __libc_stack_end;
+ #endif
+@@ -48,6 +52,36 @@ void* GetStackTop() {
+
+ void* GetStackTop() {
+ return pthread_get_stackaddr_np(pthread_self());
++}
++
++#elif defined(OS_OPENBSD)
++
++void* GetStackTop() {
++ stack_t ss;
++ if (pthread_stackseg_np(pthread_self(), &ss) != 0)
++ return nullptr;
++ return reinterpret_cast<uint8_t*>(ss.ss_sp);
++}
++
++#elif defined(OS_FREEBSD)
++
++void* GetStackTop() {
++ pthread_attr_t attr;
++ int error = pthread_attr_init(&attr);
++ if (error) {
++ return nullptr;
++ }
++ error = pthread_attr_get_np(pthread_self(), &attr);
++ if (!error) {
++ void* base;
++ size_t size;
++ error = pthread_attr_getstack(&attr, &base, &size);
++ PA_CHECK(!error);
++ pthread_attr_destroy(&attr);
++ return reinterpret_cast<uint8_t*>(base) + size;
++ }
++ pthread_attr_destroy(&attr);
++ return nullptr;
+ }
+
+ #elif BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
diff --git a/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_thread__isolation_pkey.cc b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_thread__isolation_pkey.cc
new file mode 100644
index 000000000000..a0c2b745eac2
--- /dev/null
+++ b/devel/electron30/files/patch-base_allocator_partition__allocator_src_partition__alloc_thread__isolation_pkey.cc
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/src/partition_alloc/thread_isolation/pkey.cc.orig 2024-02-21 00:20:30 UTC
++++ base/allocator/partition_allocator/src/partition_alloc/thread_isolation/pkey.cc
+@@ -16,7 +16,7 @@
+ #include "partition_alloc/partition_alloc_check.h"
+ #include "partition_alloc/thread_isolation/thread_isolation.h"
+
+-#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD)
+ #error "This pkey code is currently only supported on Linux and ChromeOS"
+ #endif
+
diff --git a/devel/electron30/files/patch-base_atomicops.h b/devel/electron30/files/patch-base_atomicops.h
new file mode 100644
index 000000000000..7c186aff0e5b
--- /dev/null
+++ b/devel/electron30/files/patch-base_atomicops.h
@@ -0,0 +1,14 @@
+--- base/atomicops.h.orig 2023-03-30 00:33:38 UTC
++++ base/atomicops.h
+@@ -71,7 +71,11 @@ typedef intptr_t Atomic64;
+
+ // Use AtomicWord for a machine-sized pointer. It will use the Atomic32 or
+ // Atomic64 routines below, depending on your architecture.
++#if !defined(OS_OPENBSD) && defined(__i386__)
++typedef Atomic32 AtomicWord;
++#else
+ typedef intptr_t AtomicWord;
++#endif
+
+ // Atomically execute:
+ // result = *ptr;
diff --git a/devel/electron30/files/patch-base_base__paths__posix.cc b/devel/electron30/files/patch-base_base__paths__posix.cc
new file mode 100644
index 000000000000..6f624a01cd4e
--- /dev/null
+++ b/devel/electron30/files/patch-base_base__paths__posix.cc
@@ -0,0 +1,108 @@
+--- base/base_paths_posix.cc.orig 2024-04-15 20:33:42 UTC
++++ base/base_paths_posix.cc
+@@ -15,6 +15,7 @@
+ #include <ostream>
+ #include <string>
+
++#include "base/command_line.h"
+ #include "base/environment.h"
+ #include "base/files/file_path.h"
+ #include "base/files/file_util.h"
+@@ -26,9 +27,13 @@
+ #include "base/process/process_metrics.h"
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_FREEBSD)
++#if BUILDFLAG(IS_BSD)
+ #include <sys/param.h>
+ #include <sys/sysctl.h>
++#if BUILDFLAG(IS_OPENBSD)
++#include <kvm.h>
++#define MAXTOKENS 2
++#endif
+ #elif BUILDFLAG(IS_SOLARIS) || BUILDFLAG(IS_AIX)
+ #include <stdlib.h>
+ #endif
+@@ -48,8 +53,7 @@ bool PathProviderPosix(int key, FilePath* result) {
+ *result = bin_dir;
+ return true;
+ #elif BUILDFLAG(IS_FREEBSD)
+- int name[] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
+- std::optional<std::string> bin_dir = StringSysctl(name, std::size(name));
++ std::optional<std::string> bin_dir = StringSysctl({ CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 });
+ if (!bin_dir.has_value() || bin_dir.value().length() <= 1) {
+ NOTREACHED() << "Unable to resolve path.";
+ return false;
+@@ -65,13 +69,65 @@ bool PathProviderPosix(int key, FilePath* result) {
+ *result = FilePath(bin_dir);
+ return true;
+ #elif BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_AIX)
+- // There is currently no way to get the executable path on OpenBSD
+- char* cpath;
+- if ((cpath = getenv("CHROME_EXE_PATH")) != NULL)
+- *result = FilePath(cpath);
+- else
+- *result = FilePath("/usr/local/chrome/chrome");
+- return true;
++ char *cpath;
++#if !BUILDFLAG(IS_AIX)
++ struct kinfo_file *files;
++ kvm_t *kd = NULL;
++ char errbuf[_POSIX2_LINE_MAX];
++ static char retval[PATH_MAX];
++ int cnt;
++ struct stat sb;
++ pid_t cpid = getpid();
++ bool ret = false;
++
++ const base::CommandLine* command_line =
++ base::CommandLine::ForCurrentProcess();
++
++ VLOG(1) << "PathProviderPosix argv: " << command_line->argv()[0];
++
++ if (realpath(command_line->argv()[0].c_str(), retval) == NULL)
++ goto out;
++
++ if (stat(command_line->argv()[0].c_str(), &sb) < 0)
++ goto out;
++
++ if (!command_line->HasSwitch("no-sandbox")) {
++ ret = true;
++ *result = FilePath(retval);
++ VLOG(1) << "PathProviderPosix (sandbox) result: " << retval;
++ goto out;
++ }
++
++ if ((kd = kvm_openfiles(NULL, NULL, NULL, (int)KVM_NO_FILES, errbuf)) == NULL)
++ goto out;
++
++ if ((files = kvm_getfiles(kd, KERN_FILE_BYPID, cpid,
++ sizeof(struct kinfo_file), &cnt)) == NULL)
++ goto out;
++
++ for (int i = 0; i < cnt; i++) {
++ if (files[i].fd_fd == KERN_FILE_TEXT &&
++ files[i].va_fsid == static_cast<uint32_t>(sb.st_dev) &&
++ files[i].va_fileid == sb.st_ino) {
++ ret = true;
++ *result = FilePath(retval);
++ VLOG(1) << "PathProviderPosix result: " << retval;
++ }
++ }
++out:
++ if (kd)
++ kvm_close(kd);
++ if (!ret) {
++#endif
++ if ((cpath = getenv("CHROME_EXE_PATH")) != NULL)
++ *result = FilePath(cpath);
++ else
++ *result = FilePath("/usr/local/chrome/chrome");
++ return true;
++#if !BUILDFLAG(IS_AIX)
++ }
++ return ret;
++#endif
+ #endif
+ }
+ case DIR_SRC_TEST_DATA_ROOT: {
diff --git a/devel/electron30/files/patch-base_compiler__specific.h b/devel/electron30/files/patch-base_compiler__specific.h
new file mode 100644
index 000000000000..097e96957384
--- /dev/null
+++ b/devel/electron30/files/patch-base_compiler__specific.h
@@ -0,0 +1,11 @@
+--- base/compiler_specific.h.orig 2024-02-21 00:20:30 UTC
++++ base/compiler_specific.h
+@@ -316,7 +316,7 @@
+ //
+ // In some cases it's desirable to remove this, e.g. on hot functions, or if
+ // we have purposely changed the reference canary.
+-#if defined(COMPILER_GCC) || defined(__clang__)
++#if (defined(COMPILER_GCC) || defined(__clang__)) && !defined(__OpenBSD__) && !defined(__FreeBSD__)
+ #if HAS_ATTRIBUTE(__no_stack_protector__)
+ #define NO_STACK_PROTECTOR __attribute__((__no_stack_protector__))
+ #else
diff --git a/devel/electron30/files/patch-base_debug_debugger__posix.cc b/devel/electron30/files/patch-base_debug_debugger__posix.cc
new file mode 100644
index 000000000000..afb042746869
--- /dev/null
+++ b/devel/electron30/files/patch-base_debug_debugger__posix.cc
@@ -0,0 +1,69 @@
+--- base/debug/debugger_posix.cc.orig 2024-04-15 20:33:42 UTC
++++ base/debug/debugger_posix.cc
+@@ -36,6 +36,10 @@
+ #include <sys/sysctl.h>
+ #endif
+
++#if BUILDFLAG(IS_OPENBSD)
++#include <sys/proc.h>
++#endif
++
+ #if BUILDFLAG(IS_FREEBSD)
+ #include <sys/user.h>
+ #endif
+@@ -95,32 +99,51 @@ bool BeingDebugged() {
+
+ // Caution: struct kinfo_proc is marked __APPLE_API_UNSTABLE. The source and
+ // binary interfaces may change.
++#if BUILDFLAG(IS_OPENBSD)
++ struct kinfo_proc *info;
++ size_t info_size;
++#else
+ struct kinfo_proc info;
+ size_t info_size = sizeof(info);
++#endif
+
+ #if BUILDFLAG(IS_OPENBSD)
+ if (sysctl(mib, std::size(mib), NULL, &info_size, NULL, 0) < 0)
+ return -1;
+
+- mib[5] = (info_size / sizeof(struct kinfo_proc));
++ mib[5] = static_cast<int>((info_size / sizeof(struct kinfo_proc)));
++ if ((info = reinterpret_cast<kinfo_proc*>(malloc(info_size))) == NULL) {
++ is_set = true;
++ being_debugged = false;
++ return being_debugged;
++ }
++
++ int sysctl_result = sysctl(mib, std::size(mib), info, &info_size, NULL, 0);
+ #endif
+
++#if !BUILDFLAG(IS_OPENBSD)
+ int sysctl_result = sysctl(mib, std::size(mib), &info, &info_size, NULL, 0);
++#endif
+ DCHECK_EQ(sysctl_result, 0);
+ if (sysctl_result != 0) {
+ is_set = true;
+ being_debugged = false;
+- return being_debugged;
++ goto out;
+ }
+
+ // This process is being debugged if the P_TRACED flag is set.
+ is_set = true;
+ #if BUILDFLAG(IS_FREEBSD)
+ being_debugged = (info.ki_flag & P_TRACED) != 0;
+-#elif BUILDFLAG(IS_BSD)
+- being_debugged = (info.p_flag & P_TRACED) != 0;
++#elif BUILDFLAG(IS_OPENBSD)
++ being_debugged = (info->p_psflags & PS_TRACED) != 0;
+ #else
+ being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0;
++#endif
++
++out:
++#if BUILDFLAG(IS_OPENBSD)
++ free(info);
+ #endif
+ return being_debugged;
+ }
diff --git a/devel/electron30/files/patch-base_debug_elf__reader.cc b/devel/electron30/files/patch-base_debug_elf__reader.cc
new file mode 100644
index 000000000000..8d2b660c205c
--- /dev/null
+++ b/devel/electron30/files/patch-base_debug_elf__reader.cc
@@ -0,0 +1,13 @@
+--- base/debug/elf_reader.cc.orig 2024-04-15 20:33:42 UTC
++++ base/debug/elf_reader.cc
+@@ -45,6 +45,10 @@ constexpr char kGnuNoteName[] = "GNU";
+
+ constexpr char kGnuNoteName[] = "GNU";
+
++#ifndef NT_GNU_BUILD_ID
++#define NT_GNU_BUILD_ID 3
++#endif
++
+ // Returns a pointer to the header of the ELF binary mapped into memory, or a
+ // null pointer if the header is invalid. Here and below |elf_mapped_base| is a
+ // pointer to the start of the ELF image.
diff --git a/devel/electron30/files/patch-base_debug_proc__maps__linux.cc b/devel/electron30/files/patch-base_debug_proc__maps__linux.cc
new file mode 100644
index 000000000000..4ed7cb701ed6
--- /dev/null
+++ b/devel/electron30/files/patch-base_debug_proc__maps__linux.cc
@@ -0,0 +1,11 @@
+--- base/debug/proc_maps_linux.cc.orig 2022-02-28 16:54:41 UTC
++++ base/debug/proc_maps_linux.cc
+@@ -13,7 +13,7 @@
+ #include "base/strings/string_split.h"
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ #include <inttypes.h>
+ #endif
+
diff --git a/devel/electron30/files/patch-base_debug_stack__trace.cc b/devel/electron30/files/patch-base_debug_stack__trace.cc
new file mode 100644
index 000000000000..723afdf9d067
--- /dev/null
+++ b/devel/electron30/files/patch-base_debug_stack__trace.cc
@@ -0,0 +1,29 @@
+--- base/debug/stack_trace.cc.orig 2024-04-15 20:33:42 UTC
++++ base/debug/stack_trace.cc
+@@ -247,7 +247,7 @@ bool StackTrace::WillSymbolizeToStreamForTesting() {
+ // Symbols are not expected to be reliable when gn args specifies
+ // symbol_level=0.
+ return false;
+-#elif defined(__UCLIBC__) || defined(_AIX)
++#elif defined(__UCLIBC__) || defined(_AIX) || BUILDFLAG(IS_BSD)
+ // StackTrace::OutputToStream() is not implemented under uclibc, nor AIX.
+ // See https://crbug.com/706728
+ return false;
+@@ -291,7 +291,7 @@ std::string StackTrace::ToStringWithPrefix(const char*
+ }
+ std::string StackTrace::ToStringWithPrefix(const char* prefix_string) const {
+ std::stringstream stream;
+-#if !defined(__UCLIBC__) && !defined(_AIX)
++#if !defined(__UCLIBC__) && !defined(_AIX) && !BUILDFLAG(IS_BSD)
+ if (ShouldSuppressOutput()) {
+ return "Backtrace suppressed.";
+ }
+@@ -301,7 +301,7 @@ std::ostream& operator<<(std::ostream& os, const Stack
+ }
+
+ std::ostream& operator<<(std::ostream& os, const StackTrace& s) {
+-#if !defined(__UCLIBC__) && !defined(_AIX)
++#if !defined(__UCLIBC__) && !defined(_AIX) && !BUILDFLAG(IS_BSD)
+ s.OutputToStream(&os);
+ #else
+ os << "StackTrace::OutputToStream not implemented.";
diff --git a/devel/electron30/files/patch-base_debug_stack__trace__posix.cc b/devel/electron30/files/patch-base_debug_stack__trace__posix.cc
new file mode 100644
index 000000000000..8bcd1e337516
--- /dev/null
+++ b/devel/electron30/files/patch-base_debug_stack__trace__posix.cc
@@ -0,0 +1,101 @@
+--- base/debug/stack_trace_posix.cc.orig 2024-04-15 20:33:42 UTC
++++ base/debug/stack_trace_posix.cc
+@@ -41,7 +41,7 @@
+ // execinfo.h and backtrace(3) are really only present in glibc and in macOS
+ // libc.
+ #if BUILDFLAG(IS_APPLE) || \
+- (defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(__AIX))
++ (defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(__AIX) && !BUILDFLAG(IS_BSD))
+ #define HAVE_BACKTRACE
+ #include <execinfo.h>
+ #endif
+@@ -59,8 +59,10 @@
+ #include <AvailabilityMacros.h>
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
++#if !BUILDFLAG(IS_BSD)
+ #include <sys/prctl.h>
++#endif
+
+ #include "base/debug/proc_maps_linux.h"
+ #endif
+@@ -301,7 +303,7 @@ void PrintToStderr(const char* output) {
+ std::ignore = HANDLE_EINTR(write(STDERR_FILENO, output, strlen(output)));
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void AlarmSignalHandler(int signal, siginfo_t* info, void* void_context) {
+ // We have seen rare cases on AMD linux where the default signal handler
+ // either does not run or a thread (Probably an AMD driver thread) prevents
+@@ -318,7 +320,11 @@ void AlarmSignalHandler(int signal, siginfo_t* info, v
+ "Warning: Default signal handler failed to terminate process.\n");
+ PrintToStderr("Calling exit_group() directly to prevent timeout.\n");
+ // See: https://man7.org/linux/man-pages/man2/exit_group.2.html
++#if BUILDFLAG(IS_BSD)
++ _exit(EXIT_FAILURE);
++#else
+ syscall(SYS_exit_group, EXIT_FAILURE);
++#endif
+ }
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) ||
+ // BUILDFLAG(IS_CHROMEOS)
+@@ -535,7 +541,7 @@ void StackDumpSignalHandler(int signal, siginfo_t* inf
+ _exit(EXIT_FAILURE);
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Set an alarm to trigger in case the default handler does not terminate
+ // the process. See 'AlarmSignalHandler' for more details.
+ struct sigaction action;
+@@ -560,6 +566,7 @@ void StackDumpSignalHandler(int signal, siginfo_t* inf
+ // signals that do not re-raise autonomously), such as signals delivered via
+ // kill() and asynchronous hardware faults such as SEGV_MTEAERR, which would
+ // otherwise be lost when re-raising the signal via raise().
++#if !BUILDFLAG(IS_BSD)
+ long retval = syscall(SYS_rt_tgsigqueueinfo, getpid(), syscall(SYS_gettid),
+ info->si_signo, info);
+ if (retval == 0) {
+@@ -574,6 +581,7 @@ void StackDumpSignalHandler(int signal, siginfo_t* inf
+ if (errno != EPERM) {
+ _exit(EXIT_FAILURE);
+ }
++#endif
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) ||
+ // BUILDFLAG(IS_CHROMEOS)
+
+@@ -763,6 +771,7 @@ class SandboxSymbolizeHelper {
+ return -1;
+ }
+
++#if !BUILDFLAG(IS_BSD)
+ // This class is copied from
+ // third_party/crashpad/crashpad/util/linux/scoped_pr_set_dumpable.h.
+ // It aims at ensuring the process is dumpable before opening /proc/self/mem.
+@@ -855,11 +864,15 @@ class SandboxSymbolizeHelper {
+ r.base = cur_base;
+ }
+ }
++#endif
+
+ // Parses /proc/self/maps in order to compile a list of all object file names
+ // for the modules that are loaded in the current process.
+ // Returns true on success.
+ bool CacheMemoryRegions() {
++#if BUILDFLAG(IS_BSD)
++ return false;
++#else
+ // Reads /proc/self/maps.
+ std::string contents;
+ if (!ReadProcMaps(&contents)) {
+@@ -877,6 +890,7 @@ class SandboxSymbolizeHelper {
+
+ is_initialized_ = true;
+ return true;
++#endif
+ }
+
+ // Opens all object files and caches their file descriptors.
diff --git a/devel/electron30/files/patch-base_files_dir__reader__linux.h b/devel/electron30/files/patch-base_files_dir__reader__linux.h
new file mode 100644
index 000000000000..91bc1897532e
--- /dev/null
+++ b/devel/electron30/files/patch-base_files_dir__reader__linux.h
@@ -0,0 +1,39 @@
+--- base/files/dir_reader_linux.h.orig 2022-08-31 12:19:35 UTC
++++ base/files/dir_reader_linux.h
+@@ -16,10 +16,16 @@
+ #include "base/logging.h"
+ #include "base/posix/eintr_wrapper.h"
+
++#include "build/build_config.h"
++
+ // See the comments in dir_reader_posix.h about this.
+
+ namespace base {
+
++#if BUILDFLAG(IS_BSD)
++#include <dirent.h>
++typedef struct dirent linux_dirent;
++#else
+ struct linux_dirent {
+ uint64_t d_ino;
+ int64_t d_off;
+@@ -27,6 +33,7 @@ struct linux_dirent {
+ unsigned char d_type;
+ char d_name[0];
+ };
++#endif
+
+ class DirReaderLinux {
+ public:
+@@ -61,7 +68,11 @@ class DirReaderLinux {
+ if (offset_ != size_)
+ return true;
+
++#if BUILDFLAG(IS_BSD)
++ const int r = getdents(fd_, reinterpret_cast<char *>(buf_), sizeof(buf_));
++#else
+ const long r = syscall(__NR_getdents64, fd_, buf_, sizeof(buf_));
++#endif
+ if (r == 0)
+ return false;
+ if (r < 0) {
diff --git a/devel/electron30/files/patch-base_files_dir__reader__posix.h b/devel/electron30/files/patch-base_files_dir__reader__posix.h
new file mode 100644
index 000000000000..2285fb726f8e
--- /dev/null
+++ b/devel/electron30/files/patch-base_files_dir__reader__posix.h
@@ -0,0 +1,20 @@
+--- base/files/dir_reader_posix.h.orig 2022-06-17 14:20:10 UTC
++++ base/files/dir_reader_posix.h
+@@ -17,7 +17,7 @@
+ // seems worse than falling back to enumerating all file descriptors so we will
+ // probably never implement this on the Mac.
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ #include "base/files/dir_reader_linux.h"
+ #else
+ #include "base/files/dir_reader_fallback.h"
+@@ -25,7 +25,7 @@
+
+ namespace base {
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ typedef DirReaderLinux DirReaderPosix;
+ #else
+ typedef DirReaderFallback DirReaderPosix;
diff --git a/devel/electron30/files/patch-base_files_file__path__watcher.h b/devel/electron30/files/patch-base_files_file__path__watcher.h
new file mode 100644
index 000000000000..463c96aaf79a
--- /dev/null
+++ b/devel/electron30/files/patch-base_files_file__path__watcher.h
@@ -0,0 +1,11 @@
+--- base/files/file_path_watcher.h.orig 2024-02-21 00:20:30 UTC
++++ base/files/file_path_watcher.h
+@@ -105,7 +105,7 @@ class BASE_EXPORT FilePathWatcher {
+ Type type = Type::kNonRecursive;
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // The callback will return the full path to a changed file instead of
+ // the watched path supplied as |path| when Watch is called.
+ // So the full path can be different from the watched path when a folder is
diff --git a/devel/electron30/files/patch-base_files_file__path__watcher__bsd.cc b/devel/electron30/files/patch-base_files_file__path__watcher__bsd.cc
new file mode 100644
index 000000000000..5bac3095f9f0
--- /dev/null
+++ b/devel/electron30/files/patch-base_files_file__path__watcher__bsd.cc
@@ -0,0 +1,57 @@
+--- base/files/file_path_watcher_bsd.cc.orig 2022-10-24 13:33:33 UTC
++++ base/files/file_path_watcher_bsd.cc
+@@ -0,0 +1,54 @@
++// Copyright 2021 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include <memory>
++
++#include "base/files/file_path_watcher.h"
++#include "base/files/file_path_watcher_kqueue.h"
++#include "base/memory/ptr_util.h"
++#include "build/build_config.h"
++
++namespace base {
++
++namespace {
++
++class FilePathWatcherImpl : public FilePathWatcher::PlatformDelegate {
++ public:
++ FilePathWatcherImpl() = default;
++ FilePathWatcherImpl(const FilePathWatcherImpl&) = delete;
++ FilePathWatcherImpl& operator=(const FilePathWatcherImpl&) = delete;
++ ~FilePathWatcherImpl() override = default;
++
++ bool Watch(const FilePath& path,
++ Type type,
++ const FilePathWatcher::Callback& callback) override {
++ DCHECK(!impl_.get());
++ if (type == Type::kRecursive) {
++ if (!FilePathWatcher::RecursiveWatchAvailable())
++ return false;
++ } else {
++ impl_ = std::make_unique<FilePathWatcherKQueue>();
++ }
++ DCHECK(impl_.get());
++ return impl_->Watch(path, type, callback);
++ }
++
++ void Cancel() override {
++ if (impl_.get())
++ impl_->Cancel();
++ set_cancelled();
++ }
++
++ private:
++ std::unique_ptr<PlatformDelegate> impl_;
++};
++
++} // namespace
++
++FilePathWatcher::FilePathWatcher() {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++ impl_ = std::make_unique<FilePathWatcherImpl>();
++}
++
++} // namespace base
diff --git a/devel/electron30/files/patch-base_files_file__path__watcher__kqueue.h b/devel/electron30/files/patch-base_files_file__path__watcher__kqueue.h
new file mode 100644
index 000000000000..821858b75711
--- /dev/null
+++ b/devel/electron30/files/patch-base_files_file__path__watcher__kqueue.h
@@ -0,0 +1,10 @@
+--- base/files/file_path_watcher_kqueue.h.orig 2022-02-07 13:39:41 UTC
++++ base/files/file_path_watcher_kqueue.h
+@@ -5,6 +5,7 @@
+ #ifndef BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+ #define BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+
++#include <sys/time.h>
+ #include <sys/event.h>
+
+ #include <memory>
diff --git a/devel/electron30/files/patch-base_files_file__path__watcher__unittest.cc b/devel/electron30/files/patch-base_files_file__path__watcher__unittest.cc
new file mode 100644
index 000000000000..f0b7e3fb7b48
--- /dev/null
+++ b/devel/electron30/files/patch-base_files_file__path__watcher__unittest.cc
@@ -0,0 +1,29 @@
+--- base/files/file_path_watcher_unittest.cc.orig 2024-02-21 00:20:30 UTC
++++ base/files/file_path_watcher_unittest.cc
+@@ -847,7 +847,7 @@ TEST_F(FilePathWatcherTest, WatchDirectory) {
+ }
+ delegate.RunUntilEventsMatch(event_expecter);
+
+-#if !BUILDFLAG(IS_APPLE)
++#if !BUILDFLAG(IS_APPLE) && BUILDFLAG(IS_BSD)
+ ASSERT_TRUE(WriteFile(file1, "content v2"));
+ // Mac implementation does not detect files modified in a directory.
+ // TODO(https://crbug.com/1432064): Expect that no events are fired on Mac.
+@@ -1783,7 +1783,7 @@ enum Permission { Read, Write, Execute };
+
+ enum Permission { Read, Write, Execute };
+
+-#if BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ bool ChangeFilePermissions(const FilePath& path, Permission perm, bool allow) {
+ struct stat stat_buf;
+
+@@ -1817,7 +1817,7 @@ bool ChangeFilePermissions(const FilePath& path, Permi
+
+ } // namespace
+
+-#if BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_APPLE) && BUILDFLAG(IS_BSD)
+ // Linux implementation of FilePathWatcher doesn't catch attribute changes.
+ // http://crbug.com/78043
+ // Windows implementation of FilePathWatcher catches attribute changes that
diff --git a/devel/electron30/files/patch-base_files_file__util__posix.cc b/devel/electron30/files/patch-base_files_file__util__posix.cc
new file mode 100644
index 000000000000..336f496e905a
--- /dev/null
+++ b/devel/electron30/files/patch-base_files_file__util__posix.cc
@@ -0,0 +1,53 @@
+--- base/files/file_util_posix.cc.orig 2024-04-15 20:33:42 UTC
++++ base/files/file_util_posix.cc
+@@ -816,33 +816,34 @@ bool CreateDirectoryAndGetError(const FilePath& full_p
+ File::Error* error) {
+ ScopedBlockingCall scoped_blocking_call(
+ FROM_HERE, BlockingType::MAY_BLOCK); // For call to mkdir().
++ const FilePath kFileSystemRoot("/");
+ std::vector<FilePath> subpaths;
+
+ // Collect a list of all parent directories.
+ FilePath last_path = full_path;
+- subpaths.push_back(full_path);
++ if (full_path != kFileSystemRoot)
++ subpaths.push_back(full_path);
+ for (FilePath path = full_path.DirName();
+- path.value() != last_path.value(); path = path.DirName()) {
++ (path.value() != last_path.value() &&
++ (path != kFileSystemRoot)); path = path.DirName()) {
+ subpaths.push_back(path);
+ last_path = path;
+ }
+
+ // Iterate through the parents and create the missing ones.
+ for (const FilePath& subpath : base::Reversed(subpaths)) {
+- if (DirectoryExists(subpath))
+- continue;
+- if (mkdir(subpath.value().c_str(), 0700) == 0)
+- continue;
+- // Mkdir failed, but it might have failed with EEXIST, or some other error
+- // due to the directory appearing out of thin air. This can occur if
+- // two processes are trying to create the same file system tree at the same
+- // time. Check to see if it exists and make sure it is a directory.
+- int saved_errno = errno;
+- if (!DirectoryExists(subpath)) {
+- if (error)
+- *error = File::OSErrorToFileError(saved_errno);
+- errno = saved_errno;
+- return false;
++ if (!PathExists(subpath)) {
++ if ((mkdir(subpath.value().c_str(), 0700) == -1) &&
++ ((full_path != subpath) ? (errno != ENOENT) : (-1))) {
++ int saved_errno = errno;
++ if (error)
++ *error = File::OSErrorToFileError(saved_errno);
++ return false;
++ }
++ } else if (!DirectoryExists(subpath)) {
++ if (error)
++ *error = File::OSErrorToFileError(ENOTDIR);
++ return false;
+ }
+ }
+ return true;
diff --git a/devel/electron30/files/patch-base_files_file__util__unittest.cc b/devel/electron30/files/patch-base_files_file__util__unittest.cc
new file mode 100644
index 000000000000..998dd7c06a92
--- /dev/null
+++ b/devel/electron30/files/patch-base_files_file__util__unittest.cc
@@ -0,0 +1,20 @@
+--- base/files/file_util_unittest.cc.orig 2024-04-15 20:33:42 UTC
++++ base/files/file_util_unittest.cc
+@@ -3870,7 +3870,7 @@ TEST_F(FileUtilTest, ReadFileToStringWithNamedPipe) {
+ }
+ #endif // BUILDFLAG(IS_WIN)
+
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD)
+ TEST_F(FileUtilTest, ReadFileToStringWithProcFileSystem) {
+ FilePath file_path("/proc/cpuinfo");
+ std::string data = "temp";
+@@ -4651,7 +4651,7 @@ TEST(FileUtilMultiThreadedTest, MultiThreadedTempFiles
+ NULL);
+ #else
+ size_t bytes_written =
+- ::write(::fileno(output_file.get()), content.c_str(), content.length());
++ ::write(fileno(output_file.get()), content.c_str(), content.length());
+ #endif
+ EXPECT_EQ(content.length(), bytes_written);
+ ::fflush(output_file.get());
diff --git a/devel/electron30/files/patch-base_files_important__file__writer__cleaner.cc b/devel/electron30/files/patch-base_files_important__file__writer__cleaner.cc
new file mode 100644
index 000000000000..80f08d51a819
--- /dev/null
+++ b/devel/electron30/files/patch-base_files_important__file__writer__cleaner.cc
@@ -0,0 +1,12 @@
+--- base/files/important_file_writer_cleaner.cc.orig 2022-02-28 16:54:41 UTC
++++ base/files/important_file_writer_cleaner.cc
+@@ -25,7 +25,8 @@ namespace base {
+ namespace {
+
+ base::Time GetUpperBoundTime() {
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_FUCHSIA)
++// needed because of .CreationTime() pledge
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // If process creation time is not available then use instance creation
+ // time as the upper-bound for old files. Modification times may be
+ // rounded-down to coarse-grained increments, e.g. FAT has 2s granularity,
diff --git a/devel/electron30/files/patch-base_files_scoped__file.cc b/devel/electron30/files/patch-base_files_scoped__file.cc
new file mode 100644
index 000000000000..350c73cc76e7
--- /dev/null
+++ b/devel/electron30/files/patch-base_files_scoped__file.cc
@@ -0,0 +1,11 @@
+--- base/files/scoped_file.cc.orig 2022-02-28 16:54:41 UTC
++++ base/files/scoped_file.cc
+@@ -31,7 +31,7 @@ void ScopedFDCloseTraits::Free(int fd) {
+ int ret = IGNORE_EINTR(close(fd));
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_APPLE) || \
+- BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_ANDROID)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ // NB: Some file descriptors can return errors from close() e.g. network
+ // filesystems such as NFS and Linux input devices. On Linux, macOS, and
+ // Fuchsia's POSIX layer, errors from close other than EBADF do not indicate
diff --git a/devel/electron30/files/patch-base_functional_unretained__traits.h b/devel/electron30/files/patch-base_functional_unretained__traits.h
new file mode 100644
index 000000000000..40e618bb5141
--- /dev/null
+++ b/devel/electron30/files/patch-base_functional_unretained__traits.h
@@ -0,0 +1,11 @@
+--- base/functional/unretained_traits.h.orig 2024-04-15 20:33:42 UTC
++++ base/functional/unretained_traits.h
+@@ -93,7 +93,7 @@ struct SupportsUnretainedImpl {
+ // official builds, and then in non-test code as well.
+ #if defined(FORCE_UNRETAINED_COMPLETENESS_CHECKS_FOR_TESTS) || \
+ (!defined(UNIT_TEST) && !defined(OFFICIAL_BUILD) && \
+- (BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)))
++ (BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)))
+ static_assert(v,
+ "Argument requires unretained storage, but type is not "
+ "fully defined. This prevents determining whether "
diff --git a/devel/electron30/files/patch-base_i18n_icu__util.cc b/devel/electron30/files/patch-base_i18n_icu__util.cc
new file mode 100644
index 000000000000..5c7f6141a4d2
--- /dev/null
+++ b/devel/electron30/files/patch-base_i18n_icu__util.cc
@@ -0,0 +1,20 @@
+--- base/i18n/icu_util.cc.orig 2024-04-15 20:33:42 UTC
++++ base/i18n/icu_util.cc
+@@ -52,7 +52,7 @@
+ #include "third_party/icu/source/common/unicode/unistr.h"
+ #endif
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || \
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) || \
+ BUILDFLAG(IS_CHROMEOS) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS))
+ #include "third_party/icu/source/i18n/unicode/timezone.h"
+ #endif
+@@ -328,7 +328,7 @@ void InitializeIcuTimeZone() {
+ FuchsiaIntlProfileWatcher::GetPrimaryTimeZoneIdForIcuInitialization();
+ icu::TimeZone::adoptDefault(
+ icu::TimeZone::createTimeZone(icu::UnicodeString::fromUTF8(zone_id)));
+-#elif BUILDFLAG(IS_CHROMEOS) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS))
++#elif BUILDFLAG(IS_CHROMEOS) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)) || BUILDFLAG(IS_BSD)
+ // To respond to the time zone change properly, the default time zone
+ // cache in ICU has to be populated on starting up.
+ // See TimeZoneMonitorLinux::NotifyClientsFromImpl().
diff --git a/devel/electron30/files/patch-base_linux__util.cc b/devel/electron30/files/patch-base_linux__util.cc
new file mode 100644
index 000000000000..312e33795abe
--- /dev/null
+++ b/devel/electron30/files/patch-base_linux__util.cc
@@ -0,0 +1,25 @@
+--- base/linux_util.cc.orig 2023-11-29 21:39:40 UTC
++++ base/linux_util.cc
+@@ -15,6 +15,7 @@
+
+ #include <iomanip>
+ #include <memory>
++#include <sstream>
+
+ #include "base/base_export.h"
+ #include "base/files/dir_reader_posix.h"
+@@ -153,10 +154,14 @@ bool GetThreadsForProcess(pid_t pid, std::vector<pid_t
+ }
+
+ bool GetThreadsForProcess(pid_t pid, std::vector<pid_t>* tids) {
++#if BUILDFLAG(IS_BSD)
++ return false;
++#else
+ // 25 > strlen("/proc//task") + strlen(std::to_string(INT_MAX)) + 1 = 22
+ char buf[25];
+ strings::SafeSPrintf(buf, "/proc/%d/task", pid);
+ return GetThreadsFromProcessDir(buf, tids);
++#endif
+ }
+
+ bool GetThreadsForCurrentProcess(std::vector<pid_t>* tids) {
diff --git a/devel/electron30/files/patch-base_logging__unittest.cc b/devel/electron30/files/patch-base_logging__unittest.cc
new file mode 100644
index 000000000000..90328e74b526
--- /dev/null
+++ b/devel/electron30/files/patch-base_logging__unittest.cc
@@ -0,0 +1,31 @@
+--- base/logging_unittest.cc.orig 2024-02-21 00:20:30 UTC
++++ base/logging_unittest.cc
+@@ -32,7 +32,7 @@
+ #include "base/posix/eintr_wrapper.h"
+ #endif // BUILDFLAG(IS_POSIX)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD)
+ #include <ucontext.h>
+ #endif
+
+@@ -570,14 +570,18 @@ void CheckCrashTestSighandler(int, siginfo_t* info, vo
+ // need the arch-specific boilerplate below, which is inspired by breakpad.
+ // At the same time, on OSX, ucontext.h is deprecated but si_addr works fine.
+ uintptr_t crash_addr = 0;
+-#if BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FREEBSD)
+ crash_addr = reinterpret_cast<uintptr_t>(info->si_addr);
+ #else // OS_*
+ ucontext_t* context = reinterpret_cast<ucontext_t*>(context_ptr);
+ #if defined(ARCH_CPU_X86)
+ crash_addr = static_cast<uintptr_t>(context->uc_mcontext.gregs[REG_EIP]);
+ #elif defined(ARCH_CPU_X86_64)
++#if BUILDFLAG(IS_OPENBSD)
++ crash_addr = static_cast<uintptr_t>(context->sc_rip);
++#else
+ crash_addr = static_cast<uintptr_t>(context->uc_mcontext.gregs[REG_RIP]);
++#endif
+ #elif defined(ARCH_CPU_ARMEL)
+ crash_addr = static_cast<uintptr_t>(context->uc_mcontext.arm_pc);
+ #elif defined(ARCH_CPU_ARM64)
diff --git a/devel/electron30/files/patch-base_memory_discardable__memory.cc b/devel/electron30/files/patch-base_memory_discardable__memory.cc
new file mode 100644
index 000000000000..bd043476fc97
--- /dev/null
+++ b/devel/electron30/files/patch-base_memory_discardable__memory.cc
@@ -0,0 +1,38 @@
+--- base/memory/discardable_memory.cc.orig 2022-11-30 08:12:58 UTC
++++ base/memory/discardable_memory.cc
+@@ -26,7 +26,7 @@ BASE_FEATURE(kMadvFreeDiscardableMemory,
+ base::FEATURE_DISABLED_BY_DEFAULT);
+ #endif // BUILDFLAG(IS_POSIX)
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ BASE_FEATURE(kDiscardableMemoryBackingTrial,
+ "DiscardableMemoryBackingTrial",
+ base::FEATURE_DISABLED_BY_DEFAULT);
+@@ -52,7 +52,7 @@ const base::FeatureParam<DiscardableMemoryTrialGroup>
+
+ namespace {
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ DiscardableMemoryBacking GetBackingForFieldTrial() {
+ DiscardableMemoryTrialGroup trial_group =
+@@ -71,7 +71,7 @@ DiscardableMemoryBacking GetBackingForFieldTrial() {
+
+ } // namespace
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ // Probe capabilities of this device to determine whether we should participate
+ // in the discardable memory backing trial.
+@@ -101,7 +101,7 @@ DiscardableMemory::DiscardableMemory() = default;
+ DiscardableMemory::~DiscardableMemory() = default;
+
+ DiscardableMemoryBacking GetDiscardableMemoryBacking() {
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (DiscardableMemoryBackingFieldTrialIsEnabled()) {
+ return GetBackingForFieldTrial();
+ }
diff --git a/devel/electron30/files/patch-base_memory_discardable__memory__internal.h b/devel/electron30/files/patch-base_memory_discardable__memory__internal.h
new file mode 100644
index 000000000000..13bef7210432
--- /dev/null
+++ b/devel/electron30/files/patch-base_memory_discardable__memory__internal.h
@@ -0,0 +1,11 @@
+--- base/memory/discardable_memory_internal.h.orig 2022-02-28 16:54:41 UTC
++++ base/memory/discardable_memory_internal.h
+@@ -10,7 +10,7 @@
+ #include "base/metrics/field_trial_params.h"
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ namespace base {
+
diff --git a/devel/electron30/files/patch-base_memory_madv__free__discardable__memory__posix.cc b/devel/electron30/files/patch-base_memory_madv__free__discardable__memory__posix.cc
new file mode 100644
index 000000000000..eab961b93ef3
--- /dev/null
+++ b/devel/electron30/files/patch-base_memory_madv__free__discardable__memory__posix.cc
@@ -0,0 +1,21 @@
+--- base/memory/madv_free_discardable_memory_posix.cc.orig 2023-05-25 00:41:38 UTC
++++ base/memory/madv_free_discardable_memory_posix.cc
+@@ -306,6 +306,10 @@ void MadvFreeDiscardableMemoryPosix::SetKeepMemoryForT
+
+ bool MadvFreeDiscardableMemoryPosix::IsResident() const {
+ DFAKE_SCOPED_RECURSIVE_LOCK(thread_collision_warner_);
++// XXX mincore
++#if BUILDFLAG(IS_BSD)
++ return false;
++#else
+ #if BUILDFLAG(IS_APPLE)
+ std::vector<char> vec(allocated_pages_);
+ #else
+@@ -321,6 +325,7 @@ bool MadvFreeDiscardableMemoryPosix::IsResident() cons
+ return false;
+ }
+ return true;
++#endif
+ }
+
+ bool MadvFreeDiscardableMemoryPosix::IsDiscarded() const {
diff --git a/devel/electron30/files/patch-base_memory_platform__shared__memory__region.h b/devel/electron30/files/patch-base_memory_platform__shared__memory__region.h
new file mode 100644
index 000000000000..33dba1312700
--- /dev/null
+++ b/devel/electron30/files/patch-base_memory_platform__shared__memory__region.h
@@ -0,0 +1,29 @@
+--- base/memory/platform_shared_memory_region.h.orig 2024-04-15 20:33:42 UTC
++++ base/memory/platform_shared_memory_region.h
+@@ -17,7 +17,7 @@
+ #include "base/unguessable_token.h"
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ namespace content {
+ class SandboxIPCHandler;
+ }
+@@ -84,7 +84,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion {
+ kMaxValue = GET_SHMEM_TEMP_DIR_FAILURE
+ };
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Structure to limit access to executable region creation.
+ struct ExecutableRegion {
+ private:
+@@ -216,7 +216,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion {
+ CheckPlatformHandlePermissionsCorrespondToMode);
+ static PlatformSharedMemoryRegion Create(Mode mode,
+ size_t size
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ ,
+ bool executable = false
+ #endif
diff --git a/devel/electron30/files/patch-base_memory_platform__shared__memory__region__posix.cc b/devel/electron30/files/patch-base_memory_platform__shared__memory__region__posix.cc
new file mode 100644
index 000000000000..fc212fadf786
--- /dev/null
+++ b/devel/electron30/files/patch-base_memory_platform__shared__memory__region__posix.cc
@@ -0,0 +1,29 @@
+--- base/memory/platform_shared_memory_region_posix.cc.orig 2023-02-01 18:43:07 UTC
++++ base/memory/platform_shared_memory_region_posix.cc
+@@ -55,7 +55,7 @@ bool CheckFDAccessMode(int fd, int expected_mode) {
+
+ } // namespace
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // static
+ ScopedFD PlatformSharedMemoryRegion::ExecutableRegion::CreateFD(size_t size) {
+ PlatformSharedMemoryRegion region =
+@@ -168,7 +168,7 @@ bool PlatformSharedMemoryRegion::ConvertToUnsafe() {
+ // static
+ PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode,
+ size_t size
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ ,
+ bool executable
+ #endif
+@@ -197,7 +197,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
+ // flag.
+ FilePath directory;
+ if (!GetShmemTempDir(
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ executable,
+ #else
+ false /* executable */,
diff --git a/devel/electron30/files/patch-base_message__loop_message__pump__glib.cc b/devel/electron30/files/patch-base_message__loop_message__pump__glib.cc
new file mode 100644
index 000000000000..6734d01e8bf0
--- /dev/null
+++ b/devel/electron30/files/patch-base_message__loop_message__pump__glib.cc
@@ -0,0 +1,28 @@
+--- base/message_loop/message_pump_glib.cc.orig 2022-08-31 12:19:35 UTC
++++ base/message_loop/message_pump_glib.cc
+@@ -8,6 +8,11 @@
+ #include <glib.h>
+ #include <math.h>
+
++#if BUILDFLAG(IS_BSD)
++#include <pthread.h>
++#include <pthread_np.h>
++#endif
++
+ #include "base/logging.h"
+ #include "base/memory/raw_ptr.h"
+ #include "base/notreached.h"
+@@ -51,9 +56,13 @@ int GetTimeIntervalMilliseconds(TimeTicks next_task_ti
+ }
+
+ bool RunningOnMainThread() {
++#if BUILDFLAG(IS_BSD)
++ return pthread_main_np();
++#else
+ auto pid = getpid();
+ auto tid = PlatformThread::CurrentId();
+ return pid > 0 && tid > 0 && pid == tid;
++#endif
+ }
+
+ // A brief refresher on GLib:
diff --git a/devel/electron30/files/patch-base_native__library__posix.cc b/devel/electron30/files/patch-base_native__library__posix.cc
new file mode 100644
index 000000000000..c2b8d0e5e970
--- /dev/null
+++ b/devel/electron30/files/patch-base_native__library__posix.cc
@@ -0,0 +1,11 @@
+--- base/native_library_posix.cc.orig 2022-05-19 14:06:27 UTC
++++ base/native_library_posix.cc
+@@ -33,7 +33,7 @@ NativeLibrary LoadNativeLibraryWithOptions(const FileP
+ // http://crbug.com/17943, http://crbug.com/17557, http://crbug.com/36892,
+ // and http://crbug.com/40794.
+ int flags = RTLD_LAZY;
+-#if BUILDFLAG(IS_ANDROID) || !defined(RTLD_DEEPBIND)
++#if BUILDFLAG(IS_ANDROID) || !defined(RTLD_DEEPBIND) || BUILDFLAG(IS_BSD)
+ // Certain platforms don't define RTLD_DEEPBIND. Android dlopen() requires
+ // further investigation, as it might vary across versions. Crash here to
+ // warn developers that they're trying to rely on uncertain behavior.
diff --git a/devel/electron30/files/patch-base_native__library__unittest.cc b/devel/electron30/files/patch-base_native__library__unittest.cc
new file mode 100644
index 000000000000..91c0e0b9d9bd
--- /dev/null
+++ b/devel/electron30/files/patch-base_native__library__unittest.cc
@@ -0,0 +1,11 @@
+--- base/native_library_unittest.cc.orig 2024-04-15 20:33:42 UTC
++++ base/native_library_unittest.cc
+@@ -133,7 +133,7 @@ TEST(NativeLibraryTest, LoadLibrary) {
+ // versions with respect to symbol resolution scope.
+ // TSan and MSan error out on RTLD_DEEPBIND, https://crbug.com/705255
+ #if !BUILDFLAG(IS_ANDROID) && !defined(THREAD_SANITIZER) && \
+- !defined(MEMORY_SANITIZER)
++ !defined(MEMORY_SANITIZER) && !BUILDFLAG(IS_BSD)
+
+ // Verifies that the |prefer_own_symbols| option satisfies its guarantee that
+ // a loaded library will always prefer local symbol resolution before
diff --git a/devel/electron30/files/patch-base_posix_can__lower__nice__to.cc b/devel/electron30/files/patch-base_posix_can__lower__nice__to.cc
new file mode 100644
index 000000000000..67a5d35808ae
--- /dev/null
+++ b/devel/electron30/files/patch-base_posix_can__lower__nice__to.cc
@@ -0,0 +1,16 @@
+--- base/posix/can_lower_nice_to.cc.orig 2022-02-28 16:54:41 UTC
++++ base/posix/can_lower_nice_to.cc
+@@ -11,8 +11,12 @@
+
+ #include "build/build_config.h"
+
++#if BUILDFLAG(IS_FREEBSD)
++#include <sys/param.h>
++#endif
++
+ // Not defined on AIX by default.
+-#if BUILDFLAG(IS_AIX)
++#if BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ #if defined(RLIMIT_NICE)
+ #error Assumption about OS_AIX is incorrect
+ #endif
diff --git a/devel/electron30/files/patch-base_posix_sysctl.cc b/devel/electron30/files/patch-base_posix_sysctl.cc
new file mode 100644
index 000000000000..7599323d6f5b
--- /dev/null
+++ b/devel/electron30/files/patch-base_posix_sysctl.cc
@@ -0,0 +1,10 @@
+--- base/posix/sysctl.cc.orig 2023-11-29 21:39:40 UTC
++++ base/posix/sysctl.cc
+@@ -4,6 +4,7 @@
+
+ #include "base/posix/sysctl.h"
+
++#include <sys/types.h>
+ #include <sys/sysctl.h>
+
+ #include <initializer_list>
diff --git a/devel/electron30/files/patch-base_posix_unix__domain__socket.cc b/devel/electron30/files/patch-base_posix_unix__domain__socket.cc
new file mode 100644
index 000000000000..bb358b22f9a1
--- /dev/null
+++ b/devel/electron30/files/patch-base_posix_unix__domain__socket.cc
@@ -0,0 +1,57 @@
+--- base/posix/unix_domain_socket.cc.orig 2024-04-15 20:33:42 UTC
++++ base/posix/unix_domain_socket.cc
+@@ -51,7 +51,7 @@ bool UnixDomainSocket::EnableReceiveProcessId(int fd)
+
+ // static
+ bool UnixDomainSocket::EnableReceiveProcessId(int fd) {
+-#if !BUILDFLAG(IS_APPLE)
++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD)
+ const int enable = 1;
+ return setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &enable, sizeof(enable)) == 0;
+ #else
+@@ -77,7 +77,7 @@ bool UnixDomainSocket::SendMsg(int fd,
+
+ struct cmsghdr* cmsg;
+ msg.msg_control = control_buffer;
+-#if BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ msg.msg_controllen = checked_cast<socklen_t>(control_len);
+ #else
+ msg.msg_controllen = control_len;
+@@ -85,7 +85,7 @@ bool UnixDomainSocket::SendMsg(int fd,
+ cmsg = CMSG_FIRSTHDR(&msg);
+ cmsg->cmsg_level = SOL_SOCKET;
+ cmsg->cmsg_type = SCM_RIGHTS;
+-#if BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ cmsg->cmsg_len = checked_cast<u_int>(CMSG_LEN(sizeof(int) * fds.size()));
+ #else
+ cmsg->cmsg_len = CMSG_LEN(sizeof(int) * fds.size());
+@@ -149,7 +149,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+
+ const size_t kControlBufferSize =
+ CMSG_SPACE(sizeof(int) * kMaxFileDescriptors)
+-#if !BUILDFLAG(IS_APPLE)
++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD)
+ // macOS does not support ucred.
+ // macOS supports xucred, but this structure is insufficient.
+ + CMSG_SPACE(sizeof(struct ucred))
+@@ -177,7 +177,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ wire_fds = reinterpret_cast<int*>(CMSG_DATA(cmsg));
+ wire_fds_len = payload_len / sizeof(int);
+ }
+-#if !BUILDFLAG(IS_APPLE)
++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD)
+ // macOS does not support SCM_CREDENTIALS.
+ if (cmsg->cmsg_level == SOL_SOCKET &&
+ cmsg->cmsg_type == SCM_CREDENTIALS) {
+@@ -211,6 +211,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ socklen_t pid_size = sizeof(pid);
+ if (getsockopt(fd, SOL_LOCAL, LOCAL_PEERPID, &pid, &pid_size) != 0)
+ pid = -1;
++#elif BUILDFLAG(IS_BSD)
++ NOTIMPLEMENTED();
++ pid = -1;
+ #else
+ // |pid| will legitimately be -1 if we read EOF, so only DCHECK if we
+ // actually received a message. Unfortunately, Linux allows sending zero
diff --git a/devel/electron30/files/patch-base_posix_unix__domain__socket__unittest.cc b/devel/electron30/files/patch-base_posix_unix__domain__socket__unittest.cc
new file mode 100644
index 000000000000..69118fd94c29
--- /dev/null
+++ b/devel/electron30/files/patch-base_posix_unix__domain__socket__unittest.cc
@@ -0,0 +1,11 @@
+--- base/posix/unix_domain_socket_unittest.cc.orig 2023-03-30 00:33:38 UTC
++++ base/posix/unix_domain_socket_unittest.cc
+@@ -10,6 +10,8 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+
++#include <signal.h>
++
+ #include "base/files/file_util.h"
+ #include "base/files/scoped_file.h"
+ #include "base/functional/bind.h"
diff --git a/devel/electron30/files/patch-base_process_internal__linux.h b/devel/electron30/files/patch-base_process_internal__linux.h
new file mode 100644
index 000000000000..6c6203ac7f44
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_internal__linux.h
@@ -0,0 +1,20 @@
+--- base/process/internal_linux.h.orig 2024-04-15 20:33:42 UTC
++++ base/process/internal_linux.h
+@@ -138,6 +138,9 @@ void ForEachProcessTask(base::ProcessHandle process, L
+ // arguments to the lambda.
+ template <typename Lambda>
+ void ForEachProcessTask(base::ProcessHandle process, Lambda&& lambda) {
++#if BUILDFLAG(IS_BSD)
++ return;
++#else
+ // Iterate through the different threads tracked in /proc/<pid>/task.
+ FilePath fd_path = GetProcPidDir(process).Append("task");
+
+@@ -157,6 +160,7 @@ void ForEachProcessTask(base::ProcessHandle process, L
+ FilePath task_path = fd_path.Append(tid_str);
+ lambda(tid, task_path);
+ }
++#endif
+ }
+
+ } // namespace internal
diff --git a/devel/electron30/files/patch-base_process_kill.h b/devel/electron30/files/patch-base_process_kill.h
new file mode 100644
index 000000000000..d64e83d474cc
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_kill.h
@@ -0,0 +1,11 @@
+--- base/process/kill.h.orig 2024-02-21 00:20:30 UTC
++++ base/process/kill.h
+@@ -121,7 +121,7 @@ BASE_EXPORT TerminationStatus GetKnownDeadTerminationS
+ BASE_EXPORT TerminationStatus GetKnownDeadTerminationStatus(
+ ProcessHandle handle, int* exit_code);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Spawns a thread to wait asynchronously for the child |process| to exit
+ // and then reaps it.
+ BASE_EXPORT void EnsureProcessGetsReaped(Process process);
diff --git a/devel/electron30/files/patch-base_process_kill__posix.cc b/devel/electron30/files/patch-base_process_kill__posix.cc
new file mode 100644
index 000000000000..b197dc3675c5
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_kill__posix.cc
@@ -0,0 +1,11 @@
+--- base/process/kill_posix.cc.orig 2023-03-30 00:33:38 UTC
++++ base/process/kill_posix.cc
+@@ -157,7 +157,7 @@ void EnsureProcessTerminated(Process process) {
+ 0, new BackgroundReaper(std::move(process), Seconds(2)));
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void EnsureProcessGetsReaped(Process process) {
+ DCHECK(!process.is_current());
+
diff --git a/devel/electron30/files/patch-base_process_launch.h b/devel/electron30/files/patch-base_process_launch.h
new file mode 100644
index 000000000000..7357acf2f254
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_launch.h
@@ -0,0 +1,11 @@
+--- base/process/launch.h.orig 2023-05-25 00:41:38 UTC
++++ base/process/launch.h
+@@ -200,7 +200,7 @@ struct BASE_EXPORT LaunchOptions {
+ bool clear_environment = false;
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // If non-zero, start the process using clone(), using flags as provided.
+ // Unlike in clone, clone_flags may not contain a custom termination signal
+ // that is sent to the parent when the child dies. The termination signal will
diff --git a/devel/electron30/files/patch-base_process_launch__posix.cc b/devel/electron30/files/patch-base_process_launch__posix.cc
new file mode 100644
index 000000000000..2ae8dd730482
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_launch__posix.cc
@@ -0,0 +1,12 @@
+--- base/process/launch_posix.cc.orig 2024-02-21 00:20:30 UTC
++++ base/process/launch_posix.cc
+@@ -61,6 +61,9 @@
+ #error "macOS should use launch_mac.cc"
+ #endif
+
++#if defined(OS_FREEBSD)
++#pragma weak environ
++#endif
+ extern char** environ;
+
+ namespace base {
diff --git a/devel/electron30/files/patch-base_process_memory__linux.cc b/devel/electron30/files/patch-base_process_memory__linux.cc
new file mode 100644
index 000000000000..854b20892e9c
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_memory__linux.cc
@@ -0,0 +1,44 @@
+--- base/process/memory_linux.cc.orig 2024-02-21 00:20:30 UTC
++++ base/process/memory_linux.cc
+@@ -28,6 +28,7 @@ namespace base {
+
+ namespace base {
+
++#if !BUILDFLAG(IS_BSD)
+ namespace {
+
+ void ReleaseReservationOrTerminate() {
+@@ -37,12 +38,14 @@ void ReleaseReservationOrTerminate() {
+ }
+
+ } // namespace
++#endif
+
+ void EnableTerminationOnHeapCorruption() {
+ // On Linux, there nothing to do AFAIK.
+ }
+
+ void EnableTerminationOnOutOfMemory() {
++#if !BUILDFLAG(IS_BSD)
+ // Set the new-out of memory handler.
+ std::set_new_handler(&ReleaseReservationOrTerminate);
+ // If we're using glibc's allocator, the above functions will override
+@@ -51,8 +54,10 @@ void EnableTerminationOnOutOfMemory() {
+ #if BUILDFLAG(USE_ALLOCATOR_SHIM)
+ allocator_shim::SetCallNewHandlerOnMallocFailure(true);
+ #endif
++#endif
+ }
+
++#if !BUILDFLAG(IS_BSD)
+ // ScopedAllowBlocking() has private constructor and it can only be used in
+ // friend classes/functions. Declaring a class is easier in this situation to
+ // avoid adding more dependency to thread_restrictions.h because of the
+@@ -112,6 +117,7 @@ bool AdjustOOMScore(ProcessId process, int score) {
+ bool AdjustOOMScore(ProcessId process, int score) {
+ return AdjustOOMScoreHelper::AdjustOOMScore(process, score);
+ }
++#endif
+
+ bool UncheckedMalloc(size_t size, void** result) {
+ #if BUILDFLAG(USE_ALLOCATOR_SHIM)
diff --git a/devel/electron30/files/patch-base_process_process__handle.cc b/devel/electron30/files/patch-base_process_process__handle.cc
new file mode 100644
index 000000000000..efb95e7c3b54
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__handle.cc
@@ -0,0 +1,11 @@
+--- base/process/process_handle.cc.orig 2022-02-28 16:54:41 UTC
++++ base/process/process_handle.cc
+@@ -30,7 +30,7 @@ UniqueProcId GetUniqueIdForProcess() {
+ : UniqueProcId(GetCurrentProcId());
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_AIX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+
+ void InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace) {
+ DCHECK(pid_outside_of_namespace != kNullProcessId);
diff --git a/devel/electron30/files/patch-base_process_process__handle.h b/devel/electron30/files/patch-base_process_process__handle.h
new file mode 100644
index 000000000000..43885dd9eb96
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__handle.h
@@ -0,0 +1,11 @@
+--- base/process/process_handle.h.orig 2024-02-21 00:20:30 UTC
++++ base/process/process_handle.h
+@@ -86,7 +86,7 @@ BASE_EXPORT UniqueProcId GetUniqueIdForProcess();
+ // processes may be reused.
+ BASE_EXPORT UniqueProcId GetUniqueIdForProcess();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // When a process is started in a different PID namespace from the browser
+ // process, this function must be called with the process's PID in the browser's
+ // PID namespace in order to initialize its unique ID. Not thread safe.
diff --git a/devel/electron30/files/patch-base_process_process__handle__freebsd.cc b/devel/electron30/files/patch-base_process_process__handle__freebsd.cc
new file mode 100644
index 000000000000..1f676e07fbdf
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__handle__freebsd.cc
@@ -0,0 +1,25 @@
+--- base/process/process_handle_freebsd.cc.orig 2024-04-15 20:33:42 UTC
++++ base/process/process_handle_freebsd.cc
+@@ -3,6 +3,7 @@
+ // found in the LICENSE file.
+
+ #include "base/process/process_handle.h"
++#include "base/files/file_util.h"
+
+ #include <limits.h>
+ #include <stddef.h>
+@@ -20,10 +21,13 @@ ProcessId GetParentProcessId(ProcessHandle process) {
+
+ ProcessId GetParentProcessId(ProcessHandle process) {
+ struct kinfo_proc info;
+- size_t length;
++ size_t length = sizeof(struct kinfo_proc);
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process };
+
+ if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0)
++ return -1;
++
++ if (length < sizeof(struct kinfo_proc))
+ return -1;
+
+ return info.ki_ppid;
diff --git a/devel/electron30/files/patch-base_process_process__handle__openbsd.cc b/devel/electron30/files/patch-base_process_process__handle__openbsd.cc
new file mode 100644
index 000000000000..c3ef5fe46561
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__handle__openbsd.cc
@@ -0,0 +1,133 @@
+--- base/process/process_handle_openbsd.cc.orig 2024-04-15 20:33:42 UTC
++++ base/process/process_handle_openbsd.cc
+@@ -3,48 +3,112 @@
+ // found in the LICENSE file.
+
+ #include "base/process/process_handle.h"
++#include "base/files/file_util.h"
+
+ #include <stddef.h>
++#include <stdlib.h>
++#include <sys/param.h>
++#include <sys/proc.h>
++#include <sys/stat.h>
+ #include <sys/sysctl.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+
++#include <kvm.h>
++
+ namespace base {
+
+ ProcessId GetParentProcessId(ProcessHandle process) {
+- struct kinfo_proc info;
++ struct kinfo_proc *info;
+ size_t length;
++ pid_t ppid;
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process,
+ sizeof(struct kinfo_proc), 0 };
+
+ if (sysctl(mib, std::size(mib), NULL, &length, NULL, 0) < 0)
+ return -1;
+
+- mib[5] = (length / sizeof(struct kinfo_proc));
++ info = (struct kinfo_proc *)malloc(length);
+
+- if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0)
+- return -1;
++ mib[5] = static_cast<int>((length / sizeof(struct kinfo_proc)));
+
+- return info.p_ppid;
++ if (sysctl(mib, std::size(mib), info, &length, NULL, 0) < 0) {
++ ppid = -1;
++ goto out;
++ }
++
++ ppid = info->p_ppid;
++
++out:
++ free(info);
++ return ppid;
+ }
+
+ FilePath GetProcessExecutablePath(ProcessHandle process) {
+- struct kinfo_proc kp;
++ struct kinfo_file *files;
++ kvm_t *kd = NULL;
++ char errbuf[_POSIX2_LINE_MAX];
++ char **retvalargs, *cpath, retval[PATH_MAX];
++ int cnt;
+ size_t len;
+- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process,
+- sizeof(struct kinfo_proc), 0 };
++ char *tokens[2];
++ struct stat sb;
++ FilePath result;
+
+- if (sysctl(mib, std::size(mib), NULL, &len, NULL, 0) == -1)
+- return FilePath();
+- mib[5] = (len / sizeof(struct kinfo_proc));
+- if (sysctl(mib, std::size(mib), &kp, &len, NULL, 0) < 0)
+- return FilePath();
+- if ((kp.p_flag & P_SYSTEM) != 0)
+- return FilePath();
+- if (strcmp(kp.p_comm, "chrome") == 0)
+- return FilePath(kp.p_comm);
++ int mib[] = { CTL_KERN, KERN_PROC_ARGS, process, KERN_PROC_ARGV };
+
+- return FilePath();
++ if ((cpath = getenv("CHROME_EXE_PATH")) != NULL)
++ result = FilePath(cpath);
++ else
++ result = FilePath("/usr/local/chrome/chrome");
++
++ if (sysctl(mib, std::size(mib), NULL, &len, NULL, 0) != -1) {
++ retvalargs = static_cast<char**>(malloc(len));
++ if (!retvalargs)
++ return result;
++
++ if (sysctl(mib, std::size(mib), retvalargs, &len, NULL, 0) < 0) {
++ free(retvalargs);
++ return result;
++ }
++
++ if ((*tokens = strtok(retvalargs[0], ":")) == NULL) {
++ free(retvalargs);
++ return result;
++ }
++
++ free(retvalargs);
++
++ if (tokens[0] == NULL)
++ return result;
++
++ if (realpath(tokens[0], retval) == NULL)
++ return result;
++
++ if (stat(retval, &sb) < 0)
++ return result;
++
++ if ((kd = kvm_openfiles(NULL, NULL, NULL, (int)KVM_NO_FILES,
++ errbuf)) == NULL)
++ return result;
++
++ if ((files = kvm_getfiles(kd, KERN_FILE_BYPID, process,
++ sizeof(struct kinfo_file), &cnt)) == NULL) {
++ kvm_close(kd);
++ return result;
++ }
++
++ for (int i = 0; i < cnt; i++) {
++ if (files[i].fd_fd == KERN_FILE_TEXT &&
++ files[i].va_fsid == static_cast<uint32_t>(sb.st_dev) &&
++ files[i].va_fileid == sb.st_ino) {
++ kvm_close(kd);
++ result = FilePath(retval);
++ }
++ }
++ }
++
++ return result;
+ }
+
+ } // namespace base
diff --git a/devel/electron30/files/patch-base_process_process__iterator__freebsd.cc b/devel/electron30/files/patch-base_process_process__iterator__freebsd.cc
new file mode 100644
index 000000000000..0b752cea1428
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__iterator__freebsd.cc
@@ -0,0 +1,51 @@
+--- base/process/process_iterator_freebsd.cc.orig 2023-03-30 00:33:38 UTC
++++ base/process/process_iterator_freebsd.cc
+@@ -18,7 +18,7 @@ namespace base {
+
+ ProcessIterator::ProcessIterator(const ProcessFilter* filter)
+ : filter_(filter) {
+- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, getuid() };
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, (int) getuid() };
+
+ bool done = false;
+ int try_num = 1;
+@@ -37,7 +37,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ num_of_kinfo_proc += 16;
+ kinfo_procs_.resize(num_of_kinfo_proc);
+ len = num_of_kinfo_proc * sizeof(struct kinfo_proc);
+- if (sysctl(mib, std::size(mib), &kinfo_procs_[0], &len, NULL, 0) < 0) {
++ if (sysctl(mib, std::size(mib), kinfo_procs_.data(), &len, NULL, 0) < 0) {
+ // If we get a mem error, it just means we need a bigger buffer, so
+ // loop around again. Anything else is a real error and give up.
+ if (errno != ENOMEM) {
+@@ -47,7 +47,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ }
+ } else {
+ // Got the list, just make sure we're sized exactly right
+- size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
++ num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
+ kinfo_procs_.resize(num_of_kinfo_proc);
+ done = true;
+ }
+@@ -68,18 +68,13 @@ bool ProcessIterator::CheckForNextProcess() {
+ for (; index_of_kinfo_proc_ < kinfo_procs_.size(); ++index_of_kinfo_proc_) {
+ size_t length;
+ struct kinfo_proc kinfo = kinfo_procs_[index_of_kinfo_proc_];
+- int mib[] = { CTL_KERN, KERN_PROC_ARGS, kinfo.ki_pid };
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ARGS, kinfo.ki_pid };
+
+ if ((kinfo.ki_pid > 0) && (kinfo.ki_stat == SZOMB))
+ continue;
+
+- length = 0;
+- if (sysctl(mib, std::size(mib), NULL, &length, NULL, 0) < 0) {
+- LOG(ERROR) << "failed to figure out the buffer size for a command line";
+- continue;
+- }
+-
+- data.resize(length);
++ data.resize(ARG_MAX);
++ length = ARG_MAX;
+
+ if (sysctl(mib, std::size(mib), &data[0], &length, NULL, 0) < 0) {
+ LOG(ERROR) << "failed to fetch a commandline";
diff --git a/devel/electron30/files/patch-base_process_process__iterator__openbsd.cc b/devel/electron30/files/patch-base_process_process__iterator__openbsd.cc
new file mode 100644
index 000000000000..ca96780b7ba2
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__iterator__openbsd.cc
@@ -0,0 +1,45 @@
+--- base/process/process_iterator_openbsd.cc.orig 2023-03-30 00:33:38 UTC
++++ base/process/process_iterator_openbsd.cc
+@@ -6,6 +6,9 @@
+
+ #include <errno.h>
+ #include <stddef.h>
++#include <unistd.h>
++#include <sys/param.h>
++#include <sys/proc.h>
+ #include <sys/sysctl.h>
+
+ #include "base/logging.h"
+@@ -16,12 +19,13 @@ namespace base {
+
+ ProcessIterator::ProcessIterator(const ProcessFilter* filter)
+ : filter_(filter) {
+- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, getuid(),
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, static_cast<int>(getuid()),
+ sizeof(struct kinfo_proc), 0 };
+
+ bool done = false;
+ int try_num = 1;
+ const int max_tries = 10;
++ size_t num_of_kinfo_proc;
+
+ do {
+ size_t len = 0;
+@@ -30,7 +34,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ kinfo_procs_.resize(0);
+ done = true;
+ } else {
+- size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
++ num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
+ // Leave some spare room for process table growth (more could show up
+ // between when we check and now)
+ num_of_kinfo_proc += 16;
+@@ -46,7 +50,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ }
+ } else {
+ // Got the list, just make sure we're sized exactly right
+- size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
++ num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
+ kinfo_procs_.resize(num_of_kinfo_proc);
+ done = true;
+ }
diff --git a/devel/electron30/files/patch-base_process_process__metrics.cc b/devel/electron30/files/patch-base_process_process__metrics.cc
new file mode 100644
index 000000000000..3af7780b1161
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__metrics.cc
@@ -0,0 +1,49 @@
+--- base/process/process_metrics.cc.orig 2024-04-15 20:33:42 UTC
++++ base/process/process_metrics.cc
+@@ -17,7 +17,7 @@ namespace {
+ namespace {
+
+ #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ int CalculateEventsPerSecond(uint64_t event_count,
+ uint64_t* last_event_count,
+ base::TimeTicks* last_calculated) {
+@@ -54,7 +54,7 @@ SystemMetrics SystemMetrics::Sample() {
+ SystemMetrics system_metrics;
+
+ system_metrics.committed_memory_ = GetSystemCommitCharge();
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ GetSystemMemoryInfo(&system_metrics.memory_info_);
+ GetVmStatInfo(&system_metrics.vmstat_info_);
+ GetSystemDiskInfo(&system_metrics.disk_info_);
+@@ -73,7 +73,7 @@ Value::Dict SystemMetrics::ToDict() const {
+ Value::Dict res;
+
+ res.Set("committed_memory", static_cast<int>(committed_memory_));
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ Value::Dict meminfo = memory_info_.ToDict();
+ meminfo.Merge(vmstat_info_.ToDict());
+ res.Set("meminfo", std::move(meminfo));
+@@ -100,7 +100,6 @@ std::unique_ptr<ProcessMetrics> ProcessMetrics::Create
+ #endif // !BUILDFLAG(IS_MAC)
+ }
+
+-#if !BUILDFLAG(IS_FREEBSD) || !BUILDFLAG(IS_POSIX)
+ double ProcessMetrics::GetPlatformIndependentCPUUsage(
+ TimeDelta cumulative_cpu) {
+ TimeTicks time = TimeTicks::Now();
+@@ -130,10 +129,9 @@ std::optional<double> ProcessMetrics::GetPlatformIndep
+ }
+ return GetPlatformIndependentCPUUsage(cpu_usage.value());
+ }
+-#endif
+
+ #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ int ProcessMetrics::CalculateIdleWakeupsPerSecond(
+ uint64_t absolute_idle_wakeups) {
+ return CalculateEventsPerSecond(absolute_idle_wakeups,
diff --git a/devel/electron30/files/patch-base_process_process__metrics.h b/devel/electron30/files/patch-base_process_process__metrics.h
new file mode 100644
index 000000000000..c1b13331498b
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__metrics.h
@@ -0,0 +1,115 @@
+--- base/process/process_metrics.h.orig 2024-04-15 20:33:42 UTC
++++ base/process/process_metrics.h
+@@ -38,7 +38,7 @@
+ #endif
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ #include <string>
+ #include <utility>
+ #include <vector>
+@@ -48,7 +48,7 @@ namespace base {
+
+ namespace base {
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ // Minor and major page fault counts since the process creation.
+ // Both counts are process-wide, and exclude child processes.
+ //
+@@ -103,7 +103,7 @@ class BASE_EXPORT ProcessMetrics {
+ // convenience wrapper for CreateProcessMetrics().
+ static std::unique_ptr<ProcessMetrics> CreateCurrentProcessMetrics();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ // Resident Set Size is a Linux/Android specific memory concept. Do not
+ // attempt to extend this to other platforms.
+ BASE_EXPORT size_t GetResidentSetSize() const;
+@@ -137,7 +137,7 @@ class BASE_EXPORT ProcessMetrics {
+ [[nodiscard]] std::optional<TimeDelta> GetCumulativeCPUUsage();
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ // Emits the cumulative CPU usage for all currently active threads since they
+ // were started into the output parameter (replacing its current contents).
+ // Threads that have already terminated will not be reported. Thus, the sum of
+@@ -182,7 +182,7 @@ class BASE_EXPORT ProcessMetrics {
+ int GetOpenFdSoftLimit() const;
+ #endif // BUILDFLAG(IS_POSIX)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ // Bytes of swap as reported by /proc/[pid]/status.
+ uint64_t GetVmSwapBytes() const;
+
+@@ -203,7 +203,7 @@ class BASE_EXPORT ProcessMetrics {
+ #endif // !BUILDFLAG(IS_MAC)
+
+ #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups);
+ #endif
+ #if BUILDFLAG(IS_APPLE)
+@@ -225,12 +225,10 @@ class BASE_EXPORT ProcessMetrics {
+ // Used to store the previous times and CPU usage counts so we can
+ // compute the CPU usage between calls.
+ TimeTicks last_cpu_time_;
+-#if !BUILDFLAG(IS_FREEBSD) || !BUILDFLAG(IS_POSIX)
+ TimeDelta last_cumulative_cpu_;
+-#endif
+
+ #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ // Same thing for idle wakeups.
+ TimeTicks last_idle_wakeups_time_;
+ uint64_t last_absolute_idle_wakeups_;
+@@ -271,7 +269,7 @@ BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_de
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_AIX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // Data about system-wide memory consumption. Values are in KB. Available on
+ // Windows, Mac, Linux, Android and Chrome OS.
+ //
+@@ -306,7 +304,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ #endif
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ // This provides an estimate of available memory as described here:
+ // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
+ // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always
+@@ -321,7 +319,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ #endif
+
+ #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_AIX) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ int buffers = 0;
+ int cached = 0;
+ int active_anon = 0;
+@@ -358,7 +356,7 @@ BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoK
+ // BUILDFLAG(IS_FUCHSIA)
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ // Parse the data found in /proc/<pid>/stat and return the sum of the
+ // CPU-related ticks. Returns -1 on parse error.
+ // Exposed for testing.
+@@ -552,7 +550,7 @@ class BASE_EXPORT SystemMetrics {
+ FRIEND_TEST_ALL_PREFIXES(SystemMetricsTest, SystemMetrics);
+
+ size_t committed_memory_;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ SystemMemoryInfoKB memory_info_;
+ VmStatInfo vmstat_info_;
+ SystemDiskInfo disk_info_;
diff --git a/devel/electron30/files/patch-base_process_process__metrics__freebsd.cc b/devel/electron30/files/patch-base_process_process__metrics__freebsd.cc
new file mode 100644
index 000000000000..023b5317fc4f
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__metrics__freebsd.cc
@@ -0,0 +1,304 @@
+--- base/process/process_metrics_freebsd.cc.orig 2024-04-15 20:33:42 UTC
++++ base/process/process_metrics_freebsd.cc
+@@ -3,42 +3,57 @@
+ // found in the LICENSE file.
+
+ #include "base/process/process_metrics.h"
++#include "base/notreached.h"
+
+ #include <stddef.h>
++#include <sys/types.h>
+ #include <sys/sysctl.h>
+ #include <sys/user.h>
+ #include <unistd.h>
+
++#include <fcntl.h> /* O_RDONLY */
++#include <kvm.h>
++#include <libutil.h>
++
+ #include "base/memory/ptr_util.h"
++#include "base/values.h"
+
+ namespace base {
++namespace {
++int GetPageShift() {
++ int pagesize = getpagesize();
++ int pageshift = 0;
+
+-ProcessMetrics::ProcessMetrics(ProcessHandle process)
+- : process_(process),
+- last_cpu_(0) {}
++ while (pagesize > 1) {
++ pageshift++;
++ pagesize >>= 1;
++ }
+
++ return pageshift;
++}
++}
++
++ProcessMetrics::ProcessMetrics(ProcessHandle process) : process_(process) {}
++
+ // static
+ std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics(
+ ProcessHandle process) {
+ return WrapUnique(new ProcessMetrics(process));
+ }
+
+-std::optional<double> ProcessMetrics::GetPlatformIndependentCPUUsage() {
++std::optional<TimeDelta> ProcessMetrics::GetCumulativeCPUUsage() {
+ struct kinfo_proc info;
+- int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, process_};
+- size_t length = sizeof(info);
++ size_t length = sizeof(struct kinfo_proc);
++ struct timeval tv;
+
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process_ };
++
+ if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0)
+- return std::nullopt;
++ return std::optional(TimeDelta());
+
+- return std::optional(double{info.ki_pctcpu} / FSCALE * 100.0);
++ return std::optional(Microseconds(info.ki_runtime));
+ }
+
+-std::optional<TimeDelta> ProcessMetrics::GetCumulativeCPUUsage() {
+- NOTREACHED();
+- return std::nullopt;
+-}
+-
+ size_t GetSystemCommitCharge() {
+ int mib[2], pagesize;
+ unsigned long mem_total, mem_free, mem_inactive;
+@@ -60,6 +75,230 @@ size_t GetSystemCommitCharge() {
+ pagesize = getpagesize();
+
+ return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize);
++}
++
++int64_t GetNumberOfThreads(ProcessHandle process) {
++ // Taken from FreeBSD top (usr.bin/top/machine.c)
++
++ kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open");
++ if (kd == NULL)
++ return 0;
++
++ struct kinfo_proc* pbase;
++ int nproc;
++ pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc);
++ if (pbase == NULL)
++ return 0;
++
++ if (kvm_close(kd) == -1)
++ return 0;
++
++ return nproc;
++}
++
++bool GetSystemMemoryInfo(SystemMemoryInfoKB *meminfo) {
++ unsigned int mem_total, mem_free, swap_total, swap_used;
++ size_t length;
++ int pagesizeKB;
++
++ pagesizeKB = getpagesize() / 1024;
++
++ length = sizeof(mem_total);
++ if (sysctlbyname("vm.stats.vm.v_page_count", &mem_total,
++ &length, NULL, 0) != 0 || length != sizeof(mem_total))
++ return false;
++
++ length = sizeof(mem_free);
++ if (sysctlbyname("vm.stats.vm.v_free_count", &mem_free, &length, NULL, 0)
++ != 0 || length != sizeof(mem_free))
++ return false;
++
++ length = sizeof(swap_total);
++ if (sysctlbyname("vm.swap_size", &swap_total, &length, NULL, 0)
++ != 0 || length != sizeof(swap_total))
++ return false;
++
++ length = sizeof(swap_used);
++ if (sysctlbyname("vm.swap_anon_use", &swap_used, &length, NULL, 0)
++ != 0 || length != sizeof(swap_used))
++ return false;
++
++ meminfo->total = mem_total * pagesizeKB;
++ meminfo->free = mem_free * pagesizeKB;
++ meminfo->swap_total = swap_total * pagesizeKB;
++ meminfo->swap_free = (swap_total - swap_used) * pagesizeKB;
++
++ return true;
++}
++
++int ProcessMetrics::GetOpenFdCount() const {
++ struct kinfo_file * kif;
++ int cnt;
++
++ if ((kif = kinfo_getfile(process_, &cnt)) == NULL)
++ return -1;
++
++ free(kif);
++
++ return cnt;
++}
++
++int ProcessMetrics::GetOpenFdSoftLimit() const {
++ size_t length;
++ int total_count = 0;
++ int mib[] = { CTL_KERN, KERN_MAXFILESPERPROC };
++
++ length = sizeof(total_count);
++
++ if (sysctl(mib, std::size(mib), &total_count, &length, NULL, 0) < 0) {
++ total_count = -1;
++ }
++
++ return total_count;
++}
++
++size_t ProcessMetrics::GetResidentSetSize() const {
++ kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open");
++
++ if (kd == nullptr)
++ return 0;
++
++ struct kinfo_proc *pp;
++ int nproc;
++
++ if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) {
++ kvm_close(kd);
++ return 0;
++ }
++
++ size_t rss;
++
++ if (nproc > 0) {
++ rss = pp->ki_rssize << GetPageShift();
++ } else {
++ rss = 0;
++ }
++
++ kvm_close(kd);
++ return rss;
++}
++
++uint64_t ProcessMetrics::GetVmSwapBytes() const {
++ kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open");
++
++ if (kd == nullptr)
++ return 0;
++
++ struct kinfo_proc *pp;
++ int nproc;
++
++ if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) {
++ kvm_close(kd);
++ return 0;
++ }
++
++ size_t swrss;
++
++ if (nproc > 0) {
++ swrss = pp->ki_swrss > pp->ki_rssize
++ ? (pp->ki_swrss - pp->ki_rssize) << GetPageShift()
++ : 0;
++ } else {
++ swrss = 0;
++ }
++
++ kvm_close(kd);
++ return swrss;
++}
++
++int ProcessMetrics::GetIdleWakeupsPerSecond() {
++ NOTIMPLEMENTED();
++ return 0;
++}
++
++bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++bool GetVmStatInfo(VmStatInfo* vmstat) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++SystemDiskInfo::SystemDiskInfo() {
++ reads = 0;
++ reads_merged = 0;
++ sectors_read = 0;
++ read_time = 0;
++ writes = 0;
++ writes_merged = 0;
++ sectors_written = 0;
++ write_time = 0;
++ io = 0;
++ io_time = 0;
++ weighted_io_time = 0;
++}
++
++SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo& other) = default;
++
++SystemDiskInfo& SystemDiskInfo::operator=(const SystemDiskInfo&) = default;
++
++Value::Dict SystemDiskInfo::ToDict() const {
++ Value::Dict res;
++
++ // Write out uint64_t variables as doubles.
++ // Note: this may discard some precision, but for JS there's no other option.
++ res.Set("reads", static_cast<double>(reads));
++ res.Set("reads_merged", static_cast<double>(reads_merged));
++ res.Set("sectors_read", static_cast<double>(sectors_read));
++ res.Set("read_time", static_cast<double>(read_time));
++ res.Set("writes", static_cast<double>(writes));
++ res.Set("writes_merged", static_cast<double>(writes_merged));
++ res.Set("sectors_written", static_cast<double>(sectors_written));
++ res.Set("write_time", static_cast<double>(write_time));
++ res.Set("io", static_cast<double>(io));
++ res.Set("io_time", static_cast<double>(io_time));
++ res.Set("weighted_io_time", static_cast<double>(weighted_io_time));
++
++ NOTIMPLEMENTED();
++
++ return res;
++}
++
++Value::Dict SystemMemoryInfoKB::ToDict() const {
++ Value::Dict res;
++ res.Set("total", total);
++ res.Set("free", free);
++ res.Set("available", available);
++ res.Set("buffers", buffers);
++ res.Set("cached", cached);
++ res.Set("active_anon", active_anon);
++ res.Set("inactive_anon", inactive_anon);
++ res.Set("active_file", active_file);
++ res.Set("inactive_file", inactive_file);
++ res.Set("swap_total", swap_total);
++ res.Set("swap_free", swap_free);
++ res.Set("swap_used", swap_total - swap_free);
++ res.Set("dirty", dirty);
++ res.Set("reclaimable", reclaimable);
++
++ NOTIMPLEMENTED();
++
++ return res;
++}
++
++Value::Dict VmStatInfo::ToDict() const {
++ Value::Dict res;
++ // TODO(crbug.com/1334256): Make base::Value able to hold uint64_t and remove
++ // casts below.
++ res.Set("pswpin", static_cast<int>(pswpin));
++ res.Set("pswpout", static_cast<int>(pswpout));
++ res.Set("pgmajfault", static_cast<int>(pgmajfault));
++
++ NOTIMPLEMENTED();
++
++ return res;
+ }
+
+ } // namespace base
diff --git a/devel/electron30/files/patch-base_process_process__metrics__openbsd.cc b/devel/electron30/files/patch-base_process_process__metrics__openbsd.cc
new file mode 100644
index 000000000000..47f4b8e440ce
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__metrics__openbsd.cc
@@ -0,0 +1,232 @@
+--- base/process/process_metrics_openbsd.cc.orig 2024-04-15 20:33:42 UTC
++++ base/process/process_metrics_openbsd.cc
+@@ -6,73 +6,49 @@
+
+ #include <stddef.h>
+ #include <stdint.h>
++#include <fcntl.h>
+ #include <sys/param.h>
+ #include <sys/sysctl.h>
++#include <sys/vmmeter.h>
+ #include <optional>
+
++#include <kvm.h>
++
+ #include "base/memory/ptr_util.h"
++#include "base/values.h"
++#include "base/notreached.h"
+
+ namespace base {
+
+-namespace {
++ProcessMetrics::ProcessMetrics(ProcessHandle process) : process_(process) {}
+
+-static std::optional<int> GetProcessCPU(pid_t pid) {
++std::optional<TimeDelta> ProcessMetrics::GetCumulativeCPUUsage() {
+ struct kinfo_proc info;
+- size_t length;
+- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid,
+- sizeof(struct kinfo_proc), 0 };
++ size_t length = sizeof(struct kinfo_proc);
++ struct timeval tv;
+
+- if (sysctl(mib, std::size(mib), NULL, &length, NULL, 0) < 0) {
+- return std::nullopt;
+- }
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process_,
++ sizeof(struct kinfo_proc), 1 };
+
+- mib[5] = (length / sizeof(struct kinfo_proc));
+-
+ if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0) {
+- return std::nullopt;
++ return std::optional(TimeDelta());
+ }
+
+- return std::optional(info.p_pctcpu);
++ tv.tv_sec = info.p_rtime_sec;
++ tv.tv_usec = info.p_rtime_usec;
++
++ return std::optional(Microseconds(TimeValToMicroseconds(tv)));
+ }
+
+-} // namespace
+-
+ // static
+ std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics(
+ ProcessHandle process) {
+ return WrapUnique(new ProcessMetrics(process));
+ }
+
+-std::optional<double> ProcessMetrics::GetPlatformIndependentCPUUsage() {
+- TimeTicks time = TimeTicks::Now();
+-
+- if (last_cpu_time_.is_zero()) {
+- // First call, just set the last values.
+- last_cpu_time_ = time;
+- return std::optional(0.0);
+- }
+-
+- const std::optional<int> cpu = GetProcessCPU(process_);
+- if (!cpu.has_value()) {
+- return std::nullopt;
+- }
+-
+- last_cpu_time_ = time;
+- return std::optional(double{cpu.value()} / FSCALE * 100.0);
+-}
+-
+-std::optional<TimeDelta> ProcessMetrics::GetCumulativeCPUUsage() {
+- NOTREACHED();
+- return std::nullopt;
+-}
+-
+-ProcessMetrics::ProcessMetrics(ProcessHandle process)
+- : process_(process),
+- last_cpu_(0) {}
+-
+ size_t GetSystemCommitCharge() {
+ int mib[] = { CTL_VM, VM_METER };
+- int pagesize;
++ size_t pagesize;
+ struct vmtotal vmtotal;
+ unsigned long mem_total, mem_free, mem_inactive;
+ size_t len = sizeof(vmtotal);
+@@ -84,9 +60,136 @@ size_t GetSystemCommitCharge() {
+ mem_free = vmtotal.t_free;
+ mem_inactive = vmtotal.t_vm - vmtotal.t_avm;
+
+- pagesize = getpagesize();
++ pagesize = checked_cast<size_t>(getpagesize());
+
+ return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize);
++}
++
++int ProcessMetrics::GetOpenFdCount() const {
++#if 0
++ struct kinfo_file *files;
++ kvm_t *kd = NULL;
++ int total_count = 0;
++ char errbuf[_POSIX2_LINE_MAX];
++
++ if ((kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, errbuf)) == NULL)
++ goto out;
++
++ if ((files = kvm_getfiles(kd, KERN_FILE_BYPID, process_,
++ sizeof(struct kinfo_file), &total_count)) == NULL) {
++ total_count = 0;
++ goto out;
++ }
++
++ kvm_close(kd);
++
++out:
++ return total_count;
++#endif
++ return getdtablecount();
++}
++
++int ProcessMetrics::GetOpenFdSoftLimit() const {
++ return getdtablesize();
++// return GetMaxFds();
++}
++
++uint64_t ProcessMetrics::GetVmSwapBytes() const {
++ NOTIMPLEMENTED();
++ return 0;
++}
++
++bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo) {
++ NOTIMPLEMENTED_LOG_ONCE();
++ return false;
++}
++
++bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++bool GetVmStatInfo(VmStatInfo* vmstat) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++int ProcessMetrics::GetIdleWakeupsPerSecond() {
++ NOTIMPLEMENTED();
++ return 0;
++}
++
++Value::Dict SystemMemoryInfoKB::ToDict() const {
++ Value::Dict res;
++ res.Set("total", total);
++ res.Set("free", free);
++ res.Set("available", available);
++ res.Set("buffers", buffers);
++ res.Set("cached", cached);
++ res.Set("active_anon", active_anon);
++ res.Set("inactive_anon", inactive_anon);
++ res.Set("active_file", active_file);
++ res.Set("inactive_file", inactive_file);
++ res.Set("swap_total", swap_total);
++ res.Set("swap_free", swap_free);
++ res.Set("swap_used", swap_total - swap_free);
++ res.Set("dirty", dirty);
++ res.Set("reclaimable", reclaimable);
++
++ NOTIMPLEMENTED();
++
++ return res;
++}
++
++Value::Dict VmStatInfo::ToDict() const {
++ Value::Dict res;
++ res.Set("pswpin", static_cast<int>(pswpin));
++ res.Set("pswpout", static_cast<int>(pswpout));
++ res.Set("pgmajfault", static_cast<int>(pgmajfault));
++
++ NOTIMPLEMENTED();
++
++ return res;
++}
++
++SystemDiskInfo::SystemDiskInfo() {
++ reads = 0;
++ reads_merged = 0;
++ sectors_read = 0;
++ read_time = 0;
++ writes = 0;
++ writes_merged = 0;
++ sectors_written = 0;
++ write_time = 0;
++ io = 0;
++ io_time = 0;
++ weighted_io_time = 0;
++}
++
++SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo&) = default;
++
++SystemDiskInfo& SystemDiskInfo::operator=(const SystemDiskInfo&) = default;
++
++Value::Dict SystemDiskInfo::ToDict() const {
++ Value::Dict res;
++
++ // Write out uint64_t variables as doubles.
++ // Note: this may discard some precision, but for JS there's no other option.
++ res.Set("reads", static_cast<double>(reads));
++ res.Set("reads_merged", static_cast<double>(reads_merged));
++ res.Set("sectors_read", static_cast<double>(sectors_read));
++ res.Set("read_time", static_cast<double>(read_time));
++ res.Set("writes", static_cast<double>(writes));
++ res.Set("writes_merged", static_cast<double>(writes_merged));
++ res.Set("sectors_written", static_cast<double>(sectors_written));
++ res.Set("write_time", static_cast<double>(write_time));
++ res.Set("io", static_cast<double>(io));
++ res.Set("io_time", static_cast<double>(io_time));
++ res.Set("weighted_io_time", static_cast<double>(weighted_io_time));
++
++ NOTIMPLEMENTED();
++
++ return res;
+ }
+
+ } // namespace base
diff --git a/devel/electron30/files/patch-base_process_process__metrics__posix.cc b/devel/electron30/files/patch-base_process_process__metrics__posix.cc
new file mode 100644
index 000000000000..ba800ec06711
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__metrics__posix.cc
@@ -0,0 +1,20 @@
+--- base/process/process_metrics_posix.cc.orig 2023-08-10 01:48:31 UTC
++++ base/process/process_metrics_posix.cc
+@@ -21,6 +21,8 @@
+
+ #if BUILDFLAG(IS_APPLE)
+ #include <malloc/malloc.h>
++#elif BUILDFLAG(IS_OPENBSD)
++#include <stdlib.h>
+ #else
+ #include <malloc.h>
+ #endif
+@@ -134,7 +136,7 @@ size_t ProcessMetrics::GetMallocUsage() {
+ return stats.size_in_use;
+ #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
+ return GetMallocUsageMallinfo();
+-#elif BUILDFLAG(IS_FUCHSIA)
++#elif BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // TODO(fuchsia): Not currently exposed. https://crbug.com/735087.
+ return 0;
+ #endif
diff --git a/devel/electron30/files/patch-base_process_process__metrics__unittest.cc b/devel/electron30/files/patch-base_process_process__metrics__unittest.cc
new file mode 100644
index 000000000000..2eb7047d4b78
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__metrics__unittest.cc
@@ -0,0 +1,12 @@
+--- base/process/process_metrics_unittest.cc.orig 2024-04-15 20:33:42 UTC
++++ base/process/process_metrics_unittest.cc
+@@ -56,7 +56,8 @@
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_APPLE)
++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_APPLE) || \
++ BUILDFLAG(IS_BSD)
+ #define ENABLE_CPU_TESTS 1
+ #else
+ #define ENABLE_CPU_TESTS 0
diff --git a/devel/electron30/files/patch-base_process_process__posix.cc b/devel/electron30/files/patch-base_process_process__posix.cc
new file mode 100644
index 000000000000..96114257c2cb
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__posix.cc
@@ -0,0 +1,94 @@
+--- base/process/process_posix.cc.orig 2023-10-19 19:57:58 UTC
++++ base/process/process_posix.cc
+@@ -23,10 +23,15 @@
+ #include "base/trace_event/base_tracing.h"
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ #include <sys/event.h>
+ #endif
+
++#if BUILDFLAG(IS_BSD)
++#include <sys/types.h>
++#include <sys/sysctl.h>
++#endif
++
+ #if BUILDFLAG(CLANG_PROFILING)
+ #include "base/test/clang_profiling.h"
+ #endif
+@@ -93,7 +98,7 @@ bool WaitpidWithTimeout(base::ProcessHandle handle,
+ return ret_pid > 0;
+ }
+
+-#if BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ // Using kqueue on Mac so that we can wait on non-child processes.
+ // We can't use kqueues on child processes because we need to reap
+ // our own children using wait.
+@@ -198,7 +203,7 @@ bool WaitForExitWithTimeoutImpl(base::ProcessHandle ha
+ const bool exited = (parent_pid < 0);
+
+ if (!exited && parent_pid != our_pid) {
+-#if BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ // On Mac we can wait on non child processes.
+ return WaitForSingleNonChildProcess(handle, timeout);
+ #else
+@@ -387,7 +392,56 @@ void Process::Exited(int exit_code) const {
+
+ int Process::GetOSPriority() const {
+ DCHECK(IsValid());
++// avoid pledge(2) violation
++#if BUILDFLAG(IS_BSD)
++ return 0;
++#else
+ return getpriority(PRIO_PROCESS, static_cast<id_t>(process_));
++#endif
+ }
++
++Time Process::CreationTime() const {
++// avoid ps pledge in the network process
++#if !BUILDFLAG(IS_BSD)
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(),
++ sizeof(struct kinfo_proc), 0 };
++ struct kinfo_proc *info = nullptr;
++ size_t info_size;
++#endif
++ Time ct = Time();
++
++#if !BUILDFLAG(IS_BSD)
++ if (sysctl(mib, std::size(mib), NULL, &info_size, NULL, 0) < 0)
++ goto out;
++
++ mib[5] = (info_size / sizeof(struct kinfo_proc));
++ if ((info = reinterpret_cast<kinfo_proc*>(malloc(info_size))) == NULL)
++ goto out;
++
++ if (sysctl(mib, std::size(mib), info, &info_size, NULL, 0) < 0)
++ goto out;
++
++ ct = Time::FromTimeT(info->p_ustart_sec);
++
++out:
++ if (info)
++ free(info);
++#endif
++ return ct;
++}
++
++#if BUILDFLAG(IS_BSD)
++Process::Priority Process::GetPriority() const {
++ return Priority::kUserBlocking;
++}
++
++bool Process::SetPriority(Priority priority) {
++ return false;
++}
++
++bool Process::CanSetPriority() {
++ return false;
++}
++#endif
+
+ } // namespace base
diff --git a/devel/electron30/files/patch-base_process_process__unittest.cc b/devel/electron30/files/patch-base_process_process__unittest.cc
new file mode 100644
index 000000000000..f9d390879c35
--- /dev/null
+++ b/devel/electron30/files/patch-base_process_process__unittest.cc
@@ -0,0 +1,11 @@
+--- base/process/process_unittest.cc.orig 2024-04-15 20:33:42 UTC
++++ base/process/process_unittest.cc
+@@ -199,7 +199,7 @@ TEST_F(ProcessTest, CreationTimeOtherProcess) {
+ // was spawned and a time recorded after it was spawned. However, since the
+ // base::Time and process creation clocks don't match, tolerate some error.
+ constexpr base::TimeDelta kTolerance =
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // On Linux, process creation time is relative to boot time which has a
+ // 1-second resolution. Tolerate 1 second for the imprecise boot time and
+ // 100 ms for the imprecise clock.
diff --git a/devel/electron30/files/patch-base_profiler_module__cache.cc b/devel/electron30/files/patch-base_profiler_module__cache.cc
new file mode 100644
index 000000000000..8008afc7ff0f
--- /dev/null
+++ b/devel/electron30/files/patch-base_profiler_module__cache.cc
@@ -0,0 +1,11 @@
+--- base/profiler/module_cache.cc.orig 2024-04-15 20:33:42 UTC
++++ base/profiler/module_cache.cc
+@@ -38,7 +38,7 @@ std::string TransformModuleIDToSymbolServerFormat(std:
+ // Android and Linux Chrome builds use the "breakpad" format to index their
+ // build id, so we transform the build id for these platforms. All other
+ // platforms keep their symbols indexed by the original build ID.
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Linux ELF module IDs are 160bit integers, which we need to mangle
+ // down to 128bit integers to match the id that Breakpad outputs.
+ // Example on version '66.0.3359.170' x64:
diff --git a/devel/electron30/files/patch-base_profiler_sampling__profiler__thread__token.cc b/devel/electron30/files/patch-base_profiler_sampling__profiler__thread__token.cc
new file mode 100644
index 000000000000..b7ead036a4ad
--- /dev/null
+++ b/devel/electron30/files/patch-base_profiler_sampling__profiler__thread__token.cc
@@ -0,0 +1,20 @@
+--- base/profiler/sampling_profiler_thread_token.cc.orig 2024-04-15 20:33:42 UTC
++++ base/profiler/sampling_profiler_thread_token.cc
+@@ -6,7 +6,7 @@
+
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include <pthread.h>
+
+ #include "base/profiler/stack_base_address_posix.h"
+@@ -18,7 +18,7 @@ SamplingProfilerThreadToken GetSamplingProfilerCurrent
+ PlatformThreadId id = PlatformThread::CurrentId();
+ #if BUILDFLAG(IS_ANDROID)
+ return {id, pthread_self()};
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ std::optional<uintptr_t> maybe_stack_base =
+ GetThreadStackBaseAddress(id, pthread_self());
+ return {id, maybe_stack_base};
diff --git a/devel/electron30/files/patch-base_profiler_sampling__profiler__thread__token.h b/devel/electron30/files/patch-base_profiler_sampling__profiler__thread__token.h
new file mode 100644
index 000000000000..40fee797f377
--- /dev/null
+++ b/devel/electron30/files/patch-base_profiler_sampling__profiler__thread__token.h
@@ -0,0 +1,20 @@
+--- base/profiler/sampling_profiler_thread_token.h.orig 2024-04-15 20:33:42 UTC
++++ base/profiler/sampling_profiler_thread_token.h
+@@ -13,7 +13,7 @@
+
+ #if BUILDFLAG(IS_ANDROID)
+ #include <pthread.h>
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include <stdint.h>
+ #endif
+
+@@ -27,7 +27,7 @@ struct SamplingProfilerThreadToken {
+ PlatformThreadId id;
+ #if BUILDFLAG(IS_ANDROID)
+ pthread_t pthread_id;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Due to the sandbox, we can only retrieve the stack base address for the
+ // current thread. We must grab it during
+ // GetSamplingProfilerCurrentThreadToken() and not try to get it later.
diff --git a/devel/electron30/files/patch-base_profiler_stack__base__address__posix.cc b/devel/electron30/files/patch-base_profiler_stack__base__address__posix.cc
new file mode 100644
index 000000000000..2da2b3e7aa72
--- /dev/null
+++ b/devel/electron30/files/patch-base_profiler_stack__base__address__posix.cc
@@ -0,0 +1,59 @@
+--- base/profiler/stack_base_address_posix.cc.orig 2024-04-15 20:33:42 UTC
++++ base/profiler/stack_base_address_posix.cc
+@@ -17,6 +17,10 @@
+ #include "base/files/scoped_file.h"
+ #endif
+
++#if BUILDFLAG(IS_BSD)
++#include <pthread_np.h>
++#endif
++
+ #if BUILDFLAG(IS_CHROMEOS)
+ extern "C" void* __libc_stack_end;
+ #endif
+@@ -45,7 +49,21 @@ uintptr_t GetThreadStackBaseAddressImpl(pthread_t pthr
+
+ #if !BUILDFLAG(IS_LINUX)
+ uintptr_t GetThreadStackBaseAddressImpl(pthread_t pthread_id) {
++#if BUILDFLAG(IS_OPENBSD)
++ stack_t ss;
++ void *address;
++ size_t size;
++ if (pthread_stackseg_np(pthread_id, &ss) != 0)
++ return 0;
++ size = ss.ss_size;
++ address = (void*)((size_t) ss.ss_sp - ss.ss_size);
++#else
+ pthread_attr_t attr;
++#if BUILDFLAG(IS_FREEBSD)
++ int result;
++ pthread_attr_init(&attr);
++ pthread_attr_get_np(pthread_id, &attr);
++#else
+ // pthread_getattr_np will crash on ChromeOS & Linux if we are in the sandbox
+ // and pthread_id refers to a different thread, due to the use of
+ // sched_getaffinity().
+@@ -58,12 +76,14 @@ uintptr_t GetThreadStackBaseAddressImpl(pthread_t pthr
+ << logging::SystemErrorCodeToString(result);
+ // See crbug.com/617730 for limitations of this approach on Linux-like
+ // systems.
++#endif
+ void* address;
+ size_t size;
+ result = pthread_attr_getstack(&attr, &address, &size);
+ CHECK_EQ(result, 0) << "pthread_attr_getstack returned "
+ << logging::SystemErrorCodeToString(result);
+ pthread_attr_destroy(&attr);
++#endif
+ const uintptr_t base_address = reinterpret_cast<uintptr_t>(address) + size;
+ return base_address;
+ }
+@@ -80,7 +100,7 @@ std::optional<uintptr_t> GetThreadStackBaseAddress(Pla
+ // trying to work around the problem.
+ return std::nullopt;
+ #else
+- const bool is_main_thread = id == GetCurrentProcId();
++ const bool is_main_thread = id == checked_cast<PlatformThreadId>(GetCurrentProcId());
+ if (is_main_thread) {
+ #if BUILDFLAG(IS_ANDROID)
+ // The implementation of pthread_getattr_np() in Bionic reads proc/self/maps
diff --git a/devel/electron30/files/patch-base_profiler_stack__sampling__profiler__test__util.cc b/devel/electron30/files/patch-base_profiler_stack__sampling__profiler__test__util.cc
new file mode 100644
index 000000000000..223835c0bd75
--- /dev/null
+++ b/devel/electron30/files/patch-base_profiler_stack__sampling__profiler__test__util.cc
@@ -0,0 +1,11 @@
+--- base/profiler/stack_sampling_profiler_test_util.cc.orig 2024-04-15 20:33:42 UTC
++++ base/profiler/stack_sampling_profiler_test_util.cc
+@@ -37,7 +37,7 @@
+ // Fortunately, it provides _alloca, which functions identically.
+ #include <malloc.h>
+ #define alloca _alloca
+-#else
++#elif !BUILDFLAG(IS_BSD)
+ #include <alloca.h>
+ #endif
+
diff --git a/devel/electron30/files/patch-base_profiler_stack__sampling__profiler__unittest.cc b/devel/electron30/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
new file mode 100644
index 000000000000..ac0dd295ef0f
--- /dev/null
+++ b/devel/electron30/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
@@ -0,0 +1,11 @@
+--- base/profiler/stack_sampling_profiler_unittest.cc.orig 2024-04-15 20:33:42 UTC
++++ base/profiler/stack_sampling_profiler_unittest.cc
+@@ -42,7 +42,7 @@
+ #include <intrin.h>
+ #include <malloc.h>
+ #include <windows.h>
+-#else
++#elif !BUILDFLAG(IS_BSD)
+ #include <alloca.h>
+ #endif
+
diff --git a/devel/electron30/files/patch-base_profiler_thread__delegate__posix.cc b/devel/electron30/files/patch-base_profiler_thread__delegate__posix.cc
new file mode 100644
index 000000000000..4bd650848ec4
--- /dev/null
+++ b/devel/electron30/files/patch-base_profiler_thread__delegate__posix.cc
@@ -0,0 +1,20 @@
+--- base/profiler/thread_delegate_posix.cc.orig 2024-04-15 20:33:42 UTC
++++ base/profiler/thread_delegate_posix.cc
+@@ -14,7 +14,7 @@
+ #include "base/process/process_handle.h"
+ #include "build/build_config.h"
+
+-#if !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
++#if !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD))
+ #include "base/profiler/stack_base_address_posix.h"
+ #endif
+
+@@ -23,7 +23,7 @@ std::unique_ptr<ThreadDelegatePosix> ThreadDelegatePos
+ std::unique_ptr<ThreadDelegatePosix> ThreadDelegatePosix::Create(
+ SamplingProfilerThreadToken thread_token) {
+ std::optional<uintptr_t> base_address;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ base_address = thread_token.stack_base_address;
+ #else
+ base_address =
diff --git a/devel/electron30/files/patch-base_rand__util.h b/devel/electron30/files/patch-base_rand__util.h
new file mode 100644
index 000000000000..94e042465bf4
--- /dev/null
+++ b/devel/electron30/files/patch-base_rand__util.h
@@ -0,0 +1,11 @@
+--- base/rand_util.h.orig 2024-02-21 00:20:30 UTC
++++ base/rand_util.h
+@@ -149,7 +149,7 @@ void RandomShuffle(Itr first, Itr last) {
+ std::shuffle(first, last, RandomBitGenerator());
+ }
+
+-#if BUILDFLAG(IS_POSIX)
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_BSD)
+ BASE_EXPORT int GetUrandomFD();
+ #endif
+
diff --git a/devel/electron30/files/patch-base_rand__util__posix.cc b/devel/electron30/files/patch-base_rand__util__posix.cc
new file mode 100644
index 000000000000..e539dd18bcbb
--- /dev/null
+++ b/devel/electron30/files/patch-base_rand__util__posix.cc
@@ -0,0 +1,62 @@
+--- base/rand_util_posix.cc.orig 2024-04-15 20:33:42 UTC
++++ base/rand_util_posix.cc
+@@ -23,7 +23,7 @@
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_NACL)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD)
+ #include "third_party/lss/linux_syscall_support.h"
+ #elif BUILDFLAG(IS_MAC)
+ // TODO(crbug.com/995996): Waiting for this header to appear in the iOS SDK.
+@@ -40,6 +40,7 @@ namespace {
+
+ namespace {
+
++#if !BUILDFLAG(IS_BSD)
+ #if BUILDFLAG(IS_AIX)
+ // AIX has no 64-bit support for O_CLOEXEC.
+ static constexpr int kOpenFlags = O_RDONLY;
+@@ -64,10 +65,11 @@ class URandomFd {
+ private:
+ const int fd_;
+ };
++#endif
+
+ #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+ BUILDFLAG(IS_ANDROID)) && \
+- !BUILDFLAG(IS_NACL)
++ !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD)
+ // TODO(pasko): Unify reading kernel version numbers in:
+ // mojo/core/channel_linux.cc
+ // chrome/browser/android/seccomp_support_detector.cc
+@@ -177,6 +179,7 @@ void RandBytes(span<uint8_t> output, bool avoid_alloca
+ namespace {
+
+ void RandBytes(span<uint8_t> output, bool avoid_allocation) {
++#if !BUILDFLAG(IS_BSD)
+ #if !BUILDFLAG(IS_NACL)
+ // The BoringSSL experiment takes priority over everything else.
+ if (!avoid_allocation && internal::UseBoringSSLForRandBytes()) {
+@@ -215,6 +218,9 @@ void RandBytes(span<uint8_t> output, bool avoid_alloca
+ const int urandom_fd = GetUrandomFD();
+ const bool success = ReadFromFD(urandom_fd, as_writable_chars(output));
+ CHECK(success);
++#else
++ arc4random_buf(output.data(), output.size());
++#endif
+ }
+
+ } // namespace
+@@ -239,9 +245,11 @@ void RandBytes(void* output, size_t output_length) {
+ RandBytes(make_span(static_cast<uint8_t*>(output), output_length));
+ }
+
++#if !BUILDFLAG(IS_BSD)
+ int GetUrandomFD() {
+ static NoDestructor<URandomFd> urandom_fd;
+ return urandom_fd->fd();
+ }
++#endif
+
+ } // namespace base
diff --git a/devel/electron30/files/patch-base_strings_safe__sprintf__unittest.cc b/devel/electron30/files/patch-base_strings_safe__sprintf__unittest.cc
new file mode 100644
index 000000000000..24d7dc7adc9e
--- /dev/null
+++ b/devel/electron30/files/patch-base_strings_safe__sprintf__unittest.cc
@@ -0,0 +1,18 @@
+--- base/strings/safe_sprintf_unittest.cc.orig 2023-03-30 00:33:38 UTC
++++ base/strings/safe_sprintf_unittest.cc
+@@ -733,6 +733,7 @@ TEST(SafeSPrintfTest, EmbeddedNul) {
+ #endif
+ }
+
++#if !BUILDFLAG(IS_BSD)
+ TEST(SafeSPrintfTest, EmitNULL) {
+ char buf[40];
+ #if defined(__GNUC__)
+@@ -749,6 +750,7 @@ TEST(SafeSPrintfTest, EmitNULL) {
+ #pragma GCC diagnostic pop
+ #endif
+ }
++#endif
+
+ TEST(SafeSPrintfTest, PointerSize) {
+ // The internal data representation is a 64bit value, independent of the
diff --git a/devel/electron30/files/patch-base_synchronization_lock__impl.h b/devel/electron30/files/patch-base_synchronization_lock__impl.h
new file mode 100644
index 000000000000..738d9937c7a3
--- /dev/null
+++ b/devel/electron30/files/patch-base_synchronization_lock__impl.h
@@ -0,0 +1,23 @@
+--- base/synchronization/lock_impl.h.orig 2024-04-15 20:33:42 UTC
++++ base/synchronization/lock_impl.h
+@@ -107,6 +107,10 @@ void LockImpl::Unlock() {
+ }
+
+ #elif BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_FREEBSD)
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wthread-safety-analysis"
++#endif
+
+ #if DCHECK_IS_ON()
+ BASE_EXPORT void dcheck_trylock_result(int rv);
+@@ -127,6 +131,9 @@ void LockImpl::Unlock() {
+ dcheck_unlock_result(rv);
+ #endif
+ }
++#if BUILDFLAG(IS_FREEBSD)
++#pragma GCC diagnostic pop
++#endif
+ #endif
+
+ // This is an implementation used for AutoLock templated on the lock type.
diff --git a/devel/electron30/files/patch-base_syslog__logging.cc b/devel/electron30/files/patch-base_syslog__logging.cc
new file mode 100644
index 000000000000..0ef1ec652967
--- /dev/null
+++ b/devel/electron30/files/patch-base_syslog__logging.cc
@@ -0,0 +1,20 @@
+--- base/syslog_logging.cc.orig 2024-04-15 20:33:42 UTC
++++ base/syslog_logging.cc
+@@ -17,7 +17,7 @@
+ #include "base/strings/string_util.h"
+ #include "base/win/scoped_handle.h"
+ #include "base/win/win_util.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // <syslog.h> defines LOG_INFO, LOG_WARNING macros that could conflict with
+ // base::LOG_INFO, base::LOG_WARNING.
+ #include <syslog.h>
+@@ -149,7 +149,7 @@ EventLogMessage::~EventLogMessage() {
+
+ if (user_sid != nullptr)
+ ::LocalFree(user_sid);
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const char kEventSource[] = "chrome";
+ openlog(kEventSource, LOG_NOWAIT | LOG_PID, LOG_USER);
+ // We can't use the defined names for the logging severity from syslog.h
diff --git a/devel/electron30/files/patch-base_system_sys__info.cc b/devel/electron30/files/patch-base_system_sys__info.cc
new file mode 100644
index 000000000000..2759f3169b2b
--- /dev/null
+++ b/devel/electron30/files/patch-base_system_sys__info.cc
@@ -0,0 +1,11 @@
+--- base/system/sys_info.cc.orig 2023-11-29 21:39:40 UTC
++++ base/system/sys_info.cc
+@@ -225,7 +225,7 @@ void SysInfo::GetHardwareInfo(base::OnceCallback<void(
+ #endif
+
+ void SysInfo::GetHardwareInfo(base::OnceCallback<void(HardwareInfo)> callback) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ constexpr base::TaskTraits kTraits = {base::MayBlock()};
+ #else
+ constexpr base::TaskTraits kTraits = {};
diff --git a/devel/electron30/files/patch-base_system_sys__info.h b/devel/electron30/files/patch-base_system_sys__info.h
new file mode 100644
index 000000000000..cb38016e6efb
--- /dev/null
+++ b/devel/electron30/files/patch-base_system_sys__info.h
@@ -0,0 +1,20 @@
+--- base/system/sys_info.h.orig 2024-04-15 20:33:42 UTC
++++ base/system/sys_info.h
+@@ -322,6 +322,8 @@ class BASE_EXPORT SysInfo {
+ static void ResetCpuSecurityMitigationsEnabledForTesting();
+ #endif
+
++ static uint64_t MaxSharedMemorySize();
++
+ private:
+ friend class test::ScopedAmountOfPhysicalMemoryOverride;
+ FRIEND_TEST_ALL_PREFIXES(SysInfoTest, AmountOfAvailablePhysicalMemory);
+@@ -334,7 +336,7 @@ class BASE_EXPORT SysInfo {
+ static HardwareInfo GetHardwareInfoSync();
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ static uint64_t AmountOfAvailablePhysicalMemory(
+ const SystemMemoryInfoKB& meminfo);
+ #endif
diff --git a/devel/electron30/files/patch-base_system_sys__info__freebsd.cc b/devel/electron30/files/patch-base_system_sys__info__freebsd.cc
new file mode 100644
index 000000000000..81e026100278
--- /dev/null
+++ b/devel/electron30/files/patch-base_system_sys__info__freebsd.cc
@@ -0,0 +1,115 @@
+--- base/system/sys_info_freebsd.cc.orig 2022-09-01 17:22:07 UTC
++++ base/system/sys_info_freebsd.cc
+@@ -9,30 +9,106 @@
+ #include <sys/sysctl.h>
+
+ #include "base/notreached.h"
++#include "base/process/process_metrics.h"
++#include "base/strings/string_util.h"
+
+ namespace base {
+
+-int64_t SysInfo::AmountOfPhysicalMemoryImpl() {
+- int pages, page_size;
++int SysInfo::NumberOfProcessors() {
++ int mib[] = {CTL_HW, HW_NCPU};
++ int ncpu;
++ size_t size = sizeof(ncpu);
++ if (sysctl(mib, std::size(mib), &ncpu, &size, NULL, 0) < 0) {
++ NOTREACHED();
++ return 1;
++ }
++ return ncpu;
++}
++
++uint64_t SysInfo::AmountOfPhysicalMemoryImpl() {
++ int pages, page_size, r = 0;
+ size_t size = sizeof(pages);
+- sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
+- sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
+- if (pages == -1 || page_size == -1) {
++
++ if (r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
++ if (r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++
++ if (r == -1) {
+ NOTREACHED();
+ return 0;
+ }
+- return static_cast<int64_t>(pages) * page_size;
++
++ return static_cast<uint64_t>(pages) * page_size;
+ }
+
++uint64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() {
++ int page_size, r = 0;
++ unsigned int pgfree, pginact, pgcache;
++ size_t size = sizeof(page_size);
++ size_t szpg = sizeof(pgfree);
++
++ if (r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++ if (r == 0)
++ r = sysctlbyname("vm.stats.vm.v_free_count", &pgfree, &szpg, NULL, 0);
++ if (r == 0)
++ r = sysctlbyname("vm.stats.vm.v_inactive_count", &pginact, &szpg, NULL, 0);
++ if (r == 0)
++ r = sysctlbyname("vm.stats.vm.v_cache_count", &pgcache, &szpg, NULL, 0);
++
++ if (r == -1) {
++ NOTREACHED();
++ return 0;
++ }
++
++ return static_cast<uint64_t>((pgfree + pginact + pgcache) * page_size);
++}
++
+ // static
++uint64_t SysInfo::AmountOfAvailablePhysicalMemory(const SystemMemoryInfoKB& info) {
++ uint64_t res_kb = info.available != 0
++ ? info.available - info.active_file
++ : info.free + info.reclaimable + info.inactive_file;
++ return res_kb * 1024;
++}
++
++// static
++std::string SysInfo::CPUModelName() {
++ int mib[] = { CTL_HW, HW_MODEL };
++ char name[256];
++ size_t size = std::size(name);
++
++ if (sysctl(mib, std::size(mib), &name, &size, NULL, 0) == 0) {
++ return name;
++ }
++
++ return std::string();
++}
++
++// static
+ uint64_t SysInfo::MaxSharedMemorySize() {
+ size_t limit;
+ size_t size = sizeof(limit);
++
+ if (sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0) < 0) {
+ NOTREACHED();
+ return 0;
+ }
++
+ return static_cast<uint64_t>(limit);
++}
++
++SysInfo::HardwareInfo SysInfo::GetHardwareInfoSync() {
++ HardwareInfo info;
++
++ info.manufacturer = "FreeBSD";
++ info.model = HardwareModelName();
++
++ DCHECK(IsStringUTF8(info.manufacturer));
++ DCHECK(IsStringUTF8(info.model));
++
++ return info;
+ }
+
+ } // namespace base
diff --git a/devel/electron30/files/patch-base_system_sys__info__openbsd.cc b/devel/electron30/files/patch-base_system_sys__info__openbsd.cc
new file mode 100644
index 000000000000..0a81df2dfca3
--- /dev/null
+++ b/devel/electron30/files/patch-base_system_sys__info__openbsd.cc
@@ -0,0 +1,94 @@
+--- base/system/sys_info_openbsd.cc.orig 2024-02-21 00:20:30 UTC
++++ base/system/sys_info_openbsd.cc
+@@ -3,7 +3,6 @@
+ // found in the LICENSE file.
+
+ #include "base/system/sys_info.h"
+-
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <sys/param.h>
+@@ -12,6 +11,7 @@
+
+ #include "base/notreached.h"
+ #include "base/posix/sysctl.h"
++#include "base/strings/string_util.h"
+
+ namespace {
+
+@@ -27,9 +27,14 @@ namespace base {
+
+ namespace base {
+
++// pledge(2)
++uint64_t aofpmem = 0;
++uint64_t shmmax = 0;
++char cpumodel[256];
++
+ // static
+ int SysInfo::NumberOfProcessors() {
+- int mib[] = {CTL_HW, HW_NCPU};
++ int mib[] = {CTL_HW, HW_NCPUONLINE};
+ int ncpu;
+ size_t size = sizeof(ncpu);
+ if (sysctl(mib, std::size(mib), &ncpu, &size, NULL, 0) < 0) {
+@@ -41,10 +46,26 @@ uint64_t SysInfo::AmountOfPhysicalMemoryImpl() {
+
+ // static
+ uint64_t SysInfo::AmountOfPhysicalMemoryImpl() {
+- return AmountOfMemory(_SC_PHYS_PAGES);
++ // pledge(2)
++ if (!aofpmem)
++ aofpmem = AmountOfMemory(_SC_PHYS_PAGES);
++ return aofpmem;
+ }
+
+ // static
++std::string SysInfo::CPUModelName() {
++ int mib[] = {CTL_HW, HW_MODEL};
++ size_t len = std::size(cpumodel);
++
++ if (cpumodel[0] == '\0') {
++ if (sysctl(mib, std::size(mib), cpumodel, &len, NULL, 0) < 0)
++ return std::string();
++ }
++
++ return std::string(cpumodel, len - 1);
++}
++
++// static
+ uint64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() {
+ // We should add inactive file-backed memory also but there is no such
+ // information from OpenBSD unfortunately.
+@@ -56,16 +77,28 @@ uint64_t SysInfo::MaxSharedMemorySize() {
+ int mib[] = {CTL_KERN, KERN_SHMINFO, KERN_SHMINFO_SHMMAX};
+ size_t limit;
+ size_t size = sizeof(limit);
++ // pledge(2)
++ if (shmmax)
++ goto out;
+ if (sysctl(mib, std::size(mib), &limit, &size, NULL, 0) < 0) {
+ NOTREACHED();
+ return 0;
+ }
+- return static_cast<uint64_t>(limit);
++ shmmax = static_cast<uint64_t>(limit);
++out:
++ return shmmax;
+ }
+
+ // static
+-std::string SysInfo::CPUModelName() {
+- return StringSysctl({CTL_HW, HW_MODEL}).value();
++SysInfo::HardwareInfo SysInfo::GetHardwareInfoSync() {
++ HardwareInfo info;
++ // Set the manufacturer to "OpenBSD" and the model to
++ // an empty string.
++ info.manufacturer = "OpenBSD";
++ info.model = HardwareModelName();
++ DCHECK(IsStringUTF8(info.manufacturer));
++ DCHECK(IsStringUTF8(info.model));
++ return info;
+ }
+
+ } // namespace base
diff --git a/devel/electron30/files/patch-base_system_sys__info__posix.cc b/devel/electron30/files/patch-base_system_sys__info__posix.cc
new file mode 100644
index 000000000000..d304bed843e0
--- /dev/null
+++ b/devel/electron30/files/patch-base_system_sys__info__posix.cc
@@ -0,0 +1,29 @@
+--- base/system/sys_info_posix.cc.orig 2024-04-15 20:33:42 UTC
++++ base/system/sys_info_posix.cc
+@@ -118,7 +118,7 @@ namespace base {
+
+ namespace base {
+
+-#if !BUILDFLAG(IS_OPENBSD)
++#if !BUILDFLAG(IS_BSD)
+ // static
+ int SysInfo::NumberOfProcessors() {
+ #if BUILDFLAG(IS_MAC)
+@@ -175,7 +175,7 @@ int SysInfo::NumberOfProcessors() {
+
+ return cached_num_cpus;
+ }
+-#endif // !BUILDFLAG(IS_OPENBSD)
++#endif // !BUILDFLAG(IS_BSD)
+
+ // static
+ uint64_t SysInfo::AmountOfVirtualMemory() {
+@@ -265,6 +265,8 @@ std::string SysInfo::OperatingSystemArchitecture() {
+ arch = "x86";
+ } else if (arch == "amd64") {
+ arch = "x86_64";
++ } else if (arch == "arm64") {
++ arch = "aarch64";
+ } else if (std::string(info.sysname) == "AIX") {
+ arch = "ppc64";
+ }
diff --git a/devel/electron30/files/patch-base_system_sys__info__unittest.cc b/devel/electron30/files/patch-base_system_sys__info__unittest.cc
new file mode 100644
index 000000000000..b25a772420b5
--- /dev/null
+++ b/devel/electron30/files/patch-base_system_sys__info__unittest.cc
@@ -0,0 +1,20 @@
+--- base/system/sys_info_unittest.cc.orig 2024-04-15 20:33:42 UTC
++++ base/system/sys_info_unittest.cc
+@@ -264,12 +264,16 @@ TEST_F(SysInfoTest, GetHardwareInfo) {
+ EXPECT_TRUE(IsStringUTF8(hardware_info->model));
+ bool empty_result_expected =
+ #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || \
++ BUILDFLAG(IS_BSD)
+ false;
+ #else
+ true;
+ #endif
+ EXPECT_EQ(hardware_info->manufacturer.empty(), empty_result_expected);
++#if BUILDFLAG(IS_BSD)
++ empty_result_expected = true;
++#endif
+ EXPECT_EQ(hardware_info->model.empty(), empty_result_expected);
+ }
+
diff --git a/devel/electron30/files/patch-base_task_thread__pool_environment__config__unittest.cc b/devel/electron30/files/patch-base_task_thread__pool_environment__config__unittest.cc
new file mode 100644
index 000000000000..abb639bc986d
--- /dev/null
+++ b/devel/electron30/files/patch-base_task_thread__pool_environment__config__unittest.cc
@@ -0,0 +1,11 @@
+--- base/task/thread_pool/environment_config_unittest.cc.orig 2022-08-31 12:19:35 UTC
++++ base/task/thread_pool/environment_config_unittest.cc
+@@ -15,7 +15,7 @@ TEST(ThreadPoolEnvironmentConfig, CanUseBackgroundPrio
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE)
+ EXPECT_TRUE(CanUseBackgroundThreadTypeForWorkerThread());
+ #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_NACL)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_NACL) || BUILDFLAG(IS_BSD)
+ EXPECT_FALSE(CanUseBackgroundThreadTypeForWorkerThread());
+ #else
+ #error Platform doesn't match any block
diff --git a/devel/electron30/files/patch-base_test_launcher_test__launcher.cc b/devel/electron30/files/patch-base_test_launcher_test__launcher.cc
new file mode 100644
index 000000000000..3133d44aed9e
--- /dev/null
+++ b/devel/electron30/files/patch-base_test_launcher_test__launcher.cc
@@ -0,0 +1,10 @@
+--- base/test/launcher/test_launcher.cc.orig 2024-02-21 00:20:30 UTC
++++ base/test/launcher/test_launcher.cc
+@@ -69,6 +69,7 @@
+ #include "testing/gtest/include/gtest/gtest.h"
+
+ #if BUILDFLAG(IS_POSIX)
++#include <signal.h>
+ #include <fcntl.h>
+
+ #include "base/files/file_descriptor_watcher_posix.h"
diff --git a/devel/electron30/files/patch-base_test_test__file__util__linux.cc b/devel/electron30/files/patch-base_test_test__file__util__linux.cc
new file mode 100644
index 000000000000..a64bf500d0dd
--- /dev/null
+++ b/devel/electron30/files/patch-base_test_test__file__util__linux.cc
@@ -0,0 +1,13 @@
+--- base/test/test_file_util_linux.cc.orig 2023-10-19 19:57:58 UTC
++++ base/test/test_file_util_linux.cc
+@@ -54,8 +54,10 @@ bool EvictFileFromSystemCache(const FilePath& file) {
+ return false;
+ if (fdatasync(fd.get()) != 0)
+ return false;
++#if !BUILDFLAG(IS_BSD)
+ if (posix_fadvise(fd.get(), 0, 0, POSIX_FADV_DONTNEED) != 0)
+ return false;
++#endif
+ return true;
+ }
+
diff --git a/devel/electron30/files/patch-base_test_test__file__util__posix.cc b/devel/electron30/files/patch-base_test_test__file__util__posix.cc
new file mode 100644
index 000000000000..0fff7d39289b
--- /dev/null
+++ b/devel/electron30/files/patch-base_test_test__file__util__posix.cc
@@ -0,0 +1,11 @@
+--- base/test/test_file_util_posix.cc.orig 2024-04-15 20:33:42 UTC
++++ base/test/test_file_util_posix.cc
+@@ -89,7 +89,7 @@ void SyncPageCacheToDisk() {
+ }
+
+ #if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_APPLE) && \
+- !BUILDFLAG(IS_ANDROID)
++ !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_BSD)
+ bool EvictFileFromSystemCache(const FilePath& file) {
+ // There doesn't seem to be a POSIX way to cool the disk cache.
+ NOTIMPLEMENTED();
diff --git a/devel/electron30/files/patch-base_threading_hang__watcher.cc b/devel/electron30/files/patch-base_threading_hang__watcher.cc
new file mode 100644
index 000000000000..f728309dcbd4
--- /dev/null
+++ b/devel/electron30/files/patch-base_threading_hang__watcher.cc
@@ -0,0 +1,11 @@
+--- base/threading/hang_watcher.cc.orig 2024-04-15 20:33:42 UTC
++++ base/threading/hang_watcher.cc
+@@ -332,7 +332,7 @@ void HangWatcher::InitializeOnMainThread(ProcessType p
+
+ bool enable_hang_watcher = base::FeatureList::IsEnabled(kEnableHangWatcher);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_BSD)
+ if (is_zygote_child) {
+ enable_hang_watcher =
+ enable_hang_watcher &&
diff --git a/devel/electron30/files/patch-base_threading_platform__thread.h b/devel/electron30/files/patch-base_threading_platform__thread.h
new file mode 100644
index 000000000000..4d59fd1ac8b1
--- /dev/null
+++ b/devel/electron30/files/patch-base_threading_platform__thread.h
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread.h.orig 2024-04-15 20:33:42 UTC
++++ base/threading/platform_thread.h
+@@ -46,6 +46,8 @@ typedef mach_port_t PlatformThreadId;
+ typedef zx_koid_t PlatformThreadId;
+ #elif BUILDFLAG(IS_APPLE)
+ typedef mach_port_t PlatformThreadId;
++#elif BUILDFLAG(IS_BSD)
++typedef uint64_t PlatformThreadId;
+ #elif BUILDFLAG(IS_POSIX)
+ typedef pid_t PlatformThreadId;
+ #endif
diff --git a/devel/electron30/files/patch-base_threading_platform__thread__bsd.cc b/devel/electron30/files/patch-base_threading_platform__thread__bsd.cc
new file mode 100644
index 000000000000..16e5ab7d5f21
--- /dev/null
+++ b/devel/electron30/files/patch-base_threading_platform__thread__bsd.cc
@@ -0,0 +1,34 @@
+--- base/threading/platform_thread_bsd.cc.orig 2024-04-28 08:50:24 UTC
++++ base/threading/platform_thread_bsd.cc
+@@ -0,0 +1,31 @@
++// Copyright 2023 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++// Description: These are stubs for *BSD.
++
++#include "base/threading/platform_thread.h"
++
++namespace base {
++namespace internal {
++
++bool CanSetThreadTypeToRealtimeAudio() {
++ return false;
++}
++
++bool SetCurrentThreadTypeForPlatform(ThreadType thread_type,
++ MessagePumpType pump_type_hint) {
++ return false;
++}
++
++std::optional<ThreadPriorityForTest>
++GetCurrentThreadPriorityForPlatformForTest() {
++ return std::nullopt;
++}
++} // namespace internal
++
++// static
++void PlatformThreadBase::SetName(const std::string& name) {
++ SetNameCommon(name);
++}
++
++} // namespace base
diff --git a/devel/electron30/files/patch-base_threading_platform__thread__internal__posix.cc b/devel/electron30/files/patch-base_threading_platform__thread__internal__posix.cc
new file mode 100644
index 000000000000..26ab14cdc512
--- /dev/null
+++ b/devel/electron30/files/patch-base_threading_platform__thread__internal__posix.cc
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread_internal_posix.cc.orig 2024-04-15 20:33:42 UTC
++++ base/threading/platform_thread_internal_posix.cc
+@@ -42,7 +42,7 @@ int GetCurrentThreadNiceValue() {
+ }
+
+ int GetCurrentThreadNiceValue() {
+-#if BUILDFLAG(IS_NACL)
++#if BUILDFLAG(IS_NACL) || BUILDFLAG(IS_BSD)
+ NOTIMPLEMENTED();
+ return 0;
+ #else
diff --git a/devel/electron30/files/patch-base_threading_platform__thread__posix.cc b/devel/electron30/files/patch-base_threading_platform__thread__posix.cc
new file mode 100644
index 000000000000..4b0ae4dc02f9
--- /dev/null
+++ b/devel/electron30/files/patch-base_threading_platform__thread__posix.cc
@@ -0,0 +1,54 @@
+--- base/threading/platform_thread_posix.cc.orig 2024-04-15 20:33:42 UTC
++++ base/threading/platform_thread_posix.cc
+@@ -78,12 +78,12 @@ void* ThreadFunc(void* params) {
+ if (!thread_params->joinable)
+ base::DisallowSingleton();
+
+-#if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && BUILDFLAG(USE_STARSCAN)
++#if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && BUILDFLAG(USE_STARSCAN) && !BUILDFLAG(IS_BSD)
+ partition_alloc::internal::PCScan::NotifyThreadCreated(
+ partition_alloc::internal::GetStackPointer());
+ #endif
+
+-#if !BUILDFLAG(IS_NACL)
++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD)
+ #if BUILDFLAG(IS_APPLE)
+ PlatformThread::SetCurrentThreadRealtimePeriodValue(
+ delegate->GetRealtimePeriod());
+@@ -267,6 +267,8 @@ PlatformThreadId PlatformThreadBase::CurrentId() {
+ return reinterpret_cast<int32_t>(pthread_self());
+ #elif BUILDFLAG(IS_POSIX) && BUILDFLAG(IS_AIX)
+ return pthread_self();
++#elif BUILDFLAG(IS_BSD)
++ return reinterpret_cast<uint64_t>(pthread_self());
+ #elif BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_AIX)
+ return reinterpret_cast<int64_t>(pthread_self());
+ #endif
+@@ -357,7 +359,7 @@ bool PlatformThreadBase::CanChangeThreadType(ThreadTyp
+
+ // static
+ bool PlatformThreadBase::CanChangeThreadType(ThreadType from, ThreadType to) {
+-#if BUILDFLAG(IS_NACL)
++#if BUILDFLAG(IS_NACL) || BUILDFLAG(IS_BSD)
+ return false;
+ #else
+ if (from >= to) {
+@@ -378,6 +380,9 @@ void SetCurrentThreadTypeImpl(ThreadType thread_type,
+ MessagePumpType pump_type_hint) {
+ #if BUILDFLAG(IS_NACL)
+ NOTIMPLEMENTED();
++// avoid pledge(2) violation
++#elif BUILDFLAG(IS_BSD)
++ NOTIMPLEMENTED();
+ #else
+ if (internal::SetCurrentThreadTypeForPlatform(thread_type, pump_type_hint))
+ return;
+@@ -400,7 +405,7 @@ ThreadPriorityForTest PlatformThreadBase::GetCurrentTh
+
+ // static
+ ThreadPriorityForTest PlatformThreadBase::GetCurrentThreadPriorityForTest() {
+-#if BUILDFLAG(IS_NACL)
++#if BUILDFLAG(IS_NACL) || BUILDFLAG(IS_BSD)
+ NOTIMPLEMENTED();
+ return ThreadPriorityForTest::kNormal;
+ #else
diff --git a/devel/electron30/files/patch-base_threading_platform__thread__unittest.cc b/devel/electron30/files/patch-base_threading_platform__thread__unittest.cc
new file mode 100644
index 000000000000..6808637e03e4
--- /dev/null
+++ b/devel/electron30/files/patch-base_threading_platform__thread__unittest.cc
@@ -0,0 +1,38 @@
+--- base/threading/platform_thread_unittest.cc.orig 2023-11-29 21:39:40 UTC
++++ base/threading/platform_thread_unittest.cc
+@@ -32,7 +32,7 @@
+ #include "base/time/time.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include <pthread.h>
+ #include <sys/syscall.h>
+ #include <sys/types.h>
+@@ -423,7 +423,7 @@ TEST(PlatformThreadTest, CanChangeThreadType) {
+ // and hardcodes what we know. Please inform scheduler-dev@chromium.org if this
+ // proprerty changes for a given platform.
+ TEST(PlatformThreadTest, CanChangeThreadType) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // On Ubuntu, RLIMIT_NICE and RLIMIT_RTPRIO are 0 by default, so we won't be
+ // able to increase priority to any level unless we are root (euid == 0).
+ bool kCanIncreasePriority = false;
+@@ -706,12 +706,16 @@ INSTANTIATE_TEST_SUITE_P(
+
+ #endif // BUILDFLAG(IS_APPLE)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ namespace {
+
+ bool IsTidCacheCorrect() {
++#if BUILDFLAG(IS_BSD)
++ return PlatformThread::CurrentId() == reinterpret_cast<int64_t>(pthread_self());
++#else
+ return PlatformThread::CurrentId() == syscall(__NR_gettid);
++#endif
+ }
+
+ void* CheckTidCacheCorrectWrapper(void*) {
diff --git a/devel/electron30/files/patch-base_trace__event_malloc__dump__provider.cc b/devel/electron30/files/patch-base_trace__event_malloc__dump__provider.cc
new file mode 100644
index 000000000000..826a40e54501
--- /dev/null
+++ b/devel/electron30/files/patch-base_trace__event_malloc__dump__provider.cc
@@ -0,0 +1,30 @@
+--- base/trace_event/malloc_dump_provider.cc.orig 2024-04-15 20:33:42 UTC
++++ base/trace_event/malloc_dump_provider.cc
+@@ -24,6 +24,8 @@
+
+ #if BUILDFLAG(IS_APPLE)
+ #include <malloc/malloc.h>
++#elif BUILDFLAG(IS_BSD)
++#include <stdlib.h>
+ #else
+ #include <malloc.h>
+ #endif
+@@ -181,7 +183,7 @@ void ReportAppleAllocStats(size_t* total_virtual_size,
+
+ #if (BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && BUILDFLAG(IS_ANDROID)) || \
+ (!BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && !BUILDFLAG(IS_WIN) && \
+- !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_FUCHSIA))
++ !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_FUCHSIA) && !BUILDFLAG(IS_BSD))
+ void ReportMallinfoStats(ProcessMemoryDump* pmd,
+ size_t* total_virtual_size,
+ size_t* resident_size,
+@@ -366,6 +368,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump
+ &allocated_objects_count);
+ #elif BUILDFLAG(IS_FUCHSIA)
+ // TODO(fuchsia): Port, see https://crbug.com/706592.
++#elif BUILDFLAG(IS_BSD)
++ total_virtual_size = 0;
++ allocated_objects_size = 0;
+ #else
+ ReportMallinfoStats(/*pmd=*/nullptr, &total_virtual_size, &resident_size,
+ &allocated_objects_size, &allocated_objects_count);
diff --git a/devel/electron30/files/patch-base_trace__event_memory__dump__manager.cc b/devel/electron30/files/patch-base_trace__event_memory__dump__manager.cc
new file mode 100644
index 000000000000..f1f228e38e7b
--- /dev/null
+++ b/devel/electron30/files/patch-base_trace__event_memory__dump__manager.cc
@@ -0,0 +1,11 @@
+--- base/trace_event/memory_dump_manager.cc.orig 2022-03-25 21:59:56 UTC
++++ base/trace_event/memory_dump_manager.cc
+@@ -82,7 +82,7 @@ const char* const MemoryDumpManager::kSystemAllocatorP
+ #if defined(MALLOC_MEMORY_TRACING_SUPPORTED)
+ MallocDumpProvider::kAllocatedObjects;
+ #else
+- nullptr;
++ "";
+ #endif
+
+ // static
diff --git a/devel/electron30/files/patch-base_trace__event_process__memory__dump.cc b/devel/electron30/files/patch-base_trace__event_process__memory__dump.cc
new file mode 100644
index 000000000000..5792e3f7a252
--- /dev/null
+++ b/devel/electron30/files/patch-base_trace__event_process__memory__dump.cc
@@ -0,0 +1,20 @@
+--- base/trace_event/process_memory_dump.cc.orig 2024-04-15 20:33:42 UTC
++++ base/trace_event/process_memory_dump.cc
+@@ -113,7 +113,7 @@ std::optional<size_t> ProcessMemoryDump::CountResident
+ #if BUILDFLAG(IS_WIN)
+ std::uniqu