aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Nagy <robert@openbsd.org>2022-10-01 10:52:12 +0000
committerRene Ladan <rene@FreeBSD.org>2022-10-04 21:01:34 +0000
commitbfe7b23f5c54dae039349ef81792b05c7b6495a5 (patch)
treea726c3663d05d3e0ecba25faec7aafcd3a026daa
parentf1d8b3346b6ad98a622ec17b6a4cfe32ae3c4936 (diff)
www/ungoogled-chromium: add port of ungoogled chromium
ungoogled-chromium is a free and open-source Chromium-based web browser with the aim of increasing privacy through removing Google components and blobs. additionaly to the upstream version of ungoogled-chromium, patches have been added to support parallel installation by using separate cache and config directories
-rw-r--r--www/Makefile1
-rw-r--r--www/ungoogled-chromium/Makefile372
-rw-r--r--www/ungoogled-chromium/Makefile.tests16
-rw-r--r--www/ungoogled-chromium/distinfo9
-rw-r--r--www/ungoogled-chromium/files/patch-BUILD.gn80
-rw-r--r--www/ungoogled-chromium/files/patch-apps_ui_views_app__window__frame__view.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ash_display_mirror__window__controller.cc14
-rw-r--r--www/ungoogled-chromium/files/patch-base_BUILD.gn164
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_address__space__randomization.h20
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_page__allocator.h11
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_page__allocator__constants.h38
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h16
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__address__space.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc.cc17
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__base_rand__util__posix.cc13
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__internal__posix.h11
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__posix.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__config.h29
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__constants.h20
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__page.h29
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__root.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_spinning__mutex.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_starscan_stack_stack.cc50
-rw-r--r--www/ungoogled-chromium/files/patch-base_atomicops.h14
-rw-r--r--www/ungoogled-chromium/files/patch-base_base__paths__posix.cc98
-rw-r--r--www/ungoogled-chromium/files/patch-base_base__switches.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_base__switches.h11
-rw-r--r--www/ungoogled-chromium/files/patch-base_cpu.h11
-rw-r--r--www/ungoogled-chromium/files/patch-base_debug_debugger__posix.cc68
-rw-r--r--www/ungoogled-chromium/files/patch-base_debug_elf__reader.cc18
-rw-r--r--www/ungoogled-chromium/files/patch-base_debug_proc__maps__linux.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_debug_stack__trace__posix.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-base_files_dir__reader__linux.h39
-rw-r--r--www/ungoogled-chromium/files/patch-base_files_dir__reader__posix.h20
-rw-r--r--www/ungoogled-chromium/files/patch-base_files_file__path__watcher__bsd.cc57
-rw-r--r--www/ungoogled-chromium/files/patch-base_files_file__path__watcher__kqueue.h10
-rw-r--r--www/ungoogled-chromium/files/patch-base_files_file__path__watcher__unittest.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-base_files_file__util__posix.cc52
-rw-r--r--www/ungoogled-chromium/files/patch-base_files_file__util__unittest.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-base_files_important__file__writer__cleaner.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-base_files_scoped__file.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_i18n_icu__util.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-base_linux__util.cc28
-rw-r--r--www/ungoogled-chromium/files/patch-base_logging__unittest.cc31
-rw-r--r--www/ungoogled-chromium/files/patch-base_memory_discardable__memory.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-base_memory_discardable__memory__internal.h11
-rw-r--r--www/ungoogled-chromium/files/patch-base_memory_madv__free__discardable__memory__posix.cc21
-rw-r--r--www/ungoogled-chromium/files/patch-base_memory_platform__shared__memory__region.h29
-rw-r--r--www/ungoogled-chromium/files/patch-base_memory_platform__shared__memory__region__posix.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-base_message__loop_message__pump__glib.cc28
-rw-r--r--www/ungoogled-chromium/files/patch-base_native__library__posix.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_native__library__unittest.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_posix_can__lower__nice__to.cc16
-rw-r--r--www/ungoogled-chromium/files/patch-base_posix_unix__domain__socket.cc39
-rw-r--r--www/ungoogled-chromium/files/patch-base_posix_unix__domain__socket__unittest.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_kill.h11
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_kill__posix.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_launch.h11
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_launch__posix.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_memory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__handle.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__handle.h11
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__handle__freebsd.cc25
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__handle__openbsd.cc89
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__iterator__freebsd.cc51
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__iterator__openbsd.cc45
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__metrics.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__metrics.h129
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__metrics__freebsd.cc290
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__metrics__openbsd.cc215
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__metrics__posix.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__metrics__unittest.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__posix.cc93
-rw-r--r--www/ungoogled-chromium/files/patch-base_process_process__unittest.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_profiler_module__cache.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_profiler_stack__sampling__profiler__test__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_profiler_stack__sampling__profiler__unittest.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_rand__util.h11
-rw-r--r--www/ungoogled-chromium/files/patch-base_rand__util__posix.cc57
-rw-r--r--www/ungoogled-chromium/files/patch-base_strings_safe__sprintf__unittest.cc18
-rw-r--r--www/ungoogled-chromium/files/patch-base_synchronization_lock__impl.h23
-rw-r--r--www/ungoogled-chromium/files/patch-base_syslog__logging.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-base_system_sys__info.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_system_sys__info.h20
-rw-r--r--www/ungoogled-chromium/files/patch-base_system_sys__info__freebsd.cc115
-rw-r--r--www/ungoogled-chromium/files/patch-base_system_sys__info__openbsd.cc94
-rw-r--r--www/ungoogled-chromium/files/patch-base_system_sys__info__posix.cc43
-rw-r--r--www/ungoogled-chromium/files/patch-base_system_sys__info__unittest.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-base_task_thread__pool_environment__config__unittest.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_test_launcher_test__launcher.cc10
-rw-r--r--www/ungoogled-chromium/files/patch-base_test_test__file__util__linux.cc13
-rw-r--r--www/ungoogled-chromium/files/patch-base_test_test__file__util__posix.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_third__party_symbolize_symbolize.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_threading_platform__thread.h11
-rw-r--r--www/ungoogled-chromium/files/patch-base_threading_platform__thread__linux.cc77
-rw-r--r--www/ungoogled-chromium/files/patch-base_threading_platform__thread__posix.cc21
-rw-r--r--www/ungoogled-chromium/files/patch-base_threading_platform__thread__unittest.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-base_trace__event_malloc__dump__provider.cc30
-rw-r--r--www/ungoogled-chromium/files/patch-base_trace__event_memory__dump__manager.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-base_trace__event_process__memory__dump.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-base_tracing_trace__time.cc28
-rw-r--r--www/ungoogled-chromium/files/patch-base_tracing_trace__time.h11
-rw-r--r--www/ungoogled-chromium/files/patch-build_config_BUILD.gn22
-rw-r--r--www/ungoogled-chromium/files/patch-build_config_BUILDCONFIG.gn45
-rw-r--r--www/ungoogled-chromium/files/patch-build_config_compiler_BUILD.gn113
-rw-r--r--www/ungoogled-chromium/files/patch-build_config_linux_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-build_config_linux_pkg-config.py11
-rw-r--r--www/ungoogled-chromium/files/patch-build_config_ozone.gni19
-rw-r--r--www/ungoogled-chromium/files/patch-build_config_rust.gni11
-rw-r--r--www/ungoogled-chromium/files/patch-build_config_v8__target__cpu.gni13
-rw-r--r--www/ungoogled-chromium/files/patch-build_detect__host__arch.py11
-rw-r--r--www/ungoogled-chromium/files/patch-build_gn__run__binary.py11
-rw-r--r--www/ungoogled-chromium/files/patch-build_linux_chrome.map13
-rw-r--r--www/ungoogled-chromium/files/patch-build_linux_strip__binary.py10
-rw-r--r--www/ungoogled-chromium/files/patch-build_linux_unbundle_libevent.gn15
-rw-r--r--www/ungoogled-chromium/files/patch-build_linux_unbundle_libusb.gn27
-rw-r--r--www/ungoogled-chromium/files/patch-build_linux_unbundle_replace__gn__files.py10
-rw-r--r--www/ungoogled-chromium/files/patch-build_toolchain_freebsd_BUILD.gn69
-rw-r--r--www/ungoogled-chromium/files/patch-build_toolchain_gcc__solink__wrapper.py11
-rw-r--r--www/ungoogled-chromium/files/patch-build_toolchain_gcc__toolchain.gni44
-rw-r--r--www/ungoogled-chromium/files/patch-build_toolchain_openbsd_BUILD.gn69
-rw-r--r--www/ungoogled-chromium/files/patch-cc_BUILD.gn19
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_app_app__management__strings.grdp11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_app_chrome__command__ids.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_app_chrome__main.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_app_chrome__main__delegate.cc121
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_app_chromium__strings.grd20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_app_generated__resources.grd74
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_app_google__chrome__strings.grd20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_app_profiles__strings.grdp11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_app_settings__strings.grdp20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_app_theme_chrome__unscaled__resources.grd32
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_app_theme_theme__resources.grd34
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_about__flags.cc128
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_after__startup__task__utils.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_background_background__mode__manager.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_background_background__mode__optimizer.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_browser__features.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_browser__process__impl.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_browser__process__impl.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_browser__resources.grd11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__interface__binders.cc71
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main.cc52
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main__extra__parts__linux.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main__linux.cc28
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main__posix.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_chrome__content__browser__client.cc150
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_chrome__content__browser__client.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_custom__handlers_chrome__protocol__handler__registry__delegate.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_defaults.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_dev__ui__browser__resources.grd11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_diagnostics_diagnostics__writer.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_download_download__commands.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_download_download__commands.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_download_download__file__picker.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_download_download__item__model.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_download_download__prefs.cc90
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_download_download__prefs.h20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_analysis_analysis__service__settings.cc16
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__connector__service__factory.cc43
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__service__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_browser_commands_key__rotation__command__factory.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_core_persistence_key__persistence__delegate__factory.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_signals_signals__service__factory.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.cc19
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.h20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_enterprise_remote__commands_cbcm__remote__commands__factory.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_enterprise_signals_device__info__fetcher.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_enterprise_signals_device__info__fetcher__linux.cc78
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_extensions_BUILD.gn13
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.h29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_messaging_native__process__launcher__posix.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_extensions_external__provider__impl.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_first__run_first__run__dialog.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_first__run_first__run__internal.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_flag__descriptions.cc65
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_flag__descriptions.h51
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_headless_headless__mode__util.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_intranet__redirect__detector.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc15
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc16
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_media_audio__service__util.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_media_router_discovery_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc48
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc30
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc13
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc33
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_memory__details.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_memory__details__linux.cc37
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc23
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_metrics_perf_cpu__identity.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_metrics_power_process__metrics__recorder__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_metrics_power_process__monitor.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_metrics_power_process__monitor.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_net_system__network__context__manager.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_new__tab__page_modules_drive_drive__service.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_new__tab__page_new__tab__page__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_notifications_notification__display__service__impl.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_password__manager_password__reuse__manager__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_platform__util__linux.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc120
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_policy_device__management__service__configuration.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_prefs_browser__prefs.cc44
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_printing_print__backend__service__manager.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_printing_print__job__worker.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_process__singleton__posix.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc25
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_profiles_profile__impl.cc31
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_profiles_profiles__state.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_renderer__preferences__util.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_resources_plugin__metadata_plugins__linux.json31
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_resources_sandbox__internals_sandbox__internals.ts29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.ts20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.ts51
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_autofill__page_passwords__shared.css11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_route.ts11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_resources_signin_signin__shared.css11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_resources_signin_sync__confirmation_sync__confirmation__app.html38
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_cloud__content__scanning_binary__upload__service.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.h29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_sharing_sharing__device__registration.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_shutdown__signal__handlers__posix.cc21
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_sync_chrome__sync__client.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_sync_device__info__sync__client__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group.h38
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h38
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_task__manager_task__manager__observer.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__helper.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__service.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__service__aura__linux.cc37
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__service__factory.cc37
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_browser.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_browser__command__controller.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_browser__dialogs.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_browser__view__prefs.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_chrome__pages.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_chrome__pages.h20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_color_native__chrome__color__mixer.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_sad__tab.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_sharing__hub_sharing__hub__bubble__controller.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_signin__view__controller.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_signin__view__controller__delegate.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_tab__helpers.cc36
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_accelerator__table.cc43
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_chrome__views__delegate.h16
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_chrome__views__delegate__linux.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_download_download__item__view.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view__aura.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_first__run__dialog.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_browser__frame.cc52
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_browser__view.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_hung__renderer__view.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_profiles_profile__menu__view__base.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_tabs_tab.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_views_tabs_tab__hover__card__controller.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_web__applications_app__browser__controller.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_about__ui.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc92
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_connectors__internals_zero__trust__utils.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_ntp_app__launcher__handler.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_ui_window__sizer_window__sizer.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_web__applications_extension__status__utils.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_web__applications_extensions_extension__status__utils.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__file__handler__registration.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut.h38
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut__manager.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_web__applications_web__app__provider.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_browser_webauthn_chrome__authenticator__request__delegate.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_channel__info.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_channel__info__posix.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_chrome__features.cc65
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_chrome__features.h47
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_chrome__paths.cc87
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_chrome__paths.h29
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_chrome__paths__internal.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_chrome__switches.cc19
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_chrome__switches.h17
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_extensions_permissions_chrome__permission__message__rules.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_media_cdm__host__file__path.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_pref__names.cc56
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_pref__names.h56
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_url__constants.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_url__constants.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_webui__url__constants.cc68
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_common_webui__url__constants.h57
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_renderer_chrome__render__frame__observer.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_services_file__util_public_mojom_safe__document__analyzer__mojom__traits.h11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_services_printing_print__backend__service__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_services_speech_audio__source__fetcher__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_test_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_test_chromedriver_chrome__launcher.cc10
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_test_chromedriver_key__converter__unittest.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_test_chromedriver_keycode__text__conversion__unittest.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_test_interaction_webui__interaction__test__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_updater_app_app__install.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_updater_app_app__uninstall.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_updater_configurator.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_updater_device__management_dm__client.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_updater_device__management_dm__storage.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_updater_installer.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_updater_updater.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_updater_util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chrome_utility_services.cc56
-rw-r--r--www/ungoogled-chromium/files/patch-chromecast_browser_cast__browser__main__parts.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-chromecast_browser_cast__content__browser__client.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-chromecast_media_base_default__monotonic__clock.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-components_autofill__assistant_browser_autofill__assistant__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_autofill__assistant_browser_client__context.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_autofill__payments__strings.grdp11
-rw-r--r--www/ungoogled-chromium/files/patch-components_autofill_core_browser_personal__data__manager.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-components_autofill_core_common_autofill__payments__features.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_autofill_core_common_autofill__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_cast__channel_cast__message__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_components__chromium__strings.grd11
-rw-r--r--www/ungoogled-chromium/files/patch-components_components__google__chrome__strings.grd11
-rw-r--r--www/ungoogled-chromium/files/patch-components_content__settings_core_browser_website__settings__registry.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_cookie__config_cookie__store__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_crash_content_browser_BUILD.gn29
-rw-r--r--www/ungoogled-chromium/files/patch-components_crash_core_app_BUILD.gn52
-rw-r--r--www/ungoogled-chromium/files/patch-components_crash_core_app_chrome__crashpad__handler.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-components_crash_core_browser_crash__upload__list__crashpad.cc16
-rw-r--r--www/ungoogled-chromium/files/patch-components_crash_core_common_BUILD.gn20
-rw-r--r--www/ungoogled-chromium/files/patch-components_device__signals_core_common_signals__features.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_device__signals_core_common_signals__features.h11
-rw-r--r--www/ungoogled-chromium/files/patch-components_device__signals_core_system__signals_platform__delegate.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_embedder__support_user__agent__utils__unittest.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-components_feature__engagement_public_event__constants.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_feature__engagement_public_event__constants.h11
-rw-r--r--www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__configurations.cc21
-rw-r--r--www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__constants.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__constants.h20
-rw-r--r--www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__list.cc21
-rw-r--r--www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__list.h40
-rw-r--r--www/ungoogled-chromium/files/patch-components_feed_core_proto_v2_wire_version.proto13
-rw-r--r--www/ungoogled-chromium/files/patch-components_feed_core_v2_feed__network__impl__unittest.cc13
-rw-r--r--www/ungoogled-chromium/files/patch-components_feed_core_v2_proto__util.cc24
-rw-r--r--www/ungoogled-chromium/files/patch-components_feed_core_v2_proto__util__unittest.cc13
-rw-r--r--www/ungoogled-chromium/files/patch-components_feed_core_v2_test_proto__printer.cc13
-rw-r--r--www/ungoogled-chromium/files/patch-components_flags__ui_flags__state.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_gwp__asan_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-components_gwp__asan_crash__handler_crash__analyzer.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-components_invalidation_impl_invalidation__switches.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_live__caption_caption__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_metrics_drive__metrics__provider__linux.cc16
-rw-r--r--www/ungoogled-chromium/files/patch-components_metrics_motherboard.cc10
-rw-r--r--www/ungoogled-chromium/files/patch-components_neterror_resources_neterror.js11
-rw-r--r--www/ungoogled-chromium/files/patch-components_network__session__configurator_browser_network__session__configurator.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_network__session__configurator_browser_network__session__configurator__unittest.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_new__or__sad__tab__strings.grdp20
-rw-r--r--www/ungoogled-chromium/files/patch-components_optimization__guide_core_optimization__guide__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_os__crypt_keyring__util__linux.cc17
-rw-r--r--www/ungoogled-chromium/files/patch-components_os__crypt_libsecret__util__linux.cc18
-rw-r--r--www/ungoogled-chromium/files/patch-components_os__crypt_os__crypt.h72
-rw-r--r--www/ungoogled-chromium/files/patch-components_paint__preview_browser_paint__preview__client.cc13
-rw-r--r--www/ungoogled-chromium/files/patch-components_paint__preview_browser_paint__preview__client__unittest.cc13
-rw-r--r--www/ungoogled-chromium/files/patch-components_paint__preview_common_proto_paint__preview.proto13
-rw-r--r--www/ungoogled-chromium/files/patch-components_paint__preview_player_player__compositor__delegate.cc13
-rw-r--r--www/ungoogled-chromium/files/patch-components_password__manager_core_browser_login__database.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-components_password__manager_core_browser_login__database__unittest.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-components_password__manager_core_browser_sync_password__sync__bridge.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-components_password__manager_core_common_password__manager__features.cc28
-rw-r--r--www/ungoogled-chromium/files/patch-components_password__manager_core_common_password__manager__features.h24
-rw-r--r--www/ungoogled-chromium/files/patch-components_performance__manager_public_features.h11
-rw-r--r--www/ungoogled-chromium/files/patch-components_permissions_prediction__service_prediction__common.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-components_policy_core_browser_policy__pref__mapping__test.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_policy_core_common_cloud_cloud__policy__client.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc55
-rw-r--r--www/ungoogled-chromium/files/patch-components_policy_resources_policy__templates.json200
-rw-r--r--www/ungoogled-chromium/files/patch-components_policy_tools_generate__policy__source.py14
-rw-r--r--www/ungoogled-chromium/files/patch-components_safe__browsing_content_common_file__type__policies__unittest.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_safe__browsing_content_resources_gen__file__type__proto.py19
-rw-r--r--www/ungoogled-chromium/files/patch-components_safe__browsing_core_browser_db_v4__protocol__manager__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_safe__browsing_core_browser_realtime_url__lookup__service__base.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_security__interstitials_content_utils.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h20
-rw-r--r--www/ungoogled-chromium/files/patch-components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.cc18
-rw-r--r--www/ungoogled-chromium/files/patch-components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.h16
-rw-r--r--www/ungoogled-chromium/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_storage__monitor_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-components_storage__monitor_removable__device__constants.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_storage__monitor_removable__device__constants.h11
-rw-r--r--www/ungoogled-chromium/files/patch-components_sync__device__info_local__device__info__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_sync__device__info_local__device__info__util__linux.cc14
-rw-r--r--www/ungoogled-chromium/files/patch-components_translate_core_common_translate__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_update__client_update__query__params.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_common_gpu_dawn__context__provider.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_host_host__display__client.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_host_host__display__client.h11
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_host_renderer__settings__creation.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_service_display__embedder_skia__output__surface__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_service_display__embedder_software__output__surface.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_service_display__embedder_software__output__surface.h20
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_service_display_skia__renderer.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h11
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_test_fake__display__client.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_test_fake__display__client.h11
-rw-r--r--www/ungoogled-chromium/files/patch-components_viz_test_mock__display__client.h11
-rw-r--r--www/ungoogled-chromium/files/patch-content_app_content__main.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_app_content__main__runner__impl.cc120
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_BUILD.gn16
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_browser__child__process__host__impl.cc10
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_browser__main__loop.cc37
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_child__process__launcher__helper__linux.cc80
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_compositor_viz__process__transport__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_devtools_protocol_system__info__handler.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_download_download__manager__impl.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_font__access_font__enumeration__data__source.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_gpu_compositor__util.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_gpu_gpu__process__host.cc28
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_media_frameless__media__interface__proxy.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_media_frameless__media__interface__proxy.h20
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_media_media__interface__proxy.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_media_media__keys__listener__manager__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_renderer__host_delegated__frame__host.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__message__filter.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__message__filter.h18
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__process__host__impl.cc55
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__process__host__impl.h38
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__view__host__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__widget__host__view__aura.h11
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_sandbox__host__linux.cc18
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h47
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_utility__process__host__receiver__bindings.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_utility__sandbox__delegate.cc24
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_v8__snapshot__files.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_web__contents_web__contents__view__aura.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_webui_web__ui__main__frame__observer.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_webui_web__ui__main__frame__observer.h20
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc70
-rw-r--r--www/ungoogled-chromium/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h25
-rw-r--r--www/ungoogled-chromium/files/patch-content_child_child__process.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_common_BUILD.gn12
-rw-r--r--www/ungoogled-chromium/files/patch-content_common_font__list__unittest.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_common_mojo__core__library__support.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_common_user__agent.cc37
-rw-r--r--www/ungoogled-chromium/files/patch-content_gpu_gpu__main.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-content_gpu_gpu__sandbox__hook__linux.cc70
-rw-r--r--www/ungoogled-chromium/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h25
-rw-r--r--www/ungoogled-chromium/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc23
-rw-r--r--www/ungoogled-chromium/files/patch-content_public_browser_render__process__host.h20
-rw-r--r--www/ungoogled-chromium/files/patch-content_public_browser_zygote__host_zygote__host__linux.h16
-rw-r--r--www/ungoogled-chromium/files/patch-content_public_common_common__param__traits__macros.h11
-rw-r--r--www/ungoogled-chromium/files/patch-content_public_common_content__features.cc50
-rw-r--r--www/ungoogled-chromium/files/patch-content_public_common_content__features.h11
-rw-r--r--www/ungoogled-chromium/files/patch-content_public_common_content__switches.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-content_public_common_content__switches.h19
-rw-r--r--www/ungoogled-chromium/files/patch-content_public_common_zygote_features.gni8
-rw-r--r--www/ungoogled-chromium/files/patch-content_public_test_mock__render__process__host.h11
-rw-r--r--www/ungoogled-chromium/files/patch-content_public_test_mock__render__thread.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_renderer_media_render__media__client.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_renderer_render__process__impl.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-content_renderer_render__thread__impl.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-content_renderer_renderer__blink__platform__impl.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-content_renderer_renderer__blink__platform__impl.h38
-rw-r--r--www/ungoogled-chromium/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc18
-rw-r--r--www/ungoogled-chromium/files/patch-content_shell_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-content_shell_app_shell__main__delegate.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-content_shell_browser_shell__browser__main__parts.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-content_shell_browser_shell__paths.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-content_shell_utility_shell__content__utility__client.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-content_test_BUILD.gn20
-rw-r--r--www/ungoogled-chromium/files/patch-content_utility_services.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.cc37
-rw-r--r--www/ungoogled-chromium/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.h14
-rw-r--r--www/ungoogled-chromium/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h24
-rw-r--r--www/ungoogled-chromium/files/patch-content_utility_utility__main.cc78
-rw-r--r--www/ungoogled-chromium/files/patch-content_zygote_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-content_zygote_zygote__linux.cc15
-rw-r--r--www/ungoogled-chromium/files/patch-content_zygote_zygote__main__linux.cc64
-rw-r--r--www/ungoogled-chromium/files/patch-device_bluetooth_bluetooth__adapter.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-device_bluetooth_cast__bluetooth.gni9
-rw-r--r--www/ungoogled-chromium/files/patch-device_gamepad_gamepad__provider.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-device_gamepad_hid__writer__linux.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_browser_api_messaging_message__service.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_browser_browser__context__keyed__service__factories.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_browser_extension__prefs.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_browser_pref__names.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_browser_pref__names.h11
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_common_api___permission__features.json29
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_common_api_runtime.json12
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_common_command.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_common_features_feature.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_renderer_bindings_api__binding__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_renderer_bindings_argument__spec.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_shell_app_shell__main__delegate.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_shell_browser_shell__browser__main__parts.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_shell_browser_shell__extensions__api__client.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-extensions_shell_browser_shell__extensions__api__client.h20
-rw-r--r--www/ungoogled-chromium/files/patch-google__apis_gcm_engine_heartbeat__manager.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_angle__vulkan__image__backing__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_external__vk__image__backing.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_gl__texture__image__backing.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_gl__texture__image__backing__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_shared__image__factory.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_wrapped__sk__image__backing__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_command__buffer_service_webgpu__decoder__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__gpu__memory__buffer__unittest.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__oes__egl__image__unittest.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__test__utils.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__test__utils.h11
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_config_gpu__control__list.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_config_gpu__test__config.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h11
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_ipc_service_gpu__init.cc65
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_ipc_service_x__util.h16
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_vulkan_generate__bindings.py11
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__device__queue.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__device__queue.h11
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__function__pointers.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__function__pointers.h27
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__image.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__image.h20
-rw-r--r--www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-headless_lib_browser_headless__browser__main__parts.h11
-rw-r--r--www/ungoogled-chromium/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-headless_lib_browser_headless__content__browser__client.h11
-rw-r--r--www/ungoogled-chromium/files/patch-headless_lib_browser_headless__request__context__manager.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-headless_lib_browser_headless__web__contents__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-headless_lib_headless__content__main__delegate.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ipc_ipc__channel.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ipc_ipc__channel__common.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ipc_ipc__channel__mojo.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ipc_ipc__message__utils.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ipc_ipc__message__utils.h11
-rw-r--r--www/ungoogled-chromium/files/patch-media_BUILD.gn12
-rw-r--r--www/ungoogled-chromium/files/patch-media_audio_BUILD.gn24
-rw-r--r--www/ungoogled-chromium/files/patch-media_audio_alsa_audio__manager__alsa.cc54
-rw-r--r--www/ungoogled-chromium/files/patch-media_audio_audio__features.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_audio_audio__input__device.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_audio_audio__output__proxy__unittest.cc14
-rw-r--r--www/ungoogled-chromium/files/patch-media_audio_sndio_audio__manager__sndio.cc184
-rw-r--r--www/ungoogled-chromium/files/patch-media_audio_sndio_audio__manager__sndio.h69
-rw-r--r--www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__input.cc204
-rw-r--r--www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__input.h94
-rw-r--r--www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__output.cc190
-rw-r--r--www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__output.h91
-rw-r--r--www/ungoogled-chromium/files/patch-media_base_audio__latency.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_base_media__switches.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-media_base_media__switches.h20
-rw-r--r--www/ungoogled-chromium/files/patch-media_base_scopedfd__helper.h11
-rw-r--r--www/ungoogled-chromium/files/patch-media_base_supported__types.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_base_user__input__monitor__unittest.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-media_base_vector__math.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_base_video__frame.cc74
-rw-r--r--www/ungoogled-chromium/files/patch-media_base_video__frame.h47
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_create__video__capture__device__factory.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_fake__video__capture__device__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_file__video__capture__device__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_linux_fake__v4l2__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_linux_fake__v4l2__impl.h25
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc44
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__delegate.h15
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__device.h11
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__device__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__device__impl.h11
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc45
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_linux_video__capture__device__factory__linux.h11
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_capture_video_video__capture__device__client.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_cdm_cdm__paths__unittest.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_gpu_buffer__validation.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-media_gpu_chromeos_video__decoder__pipeline.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-media_gpu_gpu__video__encode__accelerator__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.cc26
-rw-r--r--www/ungoogled-chromium/files/patch-media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.h16
-rw-r--r--www/ungoogled-chromium/files/patch-media_gpu_vaapi_vaapi__video__decoder.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_gpu_vaapi_vaapi__wrapper.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_media__options.gni30
-rw-r--r--www/ungoogled-chromium/files/patch-media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.h11
-rw-r--r--www/ungoogled-chromium/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_video_fake__gpu__memory__buffer.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-media_video_video__encode__accelerator__adapter.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-media_video_video__encode__accelerator__adapter__test.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_webrtc_audio__processor.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-media_webrtc_helpers__unittests.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-media_webrtc_webrtc__features.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-mojo_core_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-mojo_core_channel.cc14
-rw-r--r--www/ungoogled-chromium/files/patch-mojo_core_embedder_features.h11
-rw-r--r--www/ungoogled-chromium/files/patch-mojo_public_c_system_thunks.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-mojo_public_tools_bindings_mojom.gni19
-rw-r--r--www/ungoogled-chromium/files/patch-net_BUILD.gn83
-rw-r--r--www/ungoogled-chromium/files/patch-net_base_network__change__notifier.cc21
-rw-r--r--www/ungoogled-chromium/files/patch-net_base_network__change__notifier__posix.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-net_base_network__interfaces__posix.h11
-rw-r--r--www/ungoogled-chromium/files/patch-net_base_sockaddr__util__posix.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-net_base_sockaddr__util__posix__unittest.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-net_cert_cert__verifier.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-net_cert_cert__verify__proc.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-net_cert_cert__verify__proc.h11
-rw-r--r--www/ungoogled-chromium/files/patch-net_cert_cert__verify__proc__unittest.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-net_cert_test__root__certs__unittest.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-net_disk__cache_blockfile_disk__format.h12
-rw-r--r--www/ungoogled-chromium/files/patch-net_disk__cache_simple_simple__file__tracker.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-net_dns_BUILD.gn31
-rw-r--r--www/ungoogled-chromium/files/patch-net_dns_address__sorter__posix.cc10
-rw-r--r--www/ungoogled-chromium/files/patch-net_dns_dns__config__service__posix.cc26
-rw-r--r--www/ungoogled-chromium/files/patch-net_dns_dns__reloader.cc18
-rw-r--r--www/ungoogled-chromium/files/patch-net_dns_dns__reloader.h11
-rw-r--r--www/ungoogled-chromium/files/patch-net_dns_dns__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-net_dns_host__resolver__manager.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-net_dns_host__resolver__proc.cc22
-rw-r--r--www/ungoogled-chromium/files/patch-net_dns_public_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-net_dns_public_resolv__reader.h10
-rw-r--r--www/ungoogled-chromium/files/patch-net_dns_public_scoped__res__state.h10
-rw-r--r--www/ungoogled-chromium/files/patch-net_http_http__auth__gssapi__posix.cc14
-rw-r--r--www/ungoogled-chromium/files/patch-net_http_http__auth__gssapi__posix.h12
-rw-r--r--www/ungoogled-chromium/files/patch-net_http_http__network__session.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-net_proxy__resolution_proxy__config__service.cc35
-rw-r--r--www/ungoogled-chromium/files/patch-net_proxy__resolution_proxy__config__service__linux.cc40
-rw-r--r--www/ungoogled-chromium/files/patch-net_socket_socket__posix.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-net_socket_socks5__client__socket.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-net_socket_tcp__socket__posix.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-net_socket_udp__socket__posix.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-net_socket_udp__socket__unittest.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-net_third__party_quiche_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-net_tools_cert__verify__tool_cert__verify__comparision__tool.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-net_traffic__annotation_network__traffic__annotation.h20
-rw-r--r--www/ungoogled-chromium/files/patch-net_url__request_url__request__context.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-net_url__request_url__request__context.h11
-rw-r--r--www/ungoogled-chromium/files/patch-net_url__request_url__request__context__builder.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-pdf_pdfium_pdfium__engine.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-printing_mojom_printing__context__mojom__traits.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-printing_mojom_printing__context__mojom__traits.h11
-rw-r--r--www/ungoogled-chromium/files/patch-printing_print__settings.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-printing_print__settings.h38
-rw-r--r--www/ungoogled-chromium/files/patch-printing_print__settings__conversion.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-printing_printing__context__linux.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.cc51
-rw-r--r--www/ungoogled-chromium/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.h16
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_base_chromoting__event.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_base_host__settings.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_client_display_sys__opengl.h11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_codec_webrtc__video__encoder__vpx.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_base_switches.cc18
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_base_switches.h18
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_chromoting__host.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_chromoting__host__context.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_chromoting__host__services__client.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_evaluate__capability.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_heartbeat__sender.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_host__attributes.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_host__details.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_host__main.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_ipc__constants.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc47
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_me2me__desktop__environment.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_policy__watcher.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_remote__open__url_remote__open__url__client.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_remote__open__url_remote__open__url__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_remote__open__url_url__forwarder__configurator.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_remoting__me2me__host.cc144
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_setup_start__host__main.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_webauthn_remote__webauthn__caller__security__utils.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_host_webauthn_remote__webauthn__extension__notifier.cc28
-rw-r--r--www/ungoogled-chromium/files/patch-remoting_resources_remoting__strings.grd20
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_features.gni11
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_linux_BUILD.gn58
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_linux_services_init__process__reaper.cc15
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_linux_services_libc__interceptor.cc21
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_policy_BUILD.gn39
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_policy_features.cc14
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_policy_freebsd_sandbox__freebsd.cc256
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_policy_freebsd_sandbox__freebsd.h281
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_policy_mojom_sandbox.mojom15
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_policy_openbsd_sandbox__openbsd.cc416
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_policy_openbsd_sandbox__openbsd.h285
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_policy_sandbox.cc22
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_policy_sandbox.h22
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_policy_sandbox__type.cc70
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_policy_switches.cc22
-rw-r--r--www/ungoogled-chromium/files/patch-sandbox_policy_switches.h21
-rw-r--r--www/ungoogled-chromium/files/patch-services_audio_audio__sandbox__hook__linux.cc31
-rw-r--r--www/ungoogled-chromium/files/patch-services_audio_audio__sandbox__hook__linux.h14
-rw-r--r--www/ungoogled-chromium/files/patch-services_cert__verifier_cert__verifier__creation.cc28
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_compute__pressure_cpu__probe.cc10
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_geolocation_location__arbitrator.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_hid_BUILD.gn28
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__fido.cc200
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__fido.h60
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__freebsd.cc245
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__freebsd.h70
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_hid_hid__service.cc24
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_hid_hid__service__fido.cc330
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_hid_hid__service__fido.h46
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_hid_hid__service__freebsd.cc400
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_hid_hid__service__freebsd.h52
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_serial_BUILD.gn16
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_serial_serial__device__enumerator.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_serial_serial__io__handler__posix.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc14
-rw-r--r--www/ungoogled-chromium/files/patch-services_device_usb_BUILD.gn38
-rw-r--r--www/ungoogled-chromium/files/patch-services_network_BUILD.gn10
-rw-r--r--www/ungoogled-chromium/files/patch-services_network_network__sandbox__hook__linux.cc26
-rw-r--r--www/ungoogled-chromium/files/patch-services_network_network__sandbox__hook__linux.h14
-rw-r--r--www/ungoogled-chromium/files/patch-services_network_network__service.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc65
-rw-r--r--www/ungoogled-chromium/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_BUILD.gn16
-rw-r--r--www/ungoogled-chromium/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h20
-rw-r--r--www/ungoogled-chromium/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__bsd.cc61
-rw-r--r--www/ungoogled-chromium/files/patch-services_service__manager_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-services_video__capture_broadcasting__receiver.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-services_video__capture_public_mojom_video__capture__service.mojom15
-rw-r--r--www/ungoogled-chromium/files/patch-skia_ext_SkMemory__new__handler.cpp11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_base_config.h21
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_base_internal_sysinfo.cc23
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_debugging_internal_elf__mem__image.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_time_internal_cctz_src_time__zone__format.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_BUILD.gn47
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_src_common_platform.h19
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_src_common_vulkan_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h16
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp90
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp35
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp60
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_Display.cpp47
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_formatutils.cpp11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_renderer_gl_glx_FunctionsGLX.cpp15
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_src_third__party_volk_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_angle_util_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_common_privacy__budget_active__sampling.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_public_platform_platform.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_public_platform_web__vector.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_build_scripts_run__with__pythonpath.py10
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_controller_blink__initializer.cc35
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc21
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h47
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_execution__context_navigator__base.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_exported_web__view__impl.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_frame_web__frame__test.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_layout_layout__view.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_media_audio_audio__device__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_media_audio_audio__renderer__mixer__manager__test.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_webgl_webgl__rendering__context__base.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_webgl_webgl__webcodecs__video__frame.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h47
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__platform__data.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_graphics_begin__frame__provider.cc15
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json562
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_scheduler_common_thread.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_widget_compositing_categorized__worker__pool.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_wtf_math__extras.h23
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc37
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_boringssl_BUILD.generated.gni18
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_boringssl_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_cpu__aarch64__openbsd.c60
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_fipsmodule_rand_internal.h12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_rand__extra_arc4random.c36
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_refcount__c11.c12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_boringssl_src_include_openssl_base.h14
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_boringssl_src_include_openssl_thread.h10
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_brotli_common_platform.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_client_BUILD.gn16
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc43
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_minidump_minidump__misc__info__writer.cc13
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h22
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc33
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_crc32c_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_dawn_include_dawn_native_VulkanBackend.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_dawn_src_dawn_common_Platform.h14
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_dawn_src_dawn_native_vulkan_BackendVk.cpp11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_BUILD.gn10
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_arm64_config.h740
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_arm64_config__components.h2066
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.asm723
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.h740
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config__components.h2066
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.asm725
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.h742
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config__components.h2086
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_libavcodec_x86_cabac.h12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_libavutil_cpu.c14
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_libavutil_mem.c12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ffmpeg_libavutil_random__seed.c14
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_fontconfig_include_config.h89
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_fontconfig_src_src_fccompat.c13
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ipcz_src_reference__drivers_random.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ipcz_src_standalone_base_logging.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_leveldatabase_env__chromium.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_libevent_event.h14
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_libsync_src_include_sync_sync.h12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_libsync_src_sync.c25
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_libusb_BUILD.gn46
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_libusb_src_libusb_core.c11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_libxml_linux_config.h12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_libxml_src_dict.c41
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_lzma__sdk_C_CpuArch.c44
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_maldoca_BUILD.gn13
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_maldoca_src_maldoca_base_get__runfiles__dir.cc32
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_maldoca_src_maldoca_service_common_process__doc__wrapper.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_nasm_BUILD.gn16
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_nasm_config_config-linux.h111
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_node_node.py11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_opus_BUILD.gn10
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_pdfium_core_fxge_cfx__fontmapper.cpp11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_pdfium_core_fxge_linux_fx__linux__impl.cpp23
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp22
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_pdfium_xfa_fxfa_parser_cxfa__timezoneprovider.cpp41
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_include_perfetto_base_build__config.h66
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h22
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_include_perfetto_base_time.h20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h15
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_protos_perfetto_trace_ftrace_v4l2.proto56
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_src_base_event__fd.cc22
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_src_base_periodic__task.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_src_base_string__utils.cc15
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_src_base_subprocess__posix.cc22
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_src_base_test_vm__test__utils.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_src_base_thread__task__runner.cc14
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_src_base_unix__socket.cc26
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_protobuf_src_google_protobuf_arenastring.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_ruy_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_skia_src_core_SkCpu.cpp45
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_skia_src_ports_SkOSFile__posix.cpp11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_sqlite_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_sqlite_src_amalgamation_sqlite3.c23
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_swiftshader_src_Reactor_Debug.cpp11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_swiftshader_src_System_Configurator.cpp12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_swiftshader_src_Vulkan_VkSemaphoreExternalLinux.hpp20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_swiftshader_src_WSI_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_swiftshader_src_WSI_libXCB.cpp20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_swiftshader_third__party_llvm-10.0_configs_linux_include_llvm_Config_config.h174
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h47
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_swiftshader_third__party_marl_src_memory.cpp11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_swiftshader_third__party_marl_src_thread.cpp11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_test__fonts_fontconfig_BUILD.gn15
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_test__fonts_fontconfig_fontconfig__util__linux.cc27
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_tflite_features.gni11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_unrar_src_crypt.cpp11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_vulkan-deps_vulkan-loader_src_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_get__environment.c20
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_get__environment.h16
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_stack__allocation.h16
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_vk__loader__platform.h45
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__loader__platform.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__mem__alloc.h12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_vulkan__memory__allocator_include_vk__mem__alloc.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_wayland_features.gni17
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_webrtc_BUILD.gn12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_webrtc_modules_desktop__capture_linux_x11_x__server__pixel__buffer.cc15
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_webrtc_rtc__base_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_webrtc_rtc__base_byte__order.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_webrtc_rtc__base_ip__address.cc12
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_webrtc_rtc__base_network.cc15
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc65
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc40
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_webrtc_rtc__base_third__party_sigslot_sigslot.h23
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_webrtc_system__wrappers_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-third__party_zlib_BUILD.gn29
-rw-r--r--www/ungoogled-chromium/files/patch-tools_generate__stubs_rules.gni10
-rw-r--r--www/ungoogled-chromium/files/patch-tools_gn_build_build__linux.ninja.template11
-rw-r--r--www/ungoogled-chromium/files/patch-tools_gn_build_gen.py34
-rw-r--r--www/ungoogled-chromium/files/patch-tools_gn_src_base_files_file__posix.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-tools_gn_src_gn_version.h15
-rw-r--r--www/ungoogled-chromium/files/patch-tools_gn_src_util_exe__path.cc90
-rw-r--r--www/ungoogled-chromium/files/patch-tools_json__schema__compiler_cpp__bundle__generator.py11
-rw-r--r--www/ungoogled-chromium/files/patch-tools_json__schema__compiler_feature__compiler.py11
-rw-r--r--www/ungoogled-chromium/files/patch-tools_memory_partition__allocator_inspect__utils.h11
-rw-r--r--www/ungoogled-chromium/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn20
-rw-r--r--www/ungoogled-chromium/files/patch-tools_protoc__wrapper_protoc__wrapper.py24
-rw-r--r--www/ungoogled-chromium/files/patch-tools_variations_fieldtrial__to__struct.py11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_aura_screen__ozone.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_aura_screen__ozone.h20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_clipboard_clipboard__constants.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_clipboard_clipboard__constants.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_cursor_cursor__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_cursor_cursor__factory.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_dragdrop_os__exchange__data__provider__non__backed.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_ime_dummy__text__input__client.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_ime_dummy__text__input__client.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_ime_fake__text__input__client.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_ime_fake__text__input__client.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_ime_linux_linux__input__method__context__factory.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_ime_text__input__client.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_resource_resource__bundle.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_test_skia__gold__pixel__diff.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_ui__base__features.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_webui_web__ui__util.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_x_x11__cursor__factory.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_x_x11__cursor__factory.h20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_x_x11__cursor__loader.cc41
-rw-r--r--www/ungoogled-chromium/files/patch-ui_base_x_x11__shm__image__pool.cc53
-rw-r--r--www/ungoogled-chromium/files/patch-ui_color_color__id.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_compositor_compositor.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_compositor_compositor.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_compositor_compositor__observer.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_display_screen.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_display_screen.h20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_events_devices_x11_device__data__manager__x11.cc10
-rw-r--r--www/ungoogled-chromium/files/patch-ui_events_event.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_events_event__switches.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_events_event__switches.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_events_keycodes_dom_keycode__converter.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-ui_events_keycodes_dom_keycode__converter.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_BUILD.gn11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_canvas__skia.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_codec_png__codec.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_font__fallback__linux.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_font__list.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_font__render__params.h20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_font__render__params__linux.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_font__util.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_gpu__memory__buffer.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_gpu__memory__buffer.h20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h44
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc25
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.cc34
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.h36
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_native__pixmap__handle.cc62
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_native__pixmap__handle.h38
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_native__widget__types.h20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_platform__font__skia.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_render__text__api__fuzzer.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_render__text__fuzzer.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_switches.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_switches.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_x_generated__protos_dri3.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_x_generated__protos_shm.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gfx_x_xlib__support.cc21
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gl_BUILD.gn35
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gl_generate__bindings.py12
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gl_gl__bindings__api__autogen__glx.h10
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gl_gl__bindings__autogen__glx.cc61
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gl_gl__bindings__autogen__glx.h43
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gl_gl__context.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gl_gl__features.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gl_gl__image__glx__native__pixmap.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gl_sync__control__vsync__provider.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gl_sync__control__vsync__provider.h20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gtk_gtk__compat.cc50
-rw-r--r--www/ungoogled-chromium/files/patch-ui_gtk_printing_print__dialog__gtk.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_message__center_views_message__popup__view.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_native__theme_native__theme.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_native__theme_native__theme__base.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_ozone_common_egl__util.cc14
-rw-r--r--www/ungoogled-chromium/files/patch-ui_ozone_platform_headless_headless__surface__factory.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_ozone_platform_headless_ozone__platform__headless.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_ozone_platform_headless_vulkan__implementation__headless.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_ozone_platform_wayland_gpu_vulkan__implementation__wayland.cc14
-rw-r--r--www/ungoogled-chromium/files/patch-ui_ozone_platform_x11_ozone__platform__x11.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_ozone_platform_x11_vulkan__implementation__x11.cc14
-rw-r--r--www/ungoogled-chromium/files/patch-ui_ozone_public_ozone__platform.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_platform__window_platform__window__init__properties.h20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_strings_app__locale__settings.grd11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_strings_translations_app__locale__settings__bn.xtb11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_strings_translations_app__locale__settings__ja.xtb11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_strings_translations_app__locale__settings__ko.xtb11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_strings_translations_app__locale__settings__ml.xtb11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_strings_translations_app__locale__settings__th.xtb11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_strings_translations_app__locale__settings__zh-CN.xtb11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_strings_translations_app__locale__settings__zh-TW.xtb11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_controls_prefix__selector.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_controls_prefix__selector.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_controls_textfield_textfield.cc64
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_controls_textfield_textfield.h20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_corewm_tooltip__aura.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_examples_widget__example.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_focus_focus__manager.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_style_platform__style.cc29
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_views__delegate.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_views__delegate.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_widget_desktop__aura_desktop__drag__drop__client__ozone.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_widget_desktop__aura_desktop__screen__ozone.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc38
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform__impl__interactive__uitest.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_widget_widget.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_widget_widget.h11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_window_custom__frame__view.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_window_dialog__delegate.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_views_window_frame__background.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-ui_webui_resources_js_cr.js14
-rw-r--r--www/ungoogled-chromium/files/patch-v8_BUILD.gn45
-rw-r--r--www/ungoogled-chromium/files/patch-v8_include_v8-internal.h11
-rw-r--r--www/ungoogled-chromium/files/patch-v8_include_v8config.h37
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_api_api.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_base_atomicops.h24
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_base_platform_platform-freebsd.cc32
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_base_platform_platform-openbsd.cc28
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_base_platform_platform-posix.cc53
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_base_sys-info.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_compiler_backend_ia32_instruction-selector-ia32.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_diagnostics_perf-jit.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_diagnostics_perf-jit.h11
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_sandbox_sandbox.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_trap-handler_handler-inside-posix.cc26
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_trap-handler_handler-inside-posix.h11
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_trap-handler_trap-handler.h11
-rw-r--r--www/ungoogled-chromium/files/patch-v8_src_wasm_baseline_ia32_liftoff-assembler-ia32.h101
-rw-r--r--www/ungoogled-chromium/files/patch-v8_tools_run.py11
-rw-r--r--www/ungoogled-chromium/files/patch-weblayer_browser_browser__main__parts__impl.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-weblayer_browser_content__browser__client__impl.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-weblayer_browser_content__browser__client__impl.h11
-rw-r--r--www/ungoogled-chromium/files/patch-weblayer_browser_system__network__context__manager.cc11
-rw-r--r--www/ungoogled-chromium/files/patch-weblayer_common_weblayer__paths.cc20
-rw-r--r--www/ungoogled-chromium/files/ungoogled-chromium.desktop.in11
-rw-r--r--www/ungoogled-chromium/files/ungoogled-chromium.in19
-rw-r--r--www/ungoogled-chromium/pkg-descr2
-rw-r--r--www/ungoogled-chromium/pkg-plist145
1112 files changed, 38541 insertions, 0 deletions
diff --git a/www/Makefile b/www/Makefile
index 33e3d5b45761..fa7369c33f50 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -2302,6 +2302,7 @@
SUBDIR += uchiwa
SUBDIR += ufdbguard
SUBDIR += ulfius
+ SUBDIR += ungoogled-chromium
SUBDIR += unit
SUBDIR += unit-java
SUBDIR += unit-perl
diff --git a/www/ungoogled-chromium/Makefile b/www/ungoogled-chromium/Makefile
new file mode 100644
index 000000000000..b60659369fbf
--- /dev/null
+++ b/www/ungoogled-chromium/Makefile
@@ -0,0 +1,372 @@
+PORTNAME= ungoogled-chromium
+PORTVERSION= 106.0.5249.91
+UGVERSION= ${DISTVERSION}-1
+CATEGORIES= www wayland
+MASTER_SITES= https://commondatastorage.googleapis.com/chromium-browser-official/ \
+ https://nerd.hu/distfiles/:external
+DISTFILES= chromium-${DISTVERSION}${EXTRACT_SUFX} \
+ ungoogled-chromium-${UGVERSION}.tar.gz:external
+
+MAINTAINER= chromium@FreeBSD.org
+COMMENT= Google web browser based on WebKit sans integration with Google
+WWW= https://github.com/ungoogled-software/ungoogled-chromium
+
+LICENSE= BSD3CLAUSE LGPL21 MPL11
+LICENSE_COMB= multi
+
+ONLY_FOR_ARCHS= aarch64 amd64 i386
+
+PATCH_DEPENDS= gpatch:devel/patch \
+ ${PYTHON_VERSION}:lang/python${PYTHON_SUFFIX}
+
+BUILD_DEPENDS= bash:shells/bash \
+ ${PYTHON_PKGNAMEPREFIX}Jinja2>0:devel/py-Jinja2@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}ply>0:devel/py-ply@${PY_FLAVOR} \
+ gperf:devel/gperf \
+ flock:sysutils/flock \
+ node:www/node \
+ xcb-proto>0:x11/xcb-proto \
+ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
+ ${LOCALBASE}/share/usbids/usb.ids:misc/usbids \
+ ${PYTHON_PKGNAMEPREFIX}html5lib>0:www/py-html5lib@${PY_FLAVOR} \
+ ${LOCALBASE}/include/va/va.h:multimedia/libva \
+ ${LOCALBASE}/libdata/pkgconfig/dri.pc:graphics/mesa-dri
+
+LIB_DEPENDS= libatk-bridge-2.0.so:accessibility/at-spi2-atk \
+ libatspi.so:accessibility/at-spi2-core \
+ libspeechd.so:accessibility/speech-dispatcher \
+ libsnappy.so:archivers/snappy \
+ libFLAC.so:audio/flac \
+ libopus.so:audio/opus \
+ libspeex.so:audio/speex \
+ libdbus-1.so:devel/dbus \
+ libdbus-glib-1.so:devel/dbus-glib \
+ libevent.so:devel/libevent \
+ libicuuc.so:devel/icu \
+ libjsoncpp.so:devel/jsoncpp \
+ libpci.so:devel/libpci \
+ libnspr4.so:devel/nspr \
+ libre2.so:devel/re2 \
+ libcairo.so:graphics/cairo \
+ libdrm.so:graphics/libdrm \
+ libexif.so:graphics/libexif \
+ libpng.so:graphics/png \
+ libwebp.so:graphics/webp \
+ libopenh264.so:multimedia/openh264 \
+ libfreetype.so:print/freetype2 \
+ libharfbuzz.so:print/harfbuzz \
+ libharfbuzz-icu.so:print/harfbuzz-icu \
+ libgcrypt.so:security/libgcrypt \
+ libsecret-1.so:security/libsecret \
+ libnss3.so:security/nss \
+ libexpat.so:textproc/expat2 \
+ libfontconfig.so:x11-fonts/fontconfig \
+ libwayland-client.so:graphics/wayland \
+ libxkbcommon.so:x11/libxkbcommon \
+ libxshmfence.so:x11/libxshmfence
+
+RUN_DEPENDS= xdg-open:devel/xdg-utils \
+ noto-basic>0:x11-fonts/noto-basic
+
+USES= bison compiler:c++17-lang cpe desktop-file-utils gl gnome iconv jpeg \
+ localbase:ldflags ninja perl5 pkgconfig python:3.7+,build shebangfix \
+ tar:xz xorg
+
+CPE_VENDOR= google
+CPE_PRODUCT= chrome
+USE_GL= gbm gl
+USE_GNOME= atk dconf gdkpixbuf2 glib20 gtk30 libxml2 libxslt
+USE_LDCONFIG= ${DATADIR}
+USE_PERL5= build
+USE_XORG= x11 xcb xcomposite xcursor xext xdamage xfixes xi \
+ xorgproto xrandr xrender xscrnsaver xtst
+SHEBANG_FILES= chrome/tools/build/linux/chrome-wrapper buildtools/linux64/clang-format
+
+MAKE_ARGS= -C out/${BUILDTYPE}
+ALL_TARGET= chrome
+
+BINARY_ALIAS= python3=${PYTHON_CMD}
+
+# TODO bz@ : install libwidevinecdm.so (see third_party/widevine/cdm/BUILD.gn)
+#
+# Run "./out/${BUILDTYPE}/gn args out/${BUILDTYPE} --list" for all variables.
+# Some parts don't have use_system_* flag, and can be turned on/off by using
+# replace_gn_files.py script, some parts just turned on/off for target host
+# OS "target_os == is_bsd", like libusb, libpci.
+GN_ARGS+= fatal_linker_warnings=false \
+ icu_use_data_file=false \
+ is_clang=true \
+ optimize_webui=true \
+ toolkit_views=true \
+ use_allocator="none" \
+ use_allocator_shim=false \
+ use_aura=true \
+ use_custom_libcxx=false \
+ use_gnome_keyring=false \
+ use_lld=true \
+ use_sysroot=false \
+ use_system_freetype=false \
+ use_system_harfbuzz=true \
+ use_system_libjpeg=true \
+ use_system_libwayland=true \
+ use_system_wayland_scanner=true \
+ use_udev=false \
+ extra_cxxflags="${CXXFLAGS}" \
+ extra_ldflags="${LDFLAGS}"
+
+# sync with flags.gni
+GN_ARGS+= build_with_tflite_lib=false \
+ chrome_pgo_phase=0 \
+ clang_use_chrome_plugins=false \
+ disable_fieldtrial_testing_config=true \
+ enable_hangout_services_extension=false \
+ enable_js_type_check=false \
+ enable_mdns=false \
+ enable_mse_mpeg2ts_stream_parser=true \
+ enable_nacl=false \
+ enable_reading_list=false \
+ enable_remoting=false \
+ enable_reporting=false \
+ enable_service_discovery=false \
+ exclude_unwind_tables=true \
+ google_api_key="" \
+ google_default_client_id="" \
+ google_default_client_secret="" \
+ safe_browsing_mode=0 \
+ treat_warnings_as_errors=false \
+ use_official_google_api_keys=false \
+ use_unofficial_version_number=false
+
+# TODO: investigate building with these options:
+# use_system_minigbm
+GN_BOOTSTRAP_FLAGS= --no-clean --no-rebuild --skip-generate-buildfiles
+
+SUB_FILES= ungoogled-chromium.desktop ungoogled-chromium
+SUB_LIST+= COMMENT="${COMMENT}"
+
+OPTIONS_DEFINE= CODECS CUPS DEBUG DRIVER KERBEROS LTO TEST
+OPTIONS_DEFAULT= CODECS CUPS DRIVER KERBEROS 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
+DRIVER_DESC= Install chromedriver
+HEIMDAL_BASE_DESC= Heimdal Kerberos (base)
+HEIMDAL_DESC= Heimdal Kerberos (security/heimdal)
+MIT_DESC= MIT Kerberos (security/krb5)
+
+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+=ffmpeg_branding="Chrome" \
+ GN_ARGS+=proprietary_codecs=true
+CODECS_VARS_OFF= GN_ARGS+=ffmpeg_branding="Chromium" \
+ GN_ARGS+=proprietary_codecs=false
+
+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_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_ARGS+=blink_symbol_level=0 \
+ GN_ARGS+=is_debug=false \
+ GN_ARGS+=is_official_build=true \
+ GN_ARGS+=symbol_level=0 \
+ WANTSPACE="14 GB"
+
+DRIVER_MAKE_ARGS= chromedriver
+
+HEIMDAL_LIB_DEPENDS= libkrb.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= libkrb.so.3:security/krb5
+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
+
+.include "Makefile.tests"
+TEST_DISTFILES= chromium-${DISTVERSION}-testdata${EXTRACT_SUFX} \
+ test_fonts-336e775eec536b2d785cc80eff6ac39051931286.tar.gz:external
+TEST_ALL_TARGET= ${TEST_TARGETS}
+
+.include <bsd.port.options.mk>
+.include <bsd.port.pre.mk>
+
+.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} != 130
+LLVM_DEFAULT= 13
+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
+
+# swiftshader/lib/{libEGL.so,libGLESv2.so} is x86 only
+.if ${ARCH} == aarch64
+PLIST_SUB+= NOT_AARCH64="@comment "
+.else
+PLIST_SUB+= NOT_AARCH64=""
+.endif
+
+# 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
+
+WRKSRC= ${WRKDIR}/chromium-${DISTVERSION}
+
+pre-everything::
+ @${ECHO_MSG}
+ @${ECHO_MSG} "To build Ungoogled Chromium, you should have around 2GB of memory"
+ @${ECHO_MSG} "and around ${WANTSPACE} of free disk space."
+ @${ECHO_MSG}
+
+post-extract-TEST-on:
+ @${MKDIR} ${WRKSRC}/third_party/test_fonts/test_fonts
+ @${MV} ${WRKDIR}/test_fonts ${WRKSRC}/third_party/test_fonts/
+
+pre-patch:
+ cd ${WRKDIR}/ungoogled-chromium-${UGVERSION} && ${PYTHON_CMD} \
+ utils/prune_binaries.py ${WRKSRC} pruning.list
+ cd ${WRKDIR}/ungoogled-chromium-${UGVERSION} && PATCH_BIN=gpatch \
+ ${PYTHON_CMD} utils/patches.py apply ${WRKSRC} patches
+ cd ${WRKDIR}/ungoogled-chromium-${UGVERSION} && ${PYTHON_CMD} \
+ utils/domain_substitution.py apply -r domain_regex.list -f \
+ domain_substitution.list -c ${WRKSRC}/domsubcache.tar.gz ${WRKSRC}
+
+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 \
+ flac fontconfig freetype harfbuzz-ng icu libdrm libevent libpng \
+ libusb libwebp libxml libxslt openh264 opus snappy || ${FALSE}
+ # Chromium uses an unreleased version of FFmpeg, so configure it
+.for brand in Chrome Chromium
+ ${CP} -R \
+ ${WRKSRC}/third_party/ffmpeg/chromium/config/${brand}/linux/ \
+ ${WRKSRC}/third_party/ffmpeg/chromium/config/${brand}/freebsd
+.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 --args='${GN_ARGS}' out/${BUILDTYPE}
+
+ # 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
+
+do-install:
+ @${MKDIR} ${STAGEDIR}${DATADIR}
+ ${INSTALL_MAN} ${WRKSRC}/chrome/app/resources/manpage.1.in \
+ ${STAGEDIR}${MANPREFIX}/man/man1/ungoogled-chromium.1
+ @${SED} -i "" -e 's,\@\@PACKAGE\@\@,chromium,g;s,\@\@MENUNAME\@\@,Chromium Web Browser,g' \
+ ${STAGEDIR}${MANPREFIX}/man/man1/ungoogled-chromium.1
+ ${CP} ${WRKSRC}/chrome/app/theme/chromium/product_logo_22_mono.png ${WRKSRC}/chrome/app/theme/chromium/product_logo_22.png
+.for s in 22 24 48 64 128 256
+ @${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/${s}x${s}/apps
+ ${INSTALL_DATA} ${WRKSRC}/chrome/app/theme/chromium/product_logo_${s}.png \
+ ${STAGEDIR}${PREFIX}/share/icons/hicolor/${s}x${s}/apps/ungoogled-chromium.png
+.endfor
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/*.png ${STAGEDIR}${DATADIR}
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/*.pak ${STAGEDIR}${DATADIR}
+.for d in protoc mksnapshot
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/${d} ${STAGEDIR}${DATADIR}
+.endfor
+.for d in snapshot_blob.bin v8_context_snapshot.bin
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${d} ${STAGEDIR}${DATADIR}
+.endfor
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/chrome \
+ ${STAGEDIR}${DATADIR}/ungoogled-chromium
+ cd ${WRKSRC}/out/${BUILDTYPE} && \
+ ${COPYTREE_SHARE} "locales resources" ${STAGEDIR}${DATADIR}
+ @${MKDIR} ${STAGEDIR}${DESKTOPDIR}
+ ${INSTALL_DATA} ${WRKDIR}/ungoogled-chromium.desktop \
+ ${STAGEDIR}${DESKTOPDIR}
+ ${INSTALL_SCRIPT} ${WRKDIR}/ungoogled-chromium ${STAGEDIR}${PREFIX}/bin
+ ${INSTALL_SCRIPT} ${WRKSRC}/chrome/tools/build/linux/chrome-wrapper \
+ ${STAGEDIR}${DATADIR}
+
+ # ANGLE, EGL, Vk
+.for f in libEGL.so libGLESv2.so libVkICD_mock_icd.so
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/libvulkan.so.1 \
+ ${STAGEDIR}${DATADIR}/libvulkan.so
+.if ${BUILDTYPE} == Debug
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/libVkLayer_khronos_validation.so ${STAGEDIR}${DATADIR}
+.endif
+
+ # SwiftShader
+.if ${ARCH} != aarch64
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/libvk_swiftshader.so ${STAGEDIR}${DATADIR}
+.endif
+
+post-install-DEBUG-on:
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/*.so \
+ ${STAGEDIR}${DATADIR}
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/character_data_generator \
+ ${STAGEDIR}${DATADIR}
+
+post-install-DRIVER-on:
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/chromedriver \
+ ${STAGEDIR}${PREFIX}/bin/ungoogled-chromedriver
+
+do-test-TEST-on:
+.for t in ${TEST_TARGETS}
+ cd ${WRKSRC}/out/${BUILDTYPE} && ${SETENV} LC_ALL=en_US.UTF-8 \
+ ./${t} --gtest_filter=-${EXCLUDE_${t}:ts:} || ${TRUE}
+.endfor
+
+.include <bsd.port.post.mk>
diff --git a/www/ungoogled-chromium/Makefile.tests b/www/ungoogled-chromium/Makefile.tests
new file mode 100644
index 000000000000..a635e949f167
--- /dev/null
+++ b/www/ungoogled-chromium/Makefile.tests
@@ -0,0 +1,16 @@
+TEST_TARGETS= base_unittests \
+ blink_unittests \
+ chromedriver_unittests \
+ components_unittests \
+ content_unittests \
+ crypto_unittests \
+ gl_tests \
+ gpu_unittests \
+ headless_unittests \
+ media_unittests \
+ mojo_unittests \
+ net_unittests \
+ printing_unittests \
+ skia_unittests \
+ url_unittests \
+ wm_unittests
diff --git a/www/ungoogled-chromium/distinfo b/www/ungoogled-chromium/distinfo
new file mode 100644
index 000000000000..46a2a72cf840
--- /dev/null
+++ b/www/ungoogled-chromium/distinfo
@@ -0,0 +1,9 @@
+TIMESTAMP = 1664607238
+SHA256 (chromium-106.0.5249.91.tar.xz) = 5740496b406db5357e2dad131e1ed2cd1c5831732df7aea5f21036ece8e7549a
+SIZE (chromium-106.0.5249.91.tar.xz) = 1611228868
+SHA256 (ungoogled-chromium-106.0.5249.91-1.tar.gz) = 2f49d563a079fd50b68c898889c327f3b9f413ecad5b6c5030f96b932e6d0b30
+SIZE (ungoogled-chromium-106.0.5249.91-1.tar.gz) = 664907
+SHA256 (chromium-106.0.5249.91-testdata.tar.xz) = 3a72db5fadd4a370decac2c90d04b18c26054fd00aa099e1b0abad8c2ce95de7
+SIZE (chromium-106.0.5249.91-testdata.tar.xz) = 265399980
+SHA256 (test_fonts-336e775eec536b2d785cc80eff6ac39051931286.tar.gz) = a2ca2962daf482a8f943163541e1c73ba4b2694fabcd2510981f2db4eda493c8
+SIZE (test_fonts-336e775eec536b2d785cc80eff6ac39051931286.tar.gz) = 32624734
diff --git a/www/ungoogled-chromium/files/patch-BUILD.gn b/www/ungoogled-chromium/files/patch-BUILD.gn
new file mode 100644
index 000000000000..0508cd496d04
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-BUILD.gn
@@ -0,0 +1,80 @@
+--- BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ BUILD.gn
+@@ -53,7 +53,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)
+@@ -83,7 +83,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",
+@@ -441,7 +440,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",
+@@ -634,6 +633,15 @@ group("gn_all") {
+ deps += [ "//gpu/tools/compositor_model_bench" ]
+ }
+
++ 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:crash_inspector",
+@@ -682,7 +690,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)" ]
+ }
+
+@@ -1194,7 +1202,7 @@ if (!is_ios) {
+ 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)" ]
+ }
+@@ -1203,7 +1211,7 @@ if (!is_ios) {
+ 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)" ]
+ }
+
+@@ -1646,7 +1654,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/www/ungoogled-chromium/files/patch-apps_ui_views_app__window__frame__view.cc b/www/ungoogled-chromium/files/patch-apps_ui_views_app__window__frame__view.cc
new file mode 100644
index 000000000000..14f75eb0a3ae
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-apps_ui_views_app__window__frame__view.cc
@@ -0,0 +1,11 @@
+--- apps/ui/views/app_window_frame_view.cc.orig 2022-10-01 07:40:07 UTC
++++ apps/ui/views/app_window_frame_view.cc
+@@ -137,7 +137,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/www/ungoogled-chromium/files/patch-ash_display_mirror__window__controller.cc b/www/ungoogled-chromium/files/patch-ash_display_mirror__window__controller.cc
new file mode 100644
index 000000000000..a59bc463b2a5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-ash_display_mirror__window__controller.cc
@@ -0,0 +1,14 @@
+--- ash/display/mirror_window_controller.cc.orig 2022-10-01 07:40:07 UTC
++++ ash/display/mirror_window_controller.cc
+@@ -296,7 +296,11 @@ void MirrorWindowController::UpdateWindow(
+ return info.id() == iter->first;
+ }) == display_info_list.end()) {
+ 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/www/ungoogled-chromium/files/patch-base_BUILD.gn b/www/ungoogled-chromium/files/patch-base_BUILD.gn
new file mode 100644
index 000000000000..6744bd068762
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_BUILD.gn
@@ -0,0 +1,164 @@
+--- base/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ base/BUILD.gn
+@@ -162,7 +162,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"
+@@ -1031,7 +1031,7 @@ mixed_component("base") {
+ "timer/hi_res_timer_manager_posix.cc",
+ ]
+
+- if (!is_nacl && !is_apple) {
++ if (!is_nacl && !is_apple && !is_bsd) {
+ sources += [
+ "profiler/stack_copier_signal.cc",
+ "profiler/stack_copier_signal.h",
+@@ -1040,6 +1040,12 @@ mixed_component("base") {
+ "profiler/thread_delegate_posix.h",
+ ]
+ }
++
++ if (is_bsd) {
++ sources += [
++ "profiler/stack_sampler_posix.cc",
++ ]
++ }
+ }
+
+ if (is_win) {
+@@ -1541,11 +1547,23 @@ mixed_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",
++ ]
++ }
++
+ if (use_allocator_shim) {
+ sources += [
+ "allocator/allocator_shim.cc",
+@@ -1573,7 +1591,7 @@ mixed_component("base") {
+ ]
+ configs += [ "//base/allocator:mac_no_default_new_delete_symbols" ]
+ }
+- if (is_chromeos || is_linux) {
++ if (is_chromeos || (is_linux && !is_bsd)) {
+ sources += [
+ "allocator/allocator_shim_override_cpp_symbols.h",
+ "allocator/allocator_shim_override_glibc_weak_symbols.h",
+@@ -1629,7 +1647,7 @@ mixed_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" ]
+ }
+
+@@ -2211,6 +2229,42 @@ mixed_component("base") {
+ }
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "files/file_path_watcher_inotify.cc",
++ "files/file_util_linux.cc",
++ "files/scoped_file_linux.cc",
++ "process/memory_linux.cc",
++ "process/process_linux.cc",
++ "system/sys_info_linux.cc",
++ "process/process_iterator_linux.cc",
++ "process/process_metrics_linux.cc",
++ "process/process_handle_linux.cc"
++ ]
++ sources += [
++ "process/memory_stubs.cc",
++ "files/file_path_watcher_kqueue.cc",
++ "files/file_path_watcher_kqueue.h",
++ "files/file_path_watcher_bsd.cc",
++ ]
++ }
++
++ 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 -= [
+@@ -2310,7 +2364,7 @@ mixed_component("base") {
+ }
+
+ if (dep_libevent) {
+- deps += [ "//third_party/libevent" ]
++ public_deps += [ "//third_party/libevent" ]
+ }
+
+ if (use_libevent) {
+@@ -3545,7 +3599,7 @@ test("base_unittests") {
+ }
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [
+ "debug/proc_maps_linux_unittest.cc",
+ "files/scoped_file_linux_unittest.cc",
+@@ -3593,7 +3647,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_copier_signal_unittest.cc",
+ "profiler/thread_delegate_posix_unittest.cc",
+@@ -3603,7 +3657,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" ]
+ }
+
+@@ -3791,7 +3845,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/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_address__space__randomization.h b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_address__space__randomization.h
new file mode 100644
index 000000000000..bbdbf6a76c02
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_address__space__randomization.h
@@ -0,0 +1,20 @@
+--- base/allocator/partition_allocator/address_space_randomization.h.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/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) && !defined(OS_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/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_page__allocator.h b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_page__allocator.h
new file mode 100644
index 000000000000..49d3070a84cd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_page__allocator.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/page_allocator.h.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/page_allocator.h
+@@ -206,7 +206,7 @@ void DecommitAndZeroSystemPages(void* address, size_t
+ // 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/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_page__allocator__constants.h b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_page__allocator__constants.h
new file mode 100644
index 000000000000..c8db5e5a3584
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_page__allocator__constants.h
@@ -0,0 +1,38 @@
+--- base/allocator/partition_allocator/page_allocator_constants.h.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/page_allocator_constants.h
+@@ -25,7 +25,7 @@
+ // elimination.
+ #define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const))
+
+-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)
++#elif (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
+@@ -81,7 +81,7 @@ PageAllocationGranularityShift() {
+ return 14; // 16kB
+ #elif BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS)
+ return static_cast<size_t>(vm_page_shift);
+-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)
++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64)
+ // arm64 supports 4kb (shift = 12), 16kb (shift = 14), and 64kb (shift = 16)
+ // page sizes. Retrieve from or initialize cache.
+ size_t shift = page_characteristics.shift.load(std::memory_order_relaxed);
+@@ -102,7 +102,7 @@ PageAllocationGranularity() {
+ // This is literally equivalent to |1 << PageAllocationGranularityShift()|
+ // below, but was separated out for IS_APPLE to avoid << on a non-constexpr.
+ return vm_page_size;
+-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)
++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64)
+ // arm64 supports 4kb, 16kb, and 64kb page sizes. Retrieve from or
+ // initialize cache.
+ size_t size = page_characteristics.size.load(std::memory_order_relaxed);
+@@ -141,7 +141,7 @@ SystemPageShift() {
+ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR PA_ALWAYS_INLINE size_t
+ SystemPageSize() {
+ #if (BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS)) || \
+- (BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64))
++ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64))
+ // This is literally equivalent to |1 << SystemPageShift()| below, but was
+ // separated out for 64-bit IS_APPLE and arm64 on Linux to avoid << on a
+ // non-constexpr.
diff --git a/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
new file mode 100644
index 000000000000..7178749831fe
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
@@ -0,0 +1,16 @@
+--- base/allocator/partition_allocator/page_allocator_internals_posix.h.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/page_allocator_internals_posix.h
+@@ -347,8 +347,12 @@ bool TryRecommitSystemPagesInternal(
+
+ 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/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__address__space.cc b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__address__space.cc
new file mode 100644
index 000000000000..eb97978cde25
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__address__space.cc
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/partition_address_space.cc.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/partition_address_space.cc
+@@ -238,7 +238,7 @@ void PartitionAddressSpace::UninitConfigurablePoolForT
+ setup_.configurable_pool_ = 0;
+ }
+
+-#if BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64)
+
+ PageCharacteristics page_characteristics;
+
diff --git a/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc.cc b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc.cc
new file mode 100644
index 000000000000..3d4b7cced3c8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc.cc
@@ -0,0 +1,17 @@
+--- base/allocator/partition_allocator/partition_alloc.cc.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/partition_alloc.cc
+@@ -63,8 +63,14 @@ void PartitionAllocGlobalInit(OomFunction on_out_of_me
+ "maximum direct mapped allocation");
+
+ // Check that some of our zanier calculations worked out as expected.
++#if defined(__i386__) && defined(OS_FREEBSD)
++ // alignof(std::max_align_t) is only 4 on FreeBSD/i386
++ static_assert(internal::kSmallestBucket >= internal::kAlignment,
++ "generic smallest bucket");
++#else
+ static_assert(internal::kSmallestBucket == internal::kAlignment,
+ "generic smallest bucket");
++#endif
+ static_assert(internal::kMaxBucketed == 917504, "generic max bucketed");
+ STATIC_ASSERT_OR_PA_CHECK(
+ internal::MaxSystemPagesPerRegularSlotSpan() <= 16,
diff --git a/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__base_rand__util__posix.cc b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__base_rand__util__posix.cc
new file mode 100644
index 000000000000..bff3736161f6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__base_rand__util__posix.cc
@@ -0,0 +1,13 @@
+--- base/allocator/partition_allocator/partition_alloc_base/rand_util_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/partition_alloc_base/rand_util_posix.cc
+@@ -86,6 +86,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 the OS-specific mechanisms didn't work, fall through to reading from
diff --git a/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__internal__posix.h b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__internal__posix.h
new file mode 100644
index 000000000000..025d6762fd2f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__internal__posix.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/partition_alloc_base/threading/platform_thread_internal_posix.h.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/partition_alloc_base/threading/platform_thread_internal_posix.h
+@@ -10,7 +10,7 @@
+
+ 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/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__posix.cc b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__posix.cc
new file mode 100644
index 000000000000..3b22be9a746d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__posix.cc
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/partition_alloc_base/threading/platform_thread_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/partition_alloc_base/threading/platform_thread_posix.cc
+@@ -17,7 +17,7 @@
+ #include "base/allocator/partition_allocator/partition_alloc_base/threading/platform_thread_internal_posix.h"
+ #include "build/build_config.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/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__config.h b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__config.h
new file mode 100644
index 000000000000..bf7b17bdeace
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__config.h
@@ -0,0 +1,29 @@
+--- base/allocator/partition_allocator/partition_alloc_config.h.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/partition_alloc_config.h
+@@ -76,7 +76,7 @@ static_assert(sizeof(void*) != 8, "");
+
+ // POSIX is not only UNIX, e.g. macOS and other OSes. We do use Linux-specific
+ // features such as futex(2).
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ #define PA_HAS_LINUX_KERNEL
+ #endif
+
+@@ -195,7 +195,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.
+-#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #define PA_HAS_ATFORK_HANDLER
+ #endif
+
+@@ -235,7 +235,7 @@ constexpr bool kUseLazyCommit = false;
+ //
+ // Also enabled on ARM64 macOS, as the 16kiB pages on this platform lead to
+ // larger slot spans.
+-#if BUILDFLAG(IS_LINUX) || (BUILDFLAG(IS_MAC) && defined(ARCH_CPU_ARM64))
++#if BUILDFLAG(IS_LINUX) || (BUILDFLAG(IS_MAC) && defined(ARCH_CPU_ARM64)) || BUILDFLAG(IS_BSD)
+ #define PA_PREFER_SMALLER_SLOT_SPANS
+ #endif // BUILDFLAG(IS_LINUX) || (BUILDFLAG(IS_MAC) && defined(ARCH_CPU_ARM64))
+
diff --git a/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__constants.h b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__constants.h
new file mode 100644
index 000000000000..0ba2a5b4a10a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__alloc__constants.h
@@ -0,0 +1,20 @@
+--- base/allocator/partition_allocator/partition_alloc_constants.h.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/partition_alloc_constants.h
+@@ -91,7 +91,7 @@ PartitionPageShift() {
+ return 18; // 256 KiB
+ }
+ #elif (BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS)) || \
+- (BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64))
++ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64))
+ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR PA_ALWAYS_INLINE size_t
+ PartitionPageShift() {
+ return PageAllocationGranularityShift() + 2;
+@@ -270,7 +270,7 @@ constexpr size_t kNumPools = 3;
+ // Special-case Android and iOS, which incur test failures with larger
+ // GigaCage. Regardless, allocating >8GiB with malloc() on these platforms is
+ // unrealistic as of 2022.
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_BSD)
+ constexpr size_t kPoolMaxSize = 8 * kGiB;
+ #else
+ constexpr size_t kPoolMaxSize = 16 * kGiB;
diff --git a/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__page.h b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__page.h
new file mode 100644
index 000000000000..b395f9ec7f7d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__page.h
@@ -0,0 +1,29 @@
+--- base/allocator/partition_allocator/partition_page.h.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/partition_page.h
+@@ -131,13 +131,14 @@ struct SlotSpanMetadata {
+ PartitionBucket<thread_safe>* const bucket = nullptr;
+
+ // CHECK()ed in AllocNewSlotSpan().
+-#if defined(PA_HAS_64_BITS_POINTERS) && BUILDFLAG(IS_APPLE)
++#if (defined(PA_HAS_64_BITS_POINTERS) && BUILDFLAG(IS_APPLE)) || \
++ (BUILDFLAG(IS_FREEBSD) && defined(__i386__))
+ // System page size is not a constant on Apple OSes, but is either 4 or 16kiB
+ // (1 << 12 or 1 << 14), as checked in PartitionRoot::Init(). And
+ // PartitionPageSize() is 4 times the OS page size.
+ static constexpr size_t kMaxSlotsPerSlotSpan =
+ 4 * (1 << 14) / kSmallestBucket;
+-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)
++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64)
+ // System page size can be 4, 16, or 64 kiB on Linux on arm64. 64 kiB is
+ // currently (kMaxSlotsPerSlotSpanBits == 13) not supported by the code,
+ // so we use the 16 kiB maximum (64 kiB will crash).
+@@ -151,7 +152,9 @@ struct SlotSpanMetadata {
+ #endif // defined(PA_HAS_64_BITS_POINTERS) && BUILDFLAG(IS_APPLE)
+ // The maximum number of bits needed to cover all currently supported OSes.
+ static constexpr size_t kMaxSlotsPerSlotSpanBits = 13;
++#if !BUILDFLAG(IS_FREEBSD) && defined(__i386__)
+ static_assert(kMaxSlotsPerSlotSpan < (1 << kMaxSlotsPerSlotSpanBits), "");
++#endif
+
+ // |marked_full| isn't equivalent to being full. Slot span is marked as full
+ // iff it isn't on the active slot span list (or any other list).
diff --git a/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__root.cc b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__root.cc
new file mode 100644
index 000000000000..9e911ca9bc1b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_partition__root.cc
@@ -0,0 +1,38 @@
+--- base/allocator/partition_allocator/partition_root.cc.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/partition_root.cc
+@@ -33,7 +33,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
+
+@@ -230,7 +230,7 @@ void PartitionAllocMallocInitOnce() {
+ if (!g_global_init_called.compare_exchange_strong(expected, true))
+ 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.
+@@ -321,7 +321,7 @@ static size_t PartitionPurgeSlotSpan(
+ constexpr size_t kMaxSlotCount =
+ (PartitionPageSize() * kMaxPartitionPagesPerRegularSlotSpan) /
+ MaxPurgeableSlotSize();
+-#elif BUILDFLAG(IS_APPLE) || (BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64))
++#elif BUILDFLAG(IS_APPLE) || ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) && defined(ARCH_CPU_ARM64))
+ // It's better for slot_usage to be stack-allocated and fixed-size, which
+ // demands that its size be constexpr. On IS_APPLE and Linux on arm64,
+ // PartitionPageSize() is always SystemPageSize() << 2, so regardless of
+@@ -709,7 +709,7 @@ void PartitionRoot<thread_safe>::Init(PartitionOptions
+ // 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/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_spinning__mutex.cc b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_spinning__mutex.cc
new file mode 100644
index 000000000000..f99049492e24
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_spinning__mutex.cc
@@ -0,0 +1,47 @@
+--- base/allocator/partition_allocator/spinning_mutex.cc.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/spinning_mutex.cc
+@@ -18,7 +18,15 @@
+
+ #if defined(PA_HAS_LINUX_KERNEL)
+ #include <errno.h>
++#if defined(OS_OPENBSD)
++#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>
+ #endif // defined(PA_HAS_LINUX_KERNEL)
+@@ -107,8 +115,13 @@ 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);
++#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.
+@@ -120,8 +133,14 @@ void SpinningMutex::FutexWait() {
+
+ 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);
++#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/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_starscan_stack_stack.cc b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_starscan_stack_stack.cc
new file mode 100644
index 000000000000..79c8624b6350
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_allocator_partition__allocator_starscan_stack_stack.cc
@@ -0,0 +1,50 @@
+--- base/allocator/partition_allocator/starscan/stack/stack.cc.orig 2022-10-01 07:40:07 UTC
++++ base/allocator/partition_allocator/starscan/stack/stack.cc
+@@ -17,6 +17,10 @@
+ #include <pthread.h>
+ #endif
+
++#if defined(OS_BSD)
++#include <pthread_np.h>
++#endif
++
+ #if defined(LIBC_GLIBC)
+ extern "C" void* __libc_stack_end;
+ #endif
+@@ -47,6 +51,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/www/ungoogled-chromium/files/patch-base_atomicops.h b/www/ungoogled-chromium/files/patch-base_atomicops.h
new file mode 100644
index 000000000000..ed8ded9f1c96
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_atomicops.h
@@ -0,0 +1,14 @@
+--- base/atomicops.h.orig 2022-10-01 07:40:07 UTC
++++ base/atomicops.h
+@@ -56,7 +56,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/www/ungoogled-chromium/files/patch-base_base__paths__posix.cc b/www/ungoogled-chromium/files/patch-base_base__paths__posix.cc
new file mode 100644
index 000000000000..091857f7db2a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_base__paths__posix.cc
@@ -0,0 +1,98 @@
+--- base/base_paths_posix.cc.orig 2022-10-01 07:40:07 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"
+@@ -25,9 +26,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
+@@ -68,13 +73,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, 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/ungoogled-chromium/ungoogled-chromium");
++ return true;
++#if !BUILDFLAG(IS_AIX)
++ }
++ return ret;
++#endif
+ #endif
+ }
+ case DIR_SRC_TEST_DATA_ROOT: {
diff --git a/www/ungoogled-chromium/files/patch-base_base__switches.cc b/www/ungoogled-chromium/files/patch-base_base__switches.cc
new file mode 100644
index 000000000000..a5d89d37a139
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_base__switches.cc
@@ -0,0 +1,11 @@
+--- base/base_switches.cc.orig 2022-10-01 07:40:07 UTC
++++ base/base_switches.cc
+@@ -170,7 +170,7 @@ const char kForceFieldTrialParams[] = "force-fieldtria
+
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // TODO(crbug.com/1176772): Remove kEnableCrashpad and IsCrashpadEnabled() when
+ // Crashpad is fully enabled on Linux. Indicates that Crashpad should be
+ // enabled.
diff --git a/www/ungoogled-chromium/files/patch-base_base__switches.h b/www/ungoogled-chromium/files/patch-base_base__switches.h
new file mode 100644
index 000000000000..71316c4d96ef
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_base__switches.h
@@ -0,0 +1,11 @@
+--- base/base_switches.h.orig 2022-10-01 07:40:07 UTC
++++ base/base_switches.h
+@@ -60,7 +60,7 @@ extern const char kEnableIdleTracing[];
+ extern const char kForceFieldTrialParams[];
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // TODO(crbug.com/1176772): Remove kEnableCrashpad and IsCrashpadEnabled() when
+ // Crashpad is fully enabled on Linux.
+ extern const char kEnableCrashpad[];
diff --git a/www/ungoogled-chromium/files/patch-base_cpu.h b/www/ungoogled-chromium/files/patch-base_cpu.h
new file mode 100644
index 000000000000..75f3fbb02cd2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_cpu.h
@@ -0,0 +1,11 @@
+--- base/cpu.h.orig 2022-10-01 07:40:07 UTC
++++ base/cpu.h
+@@ -108,7 +108,7 @@ class BASE_EXPORT CPU final {
+ const std::string& cpu_brand() const { return cpu_brand_; }
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ enum class CoreType {
+ kUnknown = 0,
+ kOther,
diff --git a/www/ungoogled-chromium/files/patch-base_debug_debugger__posix.cc b/www/ungoogled-chromium/files/patch-base_debug_debugger__posix.cc
new file mode 100644
index 000000000000..2215c8de0bab
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_debug_debugger__posix.cc
@@ -0,0 +1,68 @@
+--- base/debug/debugger_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/debug/debugger_posix.cc
+@@ -35,6 +35,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));
++ 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/www/ungoogled-chromium/files/patch-base_debug_elf__reader.cc b/www/ungoogled-chromium/files/patch-base_debug_elf__reader.cc
new file mode 100644
index 000000000000..8fbbd906e0c7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_debug_elf__reader.cc
@@ -0,0 +1,18 @@
+--- base/debug/elf_reader.cc.orig 2022-10-01 07:40:07 UTC
++++ base/debug/elf_reader.cc
+@@ -78,6 +78,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base,
+ bool found = false;
+ while (current_section < section_end) {
+ current_note = reinterpret_cast<const Nhdr*>(current_section);
++#if !defined(OS_BSD)
+ if (current_note->n_type == NT_GNU_BUILD_ID) {
+ StringPiece note_name(current_section + sizeof(Nhdr),
+ current_note->n_namesz);
+@@ -87,6 +88,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base,
+ break;
+ }
+ }
++#endif
+
+ size_t section_size = bits::AlignUp(current_note->n_namesz, 4u) +
+ bits::AlignUp(current_note->n_descsz, 4u) +
diff --git a/www/ungoogled-chromium/files/patch-base_debug_proc__maps__linux.cc b/www/ungoogled-chromium/files/patch-base_debug_proc__maps__linux.cc
new file mode 100644
index 000000000000..30c6e6205902
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_debug_proc__maps__linux.cc
@@ -0,0 +1,11 @@
+--- base/debug/proc_maps_linux.cc.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_debug_stack__trace__posix.cc b/www/ungoogled-chromium/files/patch-base_debug_stack__trace__posix.cc
new file mode 100644
index 000000000000..f828c074ab75
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_debug_stack__trace__posix.cc
@@ -0,0 +1,38 @@
+--- base/debug/stack_trace_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/debug/stack_trace_posix.cc
+@@ -39,7 +39,7 @@
+ #include <AvailabilityMacros.h>
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/debug/proc_maps_linux.h"
+ #endif
+
+@@ -698,6 +698,9 @@ class SandboxSymbolizeHelper {
+ // 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)) {
+@@ -715,6 +718,7 @@ class SandboxSymbolizeHelper {
+
+ is_initialized_ = true;
+ return true;
++#endif
+ }
+
+ // Opens all object files and caches their file descriptors.
+@@ -871,7 +875,7 @@ size_t CollectStackTrace(void** trace, size_t count) {
+ // If we do not have unwind tables, then try tracing using frame pointers.
+ return base::debug::TraceStackFramePointers(const_cast<const void**>(trace),
+ count, 0);
+-#elif !defined(__UCLIBC__) && !defined(_AIX)
++#elif !defined(__UCLIBC__) && !defined(_AIX) && !BUILDFLAG(IS_BSD)
+ // Though the backtrace API man page does not list any possible negative
+ // return values, we take no chance.
+ return base::saturated_cast<size_t>(
diff --git a/www/ungoogled-chromium/files/patch-base_files_dir__reader__linux.h b/www/ungoogled-chromium/files/patch-base_files_dir__reader__linux.h
new file mode 100644
index 000000000000..74f2516ba6e6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_files_dir__reader__linux.h
@@ -0,0 +1,39 @@
+--- base/files/dir_reader_linux.h.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_files_dir__reader__posix.h b/www/ungoogled-chromium/files/patch-base_files_dir__reader__posix.h
new file mode 100644
index 000000000000..131f7afcd8c5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_files_dir__reader__posix.h
@@ -0,0 +1,20 @@
+--- base/files/dir_reader_posix.h.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_files_file__path__watcher__bsd.cc b/www/ungoogled-chromium/files/patch-base_files_file__path__watcher__bsd.cc
new file mode 100644
index 000000000000..5e17eef81845
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_files_file__path__watcher__bsd.cc
@@ -0,0 +1,57 @@
+--- base/files/file_path_watcher_bsd.cc.orig 2022-10-01 07:40:07 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() {
++ sequence_checker_.DetachFromSequence();
++ impl_ = std::make_unique<FilePathWatcherImpl>();
++}
++
++} // namespace base
diff --git a/www/ungoogled-chromium/files/patch-base_files_file__path__watcher__kqueue.h b/www/ungoogled-chromium/files/patch-base_files_file__path__watcher__kqueue.h
new file mode 100644
index 000000000000..f359a963aea5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_files_file__path__watcher__kqueue.h
@@ -0,0 +1,10 @@
+--- base/files/file_path_watcher_kqueue.h.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_files_file__path__watcher__unittest.cc b/www/ungoogled-chromium/files/patch-base_files_file__path__watcher__unittest.cc
new file mode 100644
index 000000000000..0da5585ec8dc
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_files_file__path__watcher__unittest.cc
@@ -0,0 +1,29 @@
+--- base/files/file_path_watcher_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ base/files/file_path_watcher_unittest.cc
+@@ -498,7 +498,7 @@ TEST_F(FilePathWatcherTest, MAYBE_WatchDirectory) {
+ VLOG(1) << "Waiting for file1 creation";
+ ASSERT_TRUE(WaitForEvents());
+
+-#if !BUILDFLAG(IS_APPLE)
++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD)
+ // Mac implementation does not detect files modified in a directory.
+ ASSERT_TRUE(WriteFile(file1, "content v2"));
+ VLOG(1) << "Waiting for file1 modification";
+@@ -1118,7 +1118,7 @@ enum Permission {
+ 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;
+
+@@ -1149,7 +1149,7 @@ bool ChangeFilePermissions(const FilePath& path, Permi
+ }
+ #endif // BUILDFLAG(IS_APPLE)
+
+-#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/www/ungoogled-chromium/files/patch-base_files_file__util__posix.cc b/www/ungoogled-chromium/files/patch-base_files_file__util__posix.cc
new file mode 100644
index 000000000000..50b63ab9e370
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_files_file__util__posix.cc
@@ -0,0 +1,52 @@
+--- base/files/file_util_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/files/file_util_posix.cc
+@@ -700,32 +700,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);
+- 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/www/ungoogled-chromium/files/patch-base_files_file__util__unittest.cc b/www/ungoogled-chromium/files/patch-base_files_file__util__unittest.cc
new file mode 100644
index 000000000000..619d941c725e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_files_file__util__unittest.cc
@@ -0,0 +1,20 @@
+--- base/files/file_util_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ base/files/file_util_unittest.cc
+@@ -3522,7 +3522,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";
+@@ -4245,7 +4245,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/www/ungoogled-chromium/files/patch-base_files_important__file__writer__cleaner.cc b/www/ungoogled-chromium/files/patch-base_files_important__file__writer__cleaner.cc
new file mode 100644
index 000000000000..bd72445b2df1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_files_important__file__writer__cleaner.cc
@@ -0,0 +1,12 @@
+--- base/files/important_file_writer_cleaner.cc.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_files_scoped__file.cc b/www/ungoogled-chromium/files/patch-base_files_scoped__file.cc
new file mode 100644
index 000000000000..3ddf2f9aaaac
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_files_scoped__file.cc
@@ -0,0 +1,11 @@
+--- base/files/scoped_file.cc.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_i18n_icu__util.cc b/www/ungoogled-chromium/files/patch-base_i18n_icu__util.cc
new file mode 100644
index 000000000000..fd39d74dbe60
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_i18n_icu__util.cc
@@ -0,0 +1,20 @@
+--- base/i18n/icu_util.cc.orig 2022-10-01 07:40:07 UTC
++++ base/i18n/icu_util.cc
+@@ -53,7 +53,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
+@@ -325,7 +325,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/www/ungoogled-chromium/files/patch-base_linux__util.cc b/www/ungoogled-chromium/files/patch-base_linux__util.cc
new file mode 100644
index 000000000000..b001a14e9375
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_linux__util.cc
@@ -0,0 +1,28 @@
+--- base/linux_util.cc.orig 2022-10-01 07:40:07 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"
+@@ -135,6 +136,9 @@ void SetLinuxDistro(const std::string& distro) {
+ }
+
+ bool GetThreadsForProcess(pid_t pid, std::vector<pid_t>* tids) {
++#if defined(OS_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);
+@@ -152,6 +156,7 @@ bool GetThreadsForProcess(pid_t pid, std::vector<pid_t
+ }
+
+ return true;
++#endif
+ }
+
+ pid_t FindThreadIDWithSyscall(pid_t pid, const std::string& expected_data,
diff --git a/www/ungoogled-chromium/files/patch-base_logging__unittest.cc b/www/ungoogled-chromium/files/patch-base_logging__unittest.cc
new file mode 100644
index 000000000000..e4e536b7f81e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_logging__unittest.cc
@@ -0,0 +1,31 @@
+--- base/logging_unittest.cc.orig 2022-10-01 07:40:07 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
+
+@@ -574,14 +574,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/www/ungoogled-chromium/files/patch-base_memory_discardable__memory.cc b/www/ungoogled-chromium/files/patch-base_memory_discardable__memory.cc
new file mode 100644
index 000000000000..5ab46fa58774
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_memory_discardable__memory.cc
@@ -0,0 +1,38 @@
+--- base/memory/discardable_memory.cc.orig 2022-10-01 07:40:07 UTC
++++ base/memory/discardable_memory.cc
+@@ -25,7 +25,7 @@ const base::Feature kMadvFreeDiscardableMemory{
+ "MadvFreeDiscardableMemory", 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)
+ const base::Feature kDiscardableMemoryBackingTrial{
+ "DiscardableMemoryBackingTrial", base::FEATURE_DISABLED_BY_DEFAULT};
+
+@@ -50,7 +50,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 =
+@@ -69,7 +69,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.
+@@ -99,7 +99,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/www/ungoogled-chromium/files/patch-base_memory_discardable__memory__internal.h b/www/ungoogled-chromium/files/patch-base_memory_discardable__memory__internal.h
new file mode 100644
index 000000000000..74d6b371cef8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_memory_discardable__memory__internal.h
@@ -0,0 +1,11 @@
+--- base/memory/discardable_memory_internal.h.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_memory_madv__free__discardable__memory__posix.cc b/www/ungoogled-chromium/files/patch-base_memory_madv__free__discardable__memory__posix.cc
new file mode 100644
index 000000000000..b621decda352
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_memory_madv__free__discardable__memory__posix.cc
@@ -0,0 +1,21 @@
+--- base/memory/madv_free_discardable_memory_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/memory/madv_free_discardable_memory_posix.cc
+@@ -295,6 +295,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
+@@ -310,6 +314,7 @@ bool MadvFreeDiscardableMemoryPosix::IsResident() cons
+ return false;
+ }
+ return true;
++#endif
+ }
+
+ bool MadvFreeDiscardableMemoryPosix::IsDiscarded() const {
diff --git a/www/ungoogled-chromium/files/patch-base_memory_platform__shared__memory__region.h b/www/ungoogled-chromium/files/patch-base_memory_platform__shared__memory__region.h
new file mode 100644
index 000000000000..71079157dd1d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_memory_platform__shared__memory__region.h
@@ -0,0 +1,29 @@
+--- base/memory/platform_shared_memory_region.h.orig 2022-10-01 07:40:07 UTC
++++ base/memory/platform_shared_memory_region.h
+@@ -16,7 +16,7 @@
+
+ #include <stdint.h>
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ namespace content {
+ class SandboxIPCHandler;
+ }
+@@ -83,7 +83,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:
+@@ -211,7 +211,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/www/ungoogled-chromium/files/patch-base_memory_platform__shared__memory__region__posix.cc b/www/ungoogled-chromium/files/patch-base_memory_platform__shared__memory__region__posix.cc
new file mode 100644
index 000000000000..ac7afdc29e95
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_memory_platform__shared__memory__region__posix.cc
@@ -0,0 +1,29 @@
+--- base/memory/platform_shared_memory_region_posix.cc.orig 2022-10-01 07:40: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 =
+@@ -171,7 +171,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
+@@ -200,7 +200,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/www/ungoogled-chromium/files/patch-base_message__loop_message__pump__glib.cc b/www/ungoogled-chromium/files/patch-base_message__loop_message__pump__glib.cc
new file mode 100644
index 000000000000..84eece67a91e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_message__loop_message__pump__glib.cc
@@ -0,0 +1,28 @@
+--- base/message_loop/message_pump_glib.cc.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_native__library__posix.cc b/www/ungoogled-chromium/files/patch-base_native__library__posix.cc
new file mode 100644
index 000000000000..7cbb17fce86a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_native__library__posix.cc
@@ -0,0 +1,11 @@
+--- base/native_library_posix.cc.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_native__library__unittest.cc b/www/ungoogled-chromium/files/patch-base_native__library__unittest.cc
new file mode 100644
index 000000000000..332fe755fd4a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_native__library__unittest.cc
@@ -0,0 +1,11 @@
+--- base/native_library_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ base/native_library_unittest.cc
+@@ -119,7 +119,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/www/ungoogled-chromium/files/patch-base_posix_can__lower__nice__to.cc b/www/ungoogled-chromium/files/patch-base_posix_can__lower__nice__to.cc
new file mode 100644
index 000000000000..b2c7da827da8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_posix_can__lower__nice__to.cc
@@ -0,0 +1,16 @@
+--- base/posix/can_lower_nice_to.cc.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_posix_unix__domain__socket.cc b/www/ungoogled-chromium/files/patch-base_posix_unix__domain__socket.cc
new file mode 100644
index 000000000000..a361dc6d8ccf
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_posix_unix__domain__socket.cc
@@ -0,0 +1,39 @@
+--- base/posix/unix_domain_socket.cc.orig 2022-10-01 07:40:07 UTC
++++ base/posix/unix_domain_socket.cc
+@@ -51,7 +51,7 @@ bool CreateSocketPair(ScopedFD* one, ScopedFD* two) {
+
+ // 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
+@@ -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/www/ungoogled-chromium/files/patch-base_posix_unix__domain__socket__unittest.cc b/www/ungoogled-chromium/files/patch-base_posix_unix__domain__socket__unittest.cc
new file mode 100644
index 000000000000..969253ca926e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_posix_unix__domain__socket__unittest.cc
@@ -0,0 +1,11 @@
+--- base/posix/unix_domain_socket_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ base/posix/unix_domain_socket_unittest.cc
+@@ -10,6 +10,8 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+
++#include <signal.h>
++
+ #include "base/bind.h"
+ #include "base/callback_helpers.h"
+ #include "base/files/file_util.h"
diff --git a/www/ungoogled-chromium/files/patch-base_process_kill.h b/www/ungoogled-chromium/files/patch-base_process_kill.h
new file mode 100644
index 000000000000..8470d2dbfea6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_kill.h
@@ -0,0 +1,11 @@
+--- base/process/kill.h.orig 2022-10-01 07:40:07 UTC
++++ base/process/kill.h
+@@ -113,7 +113,7 @@ BASE_EXPORT TerminationStatus GetTerminationStatus(Pro
+ 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/www/ungoogled-chromium/files/patch-base_process_kill__posix.cc b/www/ungoogled-chromium/files/patch-base_process_kill__posix.cc
new file mode 100644
index 000000000000..43688c37dc81
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_kill__posix.cc
@@ -0,0 +1,11 @@
+--- base/process/kill_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/process/kill_posix.cc
+@@ -158,7 +158,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/www/ungoogled-chromium/files/patch-base_process_launch.h b/www/ungoogled-chromium/files/patch-base_process_launch.h
new file mode 100644
index 000000000000..f77e6e9d9143
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_launch.h
@@ -0,0 +1,11 @@
+--- base/process/launch.h.orig 2022-10-01 07:40:07 UTC
++++ base/process/launch.h
+@@ -198,7 +198,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/www/ungoogled-chromium/files/patch-base_process_launch__posix.cc b/www/ungoogled-chromium/files/patch-base_process_launch__posix.cc
new file mode 100644
index 000000000000..75b6612ffbd1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_launch__posix.cc
@@ -0,0 +1,12 @@
+--- base/process/launch_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/process/launch_posix.cc
+@@ -64,6 +64,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/www/ungoogled-chromium/files/patch-base_process_memory.cc b/www/ungoogled-chromium/files/patch-base_process_memory.cc
new file mode 100644
index 000000000000..0428c9c57337
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_memory.cc
@@ -0,0 +1,11 @@
+--- base/process/memory.cc.orig 2022-10-01 07:40:07 UTC
++++ base/process/memory.cc
+@@ -29,7 +29,7 @@ namespace base {
+ // Defined in memory_mac.mm for macOS + use_allocator="none". In case of
+ // USE_PARTITION_ALLOC_AS_MALLOC, no need to route the call to the system
+ // default calloc of macOS.
+-#if !BUILDFLAG(IS_APPLE) || BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
++#if (!BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD)) || BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
+
+ bool UncheckedCalloc(size_t num_items, size_t size, void** result) {
+ const size_t alloc_size = num_items * size;
diff --git a/www/ungoogled-chromium/files/patch-base_process_process__handle.cc b/www/ungoogled-chromium/files/patch-base_process_process__handle.cc
new file mode 100644
index 000000000000..f33e81ebacf8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__handle.cc
@@ -0,0 +1,11 @@
+--- base/process/process_handle.cc.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_process_process__handle.h b/www/ungoogled-chromium/files/patch-base_process_process__handle.h
new file mode 100644
index 000000000000..9015f4dbd03d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__handle.h
@@ -0,0 +1,11 @@
+--- base/process/process_handle.h.orig 2022-10-01 07:40:07 UTC
++++ base/process/process_handle.h
+@@ -106,7 +106,7 @@ BASE_EXPORT ProcessId GetCurrentProcId();
+ // 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/www/ungoogled-chromium/files/patch-base_process_process__handle__freebsd.cc b/www/ungoogled-chromium/files/patch-base_process_process__handle__freebsd.cc
new file mode 100644
index 000000000000..07eed6768732
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__handle__freebsd.cc
@@ -0,0 +1,25 @@
+--- base/process/process_handle_freebsd.cc.orig 2022-10-01 07:40:07 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>
+@@ -15,10 +16,13 @@ namespace base {
+
+ 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/www/ungoogled-chromium/files/patch-base_process_process__handle__openbsd.cc b/www/ungoogled-chromium/files/patch-base_process_process__handle__openbsd.cc
new file mode 100644
index 000000000000..5d2e2ba47fe7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__handle__openbsd.cc
@@ -0,0 +1,89 @@
+--- base/process/process_handle_openbsd.cc.orig 2022-10-01 07:40:07 UTC
++++ base/process/process_handle_openbsd.cc
+@@ -3,8 +3,11 @@
+ // found in the LICENSE file.
+
+ #include "base/process/process_handle.h"
++#include "base/files/file_util.h"
+
+ #include <stddef.h>
++#include <sys/param.h>
++#include <sys/proc.h>
+ #include <sys/sysctl.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -12,39 +15,59 @@
+ 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;
+
++ info = (struct kinfo_proc *)malloc(length);
++
+ mib[5] = (length / sizeof(struct kinfo_proc));
+
+- if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0)
+- return -1;
++ if (sysctl(mib, std::size(mib), info, &length, NULL, 0) < 0) {
++ ppid = -1;
++ goto out;
++ }
+
+- return info.p_ppid;
++ ppid = info->p_ppid;
++
++out:
++ free(info);
++ return ppid;
+ }
+
+ FilePath GetProcessExecutablePath(ProcessHandle process) {
+- struct kinfo_proc kp;
+- size_t len;
++ struct kinfo_proc *info;
++ size_t length;
++ char *path = NULL;
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process,
+ sizeof(struct kinfo_proc), 0 };
+
+- if (sysctl(mib, std::size(mib), NULL, &len, NULL, 0) == -1)
++ if (sysctl(mib, std::size(mib), NULL, &length, 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);
+
+- return FilePath();
++ info = (struct kinfo_proc *)malloc(length);
++
++ mib[5] = (length / sizeof(struct kinfo_proc));
++
++ if (sysctl(mib, std::size(mib), info, &length, NULL, 0) < 0)
++ goto out;
++
++ if ((info->p_flag & P_SYSTEM) != 0)
++ goto out;
++
++ if (strcmp(info->p_comm, "chrome") == 0) {
++ path = info->p_comm;
++ goto out;
++ }
++
++out:
++ free(info);
++ return FilePath(path);
+ }
+
+ } // namespace base
diff --git a/www/ungoogled-chromium/files/patch-base_process_process__iterator__freebsd.cc b/www/ungoogled-chromium/files/patch-base_process_process__iterator__freebsd.cc
new file mode 100644
index 000000000000..461a5de769d8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__iterator__freebsd.cc
@@ -0,0 +1,51 @@
+--- base/process/process_iterator_freebsd.cc.orig 2022-10-01 07:40:07 UTC
++++ base/process/process_iterator_freebsd.cc
+@@ -20,7 +20,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ : index_of_kinfo_proc_(),
+ 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;
+@@ -39,7 +39,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) {
+@@ -49,7 +49,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;
+ }
+@@ -71,18 +71,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/www/ungoogled-chromium/files/patch-base_process_process__iterator__openbsd.cc b/www/ungoogled-chromium/files/patch-base_process_process__iterator__openbsd.cc
new file mode 100644
index 000000000000..56f8a2f82b3e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__iterator__openbsd.cc
@@ -0,0 +1,45 @@
+--- base/process/process_iterator_openbsd.cc.orig 2022-10-01 07:40:07 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"
+@@ -18,12 +21,13 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ : index_of_kinfo_proc_(),
+ 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;
+@@ -32,7 +36,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;
+@@ -48,7 +52,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/www/ungoogled-chromium/files/patch-base_process_process__metrics.cc b/www/ungoogled-chromium/files/patch-base_process_process__metrics.cc
new file mode 100644
index 000000000000..a2dc3e96f5b6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__metrics.cc
@@ -0,0 +1,47 @@
+--- base/process/process_metrics.cc.orig 2022-10-01 07:40:07 UTC
++++ base/process/process_metrics.cc
+@@ -17,7 +17,7 @@ namespace base {
+ 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 SystemMetrics::ToValue() const {
+ Value res(Value::Type::DICTIONARY);
+
+ res.SetIntKey("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 meminfo = memory_info_.ToValue();
+ Value vmstat = vmstat_info_.ToValue();
+ meminfo.MergeDictionary(&vmstat);
+@@ -99,7 +99,7 @@ std::unique_ptr<ProcessMetrics> ProcessMetrics::Create
+ #endif // !BUILDFLAG(IS_MAC)
+ }
+
+-#if !BUILDFLAG(IS_FREEBSD) || !BUILDFLAG(IS_POSIX)
++#if !BUILDFLAG(IS_FREEBSD)
+ double ProcessMetrics::GetPlatformIndependentCPUUsage() {
+ TimeDelta cumulative_cpu = GetCumulativeCPUUsage();
+ TimeTicks time = TimeTicks::Now();
+@@ -150,7 +150,7 @@ double ProcessMetrics::GetPreciseCPUUsage() {
+ #endif // BUILDFLAG(IS_WIN)
+
+ #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/www/ungoogled-chromium/files/patch-base_process_process__metrics.h b/www/ungoogled-chromium/files/patch-base_process_process__metrics.h
new file mode 100644
index 000000000000..c37d15293fcf
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__metrics.h
@@ -0,0 +1,129 @@
+--- base/process/process_metrics.h.orig 2022-10-01 07:40:07 UTC
++++ base/process/process_metrics.h
+@@ -36,7 +36,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>
+@@ -52,7 +52,7 @@ class Value;
+ // Full declaration is in process_metrics_iocounters.h.
+ struct IoCounters;
+
+-#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.
+ //
+@@ -107,7 +107,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;
+@@ -155,7 +155,7 @@ class BASE_EXPORT ProcessMetrics {
+ #endif // BUILDFLAG(IS_WIN)
+
+ #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
+@@ -238,7 +238,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;
+
+@@ -259,7 +259,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)
+@@ -270,7 +270,7 @@ class BASE_EXPORT ProcessMetrics {
+ #endif
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ CPU::CoreType GetCoreType(uint32_t core_index);
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ||
+ // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_AIX)
+@@ -284,9 +284,7 @@ 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_WIN)
+ TimeTicks last_cpu_time_for_precise_cpu_usage_;
+@@ -294,7 +292,7 @@ class BASE_EXPORT ProcessMetrics {
+ #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_;
+@@ -337,7 +335,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.
+ //
+@@ -372,7 +370,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
+@@ -387,7 +385,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;
+@@ -424,7 +422,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.
+@@ -611,7 +609,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/www/ungoogled-chromium/files/patch-base_process_process__metrics__freebsd.cc b/www/ungoogled-chromium/files/patch-base_process_process__metrics__freebsd.cc
new file mode 100644
index 000000000000..a1dce10fea0e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__metrics__freebsd.cc
@@ -0,0 +1,290 @@
+--- base/process/process_metrics_freebsd.cc.orig 2022-10-01 07:40:07 UTC
++++ base/process/process_metrics_freebsd.cc
+@@ -3,20 +3,39 @@
+ // 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/process/process_metrics_iocounters.h"
++#include "base/values.h"
+
+ namespace base {
++namespace {
++int GetPageShift() {
++ int pagesize = getpagesize();
++ int pageshift = 0;
+
++ while (pagesize > 1) {
++ pageshift++;
++ pagesize >>= 1;
++ }
++
++ return pageshift;
++}
++}
++
+ ProcessMetrics::ProcessMetrics(ProcessHandle process)
+- : process_(process),
+- last_cpu_(0) {}
++ : process_(process) {}
+
+ // static
+ std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics(
+@@ -26,17 +45,18 @@ std::unique_ptr<ProcessMetrics> ProcessMetrics::Create
+
+ double ProcessMetrics::GetPlatformIndependentCPUUsage() {
+ 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);
+
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process_ };
++
+ if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0)
+- return 0;
++ return 0.0;
+
+- return (info.ki_pctcpu / FSCALE) * 100.0;
++ return static_cast<double>((info.ki_pctcpu * 100.0) / FSCALE);
+ }
+
+ TimeDelta ProcessMetrics::GetCumulativeCPUUsage() {
+- NOTREACHED();
++ NOTIMPLEMENTED();
+ return TimeDelta();
+ }
+
+@@ -67,4 +87,221 @@ size_t GetSystemCommitCharge() {
+ 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 SystemDiskInfo::ToValue() const {
++ Value res(Value::Type::DICTIONARY);
++
++ // Write out uint64_t variables as doubles.
++ // Note: this may discard some precision, but for JS there's no other option.
++ res.SetDoubleKey("reads", static_cast<double>(reads));
++ res.SetDoubleKey("reads_merged", static_cast<double>(reads_merged));
++ res.SetDoubleKey("sectors_read", static_cast<double>(sectors_read));
++ res.SetDoubleKey("read_time", static_cast<double>(read_time));
++ res.SetDoubleKey("writes", static_cast<double>(writes));
++ res.SetDoubleKey("writes_merged", static_cast<double>(writes_merged));
++ res.SetDoubleKey("sectors_written", static_cast<double>(sectors_written));
++ res.SetDoubleKey("write_time", static_cast<double>(write_time));
++ res.SetDoubleKey("io", static_cast<double>(io));
++ res.SetDoubleKey("io_time", static_cast<double>(io_time));
++ res.SetDoubleKey("weighted_io_time", static_cast<double>(weighted_io_time));
++
++ return res;
++}
++
++Value SystemMemoryInfoKB::ToValue() const {
++ Value res(Value::Type::DICTIONARY);
++
++ res.SetIntKey("total", total);
++ res.SetIntKey("free", free);
++ res.SetIntKey("available", available);
++ res.SetIntKey("buffers", buffers);
++ res.SetIntKey("cached", cached);
++ res.SetIntKey("active_anon", active_anon);
++ res.SetIntKey("inactive_anon", inactive_anon);
++ res.SetIntKey("active_file", active_file);
++ res.SetIntKey("inactive_file", inactive_file);
++ res.SetIntKey("swap_total", swap_total);
++ res.SetIntKey("swap_free", swap_free);
++ res.SetIntKey("swap_used", swap_total - swap_free);
++ res.SetIntKey("dirty", dirty);
++ res.SetIntKey("reclaimable", reclaimable);
++
++ return res;
++}
++
++Value VmStatInfo::ToValue() const {
++ Value res(Value::Type::DICTIONARY);
++
++ res.SetIntKey("pswpin", pswpin);
++ res.SetIntKey("pswpout", pswpout);
++ res.SetIntKey("pgmajfault", pgmajfault);
++
++ return res;
++}
+ } // namespace base
diff --git a/www/ungoogled-chromium/files/patch-base_process_process__metrics__openbsd.cc b/www/ungoogled-chromium/files/patch-base_process_process__metrics__openbsd.cc
new file mode 100644
index 000000000000..c143d5d66c2d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__metrics__openbsd.cc
@@ -0,0 +1,215 @@
+--- base/process/process_metrics_openbsd.cc.orig 2022-10-01 07:40:07 UTC
++++ base/process/process_metrics_openbsd.cc
+@@ -6,14 +6,23 @@
+
+ #include <stddef.h>
+ #include <stdint.h>
++#include <fcntl.h>
+ #include <sys/param.h>
+ #include <sys/sysctl.h>
++#include <sys/vmmeter.h>
+
++#include <kvm.h>
++
+ #include "base/memory/ptr_util.h"
+ #include "base/process/process_metrics_iocounters.h"
++#include "base/values.h"
++#include "base/notreached.h"
+
+ namespace base {
+
++ProcessMetrics::ProcessMetrics(ProcessHandle process)
++ : process_(process) {}
++
+ // static
+ std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics(
+ ProcessHandle process) {
+@@ -24,49 +33,23 @@ bool ProcessMetrics::GetIOCounters(IoCounters* io_coun
+ return false;
+ }
+
+-static int GetProcessCPU(pid_t pid) {
++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 -1;
++ 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 0;
++ return TimeDelta();
+
+- return info.p_pctcpu;
+-}
++ tv.tv_sec = info.p_rtime_sec;
++ tv.tv_usec = info.p_rtime_usec;
+
+-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 0;
+- }
+-
+- int cpu = GetProcessCPU(process_);
+-
+- last_cpu_time_ = time;
+- double percentage = static_cast<double>((cpu * 100.0) / FSCALE);
+-
+- return percentage;
++ return Microseconds(TimeValToMicroseconds(tv));
+ }
+
+-TimeDelta ProcessMetrics::GetCumulativeCPUUsage() {
+- NOTREACHED();
+- return TimeDelta();
+-}
+-
+-ProcessMetrics::ProcessMetrics(ProcessHandle process)
+- : process_(process),
+- last_cpu_(0) {}
+-
+ size_t GetSystemCommitCharge() {
+ int mib[] = { CTL_VM, VM_METER };
+ int pagesize;
+@@ -84,6 +67,129 @@ size_t GetSystemCommitCharge() {
+ pagesize = getpagesize();
+
+ return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize);
++}
++
++int ProcessMetrics::GetOpenFdCount() const {
++ 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;
++}
++
++int ProcessMetrics::GetOpenFdSoftLimit() const {
++ return GetMaxFds();
++}
++
++uint64_t ProcessMetrics::GetVmSwapBytes() const {
++ NOTIMPLEMENTED();
++ return 0;
++}
++
++bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo) {
++ NOTIMPLEMENTED_LOG_ONCE();
++ 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;
++
++bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++bool GetVmStatInfo(VmStatInfo* vmstat) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++int ProcessMetrics::GetIdleWakeupsPerSecond() {
++ NOTIMPLEMENTED();
++ return 0;
++}
++
++Value SystemMemoryInfoKB::ToValue() const {
++ Value res(Value::Type::DICTIONARY);
++ res.SetIntKey("total", total);
++ res.SetIntKey("free", free);
++ res.SetIntKey("available", available);
++ res.SetIntKey("buffers", buffers);
++ res.SetIntKey("cached", cached);
++ res.SetIntKey("active_anon", active_anon);
++ res.SetIntKey("inactive_anon", inactive_anon);
++ res.SetIntKey("active_file", active_file);
++ res.SetIntKey("inactive_file", inactive_file);
++ res.SetIntKey("swap_total", swap_total);
++ res.SetIntKey("swap_free", swap_free);
++ res.SetIntKey("swap_used", swap_total - swap_free);
++ res.SetIntKey("dirty", dirty);
++ res.SetIntKey("reclaimable", reclaimable);
++
++ NOTIMPLEMENTED();
++
++ return res;
++}
++
++Value VmStatInfo::ToValue() const {
++ Value res(Value::Type::DICTIONARY);
++ res.SetIntKey("pswpin", pswpin);
++ res.SetIntKey("pswpout", pswpout);
++ res.SetIntKey("pgmajfault", pgmajfault);
++
++ NOTIMPLEMENTED();
++
++ return res;
++}
++
++SystemDiskInfo& SystemDiskInfo::operator=(const SystemDiskInfo&) = default;
++
++Value SystemDiskInfo::ToValue() const {
++ Value res(Value::Type::DICTIONARY);
++
++ // Write out uint64_t variables as doubles.
++ // Note: this may discard some precision, but for JS there's no other option.
++ res.SetDoubleKey("reads", static_cast<double>(reads));
++ res.SetDoubleKey("reads_merged", static_cast<double>(reads_merged));
++ res.SetDoubleKey("sectors_read", static_cast<double>(sectors_read));
++ res.SetDoubleKey("read_time", static_cast<double>(read_time));
++ res.SetDoubleKey("writes", static_cast<double>(writes));
++ res.SetDoubleKey("writes_merged", static_cast<double>(writes_merged));
++ res.SetDoubleKey("sectors_written", static_cast<double>(sectors_written));
++ res.SetDoubleKey("write_time", static_cast<double>(write_time));
++ res.SetDoubleKey("io", static_cast<double>(io));
++ res.SetDoubleKey("io_time", static_cast<double>(io_time));
++ res.SetDoubleKey("weighted_io_time", static_cast<double>(weighted_io_time));
++
++ NOTIMPLEMENTED();
++
++ return res;
+ }
+
+ } // namespace base
diff --git a/www/ungoogled-chromium/files/patch-base_process_process__metrics__posix.cc b/www/ungoogled-chromium/files/patch-base_process_process__metrics__posix.cc
new file mode 100644
index 000000000000..1d8226ebb594
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__metrics__posix.cc
@@ -0,0 +1,20 @@
+--- base/process/process_metrics_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/process/process_metrics_posix.cc
+@@ -20,6 +20,8 @@
+
+ #if BUILDFLAG(IS_APPLE)
+ #include <malloc/malloc.h>
++#elif BUILDFLAG(IS_OPENBSD)
++#include <stdlib.h>
+ #else
+ #include <malloc.h>
+ #endif
+@@ -135,7 +137,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/www/ungoogled-chromium/files/patch-base_process_process__metrics__unittest.cc b/www/ungoogled-chromium/files/patch-base_process_process__metrics__unittest.cc
new file mode 100644
index 000000000000..70839ae96f8e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__metrics__unittest.cc
@@ -0,0 +1,20 @@
+--- base/process/process_metrics_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ base/process/process_metrics_unittest.cc
+@@ -44,7 +44,7 @@ namespace debug {
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+
+ namespace {
+
+@@ -347,7 +347,7 @@ TEST_F(SystemMetricsTest, ParseVmstat) {
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+
+ // Test that ProcessMetrics::GetPlatformIndependentCPUUsage() doesn't return
+ // negative values when the number of threads running on the process decreases
diff --git a/www/ungoogled-chromium/files/patch-base_process_process__posix.cc b/www/ungoogled-chromium/files/patch-base_process_process__posix.cc
new file mode 100644
index 000000000000..3251a7edddfb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__posix.cc
@@ -0,0 +1,93 @@
+--- base/process/process_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/process/process_posix.cc
+@@ -25,10 +25,15 @@
+ #include "build/build_config.h"
+ #include "third_party/abseil-cpp/absl/types/optional.h"
+
+-#if BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ #include <sys/event.h>
+ #endif
+
++#if defined(OS_BSD)
++#include <sys/types.h>
++#include <sys/sysctl.h>
++#endif
++
+ #if BUILDFLAG(CLANG_PROFILING)
+ #include "base/test/clang_profiling.h"
+ #endif
+@@ -95,7 +100,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.
+@@ -200,7 +205,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
+@@ -392,7 +397,55 @@ void Process::Exited(int exit_code) const {
+
+ int Process::GetPriority() const {
+ DCHECK(IsValid());
++// avoid pledge(2) violation
++#if defined(OS_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 !defined(OS_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 !defined(OS_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;
++}
++
++bool Process::IsProcessBackgrounded() const {
++ return false;
++}
++
++bool Process::SetProcessBackgrounded(bool value) {
++ return false;
++}
++
++// static
++bool Process::CanBackgroundProcesses() {
++ return false;
+ }
+
+ } // namespace base
diff --git a/www/ungoogled-chromium/files/patch-base_process_process__unittest.cc b/www/ungoogled-chromium/files/patch-base_process_process__unittest.cc
new file mode 100644
index 000000000000..ee62a994e4d5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_process_process__unittest.cc
@@ -0,0 +1,11 @@
+--- base/process/process_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ base/process/process_unittest.cc
+@@ -193,7 +193,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/www/ungoogled-chromium/files/patch-base_profiler_module__cache.cc b/www/ungoogled-chromium/files/patch-base_profiler_module__cache.cc
new file mode 100644
index 000000000000..02c7a0fc4eb0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_profiler_module__cache.cc
@@ -0,0 +1,11 @@
+--- base/profiler/module_cache.cc.orig 2022-10-01 07:40:07 UTC
++++ base/profiler/module_cache.cc
+@@ -34,7 +34,7 @@ struct ModuleAddressCompare {
+
+ std::string TransformModuleIDToBreakpadFormat(StringPiece module_id) {
+ std::string mangled_id(module_id);
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || 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/www/ungoogled-chromium/files/patch-base_profiler_stack__sampling__profiler__test__util.cc b/www/ungoogled-chromium/files/patch-base_profiler_stack__sampling__profiler__test__util.cc
new file mode 100644
index 000000000000..dd4cc7494787
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_profiler_stack__sampling__profiler__test__util.cc
@@ -0,0 +1,11 @@
+--- base/profiler/stack_sampling_profiler_test_util.cc.orig 2022-10-01 07:40:07 UTC
++++ base/profiler/stack_sampling_profiler_test_util.cc
+@@ -39,7 +39,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/www/ungoogled-chromium/files/patch-base_profiler_stack__sampling__profiler__unittest.cc b/www/ungoogled-chromium/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
new file mode 100644
index 000000000000..1d2a16d04f44
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
@@ -0,0 +1,11 @@
+--- base/profiler/stack_sampling_profiler_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ base/profiler/stack_sampling_profiler_unittest.cc
+@@ -41,7 +41,7 @@
+ #include <intrin.h>
+ #include <malloc.h>
+ #include <windows.h>
+-#else
++#elif !BUILDFLAG(IS_BSD)
+ #include <alloca.h>
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-base_rand__util.h b/www/ungoogled-chromium/files/patch-base_rand__util.h
new file mode 100644
index 000000000000..d58cefc589c7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_rand__util.h
@@ -0,0 +1,11 @@
+--- base/rand_util.h.orig 2022-10-01 07:40:07 UTC
++++ base/rand_util.h
+@@ -80,7 +80,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/www/ungoogled-chromium/files/patch-base_rand__util__posix.cc b/www/ungoogled-chromium/files/patch-base_rand__util__posix.cc
new file mode 100644
index 000000000000..17765f8e6f2b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_rand__util__posix.cc
@@ -0,0 +1,57 @@
+--- base/rand_util_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/rand_util_posix.cc
+@@ -22,7 +22,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.
+@@ -39,6 +39,7 @@ static constexpr int kOpenFlags = O_RDONLY;
+ static constexpr int kOpenFlags = O_RDONLY | O_CLOEXEC;
+ #endif
+
++#if !BUILDFLAG(IS_BSD)
+ // We keep the file descriptor for /dev/urandom around so we don't need to
+ // reopen it (which is expensive), and since we may not even be able to reopen
+ // it if we are later put in a sandbox. This class wraps the file descriptor so
+@@ -56,10 +57,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
+@@ -144,6 +146,7 @@ void ConfigureRandBytesFieldTrial() {
+ // (https://chromium-review.9oo91esource.qjz9zk/c/chromium/src/+/1545096) and land
+ // it or some form of it.
+ void RandBytes(void* output, size_t output_length) {
++#if !BUILDFLAG(IS_BSD)
+ #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+ BUILDFLAG(IS_ANDROID)) && \
+ !BUILDFLAG(IS_NACL)
+@@ -172,11 +175,16 @@ void RandBytes(void* output, size_t output_length) {
+ const bool success =
+ ReadFromFD(urandom_fd, static_cast<char*>(output), output_length);
+ CHECK(success);
++#else
++ arc4random_buf(static_cast<char*>(output), output_length);
++#endif
+ }
+
++#if !BUILDFLAG(IS_BSD)
+ int GetUrandomFD() {
+ static NoDestructor<URandomFd> urandom_fd;
+ return urandom_fd->fd();
+ }
++#endif
+
+ } // namespace base
diff --git a/www/ungoogled-chromium/files/patch-base_strings_safe__sprintf__unittest.cc b/www/ungoogled-chromium/files/patch-base_strings_safe__sprintf__unittest.cc
new file mode 100644
index 000000000000..25eefa3de232
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_strings_safe__sprintf__unittest.cc
@@ -0,0 +1,18 @@
+--- base/strings/safe_sprintf_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ base/strings/safe_sprintf_unittest.cc
+@@ -732,6 +732,7 @@ TEST(SafeSPrintfTest, EmbeddedNul) {
+ #endif
+ }
+
++#if !BUILDFLAG(IS_BSD)
+ TEST(SafeSPrintfTest, EmitNULL) {
+ char buf[40];
+ #if defined(__GNUC__)
+@@ -748,6 +749,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/www/ungoogled-chromium/files/patch-base_synchronization_lock__impl.h b/www/ungoogled-chromium/files/patch-base_synchronization_lock__impl.h
new file mode 100644
index 000000000000..41f5326626f4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_synchronization_lock__impl.h
@@ -0,0 +1,23 @@
+--- base/synchronization/lock_impl.h.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_syslog__logging.cc b/www/ungoogled-chromium/files/patch-base_syslog__logging.cc
new file mode 100644
index 000000000000..44fbed6ce89b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_syslog__logging.cc
@@ -0,0 +1,20 @@
+--- base/syslog_logging.cc.orig 2022-10-01 07:40:07 UTC
++++ base/syslog_logging.cc
+@@ -15,7 +15,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>
+@@ -147,7 +147,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/www/ungoogled-chromium/files/patch-base_system_sys__info.cc b/www/ungoogled-chromium/files/patch-base_system_sys__info.cc
new file mode 100644
index 000000000000..ad267c047e73
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_system_sys__info.cc
@@ -0,0 +1,11 @@
+--- base/system/sys_info.cc.orig 2022-10-01 07:40:07 UTC
++++ base/system/sys_info.cc
+@@ -101,7 +101,7 @@ std::string SysInfo::HardwareModelName() {
+ #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/www/ungoogled-chromium/files/patch-base_system_sys__info.h b/www/ungoogled-chromium/files/patch-base_system_sys__info.h
new file mode 100644
index 000000000000..c0f1f4ab8fb7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_system_sys__info.h
@@ -0,0 +1,20 @@
+--- base/system/sys_info.h.orig 2022-10-01 07:40:07 UTC
++++ base/system/sys_info.h
+@@ -211,6 +211,8 @@ class BASE_EXPORT SysInfo {
+ // On Desktop this returns true when memory <= 2GB.
+ static bool IsLowEndDevice();
+
++ static uint64_t MaxSharedMemorySize();
++
+ private:
+ FRIEND_TEST_ALL_PREFIXES(SysInfoTest, AmountOfAvailablePhysicalMemory);
+ FRIEND_TEST_ALL_PREFIXES(debug::SystemMetricsTest, ParseMeminfo);
+@@ -221,7 +223,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/www/ungoogled-chromium/files/patch-base_system_sys__info__freebsd.cc b/www/ungoogled-chromium/files/patch-base_system_sys__info__freebsd.cc
new file mode 100644
index 000000000000..fc9a45185508
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_system_sys__info__freebsd.cc
@@ -0,0 +1,115 @@
+--- base/system/sys_info_freebsd.cc.orig 2022-10-01 07:40: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/www/ungoogled-chromium/files/patch-base_system_sys__info__openbsd.cc b/www/ungoogled-chromium/files/patch-base_system_sys__info__openbsd.cc
new file mode 100644
index 000000000000..ebad387696c4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_system_sys__info__openbsd.cc
@@ -0,0 +1,94 @@
+--- base/system/sys_info_openbsd.cc.orig 2022-10-01 07:40:07 UTC
++++ base/system/sys_info_openbsd.cc
+@@ -11,6 +11,7 @@
+ #include <sys/sysctl.h>
+
+ #include "base/notreached.h"
++#include "base/strings/string_util.h"
+
+ namespace {
+
+@@ -26,9 +27,15 @@ uint64_t AmountOfMemory(int pages_name) {
+
+ namespace base {
+
++// pledge(2)
++int64_t aofpmem = 0;
++int64_t aofapmem = 0;
++int64_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) {
+@@ -40,10 +47,26 @@ int SysInfo::NumberOfProcessors() {
+
+ // 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.
+@@ -55,23 +78,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() {
+- int mib[] = {CTL_HW, HW_MODEL};
+- char name[256];
+- size_t len = std::size(name);
+- if (sysctl(mib, std::size(mib), name, &len, NULL, 0) < 0) {
+- NOTREACHED();
+- return std::string();
+- }
+- return name;
++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/www/ungoogled-chromium/files/patch-base_system_sys__info__posix.cc b/www/ungoogled-chromium/files/patch-base_system_sys__info__posix.cc
new file mode 100644
index 000000000000..6dd83fe626eb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_system_sys__info__posix.cc
@@ -0,0 +1,43 @@
+--- base/system/sys_info_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/system/sys_info_posix.cc
+@@ -37,7 +37,7 @@
+
+ namespace {
+
+-#if !BUILDFLAG(IS_OPENBSD)
++#if !BUILDFLAG(IS_BSD)
+ int NumberOfProcessors() {
+ // sysconf returns the number of "logical" (not "physical") processors on both
+ // Mac and Linux. So we get the number of max available "logical" processors.
+@@ -77,7 +77,7 @@ int NumberOfProcessors() {
+
+ base::LazyInstance<base::internal::LazySysInfoValue<int, NumberOfProcessors>>::
+ Leaky g_lazy_number_of_processors = LAZY_INSTANCE_INITIALIZER;
+-#endif // !BUILDFLAG(IS_OPENBSD)
++#endif // !BUILDFLAG(IS_BSD)
+
+ uint64_t AmountOfVirtualMemory() {
+ struct rlimit limit;
+@@ -144,11 +144,11 @@ bool GetDiskSpaceInfo(const base::FilePath& path,
+
+ namespace base {
+
+-#if !BUILDFLAG(IS_OPENBSD)
++#if !BUILDFLAG(IS_BSD)
+ int SysInfo::NumberOfProcessors() {
+ return g_lazy_number_of_processors.Get().value();
+ }
+-#endif // !BUILDFLAG(IS_OPENBSD)
++#endif // !BUILDFLAG(IS_BSD)
+
+ // static
+ uint64_t SysInfo::AmountOfVirtualMemory() {
+@@ -238,6 +238,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/www/ungoogled-chromium/files/patch-base_system_sys__info__unittest.cc b/www/ungoogled-chromium/files/patch-base_system_sys__info__unittest.cc
new file mode 100644
index 000000000000..2f28252e1ba3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_system_sys__info__unittest.cc
@@ -0,0 +1,20 @@
+--- base/system/sys_info_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ base/system/sys_info_unittest.cc
+@@ -234,12 +234,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/www/ungoogled-chromium/files/patch-base_task_thread__pool_environment__config__unittest.cc b/www/ungoogled-chromium/files/patch-base_task_thread__pool_environment__config__unittest.cc
new file mode 100644
index 000000000000..3b69bef1d3e9
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_task_thread__pool_environment__config__unittest.cc
@@ -0,0 +1,11 @@
+--- base/task/thread_pool/environment_config_unittest.cc.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_test_launcher_test__launcher.cc b/www/ungoogled-chromium/files/patch-base_test_launcher_test__launcher.cc
new file mode 100644
index 000000000000..11e36f98a47b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_test_launcher_test__launcher.cc
@@ -0,0 +1,10 @@
+--- base/test/launcher/test_launcher.cc.orig 2022-10-01 07:40:07 UTC
++++ base/test/launcher/test_launcher.cc
+@@ -65,6 +65,7 @@
+ #include "third_party/libxml/chromium/libxml_utils.h"
+
+ #if BUILDFLAG(IS_POSIX)
++#include <signal.h>
+ #include <fcntl.h>
+
+ #include "base/files/file_descriptor_watcher_posix.h"
diff --git a/www/ungoogled-chromium/files/patch-base_test_test__file__util__linux.cc b/www/ungoogled-chromium/files/patch-base_test_test__file__util__linux.cc
new file mode 100644
index 000000000000..09006e625582
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_test_test__file__util__linux.cc
@@ -0,0 +1,13 @@
+--- base/test/test_file_util_linux.cc.orig 2022-10-01 07:40:07 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 !defined(OS_BSD)
+ if (posix_fadvise(fd.get(), 0, 0, POSIX_FADV_DONTNEED) != 0)
+ return false;
++#endif
+ return true;
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-base_test_test__file__util__posix.cc b/www/ungoogled-chromium/files/patch-base_test_test__file__util__posix.cc
new file mode 100644
index 000000000000..c234b3d0c2e0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_test_test__file__util__posix.cc
@@ -0,0 +1,11 @@
+--- base/test/test_file_util_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/test/test_file_util_posix.cc
+@@ -88,7 +88,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/www/ungoogled-chromium/files/patch-base_third__party_symbolize_symbolize.cc b/www/ungoogled-chromium/files/patch-base_third__party_symbolize_symbolize.cc
new file mode 100644
index 000000000000..ec34dc89e727
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_third__party_symbolize_symbolize.cc
@@ -0,0 +1,11 @@
+--- base/third_party/symbolize/symbolize.cc.orig 2022-10-01 07:40:07 UTC
++++ base/third_party/symbolize/symbolize.cc
+@@ -114,7 +114,7 @@ _END_GOOGLE_NAMESPACE_
+ #if defined(HAVE_DLFCN_H)
+ #include <dlfcn.h>
+ #endif
+-#if BUILDFLAG(IS_OPENBSD)
++#if defined(__OpenBSD__)
+ #include <sys/exec_elf.h>
+ #else
+ #include <elf.h>
diff --git a/www/ungoogled-chromium/files/patch-base_threading_platform__thread.h b/www/ungoogled-chromium/files/patch-base_threading_platform__thread.h
new file mode 100644
index 000000000000..969c9339f278
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_threading_platform__thread.h
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread.h.orig 2022-10-01 07:40:07 UTC
++++ base/threading/platform_thread.h
+@@ -253,7 +253,7 @@ class BASE_EXPORT PlatformThread {
+ // Returns a realtime period provided by `delegate`.
+ static TimeDelta GetRealtimePeriod(Delegate* delegate);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Toggles a specific thread's type at runtime. This can be used to
+ // change the priority of a thread in a different process and will fail
+ // if the calling process does not have proper permissions. The
diff --git a/www/ungoogled-chromium/files/patch-base_threading_platform__thread__linux.cc b/www/ungoogled-chromium/files/patch-base_threading_platform__thread__linux.cc
new file mode 100644
index 000000000000..d7ac0d9a78dd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_threading_platform__thread__linux.cc
@@ -0,0 +1,77 @@
+--- base/threading/platform_thread_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ base/threading/platform_thread_linux.cc
+@@ -29,7 +29,9 @@
+
+ #if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX)
+ #include <pthread.h>
++#if !BUILDFLAG(IS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/resource.h>
+ #include <sys/time.h>
+ #include <sys/types.h>
+@@ -132,7 +134,7 @@ long sched_setattr(pid_t pid,
+ #endif // !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX)
+ #endif // BUILDFLAG(IS_CHROMEOS)
+
+-#if !BUILDFLAG(IS_NACL)
++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD)
+ const FilePath::CharType kCgroupDirectory[] =
+ FILE_PATH_LITERAL("/sys/fs/cgroup");
+
+@@ -304,7 +306,7 @@ void SetThreadCgroupsForThreadType(PlatformThreadId th
+ namespace internal {
+
+ namespace {
+-#if !BUILDFLAG(IS_NACL)
++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD)
+ const struct sched_param kRealTimePrio = {8};
+ #endif
+ } // namespace
+@@ -330,7 +332,7 @@ const ThreadTypeToNiceValuePair kThreadTypeToNiceValue
+ };
+
+ bool CanSetThreadTypeToRealtimeAudio() {
+-#if !BUILDFLAG(IS_NACL)
++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD)
+ // A non-zero soft-limit on RLIMIT_RTPRIO is required to be allowed to invoke
+ // pthread_setschedparam in SetCurrentThreadTypeForPlatform().
+ struct rlimit rlim;
+@@ -342,7 +344,7 @@ bool CanSetThreadTypeToRealtimeAudio() {
+
+ bool SetCurrentThreadTypeForPlatform(ThreadType thread_type,
+ MessagePumpType pump_type_hint) {
+-#if !BUILDFLAG(IS_NACL)
++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD)
+ // For legacy schedtune interface
+ SetThreadCgroupsForThreadType(PlatformThread::CurrentId(), thread_type);
+
+@@ -361,7 +363,7 @@ bool SetCurrentThreadTypeForPlatform(ThreadType thread
+
+ absl::optional<ThreadPriorityForTest>
+ GetCurrentThreadPriorityForPlatformForTest() {
+-#if !BUILDFLAG(IS_NACL)
++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD)
+ int maybe_sched_rr = 0;
+ struct sched_param maybe_realtime_prio = {0};
+ if (pthread_getschedparam(pthread_self(), &maybe_sched_rr,
+@@ -380,7 +382,7 @@ GetCurrentThreadPriorityForPlatformForTest() {
+ void PlatformThread::SetName(const std::string& name) {
+ ThreadIdNameManager::GetInstance()->SetName(name);
+
+-#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX)
++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX) && !BUILDFLAG(IS_BSD)
+ // On linux we can get the thread names to show up in the debugger by setting
+ // the process name for the LWP. We don't want to do this for the main
+ // thread because that would rename the process, causing tools like killall
+@@ -410,8 +412,10 @@ void PlatformThread::SetThreadType(ProcessId process_i
+ // priority.
+ CHECK_NE(thread_id, process_id);
+
++#if !BUILDFLAG(IS_BSD)
+ // For legacy schedtune interface
+ SetThreadCgroupsForThreadType(thread_id, thread_type);
++#endif
+
+ #if BUILDFLAG(IS_CHROMEOS)
+ // For upstream uclamp interface. We try both legacy (schedtune, as done
diff --git a/www/ungoogled-chromium/files/patch-base_threading_platform__thread__posix.cc b/www/ungoogled-chromium/files/patch-base_threading_platform__thread__posix.cc
new file mode 100644
index 000000000000..50cd9860d582
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_threading_platform__thread__posix.cc
@@ -0,0 +1,21 @@
+--- base/threading/platform_thread_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ base/threading/platform_thread_posix.cc
+@@ -76,7 +76,7 @@ void* ThreadFunc(void* params) {
+ if (!thread_params->joinable)
+ base::DisallowSingleton();
+
+-#if !BUILDFLAG(IS_NACL)
++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD)
+ #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
+ partition_alloc::internal::PCScan::NotifyThreadCreated(
+ partition_alloc::internal::GetStackPointer());
+@@ -371,6 +371,9 @@ namespace internal {
+ 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))
diff --git a/www/ungoogled-chromium/files/patch-base_threading_platform__thread__unittest.cc b/www/ungoogled-chromium/files/patch-base_threading_platform__thread__unittest.cc
new file mode 100644
index 000000000000..fb81a24e57fa
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_threading_platform__thread__unittest.cc
@@ -0,0 +1,47 @@
+--- base/threading/platform_thread_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ base/threading/platform_thread_unittest.cc
+@@ -31,7 +31,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>
+@@ -417,7 +417,7 @@ TEST(PlatformThreadTest,
+ // and hardcodes what we know. Please inform scheduler-dev@ch40m1um.qjz9zk 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.
+ constexpr bool kCanIncreasePriority = false;
+@@ -523,7 +523,7 @@ TEST(PlatformThreadTest, SetHugeThreadName) {
+ TEST(PlatformThreadTest, GetDefaultThreadStackSize) {
+ size_t stack_size = PlatformThread::GetDefaultThreadStackSize();
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_FUCHSIA) || \
+- ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \
++ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && \
+ !defined(THREAD_SANITIZER)) || \
+ (BUILDFLAG(IS_ANDROID) && !defined(ADDRESS_SANITIZER))
+ EXPECT_EQ(0u, stack_size);
+@@ -684,12 +684,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/www/ungoogled-chromium/files/patch-base_trace__event_malloc__dump__provider.cc b/www/ungoogled-chromium/files/patch-base_trace__event_malloc__dump__provider.cc
new file mode 100644
index 000000000000..e31a3000825b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_trace__event_malloc__dump__provider.cc
@@ -0,0 +1,30 @@
+--- base/trace_event/malloc_dump_provider.cc.orig 2022-10-01 07:40:07 UTC
++++ base/trace_event/malloc_dump_provider.cc
+@@ -24,6 +24,8 @@
+
+ #if BUILDFLAG(IS_APPLE)
+ #include <malloc/malloc.h>
++#elif defined(OS_BSD)
++#include <stdlib.h>
+ #else
+ #include <malloc.h>
+ #endif
+@@ -185,7 +187,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,
+@@ -356,6 +358,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump
+ &allocated_objects_count);
+ #elif BUILDFLAG(IS_FUCHSIA)
+ // TODO(fuchsia): Port, see https://crbug.com/706592.
++#elif defined(OS_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/www/ungoogled-chromium/files/patch-base_trace__event_memory__dump__manager.cc b/www/ungoogled-chromium/files/patch-base_trace__event_memory__dump__manager.cc
new file mode 100644
index 000000000000..6fc72cbe49c3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_trace__event_memory__dump__manager.cc
@@ -0,0 +1,11 @@
+--- base/trace_event/memory_dump_manager.cc.orig 2022-10-01 07:40:07 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/www/ungoogled-chromium/files/patch-base_trace__event_process__memory__dump.cc b/www/ungoogled-chromium/files/patch-base_trace__event_process__memory__dump.cc
new file mode 100644
index 000000000000..8a3d32f18fee
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_trace__event_process__memory__dump.cc
@@ -0,0 +1,20 @@
+--- base/trace_event/process_memory_dump.cc.orig 2022-10-01 07:40:07 UTC
++++ base/trace_event/process_memory_dump.cc
+@@ -112,7 +112,7 @@ absl::optional<size_t> ProcessMemoryDump::CountResiden
+ #if BUILDFLAG(IS_WIN)
+ std::unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec(
+ new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]);
+-#elif BUILDFLAG(IS_APPLE)
++#elif BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ std::unique_ptr<char[]> vec(new char[max_vec_size]);
+ #elif BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
+ std::unique_ptr<unsigned char[]> vec(new unsigned char[max_vec_size]);
+@@ -134,7 +134,7 @@ absl::optional<size_t> ProcessMemoryDump::CountResiden
+
+ for (size_t i = 0; i < page_count; i++)
+ resident_page_count += vec[i].VirtualAttributes.Valid;
+-#elif BUILDFLAG(IS_FUCHSIA)
++#elif BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // TODO(crbug.com/851760): Implement counting resident bytes.
+ // For now, log and avoid unused variable warnings.
+ NOTIMPLEMENTED_LOG_ONCE();
diff --git a/www/ungoogled-chromium/files/patch-base_tracing_trace__time.cc b/www/ungoogled-chromium/files/patch-base_tracing_trace__time.cc
new file mode 100644
index 000000000000..55691d99604b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_tracing_trace__time.cc
@@ -0,0 +1,28 @@
+--- base/tracing/trace_time.cc.orig 2022-10-01 07:40:07 UTC
++++ base/tracing/trace_time.cc
+@@ -8,13 +8,17 @@
+ #include "build/build_config.h"
+ #include "third_party/perfetto/include/perfetto/base/time.h"
+
++#if BUILDFLAG(IS_FREEBSD)
++#define CLOCK_BOOTTIME CLOCK_UPTIME
++#endif
++
+ namespace base {
+ namespace tracing {
+
+ int64_t TraceBootTicksNow() {
+ // On Windows and Mac, TRACE_TIME_TICKS_NOW() behaves like boottime already.
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ struct timespec ts;
+ int res = clock_gettime(CLOCK_BOOTTIME, &ts);
+ if (res != -1)
+@@ -24,4 +28,4 @@ int64_t TraceBootTicksNow() {
+ }
+
+ } // namespace tracing
+-} // namespace base
+\ No newline at end of file
++} // namespace base
diff --git a/www/ungoogled-chromium/files/patch-base_tracing_trace__time.h b/www/ungoogled-chromium/files/patch-base_tracing_trace__time.h
new file mode 100644
index 000000000000..8728928a1673
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-base_tracing_trace__time.h
@@ -0,0 +1,11 @@
+--- base/tracing/trace_time.h.orig 2022-10-01 07:40:07 UTC
++++ base/tracing/trace_time.h
+@@ -12,7 +12,7 @@ namespace base {
+ namespace tracing {
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // Linux, Android, and Fuchsia all use CLOCK_MONOTONIC. See crbug.com/166153
+ // about efforts to unify base::TimeTicks across all platforms.
+ constexpr perfetto::protos::pbzero::BuiltinClock kTraceClockId =
diff --git a/www/ungoogled-chromium/files/patch-build_config_BUILD.gn b/www/ungoogled-chromium/files/patch-build_config_BUILD.gn
new file mode 100644
index 000000000000..a9e33c0218ee
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_config_BUILD.gn
@@ -0,0 +1,22 @@
+--- build/config/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ build/config/BUILD.gn
+@@ -215,13 +215,17 @@ config("default_libs") {
+ "CoreText.framework",
+ "Foundation.framework",
+ ]
+- } else if (is_linux || is_chromeos) {
++ } else if ((is_linux && !is_bsd) || is_chromeos) {
+ libs = [
+ "dl",
+ "pthread",
+ "rt",
+ ]
+- }
++ } else if (is_bsd) {
++ libs = [
++ "pthread",
++ ]
++ }
+ }
+
+ group("common_deps") {
diff --git a/www/ungoogled-chromium/files/patch-build_config_BUILDCONFIG.gn b/www/ungoogled-chromium/files/patch-build_config_BUILDCONFIG.gn
new file mode 100644
index 000000000000..cf46aee73705
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_config_BUILDCONFIG.gn
@@ -0,0 +1,45 @@
+--- build/config/BUILDCONFIG.gn.orig 2022-10-01 07:40:07 UTC
++++ build/config/BUILDCONFIG.gn
+@@ -136,7 +136,8 @@ declare_args() {
+ is_official_build = false
+
+ # Set to true when compiling with the Clang compiler.
+- is_clang = current_os != "linux" ||
++ is_clang = current_os != "linux" || current_os == "openbsd" ||
++ current_os == "freebsd" ||
+ (current_cpu != "s390x" && current_cpu != "s390" &&
+ current_cpu != "ppc64" && current_cpu != "ppc" &&
+ current_cpu != "mips" && current_cpu != "mips64" &&
+@@ -220,6 +221,10 @@ if (host_toolchain == "") {
+ host_toolchain = "//build/toolchain/aix:$host_cpu"
+ } else if (host_os == "zos") {
+ host_toolchain = "//build/toolchain/zos:$host_cpu"
++ } else if (host_os == "openbsd") {
++ host_toolchain = "//build/toolchain/openbsd:clang_$host_cpu"
++ } else if (host_os == "freebsd") {
++ host_toolchain = "//build/toolchain/freebsd:clang_$host_cpu"
+ } else {
+ assert(false, "Unsupported host_os: $host_os")
+ }
+@@ -264,6 +269,8 @@ if (target_os == "android") {
+ _default_toolchain = "//build/toolchain/aix:$target_cpu"
+ } else if (target_os == "zos") {
+ _default_toolchain = "//build/toolchain/zos:$target_cpu"
++} else if (target_os == "openbsd" || target_os == "freebsd") {
++ _default_toolchain = host_toolchain
+ } else {
+ assert(false, "Unsupported target_os: $target_os")
+ }
+@@ -298,7 +305,11 @@ is_android = current_os == "android"
+ is_chromeos = current_os == "chromeos"
+ is_fuchsia = current_os == "fuchsia"
+ is_ios = current_os == "ios"
+-is_linux = current_os == "linux"
++is_linux = current_os == "linux" || current_os == "openbsd" ||
++ current_os == "freebsd"
++is_openbsd = current_os == "openbsd"
++is_freebsd = current_os == "freebsd"
++is_bsd = current_os == "openbsd" || current_os == "freebsd"
+ is_mac = current_os == "mac"
+ is_nacl = current_os == "nacl"
+ is_win = current_os == "win" || current_os == "winuwp"
diff --git a/www/ungoogled-chromium/files/patch-build_config_compiler_BUILD.gn b/www/ungoogled-chromium/files/patch-build_config_compiler_BUILD.gn
new file mode 100644
index 000000000000..7d8092d64a5b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_config_compiler_BUILD.gn
@@ -0,0 +1,113 @@
+--- build/config/compiler/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ build/config/compiler/BUILD.gn
+@@ -222,13 +222,16 @@ config("default_include_dirs") {
+ # Compiler instrumentation can introduce dependencies in DSOs to symbols in
+ # the executable they are loaded into, so they are unresolved at link-time.
+ config("no_unresolved_symbols") {
+- if (!using_sanitizer &&
++ if (!using_sanitizer && !is_bsd &&
+ (is_linux || is_chromeos || is_android || is_fuchsia)) {
+ ldflags = [
+ "-Wl,-z,defs",
+ "-Wl,--as-needed",
+ ]
+ }
++ if (current_cpu == "x86" && is_openbsd) {
++ ldflags = [ "-Wl,-z,notext" ]
++ }
+ }
+
+ # compiler ---------------------------------------------------------------------
+@@ -452,6 +455,10 @@ config("compiler") {
+ }
+ }
+
++ if (is_openbsd) {
++ ldflags += [ "-Wl,-z,wxneeded" ]
++ }
++
+ # Linux-specific compiler flags setup.
+ # ------------------------------------
+ if (use_gold) {
+@@ -527,7 +534,7 @@ config("compiler") {
+ ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
+ }
+
+- if (is_clang && !is_nacl && current_os != "zos") {
++ if (is_clang && !is_nacl && current_os != "zos" && !is_bsd) {
+ cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
+
+ # TODO(hans): Remove this once Clang generates better optimized debug info
+@@ -891,7 +898,7 @@ config("compiler_cpu_abi") {
+ ]
+ }
+ } else if (current_cpu == "arm") {
+- if (is_clang && !is_android && !is_nacl &&
++ if (is_clang && !is_android && !is_nacl && !is_bsd &&
+ !(is_chromeos_lacros && is_chromeos_device)) {
+ cflags += [ "--target=arm-linux-gnueabihf" ]
+ ldflags += [ "--target=arm-linux-gnueabihf" ]
+@@ -906,7 +913,7 @@ config("compiler_cpu_abi") {
+ cflags += [ "-mtune=$arm_tune" ]
+ }
+ } else if (current_cpu == "arm64") {
+- if (is_clang && !is_android && !is_nacl && !is_fuchsia &&
++ if (is_clang && !is_android && !is_nacl && !is_fuchsia && !is_bsd &&
+ !(is_chromeos_lacros && is_chromeos_device)) {
+ cflags += [ "--target=aarch64-linux-gnu" ]
+ ldflags += [ "--target=aarch64-linux-gnu" ]
+@@ -1234,7 +1241,7 @@ config("compiler_deterministic") {
+ # different build directory like "out/feature_a" and "out/feature_b" if
+ # we build same files with same compile flag.
+ # Other paths are already given in relative, no need to normalize them.
+- if (is_nacl) {
++ if (is_nacl || is_bsd) {
+ # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
+ cflags += [
+ "-Xclang",
+@@ -1532,7 +1539,7 @@ config("default_warnings") {
+ ]
+ }
+
+- if (!is_nacl) {
++ if (!is_nacl && !is_bsd) {
+ cflags += [
+ # TODO(crbug.com/1343975) Evaluate and possibly enable.
+ "-Wno-deprecated-builtins",
+@@ -1705,7 +1712,7 @@ config("no_chromium_code") {
+ # third-party libraries.
+ "-Wno-c++11-narrowing",
+ ]
+- if (!is_nacl) {
++ if (!is_nacl && !is_freebsd) {
+ cflags += [
+ # Disabled for similar reasons as -Wunused-variable.
+ "-Wno-unused-but-set-variable",
+@@ -2219,7 +2226,7 @@ config("afdo_optimize_size") {
+ # There are some targeted places that AFDO regresses, so we provide a separate
+ # config to allow AFDO to be disabled per-target.
+ config("afdo") {
+- if (is_clang) {
++ if (is_clang && !is_bsd) {
+ cflags = []
+ if (clang_emit_debug_info_for_profiling) {
+ # Add the following flags to generate debug info for profiling.
+@@ -2235,7 +2242,7 @@ config("afdo") {
+ cflags += [ "-fprofile-sample-use=${rebased_clang_sample_profile}" ]
+ inputs = [ _clang_sample_profile ]
+ }
+- } else if (auto_profile_path != "" && is_a_target_toolchain) {
++ } else if (auto_profile_path != "" && is_a_target_toolchain && !is_bsd) {
+ cflags = [ "-fauto-profile=${auto_profile_path}" ]
+ inputs = [ auto_profile_path ]
+ }
+@@ -2375,7 +2382,8 @@ config("symbols") {
+ }
+ }
+
+- if (is_clang && (!is_nacl || is_nacl_saigo) && current_os != "zos") {
++ if (is_clang && (!is_nacl || is_nacl_saigo) && current_os != "zos" &&
++ !is_bsd) {
+ if (is_apple) {
+ # TODO(https://crbug.com/1050118): Investigate missing debug info on mac.
+ # Make sure we don't use constructor homing on mac.
diff --git a/www/ungoogled-chromium/files/patch-build_config_linux_BUILD.gn b/www/ungoogled-chromium/files/patch-build_config_linux_BUILD.gn
new file mode 100644
index 000000000000..466c6829e7d1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_config_linux_BUILD.gn
@@ -0,0 +1,11 @@
+--- build/config/linux/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ build/config/linux/BUILD.gn
+@@ -41,7 +41,7 @@ config("runtime_library") {
+ }
+
+ if ((!is_chromeos || default_toolchain != "//build/toolchain/cros:target") &&
+- (!use_custom_libcxx || current_cpu == "mipsel")) {
++ (!use_custom_libcxx || current_cpu == "mipsel") && !is_bsd) {
+ libs = [ "atomic" ]
+ }
+ }
diff --git a/www/ungoogled-chromium/files/patch-build_config_linux_pkg-config.py b/www/ungoogled-chromium/files/patch-build_config_linux_pkg-config.py
new file mode 100644
index 000000000000..6b0ac80396d4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_config_linux_pkg-config.py
@@ -0,0 +1,11 @@
+--- build/config/linux/pkg-config.py.orig 2022-10-01 07:40:07 UTC
++++ build/config/linux/pkg-config.py
+@@ -109,7 +109,7 @@ def main():
+ # If this is run on non-Linux platforms, just return nothing and indicate
+ # success. This allows us to "kind of emulate" a Linux build from other
+ # platforms.
+- if "linux" not in sys.platform:
++ if not sys.platform.startswith(tuple(['linux', 'openbsd', 'freebsd'])):
+ print("[[],[],[],[],[]]")
+ return 0
+
diff --git a/www/ungoogled-chromium/files/patch-build_config_ozone.gni b/www/ungoogled-chromium/files/patch-build_config_ozone.gni
new file mode 100644
index 000000000000..b42f13511953
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_config_ozone.gni
@@ -0,0 +1,19 @@
+--- build/config/ozone.gni.orig 2022-10-01 07:40:07 UTC
++++ build/config/ozone.gni
+@@ -87,7 +87,15 @@ declare_args() {
+ } else if (is_chromeos_lacros) {
+ ozone_platform = "wayland"
+ ozone_platform_wayland = true
+- } else if (is_linux) {
++ } else if (is_linux && !is_bsd) {
++ ozone_platform = "x11"
++ ozone_platform_wayland = true
++ ozone_platform_x11 = true
++ } else if (is_openbsd) {
++ ozone_platform = "x11"
++ ozone_platform_wayland = false
++ ozone_platform_x11 = true
++ } else if (is_freebsd) {
+ ozone_platform = "x11"
+ ozone_platform_wayland = true
+ ozone_platform_x11 = true
diff --git a/www/ungoogled-chromium/files/patch-build_config_rust.gni b/www/ungoogled-chromium/files/patch-build_config_rust.gni
new file mode 100644
index 000000000000..0c1aad6f4204
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_config_rust.gni
@@ -0,0 +1,11 @@
+--- build/config/rust.gni.orig 2022-10-01 07:40:07 UTC
++++ build/config/rust.gni
+@@ -124,7 +124,7 @@ if (enable_rust) {
+ rust_sysroot = "//third_party/rust-toolchain"
+ use_unverified_rust_toolchain = false
+ } else {
+- if (host_os != "linux") {
++ if (host_os != "linux" && host_os != "openbsd" && host_os != "freebsd") {
+ assert(false,
+ "Attempt to use Android Rust toolchain on an unsupported platform")
+ }
diff --git a/www/ungoogled-chromium/files/patch-build_config_v8__target__cpu.gni b/www/ungoogled-chromium/files/patch-build_config_v8__target__cpu.gni
new file mode 100644
index 000000000000..3d883327375b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_config_v8__target__cpu.gni
@@ -0,0 +1,13 @@
+--- build/config/v8_target_cpu.gni.orig 2022-10-01 07:40:07 UTC
++++ build/config/v8_target_cpu.gni
+@@ -36,6 +36,10 @@ declare_args() {
+ if (v8_target_cpu == "") {
+ if (current_toolchain == "//build/toolchain/linux:clang_x64_v8_arm64") {
+ v8_target_cpu = "arm64"
++ } else if (current_toolchain == "//build/toolchain/openbsd:clang_arm64") {
++ v8_target_cpu = "arm64"
++ } else if (current_toolchain == "//build/toolchain/freebsd:clang_arm64") {
++ v8_target_cpu = "arm64"
+ } else if (current_toolchain == "//build/toolchain/linux:clang_x86_v8_arm") {
+ v8_target_cpu = "arm"
+ } else if (current_toolchain ==
diff --git a/www/ungoogled-chromium/files/patch-build_detect__host__arch.py b/www/ungoogled-chromium/files/patch-build_detect__host__arch.py
new file mode 100644
index 000000000000..2d77e503b8c6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_detect__host__arch.py
@@ -0,0 +1,11 @@
+--- build/detect_host_arch.py.orig 2022-10-01 07:40:07 UTC
++++ build/detect_host_arch.py
+@@ -21,6 +21,8 @@ def HostArch():
+ host_arch = 'ia32'
+ elif host_arch in ['x86_64', 'amd64']:
+ host_arch = 'x64'
++ elif host_arch.startswith('arm64'):
++ host_arch = 'arm64'
+ elif host_arch.startswith('arm'):
+ host_arch = 'arm'
+ elif host_arch.startswith('aarch64'):
diff --git a/www/ungoogled-chromium/files/patch-build_gn__run__binary.py b/www/ungoogled-chromium/files/patch-build_gn__run__binary.py
new file mode 100644
index 000000000000..692808585f8b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_gn__run__binary.py
@@ -0,0 +1,11 @@
+--- build/gn_run_binary.py.orig 2022-10-01 07:40:07 UTC
++++ build/gn_run_binary.py
+@@ -24,7 +24,7 @@ if not os.path.isabs(path):
+ # The rest of the arguments are passed directly to the executable.
+ args = [path] + sys.argv[2:]
+
+-ret = subprocess.call(args)
++ret = subprocess.call(args, env={"CHROME_EXE_PATH":"${WRKSRC}/out/Release/chrome","LD_LIBRARY_PATH":"${WRKSRC}/out/Release"})
+ if ret != 0:
+ if ret <= -100:
+ # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to
diff --git a/www/ungoogled-chromium/files/patch-build_linux_chrome.map b/www/ungoogled-chromium/files/patch-build_linux_chrome.map
new file mode 100644
index 000000000000..8a2855e7f6de
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_linux_chrome.map
@@ -0,0 +1,13 @@
+--- build/linux/chrome.map.orig 2022-10-01 07:40:07 UTC
++++ build/linux/chrome.map
+@@ -20,6 +20,10 @@ global:
+ # Program entry point.
+ _start;
+
++ # FreeBSD specific variables.
++ __progname;
++ environ;
++
+ # Memory allocation symbols. We want chrome and any libraries to
+ # share the same heap, so it is correct to export these symbols.
+ aligned_alloc;
diff --git a/www/ungoogled-chromium/files/patch-build_linux_strip__binary.py b/www/ungoogled-chromium/files/patch-build_linux_strip__binary.py
new file mode 100644
index 000000000000..cf324c1fabd2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_linux_strip__binary.py
@@ -0,0 +1,10 @@
+--- build/linux/strip_binary.py.orig 2022-10-01 07:40:07 UTC
++++ build/linux/strip_binary.py
+@@ -10,6 +10,7 @@ import sys
+
+
+ def main():
++ return 0
+ argparser = argparse.ArgumentParser(description='eu-strip binary.')
+
+ argparser.add_argument('--eu-strip-binary-path', help='eu-strip path.')
diff --git a/www/ungoogled-chromium/files/patch-build_linux_unbundle_libevent.gn b/www/ungoogled-chromium/files/patch-build_linux_unbundle_libevent.gn
new file mode 100644
index 000000000000..262907b65bff
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_linux_unbundle_libevent.gn
@@ -0,0 +1,15 @@
+--- build/linux/unbundle/libevent.gn.orig 2022-10-01 07:40:07 UTC
++++ build/linux/unbundle/libevent.gn
+@@ -9,7 +9,12 @@ shim_headers("libevent_shim") {
+ headers = [ "event.h" ]
+ }
+
++config("system_libevent") {
++ defines = [ "USE_SYSTEM_LIBEVENT=1" ]
++}
++
+ source_set("libevent") {
+ deps = [ ":libevent_shim" ]
+ libs = [ "event" ]
++ public_configs = [ ":system_libevent" ]
+ }
diff --git a/www/ungoogled-chromium/files/patch-build_linux_unbundle_libusb.gn b/www/ungoogled-chromium/files/patch-build_linux_unbundle_libusb.gn
new file mode 100644
index 000000000000..2144bd3922d1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_linux_unbundle_libusb.gn
@@ -0,0 +1,27 @@
+--- build/linux/unbundle/libusb.gn.orig 2022-10-01 07:40:07 UTC
++++ build/linux/unbundle/libusb.gn
+@@ -0,0 +1,24 @@
++# Copyright 2016 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.
++
++import("//build/config/linux/pkg_config.gni")
++import("//build/shim_headers.gni")
++
++pkg_config("system_libusb") {
++ packages = [ "libusb-1.0" ]
++}
++
++shim_headers("libusb_shim") {
++ root_path = "src/libusb"
++ headers = [
++ "libusb.h",
++ ]
++}
++
++source_set("libusb") {
++ deps = [
++ ":libusb_shim",
++ ]
++ public_configs = [ ":system_libusb" ]
++}
diff --git a/www/ungoogled-chromium/files/patch-build_linux_unbundle_replace__gn__files.py b/www/ungoogled-chromium/files/patch-build_linux_unbundle_replace__gn__files.py
new file mode 100644
index 000000000000..f39149c396dd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_linux_unbundle_replace__gn__files.py
@@ -0,0 +1,10 @@
+--- build/linux/unbundle/replace_gn_files.py.orig 2022-10-01 07:40:07 UTC
++++ build/linux/unbundle/replace_gn_files.py
+@@ -52,6 +52,7 @@ REPLACEMENTS = {
+ 'libjpeg': 'third_party/libjpeg.gni',
+ 'libjxl' : 'third_party/libjxl/BUILD.gn',
+ 'libpng': 'third_party/libpng/BUILD.gn',
++ 'libusb': 'third_party/libusb/BUILD.gn',
+ 'libvpx': 'third_party/libvpx/BUILD.gn',
+ 'libwebp': 'third_party/libwebp/BUILD.gn',
+ 'libxml': 'third_party/libxml/BUILD.gn',
diff --git a/www/ungoogled-chromium/files/patch-build_toolchain_freebsd_BUILD.gn b/www/ungoogled-chromium/files/patch-build_toolchain_freebsd_BUILD.gn
new file mode 100644
index 000000000000..3e36c27ec393
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_toolchain_freebsd_BUILD.gn
@@ -0,0 +1,69 @@
+--- build/toolchain/freebsd/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ build/toolchain/freebsd/BUILD.gn
+@@ -0,0 +1,66 @@
++# Copyright 2013 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.
++
++import("//build/config/sysroot.gni")
++import("//build/toolchain/gcc_toolchain.gni")
++
++clang_toolchain("clang_x86") {
++ toolchain_args = {
++ current_cpu = "x86"
++ current_os = "freebsd"
++ }
++}
++
++gcc_toolchain("x86") {
++ cc = "gcc"
++ cxx = "g++"
++
++ readelf = "readelf"
++ nm = "nm"
++ ar = "ar"
++ ld = cxx
++
++ toolchain_args = {
++ current_cpu = "x86"
++ current_os = "freebsd"
++ is_clang = false
++ }
++}
++
++clang_toolchain("clang_x64") {
++ toolchain_args = {
++ current_cpu = "x64"
++ current_os = "freebsd"
++ }
++}
++
++gcc_toolchain("x64") {
++ cc = "gcc"
++ cxx = "g++"
++
++ readelf = "readelf"
++ nm = "nm"
++ ar = "ar"
++ ld = cxx
++
++ toolchain_args = {
++ current_cpu = "x64"
++ current_os = "freebsd"
++ is_clang = false
++ }
++}
++
++clang_toolchain("clang_arm") {
++ toolchain_args = {
++ current_cpu = "arm64"
++ current_os = "freebsd"
++ }
++}
++
++clang_toolchain("clang_arm64") {
++ toolchain_args = {
++ current_cpu = "arm64"
++ current_os = "freebsd"
++ }
++}
diff --git a/www/ungoogled-chromium/files/patch-build_toolchain_gcc__solink__wrapper.py b/www/ungoogled-chromium/files/patch-build_toolchain_gcc__solink__wrapper.py
new file mode 100644
index 000000000000..49a5819c4cf1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_toolchain_gcc__solink__wrapper.py
@@ -0,0 +1,11 @@
+--- build/toolchain/gcc_solink_wrapper.py.orig 2022-10-01 07:40:07 UTC
++++ build/toolchain/gcc_solink_wrapper.py
+@@ -39,7 +39,7 @@ def CollectDynSym(args):
+ """Replaces: nm --format=posix -g -D -p $sofile | cut -f1-2 -d' '"""
+ toc = ''
+ nm = subprocess.Popen(wrapper_utils.CommandToRun(
+- [args.nm, '--format=posix', '-g', '-D', '-p', args.sofile]),
++ [args.nm, '-g', '-D', '-p', args.sofile]),
+ stdout=subprocess.PIPE,
+ bufsize=-1,
+ universal_newlines=True)
diff --git a/www/ungoogled-chromium/files/patch-build_toolchain_gcc__toolchain.gni b/www/ungoogled-chromium/files/patch-build_toolchain_gcc__toolchain.gni
new file mode 100644
index 000000000000..fe75be776441
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_toolchain_gcc__toolchain.gni
@@ -0,0 +1,44 @@
+--- build/toolchain/gcc_toolchain.gni.orig 2022-10-01 07:40:07 UTC
++++ build/toolchain/gcc_toolchain.gni
+@@ -53,6 +53,13 @@ if (enable_resource_allowlist_generation) {
+ "enable_resource_allowlist_generation=true does not work for target_os=$target_os")
+ }
+
++declare_args() {
++ extra_cflags = ""
++ extra_cppflags = ""
++ extra_cxxflags = ""
++ extra_ldflags = ""
++}
++
+ # This template defines a toolchain for something that works like gcc
+ # (including clang).
+ #
+@@ -786,22 +793,12 @@ template("gcc_toolchain") {
+ # use_gold too.
+ template("clang_toolchain") {
+ gcc_toolchain(target_name) {
+- _path = "$clang_base_path/bin"
+- _is_path_absolute = get_path_info(_path, "abspath") == _path
+-
+- # Preserve absolute paths for tools like distcc.
+- if (_is_path_absolute && filter_include([ _path ], [ "//*" ]) == []) {
+- prefix = _path
+- } else {
+- prefix = rebase_path(_path, root_build_dir)
+- }
+-
+- cc = "${prefix}/clang"
+- cxx = "${prefix}/clang++"
++ cc = "cc"
++ cxx = "c++"
+ ld = cxx
+- readelf = "${prefix}/llvm-readelf"
+- ar = "${prefix}/llvm-ar"
+- nm = "${prefix}/llvm-nm"
++ readelf = "readelf"
++ ar = "ar"
++ nm = "nm"
+
+ forward_variables_from(invoker,
+ [
diff --git a/www/ungoogled-chromium/files/patch-build_toolchain_openbsd_BUILD.gn b/www/ungoogled-chromium/files/patch-build_toolchain_openbsd_BUILD.gn
new file mode 100644
index 000000000000..3d32dd3fac6c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_toolchain_openbsd_BUILD.gn
@@ -0,0 +1,69 @@
+--- build/toolchain/openbsd/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ build/toolchain/openbsd/BUILD.gn
+@@ -0,0 +1,66 @@
++# Copyright 2013 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.
++
++import("//build/config/sysroot.gni")
++import("//build/toolchain/gcc_toolchain.gni")
++
++clang_toolchain("clang_x86") {
++ toolchain_args = {
++ current_cpu = "x86"
++ current_os = "openbsd"
++ }
++}
++
++gcc_toolchain("x86") {
++ cc = "gcc"
++ cxx = "g++"
++
++ readelf = "readelf"
++ nm = "nm"
++ ar = "ar"
++ ld = cxx
++
++ toolchain_args = {
++ current_cpu = "x86"
++ current_os = "openbsd"
++ is_clang = false
++ }
++}
++
++clang_toolchain("clang_x64") {
++ toolchain_args = {
++ current_cpu = "x64"
++ current_os = "openbsd"
++ }
++}
++
++gcc_toolchain("x64") {
++ cc = "gcc"
++ cxx = "g++"
++
++ readelf = "readelf"
++ nm = "nm"
++ ar = "ar"
++ ld = cxx
++
++ toolchain_args = {
++ current_cpu = "x64"
++ current_os = "openbsd"
++ is_clang = false
++ }
++}
++
++clang_toolchain("clang_arm") {
++ toolchain_args = {
++ current_cpu = "arm64"
++ current_os = "openbsd"
++ }
++}
++
++clang_toolchain("clang_arm64") {
++ toolchain_args = {
++ current_cpu = "arm64"
++ current_os = "openbsd"
++ }
++}
diff --git a/www/ungoogled-chromium/files/patch-cc_BUILD.gn b/www/ungoogled-chromium/files/patch-cc_BUILD.gn
new file mode 100644
index 000000000000..ae72f0ae5023
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-cc_BUILD.gn
@@ -0,0 +1,19 @@
+--- cc/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ cc/BUILD.gn
+@@ -664,7 +664,7 @@ cc_test_static_library("test_support") {
+ if (enable_vulkan) {
+ deps += [ "//gpu/vulkan/init" ]
+ }
+- if (!is_android) {
++ if (!is_android && !is_bsd) {
+ data_deps = [ "//third_party/mesa_headers" ]
+ }
+ }
+@@ -891,7 +891,6 @@ cc_test("cc_unittests") {
+ data = [ "//components/viz/test/data/" ]
+ data_deps = [
+ "//testing/buildbot/filters:cc_unittests_filters",
+- "//third_party/mesa_headers",
+ ]
+
+ if (is_android && enable_chrome_android_internal) {
diff --git a/www/ungoogled-chromium/files/patch-chrome_app_app__management__strings.grdp b/www/ungoogled-chromium/files/patch-chrome_app_app__management__strings.grdp
new file mode 100644
index 000000000000..e454c8c799f5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_app_app__management__strings.grdp
@@ -0,0 +1,11 @@
+--- chrome/app/app_management_strings.grdp.orig 2022-10-01 07:40:07 UTC
++++ chrome/app/app_management_strings.grdp
+@@ -173,7 +173,7 @@
+ You can open and edit supported files with this app from Finder or other apps. To control which files open this app by default, <ph name="BEGIN_LINK">&lt;a href="#"&gt;</ph>learn how to set default apps on your device<ph name="END_LINK">&lt;/a&gt;</ph>.
+ </message>
+ </if>
+- <if expr="is_fuchsia or is_linux">
++ <if expr="is_fuchsia or is_posix">
+ <message name="IDS_APP_MANAGEMENT_FILE_HANDLING_SET_DEFAULTS_LINK" desc="Further explanation of the File Handling API, including text describing the purpose of the toggle (referencing a generic Linux file browser app) and a link to a learn more link for default filetype associations.">
+ You can open and edit supported files with this app from your file browser or other apps. To control which files open this app by default, <ph name="BEGIN_LINK">&lt;a href="#"&gt;</ph>learn how to set default apps on your device<ph name="END_LINK">&lt;/a&gt;</ph>.
+ </message>
diff --git a/www/ungoogled-chromium/files/patch-chrome_app_chrome__command__ids.h b/www/ungoogled-chromium/files/patch-chrome_app_chrome__command__ids.h
new file mode 100644
index 000000000000..481758e7d612
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_app_chrome__command__ids.h
@@ -0,0 +1,11 @@
+--- chrome/app/chrome_command_ids.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/app/chrome_command_ids.h
+@@ -67,7 +67,7 @@
+ #define IDC_NAME_WINDOW 34049
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ #define IDC_USE_SYSTEM_TITLE_BAR 34051
+ #define IDC_RESTORE_WINDOW 34052
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_app_chrome__main.cc b/www/ungoogled-chromium/files/patch-chrome_app_chrome__main.cc
new file mode 100644
index 000000000000..c90beca3a400
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_app_chrome__main.cc
@@ -0,0 +1,20 @@
+--- chrome/app/chrome_main.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/app/chrome_main.cc
+@@ -26,7 +26,7 @@
+ #include "chrome/app/notification_metrics.h"
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "base/base_switches.h"
+ #endif
+
+@@ -152,7 +152,7 @@ int ChromeMain(int argc, const char** argv) {
+ headless::SetUpCommandLine(command_line);
+ } else {
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ if (command_line->HasSwitch(switches::kHeadless)) {
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ command_line->AppendSwitch(::headless::switches::kEnableCrashReporter);
diff --git a/www/ungoogled-chromium/files/patch-chrome_app_chrome__main__delegate.cc b/www/ungoogled-chromium/files/patch-chrome_app_chrome__main__delegate.cc
new file mode 100644
index 000000000000..1bc0c996a5e0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_app_chrome__main__delegate.cc
@@ -0,0 +1,121 @@
+--- chrome/app/chrome_main_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/app/chrome_main_delegate.cc
+@@ -126,7 +126,7 @@
+ #include "components/about_ui/credit_utils.h"
+ #endif
+
+-#if BUILDFLAG(ENABLE_NACL) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
++#if BUILDFLAG(ENABLE_NACL) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_BSD)
+ #include "components/nacl/common/nacl_paths.h"
+ #include "components/nacl/zygote/nacl_fork_delegate_linux.h"
+ #endif
+@@ -169,16 +169,16 @@
+ #include "v8/include/v8.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/environment.h"
+ #endif
+
+-#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/message_loop/message_pump_libevent.h"
+ #endif
+
+ #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/policy/policy_path_parser.h"
+ #include "components/crash/core/app/crashpad.h"
+ #endif
+@@ -329,7 +329,7 @@ void AdjustLinuxOOMScore(const std::string& process_ty
+ // and resources loaded.
+ bool SubprocessNeedsResourceBundle(const std::string& process_type) {
+ return
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // The zygote process opens the resources for the renderers.
+ process_type == switches::kZygoteProcess ||
+ #endif
+@@ -415,7 +415,7 @@ bool HandleVersionSwitches(const base::CommandLine& co
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // Show the man page if --help or -h is on the command line.
+ void HandleHelpSwitches(const base::CommandLine& command_line) {
+ if (command_line.HasSwitch(switches::kHelp) ||
+@@ -506,7 +506,7 @@ void InitializeUserDataDir(base::CommandLine* command_
+ std::string process_type =
+ command_line->GetSwitchValueASCII(switches::kProcessType);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // On Linux, Chrome does not support running multiple copies under different
+ // DISPLAYs, so the profile directory can be specified in the environment to
+ // support the virtual desktop use-case.
+@@ -589,7 +589,7 @@ void RecordMainStartupMetrics(base::TimeTicks applicat
+ #endif
+
+ #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Record the startup process creation time on supported platforms. On Android
+ // this is recorded in ChromeMainDelegateAndroid.
+ startup_metric_utils::RecordStartupProcessCreationTime(
+@@ -767,6 +767,8 @@ void ChromeMainDelegate::CommonEarlyInitialization() {
+ // not always enabled on Linux/ChromeOS.
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+ bool enable_gwp_asan = crash_reporter::IsCrashpadEnabled();
++#elif BUILDFLAG(IS_BSD)
++ bool enable_gwp_asan = false;
+ #else
+ bool enable_gwp_asan = true;
+ #endif
+@@ -826,7 +828,7 @@ void ChromeMainDelegate::CommonEarlyInitialization() {
+ base::internal::TimerBase::InitializeFeatures();
+ base::InitializeCpuReductionExperiment();
+ base::sequence_manager::internal::SequenceManagerImpl::InitializeFeatures();
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ base::MessagePumpLibevent::InitializeFeatures();
+ #elif BUILDFLAG(IS_MAC)
+ base::PlatformThread::InitializeOptimizedRealtimeThreadingFeature();
+@@ -916,7 +918,7 @@ absl::optional<int> ChromeMainDelegate::BasicStartupCo
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // This will directly exit if the user asked for help.
+ HandleHelpSwitches(command_line);
+ #endif
+@@ -946,7 +948,7 @@ absl::optional<int> ChromeMainDelegate::BasicStartupCo
+ #if BUILDFLAG(IS_CHROMEOS)
+ chromeos::dbus_paths::RegisterPathProvider();
+ #endif
+-#if BUILDFLAG(ENABLE_NACL) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
++#if BUILDFLAG(ENABLE_NACL) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD))
+ nacl::RegisterPathProvider();
+ #endif
+
+@@ -1336,7 +1338,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ CHECK(!loaded_locale.empty()) << "Locale could not be found for " << locale;
+ }
+
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ // Zygote needs to call InitCrashReporter() in RunZygote().
+ if (process_type != switches::kZygoteProcess) {
+ if (command_line.HasSwitch(switches::kPreCrashpadCrashTest)) {
+@@ -1412,7 +1414,7 @@ absl::variant<int, content::MainFunctionParams> Chrome
+
+ // This entry is not needed on Linux, where the NaCl loader
+ // process is launched via nacl_helper instead.
+-#if BUILDFLAG(ENABLE_NACL) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(ENABLE_NACL) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD)
+ {switches::kNaClLoaderProcess, NaClMain},
+ #else
+ {"<invalid>", nullptr}, // To avoid constant array of size 0
diff --git a/www/ungoogled-chromium/files/patch-chrome_app_chromium__strings.grd b/www/ungoogled-chromium/files/patch-chrome_app_chromium__strings.grd
new file mode 100644
index 000000000000..332a015cc721
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_app_chromium__strings.grd
@@ -0,0 +1,20 @@
+--- chrome/app/chromium_strings.grd.orig 2022-10-01 07:40:07 UTC
++++ chrome/app/chromium_strings.grd
+@@ -296,7 +296,7 @@ If you update this file, be sure also to update google
+ Welcome to Chromium; new browser window opened
+ </message>
+ </if>
+- <if expr="is_macosx or is_linux">
++ <if expr="is_macosx or is_posix">
+ <message name="IDS_FIRST_RUN_DIALOG_WINDOW_TITLE" desc="Window title of First Run dialog on Mac and Linux, displayed in title bar">
+ Welcome to Chromium
+ </message>
+@@ -410,7 +410,7 @@ If you update this file, be sure also to update google
+ Chromium may not function correctly because it is no longer supported on Windows XP or Windows Vista
+ </message>
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_LINUX_OBSOLETE" desc="A message displayed on an at-launch infobar and about:help warning the user that the OS version they are using is no longer supported.">
+ Chromium may not function correctly because it is no longer supported on this Linux distribution
+ </message>
diff --git a/www/ungoogled-chromium/files/patch-chrome_app_generated__resources.grd b/www/ungoogled-chromium/files/patch-chrome_app_generated__resources.grd
new file mode 100644
index 000000000000..6fc46e66c92a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_app_generated__resources.grd
@@ -0,0 +1,74 @@
+--- chrome/app/generated_resources.grd.orig 2022-10-01 07:40:07 UTC
++++ chrome/app/generated_resources.grd
+@@ -2,7 +2,7 @@
+
+ <!--
+ This file contains definitions of resources that will be translated for each
+-locale. The variables is_win, is_macosx, is_linux, and is_posix are available
++locale. The variables is_win, is_macosx, is_posix, and is_posix are available
+ for making strings OS specific. Other platform defines such as use_titlecase
+ are declared in tools/grit/grit_rule.gni.
+ -->
+@@ -3069,7 +3069,7 @@ are declared in tools/grit/grit_rule.gni.
+ </if>
+
+ <!-- Bluetooth Device Credentials (i.e. PIN/Passkey) dialog -->
+- <if expr="is_win or is_linux">
++ <if expr="is_win or is_posix">
+ <message name="IDS_BLUETOOTH_DEVICE_CREDENTIALS_TITLE" desc="Title of the Bluetooth device credentials prompt dialog.">
+ Device Credentials
+ </message>
+@@ -4802,7 +4802,7 @@ are declared in tools/grit/grit_rule.gni.
+ Read information about your browser, OS, device, installed software, registry values and files
+ </message>
+ </if>
+- <if expr="is_macosx or is_linux">
++ <if expr="is_macosx or is_posix">
+ <message name="IDS_EXTENSION_PROMPT_WARNING_ENTERPRISE_REPORTING_PRIVATE_ENABLED_LINUX_AND_MACOS" desc="Permission string for enterprise private reporting permission on Linux and MacOS.">
+ Read information about your browser, OS, device, installed software and files
+ </message>
+@@ -5439,7 +5439,7 @@ Keep your key file in a safe place. You will need it t
+ Old versions of Chrome Apps won't open on Windows devices after December 2022. Contact your administrator to update to a new version or remove this app.
+ </message>
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_FORCE_INSTALLED_DEPRECATED_APPS_CONTENT" desc="Content of the force installed deprecated app dialog">
+ Old versions of Chrome Apps won't open on Linux devices after December 2022. Contact your administrator to update to a new version or remove this app.
+ </message>
+@@ -5467,7 +5467,7 @@ Keep your key file in a safe place. You will need it t
+ Old versions of Chrome apps won't open on Windows devices after December 2022. You can check if there's a new version available.
+ </message>
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_DEPRECATED_APPS_MONITOR_RENDERER" desc="Dialog content that educates users that Chrome Apps will soon no longer launch.">
+ Old versions of Chrome apps won't open on Linux devices after December 2022. You can check if there's a new version available.
+ </message>
+@@ -8964,7 +8964,7 @@ Check your passwords anytime in <ph name="GOOGLE_PASSW
+ Google Pay
+ </message>
+
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_SHOW_WINDOW_DECORATIONS" desc="The label of a radio button in the options dialog for using the system title bar and borders.">
+ Use system title bar and borders
+ </message>
+@@ -10148,7 +10148,7 @@ Please help our engineers fix this problem. Tell us wh
+ Set as default
+ </message>
+
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_MINIMIZE_WINDOW_MENU" desc="The Linux browser window menu item text for minimizing the window.">
+ Minimize
+ </message>
+@@ -12211,7 +12211,7 @@ Please help our engineers fix this problem. Tell us wh
+ Open Anyway
+ </message>
+
+- <if expr="is_win or is_macosx or is_linux">
++ <if expr="is_win or is_macosx or is_posix">
+ <message name="IDS_UTILITY_PROCESS_SYSTEM_SIGNALS_NAME" desc="The name of the utility process used to collect system signals. Only spawned on Windows, Mac or Linux.">
+ System Signals Utilities
+ </message>
diff --git a/www/ungoogled-chromium/files/patch-chrome_app_google__chrome__strings.grd b/www/ungoogled-chromium/files/patch-chrome_app_google__chrome__strings.grd
new file mode 100644
index 000000000000..16fab79ee3b7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_app_google__chrome__strings.grd
@@ -0,0 +1,20 @@
+--- chrome/app/google_chrome_strings.grd.orig 2022-10-01 07:40:07 UTC
++++ chrome/app/google_chrome_strings.grd
+@@ -301,7 +301,7 @@ chromium_strings.grd. -->
+ Welcome to Chrome; new browser window opened
+ </message>
+ </if>
+- <if expr="is_macosx or is_linux">
++ <if expr="is_macosx or is_posix">
+ <message name="IDS_FIRST_RUN_DIALOG_WINDOW_TITLE" desc="Window title of First Run dialog on Mac and Linux, displayed in title bar">
+ Welcome to Google Chrome
+ </message>
+@@ -438,7 +438,7 @@ chromium_strings.grd. -->
+ This computer will no longer receive Google Chrome updates because Windows XP and Windows Vista are no longer supported
+ </message>
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_LINUX_OBSOLETE" desc="A message displayed on an at-launch infobar and about:help warning the user that the OS version they are using is no longer supported.">
+ Google Chrome may not function correctly because it is no longer supported on this Linux distribution
+ </message>
diff --git a/www/ungoogled-chromium/files/patch-chrome_app_profiles__strings.grdp b/www/ungoogled-chromium/files/patch-chrome_app_profiles__strings.grdp
new file mode 100644
index 000000000000..98e99a73a793
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_app_profiles__strings.grdp
@@ -0,0 +1,11 @@
+--- chrome/app/profiles_strings.grdp.orig 2022-10-01 07:40:07 UTC
++++ chrome/app/profiles_strings.grdp
+@@ -66,7 +66,7 @@
+ Add Profile...
+ </message>
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_PROFILES_ADD_PROFILE_LABEL" desc="Menu item for adding a new profile.">
+ Add profile...
+ </message>
diff --git a/www/ungoogled-chromium/files/patch-chrome_app_settings__strings.grdp b/www/ungoogled-chromium/files/patch-chrome_app_settings__strings.grdp
new file mode 100644
index 000000000000..533e7b17ae37
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_app_settings__strings.grdp
@@ -0,0 +1,20 @@
+--- chrome/app/settings_strings.grdp.orig 2022-10-01 07:40:07 UTC
++++ chrome/app/settings_strings.grdp
+@@ -134,7 +134,7 @@
+ Theme
+ </message>
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_SETTINGS_SYSTEM_THEME" desc="Text of the label describing the system (GTK+) browser theme on Linux">
+ GTK+
+ </message>
+@@ -148,7 +148,7 @@
+ Use Classic
+ </message>
+ </if>
+- <if expr="not is_linux or is_chromeos or is_fuchsia">
++ <if expr="not is_posix or is_chromeos or is_fuchsia">
+ <message name="IDS_SETTINGS_RESET_TO_DEFAULT_THEME" desc="Name of the control which resets the browser theme back to the default theme.">
+ Reset to default
+ </message>
diff --git a/www/ungoogled-chromium/files/patch-chrome_app_theme_chrome__unscaled__resources.grd b/www/ungoogled-chromium/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
new file mode 100644
index 000000000000..20d89d435296
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
@@ -0,0 +1,32 @@
+--- chrome/app/theme/chrome_unscaled_resources.grd.orig 2022-10-01 07:40:07 UTC
++++ chrome/app/theme/chrome_unscaled_resources.grd
+@@ -15,12 +15,12 @@
+ <release seq="1">
+ <includes>
+ <if expr="_google_chrome">
+- <if expr="not is_linux">
++ <if expr="not is_posix">
+ <include name="IDR_PRODUCT_LOGO_64" file="google_chrome/product_logo_64.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_128" file="google_chrome/product_logo_128.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_256" file="google_chrome/product_logo_256.png" type="BINDATA" />
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <include name="IDR_PRODUCT_LOGO_64" file="google_chrome/linux/product_logo_64.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_128" file="google_chrome/linux/product_logo_128.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_128_BETA" file="google_chrome/linux/product_logo_128_beta.png" type="BINDATA" />
+@@ -53,12 +53,12 @@
+ </if>
+ </if>
+ <if expr="not _google_chrome">
+- <if expr="not is_linux">
++ <if expr="not is_posix">
+ <include name="IDR_PRODUCT_LOGO_64" file="chromium/product_logo_64.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_128" file="chromium/product_logo_128.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_256" file="chromium/product_logo_256.png" type="BINDATA" />
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <include name="IDR_PRODUCT_LOGO_64" file="chromium/linux/product_logo_64.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_128" file="chromium/linux/product_logo_128.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_256" file="chromium/linux/product_logo_256.png" type="BINDATA" />
diff --git a/www/ungoogled-chromium/files/patch-chrome_app_theme_theme__resources.grd b/www/ungoogled-chromium/files/patch-chrome_app_theme_theme__resources.grd
new file mode 100644
index 000000000000..3001e745ac0e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_app_theme_theme__resources.grd
@@ -0,0 +1,34 @@
+--- chrome/app/theme/theme_resources.grd.orig 2022-10-01 07:40:07 UTC
++++ chrome/app/theme/theme_resources.grd
+@@ -130,11 +130,11 @@
+ <structure type="chrome_scaled_image" name="IDR_PRERENDER" file="common/prerender_succeed_icon.png" />
+ </if>
+ <if expr="not _google_chrome">
+- <if expr="not is_linux">
++ <if expr="not is_posix">
+ <structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_16" file="chromium/product_logo_16.png" />
+ <structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_32" file="chromium/product_logo_32.png" />
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_16" file="chromium/linux/product_logo_16.png" />
+ <structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_32" file="chromium/linux/product_logo_32.png" />
+ </if>
+@@ -142,7 +142,7 @@
+ <structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_NAME_22_WHITE" file="chromium/product_logo_name_22_white.png" />
+ </if>
+ <if expr="_google_chrome">
+- <if expr="not is_linux">
++ <if expr="not is_posix">
+ <if expr="not is_android">
+ <structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_16" file="google_chrome/product_logo_16.png" />
+ <structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_32" file="google_chrome/product_logo_32.png" />
+@@ -150,7 +150,7 @@
+ <structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_32_BETA" file="google_chrome/product_logo_32_beta.png" />
+ <structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_32_DEV" file="google_chrome/product_logo_32_dev.png" />
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_16" file="google_chrome/linux/product_logo_16.png" />
+ <structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_32" file="google_chrome/linux/product_logo_32.png" />
+ <structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_32_BETA" file="google_chrome/linux/product_logo_32_beta.png" />
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_about__flags.cc b/www/ungoogled-chromium/files/patch-chrome_browser_about__flags.cc
new file mode 100644
index 000000000000..f7370af045bb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_about__flags.cc
@@ -0,0 +1,128 @@
+--- chrome/browser/about_flags.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/about_flags.cc
+@@ -213,7 +213,7 @@
+ #include "ui/native_theme/native_theme_features.h"
+ #include "ui/ui_features.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/allocator/buildflags.h"
+ #endif
+
+@@ -288,7 +288,7 @@
+ #include "chrome/browser/supervised_user/supervised_user_features/supervised_user_features.h" // nogncheck
+ #endif // ENABLE_SUPERVISED_USERS
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ #include "ui/ozone/buildflags.h"
+ #include "ui/ozone/public/ozone_switches.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -393,7 +393,7 @@ const FeatureEntry::FeatureVariation kDXGIWaitableSwap
+ {"Max 3 Frames", &kDXGIWaitableSwapChain3Frames, 1, nullptr}};
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const FeatureEntry::Choice kOzonePlatformHintRuntimeChoices[] = {
+ {flag_descriptions::kOzonePlatformHintChoiceDefault, "", ""},
+ {flag_descriptions::kOzonePlatformHintChoiceAuto,
+@@ -1263,7 +1263,7 @@ const FeatureEntry::FeatureVariation
+ };
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ const FeatureEntry::FeatureParam kOmniboxDocumentProviderServerScoring[] = {
+ {"DocumentUseServerScore", "true"},
+ {"DocumentUseClientScore", "false"},
+@@ -3930,7 +3930,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(base::kOneGroupPerRenderer)},
+ #endif // BUILDFLAG(IS_CHROMEOS)
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ {
+ "enable-accelerated-video-decode",
+ flag_descriptions::kAcceleratedVideoDecodeName,
+@@ -4556,7 +4556,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(features::kWebShare)},
+ #endif // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ {"ozone-platform-hint", flag_descriptions::kOzonePlatformHintName,
+ flag_descriptions::kOzonePlatformHintDescription, kOsLinux,
+ MULTI_VALUE_TYPE(kOzonePlatformHintRuntimeChoices)},
+@@ -4575,7 +4575,7 @@ const FeatureEntry kFeatureEntries[] = {
+ password_manager::features::kForceInitialSyncWhenDecryptionFails)},
+ #endif // BUILDFLAG(IS_LINUX)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ {"skip-undecryptable-passwords",
+ flag_descriptions::kSkipUndecryptablePasswordsName,
+ flag_descriptions::kSkipUndecryptablePasswordsDescription,
+@@ -4829,7 +4829,7 @@ const FeatureEntry kFeatureEntries[] = {
+ "FeedCloseRefresh")},
+ #endif // BUILDFLAG(IS_ANDROID)
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ {"following-feed-sidepanel", flag_descriptions::kFollowingFeedSidepanelName,
+ flag_descriptions::kFollowingFeedSidepanelDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(feed::kWebUiFeed)},
+@@ -5343,7 +5343,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(omnibox::kZeroSuggestPrefetchingOnWeb)},
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ {"omnibox-experimental-keyword-mode",
+ flag_descriptions::kOmniboxExperimentalKeywordModeName,
+ flag_descriptions::kOmniboxExperimentalKeywordModeDescription, kOsDesktop,
+@@ -5880,7 +5880,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kPointerLockOptionsDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(features::kPointerLockOptions)},
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ {"enable-async-dns", flag_descriptions::kAsyncDnsName,
+ flag_descriptions::kAsyncDnsDescription, kOsWin | kOsLinux,
+ FEATURE_VALUE_TYPE(features::kAsyncDns)},
+@@ -6798,7 +6798,7 @@ const FeatureEntry kFeatureEntries[] = {
+ #endif // BUILDFLAG(IS_CHROMEOS)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ {"global-media-controls-modern-ui",
+ flag_descriptions::kGlobalMediaControlsModernUIName,
+ flag_descriptions::kGlobalMediaControlsModernUIDescription,
+@@ -7658,7 +7658,7 @@ const FeatureEntry kFeatureEntries[] = {
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ {"quick-commands", flag_descriptions::kQuickCommandsName,
+ flag_descriptions::kQuickCommandsDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(features::kQuickCommands)},
+@@ -7957,7 +7957,7 @@ const FeatureEntry kFeatureEntries[] = {
+
+ #if BUILDFLAG(IS_WIN) || \
+ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
+- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ {
+ "ui-debug-tools",
+ flag_descriptions::kUIDebugToolsName,
+@@ -8537,7 +8537,7 @@ const FeatureEntry kFeatureEntries[] = {
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ {"document-picture-in-picture-api",
+ flag_descriptions::kDocumentPictureInPictureApiName,
+ flag_descriptions::kDocumentPictureInPictureApiDescription,
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_after__startup__task__utils.cc b/www/ungoogled-chromium/files/patch-chrome_browser_after__startup__task__utils.cc
new file mode 100644
index 000000000000..d2e673d6bc89
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_after__startup__task__utils.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/after_startup_task_utils.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/after_startup_task_utils.cc
+@@ -107,7 +107,7 @@ void SetBrowserStartupIsComplete() {
+ TRACE_EVENT0("startup", "SetBrowserStartupIsComplete");
+ g_startup_complete_flag.Get().Set();
+ #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Process::Current().CreationTime() is not available on all platforms.
+ const base::Time process_creation_time =
+ base::Process::Current().CreationTime();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.cc b/www/ungoogled-chromium/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.cc
new file mode 100644
index 000000000000..fb06d11b9883
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/apps/platform_apps/platform_app_launch.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/apps/platform_apps/platform_app_launch.cc
+@@ -20,7 +20,7 @@
+ #include "extensions/common/extension.h"
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/browser.h"
+ #include "chrome/browser/ui/browser_navigator.h"
+ #include "chrome/browser/ui/browser_window.h"
+@@ -124,7 +124,7 @@ bool OpenExtensionApplicationTab(Profile* profile, con
+ }
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ bool OpenDeprecatedApplicationPrompt(Profile* profile,
+ const std::string& app_id) {
+ if (!extensions::IsExtensionUnsupportedDeprecatedApp(profile, app_id))
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.h b/www/ungoogled-chromium/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.h
new file mode 100644
index 000000000000..a5a1ff9f1b43
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.h
@@ -0,0 +1,11 @@
+--- chrome/browser/apps/platform_apps/platform_app_launch.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/apps/platform_apps/platform_app_launch.h
+@@ -36,7 +36,7 @@ bool OpenExtensionApplicationWindow(Profile* profile,
+ // and false otherwise.
+ bool OpenExtensionApplicationTab(Profile* profile, const std::string& app_id);
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Opens the deprecated Chrome Apps flow if |app_id| refers to a Chrome App and
+ // Chrome Apps are deprecated on the |profile|. Returns true if that was the
+ // case, or false otherwise.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc b/www/ungoogled-chromium/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
new file mode 100644
index 000000000000..4106746cf7dd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
+@@ -91,7 +91,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch
+ return metrics::OmniboxInputType::QUERY;
+
+ case ExternalProtocolHandler::UNKNOWN: {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Linux impl of GetApplicationNameForProtocol doesn't distinguish
+ // between URL schemes with handers and those without. This will
+ // make the default behaviour be search on Linux.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_background_background__mode__manager.cc b/www/ungoogled-chromium/files/patch-chrome_browser_background_background__mode__manager.cc
new file mode 100644
index 000000000000..cc3ebb55c455
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_background_background__mode__manager.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/background/background_mode_manager.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/background/background_mode_manager.cc
+@@ -894,7 +894,7 @@ gfx::ImageSkia GetStatusTrayIcon() {
+ return gfx::ImageSkia();
+
+ return family->CreateExact(size).AsImageSkia();
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
+ IDR_PRODUCT_LOGO_128);
+ #elif BUILDFLAG(IS_MAC)
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_background_background__mode__optimizer.cc b/www/ungoogled-chromium/files/patch-chrome_browser_background_background__mode__optimizer.cc
new file mode 100644
index 000000000000..f897e9da0058
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_background_background__mode__optimizer.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/background/background_mode_optimizer.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/background/background_mode_optimizer.cc
+@@ -31,7 +31,7 @@ std::unique_ptr<BackgroundModeOptimizer> BackgroundMod
+ switches::kKeepAliveForTest))
+ return nullptr;
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (base::FeatureList::IsEnabled(features::kBackgroundModeAllowRestart))
+ return base::WrapUnique(new BackgroundModeOptimizer());
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_browser__features.cc b/www/ungoogled-chromium/files/patch-chrome_browser_browser__features.cc
new file mode 100644
index 000000000000..caf80fd6399d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_browser__features.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/browser_features.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/browser_features.cc
+@@ -29,7 +29,7 @@ const base::Feature kColorProviderRedirectionForThemeP
+ // the browser exits.
+ const base::Feature kDestroyProfileOnBrowserClose {
+ "DestroyProfileOnBrowserClose",
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ };
+ #else
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_browser__process__impl.cc b/www/ungoogled-chromium/files/patch-chrome_browser_browser__process__impl.cc
new file mode 100644
index 000000000000..2c3766e7a223
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_browser__process__impl.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/browser_process_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/browser_process_impl.cc
+@@ -214,7 +214,7 @@
+ #include "components/enterprise/browser/controller/chrome_browser_cloud_management_controller.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/error_reporting/chrome_js_error_report_processor.h" // nogncheck
+ #endif
+
+@@ -1172,7 +1172,7 @@ void BrowserProcessImpl::PreMainMessageLoopRun() {
+
+ ApplyMetricsReportingPolicy();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ ChromeJsErrorReportProcessor::Create();
+ #endif
+
+@@ -1411,7 +1411,7 @@ void BrowserProcessImpl::Unpin() {
+ // Mac is currently not supported.
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || BUILDFLAG(IS_BSD)
+
+ bool BrowserProcessImpl::IsRunningInBackground() const {
+ // Check if browser is in the background.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_browser__process__impl.h b/www/ungoogled-chromium/files/patch-chrome_browser_browser__process__impl.h
new file mode 100644
index 000000000000..4fcc540153fd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_browser__process__impl.h
@@ -0,0 +1,11 @@
+--- chrome/browser/browser_process_impl.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/browser_process_impl.h
+@@ -359,7 +359,7 @@ class BrowserProcessImpl : public BrowserProcess,
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || BUILDFLAG(IS_BSD)
+ base::RepeatingTimer autoupdate_timer_;
+
+ // Gets called by autoupdate timer to see if browser needs restart and can be
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_browser__resources.grd b/www/ungoogled-chromium/files/patch-chrome_browser_browser__resources.grd
new file mode 100644
index 000000000000..1e28174c5d3b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_browser__resources.grd
@@ -0,0 +1,11 @@
+--- chrome/browser/browser_resources.grd.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/browser_resources.grd
+@@ -120,7 +120,7 @@
+ <if expr="chromeos_ash">
+ <include name="IDR_PLUGIN_DB_JSON" file="resources\plugin_metadata\plugins_chromeos.json" type="BINDATA" />
+ </if>
+- <if expr="is_linux or chromeos_lacros">
++ <if expr="is_posix or chromeos_lacros">
+ <include name="IDR_PLUGIN_DB_JSON" file="resources\plugin_metadata\plugins_linux.json" type="BINDATA" />
+ </if>
+ <if expr="chromeos_ash">
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__interface__binders.cc b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__interface__binders.cc
new file mode 100644
index 000000000000..930b98783547
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__interface__binders.cc
@@ -0,0 +1,71 @@
+--- chrome/browser/chrome_browser_interface_binders.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/chrome_browser_interface_binders.cc
+@@ -113,13 +113,13 @@
+ #endif // BUILDFLAG(FULL_SAFE_BROWSING)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/webui/connectors_internals/connectors_internals.mojom.h"
+ #include "chrome/browser/ui/webui/connectors_internals/connectors_internals_ui.h"
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/webui/app_settings/web_app_settings_ui.h"
+ #include "ui/webui/resources/cr_components/app_management/app_management.mojom.h"
+ #endif
+@@ -188,7 +188,7 @@
+ #endif // BUILDFLAG(IS_ANDROID)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/webui/discards/discards.mojom.h"
+ #include "chrome/browser/ui/webui/discards/discards_ui.h"
+ #include "chrome/browser/ui/webui/discards/site_data.mojom.h"
+@@ -780,7 +780,7 @@ void PopulateChromeFrameBinders(
+ #endif // BUILDFLAG(ENABLE_SPEECH_SERVICE)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (!render_frame_host->GetParent()) {
+ map->Add<chrome::mojom::DraggableRegions>(
+ base::BindRepeating(&DraggableRegionsHostImpl::CreateIfAllowed));
+@@ -788,7 +788,7 @@ void PopulateChromeFrameBinders(
+ #endif
+
+ #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ if (base::FeatureList::IsEnabled(blink::features::kDesktopPWAsSubApps) &&
+ render_frame_host->IsInPrimaryMainFrame()) {
+ map->Add<blink::mojom::SubAppsService>(
+@@ -843,14 +843,14 @@ void PopulateChromeWebUIFrameBinders(
+ SegmentationInternalsUI>(map);
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ RegisterWebUIControllerInterfaceBinder<
+ connectors_internals::mojom::PageHandler,
+ enterprise_connectors::ConnectorsInternalsUI>(map);
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ RegisterWebUIControllerInterfaceBinder<
+ app_management::mojom::PageHandlerFactory, WebAppSettingsUI>(map);
+ #endif
+@@ -1235,7 +1235,7 @@ void PopulateChromeWebUIFrameBinders(
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ RegisterWebUIControllerInterfaceBinder<discards::mojom::DetailsProvider,
+ DiscardsUI>(map);
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main.cc b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main.cc
new file mode 100644
index 000000000000..e889acf24a7e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main.cc
@@ -0,0 +1,52 @@
+--- chrome/browser/chrome_browser_main.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/chrome_browser_main.cc
+@@ -239,11 +239,11 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ #include "chrome/browser/first_run/upgrade_util_linux.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "components/crash/core/app/breakpad_linux.h"
+ #include "components/crash/core/app/crashpad.h"
+ #endif
+@@ -279,7 +279,7 @@
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker.h"
+ #include "chrome/browser/metrics/desktop_session_duration/touch_mode_stats_tracker.h"
+ #include "chrome/browser/profiles/profile_activity_metrics_recorder.h"
+@@ -1025,7 +1025,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ browser_creator_->AddFirstRunTabs(master_prefs_->new_tabs);
+ }
+
+-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Create directory for user-level Native Messaging manifest files. This
+ // makes it less likely that the directory will be created by third-party
+ // software with incorrect owner or permission. See crbug.com/725513 .
+@@ -1038,7 +1038,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ }
+ #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+ // Set the product channel for crash reports.
+ if (!crash_reporter::IsCrashpadEnabled()) {
+ breakpad::SetChannelCrashKey(
+@@ -1060,7 +1060,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ metrics::DesktopSessionDurationTracker::Initialize();
+ ProfileActivityMetricsRecorder::Initialize();
+ TouchModeStatsTracker::Initialize(
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main__extra__parts__linux.cc b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main__extra__parts__linux.cc
new file mode 100644
index 000000000000..dfbe5f0d4fcc
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main__extra__parts__linux.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/chrome_browser_main_extra_parts_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/chrome_browser_main_extra_parts_linux.cc
+@@ -120,7 +120,7 @@ ChromeBrowserMainExtraPartsLinux::ChromeBrowserMainExt
+ ChromeBrowserMainExtraPartsLinux::~ChromeBrowserMainExtraPartsLinux() = default;
+
+ void ChromeBrowserMainExtraPartsLinux::PreEarlyInitialization() {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // On the desktop, we fix the platform name if necessary.
+ // See https://crbug.com/1246928.
+ auto* const command_line = base::CommandLine::ForCurrentProcess();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main__linux.cc b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main__linux.cc
new file mode 100644
index 000000000000..eb438de0f8ad
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main__linux.cc
@@ -0,0 +1,28 @@
+--- chrome/browser/chrome_browser_main_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/chrome_browser_main_linux.cc
+@@ -57,13 +57,15 @@ ChromeBrowserMainPartsLinux::~ChromeBrowserMainPartsLi
+ }
+
+ void ChromeBrowserMainPartsLinux::PostCreateMainMessageLoop() {
+-#if BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // No-op: Ash and Lacros Bluetooth DBusManager initialization depend on
+ // FeatureList, and is done elsewhere.
+ #endif // BUILDFLAG(IS_CHROMEOS)
+
+ #if !BUILDFLAG(IS_CHROMEOS)
++#if !BUILDFLAG(IS_BSD)
+ bluez::BluezDBusManager::Initialize(nullptr /* system_bus */);
++#endif
+
+ // Set up crypt config. This needs to be done before anything starts the
+ // network service, as the raw encryption key needs to be shared with the
+@@ -123,7 +125,7 @@ void ChromeBrowserMainPartsLinux::PostBrowserStart() {
+ #endif // defined(USE_DBUS) && !BUILDFLAG(IS_CHROMEOS)
+
+ void ChromeBrowserMainPartsLinux::PostDestroyThreads() {
+-#if BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // No-op; per PostBrowserStart() comment, this is done elsewhere.
+ #else
+ bluez::BluezDBusManager::Shutdown();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main__posix.cc b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main__posix.cc
new file mode 100644
index 000000000000..b87cdc7e6940
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__browser__main__posix.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/chrome_browser_main_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/chrome_browser_main_posix.cc
+@@ -72,7 +72,7 @@ void ExitHandler::ExitWhenPossibleOnUIThread(int signa
+ } else {
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ switch (signal) {
+ case SIGINT:
+ case SIGHUP:
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_chrome__content__browser__client.cc b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__content__browser__client.cc
new file mode 100644
index 000000000000..60861c9a1d64
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__content__browser__client.cc
@@ -0,0 +1,150 @@
+--- chrome/browser/chrome_content_browser_client.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/chrome_content_browser_client.cc
+@@ -385,7 +385,7 @@
+ #include "components/user_manager/user_manager.h"
+ #include "services/service_manager/public/mojom/interface_provider_spec.mojom.h"
+ #include "storage/browser/file_system/external_mount_points.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/chrome_browser_main_linux.h"
+ #elif BUILDFLAG(IS_ANDROID)
+ #include "base/android/application_status_listener.h"
+@@ -466,17 +466,17 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ #include "chrome/browser/browser_switcher/browser_switcher_navigation_throttle.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "components/crash/core/app/crash_switches.h"
+ #include "components/crash/core/app/crashpad.h"
+ #endif
+
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ #if !BUILDFLAG(IS_ANDROID)
+ #include "base/debug/leak_annotations.h"
+ #include "components/crash/core/app/breakpad_linux.h"
+@@ -484,12 +484,12 @@
+ #include "components/crash/content/browser/crash_handler_host_linux.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/webui/app_settings/web_app_settings_navigation_throttle.h"
+ #endif
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/enterprise/connectors/device_trust/navigation_throttle.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) ||
+ // BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -513,11 +513,11 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/chrome_browser_main_extra_parts_linux.h"
+ #elif defined(USE_OZONE)
+ #include "chrome/browser/chrome_browser_main_extra_parts_ozone.h"
+@@ -930,7 +930,7 @@ blink::mojom::AutoplayPolicy GetAutoplayPolicyForWebCo
+ int GetCrashSignalFD(const base::CommandLine& command_line) {
+ return crashpad::CrashHandlerHost::Get()->GetDeathSignalSocket();
+ }
+-#elif BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC)
++#elif BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ breakpad::CrashHandlerHostLinux* CreateCrashHandlerHost(
+ const std::string& process_type) {
+ base::FilePath dumps_path;
+@@ -1450,7 +1450,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(boo
+ #elif BUILDFLAG(IS_CHROMEOS_LACROS)
+ main_parts = std::make_unique<ChromeBrowserMainPartsLacros>(
+ is_integration_test, &startup_data_);
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ main_parts = std::make_unique<ChromeBrowserMainPartsLinux>(
+ is_integration_test, &startup_data_);
+ #elif BUILDFLAG(IS_ANDROID)
+@@ -1489,7 +1489,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(boo
+ std::make_unique<ChromeBrowserMainExtraPartsViewsLacros>());
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ main_parts->AddParts(
+ std::make_unique<ChromeBrowserMainExtraPartsViewsLinux>());
+ #else
+@@ -1510,7 +1510,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(boo
+ main_parts->AddParts(std::make_unique<ChromeBrowserMainExtraPartsLacros>());
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ main_parts->AddParts(std::make_unique<ChromeBrowserMainExtraPartsLinux>());
+ #elif defined(USE_OZONE)
+ main_parts->AddParts(std::make_unique<ChromeBrowserMainExtraPartsOzone>());
+@@ -2279,6 +2279,8 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
+ #elif BUILDFLAG(IS_POSIX)
+ #if BUILDFLAG(IS_ANDROID)
+ bool enable_crash_reporter = true;
++#elif BUILDFLAG(IS_BSD)
++ bool enable_crash_reporter = false;
+ #else
+ bool enable_crash_reporter = false;
+ if (crash_reporter::IsCrashpadEnabled()) {
+@@ -2628,7 +2630,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
+ ThreadProfilerConfiguration::Get()->AppendCommandLineSwitchForChildProcess(
+ command_line);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ // Opt into a hardened stack canary mitigation if it hasn't already been
+ // force-disabled.
+ if (!browser_command_line.HasSwitch(switches::kChangeStackGuardOnFork)) {
+@@ -4071,7 +4073,7 @@ void ChromeContentBrowserClient::GetAdditionalFileSyst
+ }
+ }
+
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+@@ -4510,14 +4512,14 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati
+ &throttles);
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ MaybeAddThrottle(
+ WebAppSettingsNavigationThrottle::MaybeCreateThrottleFor(handle),
+ &throttles);
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ MaybeAddThrottle(enterprise_connectors::DeviceTrustNavigationThrottle::
+ MaybeCreateThrottleFor(handle),
+ &throttles);
+@@ -4542,7 +4544,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ MaybeAddThrottle(browser_switcher::BrowserSwitcherNavigationThrottle::
+ MaybeCreateThrottleFor(handle),
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_chrome__content__browser__client.h b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__content__browser__client.h
new file mode 100644
index 000000000000..5bec0477496d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_chrome__content__browser__client.h
@@ -0,0 +1,11 @@
+--- chrome/browser/chrome_content_browser_client.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/chrome_content_browser_client.h
+@@ -436,7 +436,7 @@ class ChromeContentBrowserClient : public content::Con
+ void OverridePageVisibilityState(
+ content::RenderFrameHost* render_frame_host,
+ content::PageVisibilityState* visibility_state) override;
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc b/www/ungoogled-chromium/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc
new file mode 100644
index 000000000000..85f05d0bf3f6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/crash_upload_list/crash_upload_list.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/crash_upload_list/crash_upload_list.cc
+@@ -50,7 +50,7 @@ scoped_refptr<UploadList> CreateCrashUploadList() {
+ // which isn't compatible with CrashUploadListCrashpad. crash_sender continues
+ // to log uploads in CrashUploadList::kReporterLogFilename.
+ // Linux is handled below.
+-#if !(BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX))
++#if !(BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD))
+ if (crash_reporter::IsCrashpadEnabled()) {
+ return new CrashUploadListCrashpad();
+ }
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_custom__handlers_chrome__protocol__handler__registry__delegate.cc b/www/ungoogled-chromium/files/patch-chrome_browser_custom__handlers_chrome__protocol__handler__registry__delegate.cc
new file mode 100644
index 000000000000..52ffde0ae7a3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_custom__handlers_chrome__protocol__handler__registry__delegate.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/custom_handlers/chrome_protocol_handler_registry_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/custom_handlers/chrome_protocol_handler_registry_delegate.cc
+@@ -69,7 +69,7 @@ void ChromeProtocolHandlerRegistryDelegate::CheckDefau
+ // If true default protocol handlers will be removed if the OS level
+ // registration for a protocol is no longer Chrome.
+ bool ChromeProtocolHandlerRegistryDelegate::ShouldRemoveHandlersNotInOS() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // We don't do this on Linux as the OS registration there is not reliable,
+ // and Chrome OS doesn't have any notion of OS registration.
+ // TODO(benwells): When Linux support is more reliable remove this
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_defaults.cc b/www/ungoogled-chromium/files/patch-chrome_browser_defaults.cc
new file mode 100644
index 000000000000..825ae5b3d85e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_defaults.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/defaults.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/defaults.cc
+@@ -52,7 +52,7 @@ const bool kSyncAutoStarts = true;
+ const bool kSyncAutoStarts = false;
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const bool kScrollEventChangesTab = true;
+ #else
+ const bool kScrollEventChangesTab = false;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_dev__ui__browser__resources.grd b/www/ungoogled-chromium/files/patch-chrome_browser_dev__ui__browser__resources.grd
new file mode 100644
index 000000000000..d192fc515736
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_dev__ui__browser__resources.grd
@@ -0,0 +1,11 @@
+--- chrome/browser/dev_ui_browser_resources.grd.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/dev_ui_browser_resources.grd
+@@ -36,7 +36,7 @@ This file specifies browser resources for developer-fa
+ <include name="IDR_PREDICTORS_JS" file="${root_gen_dir}\chrome\browser\resources\predictors\predictors.js" use_base_dir="false" type="BINDATA" />
+ <include name="IDR_PREDICTORS_RESOURCE_PREFETCH_PREDICTOR_JS" file="${root_gen_dir}\chrome\browser\resources\predictors\resource_prefetch_predictor.js" use_base_dir="false" type="BINDATA" />
+
+- <if expr="is_android or is_linux or is_chromeos">
++ <if expr="is_android or is_posix or is_chromeos">
+ <include name="IDR_SANDBOX_INTERNALS_HTML" file="resources\sandbox_internals\sandbox_internals.html" preprocess="true" type="BINDATA" />
+ <include name="IDR_SANDBOX_INTERNALS_JS" file="${root_gen_dir}\chrome\browser\resources\sandbox_internals\tsc\sandbox_internals.js" use_base_dir="false" type="BINDATA" />
+ </if>
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc b/www/ungoogled-chromium/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc
new file mode 100644
index 000000000000..d3f720a71a8a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/device_identity/device_oauth2_token_service_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/device_identity/device_oauth2_token_service_factory.cc
+@@ -28,7 +28,7 @@ std::unique_ptr<DeviceOAuth2TokenStore> CreatePlatform
+ return std::make_unique<chromeos::DeviceOAuth2TokenStoreChromeOS>(
+ local_state);
+ #elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || \
+- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || BUILDFLAG(IS_BSD)
+ return std::make_unique<DeviceOAuth2TokenStoreDesktop>(local_state);
+ #else
+ NOTREACHED();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc b/www/ungoogled-chromium/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
new file mode 100644
index 000000000000..33717c627cc4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/devtools/devtools_eye_dropper.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/devtools/devtools_eye_dropper.cc
+@@ -186,7 +186,7 @@ void DevToolsEyeDropper::UpdateCursor() {
+ // magnified projection only with centered hotspot.
+ // Mac Retina requires cursor to be > 120px in order to render smoothly.
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const float kCursorSize = 63;
+ const float kDiameter = 63;
+ const float kHotspotOffset = 32;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_diagnostics_diagnostics__writer.h b/www/ungoogled-chromium/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
new file mode 100644
index 000000000000..b9af6f6e6c13
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
@@ -0,0 +1,11 @@
+--- chrome/browser/diagnostics/diagnostics_writer.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/diagnostics/diagnostics_writer.h
+@@ -14,6 +14,8 @@ namespace diagnostics {
+ // Console base class used internally.
+ class SimpleConsole;
+
++#undef MACHINE
++
+ class DiagnosticsWriter : public DiagnosticsModel::Observer {
+ public:
+ // The type of formatting done by this writer.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc b/www/ungoogled-chromium/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
new file mode 100644
index 000000000000..c32595f5375c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/download/chrome_download_manager_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/download/chrome_download_manager_delegate.cc
+@@ -1532,7 +1532,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+ bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile(
+ const base::FilePath& path) {
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf"))) {
+ return !download_prefs_->ShouldOpenPdfInSystemReader();
+ }
+@@ -1598,7 +1598,7 @@ void ChromeDownloadManagerDelegate::CheckDownloadAllow
+ content::CheckDownloadAllowedCallback check_download_allowed_cb) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ // Don't download pdf if it is a file URL, as that might cause an infinite
+ // download loop if Chrome is not the system pdf viewer.
+ if (url.SchemeIsFile() && download_prefs_->ShouldOpenPdfInSystemReader()) {
+@@ -1640,7 +1640,7 @@ std::unique_ptr<download::DownloadItemRenameHandler>
+ ChromeDownloadManagerDelegate::GetRenameHandlerForDownload(
+ download::DownloadItem* download_item) {
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ return enterprise_connectors::FileSystemRenameHandler::CreateIfNeeded(
+ download_item);
+ #else
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_download_download__commands.cc b/www/ungoogled-chromium/files/patch-chrome_browser_download_download__commands.cc
new file mode 100644
index 000000000000..9bccd3090e55
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_download_download__commands.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_commands.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/download/download_commands.cc
+@@ -26,7 +26,7 @@
+ #include "ui/base/clipboard/scoped_clipboard_writer.h"
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/browser.h"
+ #include "chrome/browser/ui/browser_finder.h"
+ #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h"
+@@ -167,7 +167,7 @@ void DownloadCommands::ExecuteCommand(Command command)
+ }
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+
+ Browser* DownloadCommands::GetBrowser() const {
+ if (!model_)
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_download_download__commands.h b/www/ungoogled-chromium/files/patch-chrome_browser_download_download__commands.h
new file mode 100644
index 000000000000..7f8092c2b4c6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_download_download__commands.h
@@ -0,0 +1,11 @@
+--- chrome/browser/download/download_commands.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/download/download_commands.h
+@@ -55,7 +55,7 @@ class DownloadCommands {
+ void ExecuteCommand(Command command);
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ bool IsDownloadPdf() const;
+ bool CanOpenPdfInSystemViewer() const;
+ Browser* GetBrowser() const;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_download_download__file__picker.cc b/www/ungoogled-chromium/files/patch-chrome_browser_download_download__file__picker.cc
new file mode 100644
index 000000000000..3860381df525
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_download_download__file__picker.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_file_picker.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/download/download_file_picker.cc
+@@ -16,7 +16,7 @@
+ #include "content/public/browser/download_manager.h"
+ #include "content/public/browser/web_contents.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/browser_list.h"
+ #include "chrome/browser/ui/browser_window.h"
+ #include "ui/aura/window.h"
+@@ -84,7 +84,7 @@ DownloadFilePicker::DownloadFilePicker(download::Downl
+ // dialog in Linux (See SelectFileImpl() in select_file_dialog_linux_gtk.cc).
+ // and windows.Here we make owning_window host to browser current active
+ // window if it is null. https://crbug.com/1301898
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ if (!owning_window || !owning_window->GetHost()) {
+ owning_window = BrowserList::GetInstance()
+ ->GetLastActive()
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_download_download__item__model.cc b/www/ungoogled-chromium/files/patch-chrome_browser_download_download__item__model.cc
new file mode 100644
index 000000000000..e5bb67a88071
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_download_download__item__model.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/download/download_item_model.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/download/download_item_model.cc
+@@ -728,7 +728,7 @@ bool DownloadItemModel::IsCommandChecked(
+ download_crx_util::IsExtensionDownload(*download_);
+ case DownloadCommands::ALWAYS_OPEN_TYPE:
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ if (download_commands->CanOpenPdfInSystemViewer()) {
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile());
+ return prefs->ShouldOpenPdfInSystemReader();
+@@ -770,7 +770,7 @@ void DownloadItemModel::ExecuteCommand(DownloadCommand
+ DownloadCommands::ALWAYS_OPEN_TYPE);
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile());
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ if (download_commands->CanOpenPdfInSystemViewer()) {
+ prefs->SetShouldOpenPdfInSystemReader(!is_checked);
+ SetShouldPreferOpeningInBrowser(is_checked);
+@@ -1086,7 +1086,7 @@ void DownloadItemModel::DetermineAndSetShouldPreferOpe
+ return;
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (download_->GetOriginalMimeType() == "application/x-x509-user-cert") {
+ SetShouldPreferOpeningInBrowser(true);
+ return;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_download_download__prefs.cc b/www/ungoogled-chromium/files/patch-chrome_browser_download_download__prefs.cc
new file mode 100644
index 000000000000..0ed491509a14
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_download_download__prefs.cc
@@ -0,0 +1,90 @@
+--- chrome/browser/download/download_prefs.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/download/download_prefs.cc
+@@ -13,6 +13,7 @@
+ #include "base/callback_helpers.h"
+ #include "base/check.h"
+ #include "base/cxx17_backports.h"
++#include "base/command_line.h"
+ #include "base/feature_list.h"
+ #include "base/files/file_util.h"
+ #include "base/no_destructor.h"
+@@ -61,6 +62,10 @@
+ #include "chrome/browser/ui/pdf/adobe_reader_info_win.h"
+ #endif
+
++#if BUILDFLAG(IS_OPENBSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#endif
++
+ using content::BrowserContext;
+ using content::BrowserThread;
+ using content::DownloadManager;
+@@ -71,7 +76,7 @@ namespace {
+ // Consider downloads 'dangerous' if they go to the home directory on Linux and
+ // to the desktop on any platform.
+ bool DownloadPathIsDangerous(const base::FilePath& download_path) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ base::FilePath home_dir = base::GetHomeDir();
+ if (download_path == home_dir) {
+ return true;
+@@ -182,7 +187,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profi
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ should_open_pdf_in_system_reader_ =
+ prefs->GetBoolean(prefs::kOpenPdfDownloadInSystemReader);
+ #endif
+@@ -295,7 +300,7 @@ void DownloadPrefs::RegisterProfilePrefs(
+ registry->RegisterTimePref(prefs::kDownloadLastCompleteTime,
+ /*default_value=*/base::Time());
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ registry->RegisterBooleanPref(prefs::kOpenPdfDownloadInSystemReader, false);
+ #endif
+ #if BUILDFLAG(IS_ANDROID)
+@@ -472,7 +477,7 @@ void DownloadPrefs::DisableAutoOpenByUserBasedOnExtens
+ }
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ void DownloadPrefs::SetShouldOpenPdfInSystemReader(bool should_open) {
+ if (should_open_pdf_in_system_reader_ == should_open)
+ return;
+@@ -504,7 +509,7 @@ bool DownloadPrefs::ShouldOpenPdfInSystemReader() cons
+
+ void DownloadPrefs::ResetAutoOpenByUser() {
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ SetShouldOpenPdfInSystemReader(false);
+ #endif
+ auto_open_by_user_.clear();
+@@ -535,7 +540,7 @@ void DownloadPrefs::SaveAutoOpenState() {
+ bool DownloadPrefs::CanPlatformEnableAutoOpenForPdf() const {
+ #if BUILDFLAG(IS_CHROMEOS)
+ return false; // There is no UI for auto-open on ChromeOS.
+-#elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
++#elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ return ShouldOpenPdfInSystemReader();
+ #else
+ return false;
+@@ -659,7 +664,14 @@ base::FilePath DownloadPrefs::SanitizeDownloadTargetPa
+ #else
+ // If the stored download directory is an absolute path, we presume it's
+ // correct; there's not really much more validation we can do here.
++#if BUILDFLAG(IS_OPENBSD)
++ // If unveil(2) is used, force the file dialog directory to something we
++ // know is available.
++ auto* sandbox = sandbox::policy::SandboxLinux::GetInstance();
++ if (!sandbox->unveil_initialized() && path.IsAbsolute())
++#else
+ if (path.IsAbsolute())
++#endif
+ return path;
+
+ // When the default download directory is *not* an absolute path, we use the
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_download_download__prefs.h b/www/ungoogled-chromium/files/patch-chrome_browser_download_download__prefs.h
new file mode 100644
index 000000000000..befaa4cff36e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_download_download__prefs.h
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_prefs.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/download/download_prefs.h
+@@ -125,7 +125,7 @@ class DownloadPrefs {
+ void DisableAutoOpenByUserBasedOnExtension(const base::FilePath& file_name);
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ // Store the user preference to disk. If |should_open| is true, also disable
+ // the built-in PDF plugin. If |should_open| is false, enable the PDF plugin.
+ void SetShouldOpenPdfInSystemReader(bool should_open);
+@@ -185,7 +185,7 @@ class DownloadPrefs {
+ std::unique_ptr<policy::URLBlocklist> auto_open_allowed_by_urls_;
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ bool should_open_pdf_in_system_reader_;
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_analysis_analysis__service__settings.cc b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_analysis_analysis__service__settings.cc
new file mode 100644
index 000000000000..6153630bc620
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_analysis_analysis__service__settings.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/enterprise/connectors/analysis/analysis_service_settings.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/enterprise/connectors/analysis/analysis_service_settings.cc
+@@ -142,11 +142,11 @@ AnalysisServiceSettings::AnalysisServiceSettings(
+ const char* verification_key = kKeyWindowsVerification;
+ #elif BUILDFLAG(IS_MAC)
+ const char* verification_key = kKeyMacVerification;
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const char* verification_key = kKeyLinuxVerification;
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const base::Value::Dict& dict = settings_value.GetDict();
+ const base::Value::List* signatures =
+ dict.FindListByDottedPath(verification_key);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__connector__service__factory.cc b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__connector__service__factory.cc
new file mode 100644
index 000000000000..5bf7b470704e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__connector__service__factory.cc
@@ -0,0 +1,43 @@
+--- chrome/browser/enterprise/connectors/device_trust/device_trust_connector_service_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/enterprise/connectors/device_trust/device_trust_connector_service_factory.cc
+@@ -11,11 +11,11 @@
+ #include "chrome/browser/profiles/profile.h"
+ #include "components/keyed_service/core/keyed_service.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/browser_process.h"
+ #if BUILDFLAG(IS_MAC)
+ #include "chrome/browser/enterprise/connectors/device_trust/browser/mac_device_trust_connector_service.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/enterprise/connectors/device_trust/browser/browser_device_trust_connector_service.h"
+ #endif // BUILDFLAG(IS_MAC)
+ #include "chrome/browser/policy/chrome_browser_policy_connector.h"
+@@ -40,7 +40,7 @@ DeviceTrustConnectorService* DeviceTrustConnectorServi
+
+ bool DeviceTrustConnectorServiceFactory::ServiceIsCreatedWithBrowserContext()
+ const {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ return IsDeviceTrustConnectorFeatureEnabled();
+ #else
+ return false;
+@@ -59,7 +59,7 @@ KeyedService* DeviceTrustConnectorServiceFactory::Buil
+
+ DeviceTrustConnectorService* service = nullptr;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ if (IsDeviceTrustConnectorFeatureEnabled()) {
+ auto* key_manager = g_browser_process->browser_policy_connector()
+ ->chrome_browser_cloud_management_controller()
+@@ -67,7 +67,7 @@ KeyedService* DeviceTrustConnectorServiceFactory::Buil
+ #if BUILDFLAG(IS_MAC)
+ service = new MacDeviceTrustConnectorService(
+ key_manager, profile->GetPrefs(), g_browser_process->local_state());
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ service = new BrowserDeviceTrustConnectorService(key_manager,
+ profile->GetPrefs());
+ #endif // BUILDFLAG(IS_MAC)
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__service__factory.cc b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__service__factory.cc
new file mode 100644
index 000000000000..227580763735
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__service__factory.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/enterprise/connectors/device_trust/device_trust_service_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/enterprise/connectors/device_trust/device_trust_service_factory.cc
+@@ -22,7 +22,7 @@
+ #include "components/policy/core/common/management/management_service.h"
+ #include "content/public/browser/browser_context.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/browser_process.h"
+ #include "chrome/browser/enterprise/connectors/device_trust/attestation/desktop/desktop_attestation_service.h"
+ #include "chrome/browser/policy/chrome_browser_policy_connector.h"
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_browser_commands_key__rotation__command__factory.cc b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_browser_commands_key__rotation__command__factory.cc
new file mode 100644
index 000000000000..70002d22fdec
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_browser_commands_key__rotation__command__factory.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/key_rotation_command_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/key_rotation_command_factory.cc
+@@ -13,7 +13,7 @@
+
+ #if BUILDFLAG(IS_WIN)
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/win_key_rotation_command.h"
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/linux_key_rotation_command.h"
+ #elif BUILDFLAG(IS_MAC)
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/mac_key_rotation_command.h"
+@@ -45,7 +45,7 @@ std::unique_ptr<KeyRotationCommand> KeyRotationCommand
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) {
+ #if BUILDFLAG(IS_WIN)
+ return std::make_unique<WinKeyRotationCommand>();
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return std::make_unique<LinuxKeyRotationCommand>(url_loader_factory);
+ #elif BUILDFLAG(IS_MAC)
+ return std::make_unique<MacKeyRotationCommand>(url_loader_factory);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_core_persistence_key__persistence__delegate__factory.cc b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_core_persistence_key__persistence__delegate__factory.cc
new file mode 100644
index 000000000000..bc783e35a7ef
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_core_persistence_key__persistence__delegate__factory.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate_factory.cc
+@@ -13,7 +13,7 @@
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/win_key_persistence_delegate.h"
+ #elif BUILDFLAG(IS_MAC)
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mac_key_persistence_delegate.h"
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate.h"
+ #endif
+
+@@ -44,7 +44,7 @@ KeyPersistenceDelegateFactory::CreateKeyPersistenceDel
+ return std::make_unique<WinKeyPersistenceDelegate>();
+ #elif BUILDFLAG(IS_MAC)
+ return std::make_unique<MacKeyPersistenceDelegate>();
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return std::make_unique<LinuxKeyPersistenceDelegate>();
+ #else
+ NOTREACHED();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_signals_signals__service__factory.cc b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_signals_signals__service__factory.cc
new file mode 100644
index 000000000000..2c6ecef19882
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_device__trust_signals_signals__service__factory.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/enterprise/connectors/device_trust/signals/signals_service_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/enterprise/connectors/device_trust/signals/signals_service_factory.cc
+@@ -15,7 +15,7 @@
+ #include "chrome/browser/profiles/profile.h"
+ #include "components/policy/core/common/management/management_service.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ #include "base/check.h"
+ #include "chrome/browser/enterprise/connectors/device_trust/signals/decorators/browser/browser_signals_decorator.h"
+ #include "chrome/browser/policy/chrome_browser_policy_connector.h"
+@@ -52,7 +52,7 @@ std::unique_ptr<SignalsService> CreateSignalsService(
+ decorators.push_back(
+ std::make_unique<ContentSignalsDecorator>(policy_blocklist_service));
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ policy::CloudPolicyStore* store = nullptr;
+
+ // Managed device.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.cc b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.cc
new file mode 100644
index 000000000000..665a3e698474
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.cc
@@ -0,0 +1,19 @@
+--- chrome/browser/enterprise/connectors/reporting/browser_crash_event_router.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/enterprise/connectors/reporting/browser_crash_event_router.cc
+@@ -18,14 +18,14 @@
+ #include "chrome/common/chrome_paths.h"
+ #include "components/version_info/version_info.h"
+
+-#if !BUILDFLAG(IS_FUCHSIA)
++#if !BUILDFLAG(IS_FUCHSIA) && !BUILDFLAG(IS_BSD)
+ #include "components/crash/core/app/crashpad.h"
+ #include "third_party/crashpad/crashpad/client/crash_report_database.h"
+ #endif // !BUILDFLAG(IS_FUCHSIA)
+
+ namespace enterprise_connectors {
+
+-#if !BUILDFLAG(IS_FUCHSIA)
++#if !BUILDFLAG(IS_FUCHSIA) && !BUILDFLAG(IS_BSD)
+ namespace {
+ // key names used when building the dictionary to pass to the real-time
+ // reporting API
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.h b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.h
new file mode 100644
index 000000000000..57ef8a068a42
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.h
@@ -0,0 +1,20 @@
+--- chrome/browser/enterprise/connectors/reporting/browser_crash_event_router.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/enterprise/connectors/reporting/browser_crash_event_router.h
+@@ -22,7 +22,7 @@ class BrowserCrashEventRouter
+ BrowserCrashEventRouter& operator=(const BrowserCrashEventRouter&) = delete;
+ ~BrowserCrashEventRouter() override;
+
+-#if !BUILDFLAG(IS_FUCHSIA)
++#if !BUILDFLAG(IS_FUCHSIA) && !BUILDFLAG(IS_BSD)
+ void OnCloudReportingLaunched(
+ enterprise_reporting::ReportScheduler* report_scheduler) override;
+ #endif // !BUILDFLAG(IS_FUCHSIA)
+@@ -32,7 +32,7 @@ class BrowserCrashEventRouter
+ nullptr;
+ raw_ptr<policy::ChromeBrowserCloudManagementController> controller_ = nullptr;
+
+-#if !BUILDFLAG(IS_FUCHSIA)
++#if !BUILDFLAG(IS_FUCHSIA) && !BUILDFLAG(IS_BSD)
+ // ReportCrashes() checks the enterprise policy settings, retrieves crash
+ // reports from the crashpad local database and sends reports that have not
+ // been sent to the reporting server.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_remote__commands_cbcm__remote__commands__factory.cc b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_remote__commands_cbcm__remote__commands__factory.cc
new file mode 100644
index 000000000000..befa961669e7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_remote__commands_cbcm__remote__commands__factory.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/enterprise/remote_commands/cbcm_remote_commands_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/enterprise/remote_commands/cbcm_remote_commands_factory.cc
+@@ -11,7 +11,7 @@
+ #include "chrome/browser/profiles/profile_manager.h"
+ #include "components/policy/core/common/remote_commands/remote_command_job.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/enterprise/connectors/device_trust/device_trust_features.h"
+ #include "chrome/browser/enterprise/remote_commands/rotate_attestation_credential_job.h"
+ #include "chrome/browser/policy/chrome_browser_policy_connector.h"
+@@ -31,7 +31,7 @@ CBCMRemoteCommandsFactory::BuildJobForType(
+ g_browser_process->profile_manager());
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ if (enterprise_connectors::IsDeviceTrustConnectorFeatureEnabled() &&
+ type == enterprise_management::
+ RemoteCommand_Type_BROWSER_ROTATE_ATTESTATION_CREDENTIAL) {
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_signals_device__info__fetcher.cc b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_signals_device__info__fetcher.cc
new file mode 100644
index 000000000000..5c44c95d0aa1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_signals_device__info__fetcher.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/enterprise/signals/device_info_fetcher.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/enterprise/signals/device_info_fetcher.cc
+@@ -10,7 +10,7 @@
+ #include "chrome/browser/enterprise/signals/device_info_fetcher_mac.h"
+ #elif BUILDFLAG(IS_WIN)
+ #include "chrome/browser/enterprise/signals/device_info_fetcher_win.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/enterprise/signals/device_info_fetcher_linux.h"
+ #endif
+
+@@ -70,7 +70,7 @@ std::unique_ptr<DeviceInfoFetcher> DeviceInfoFetcher::
+ return std::make_unique<DeviceInfoFetcherMac>();
+ #elif BUILDFLAG(IS_WIN)
+ return std::make_unique<DeviceInfoFetcherWin>();
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return std::make_unique<DeviceInfoFetcherLinux>();
+ #else
+ return std::make_unique<StubDeviceFetcher>();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_signals_device__info__fetcher__linux.cc b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_signals_device__info__fetcher__linux.cc
new file mode 100644
index 000000000000..4c9ab2df1689
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_enterprise_signals_device__info__fetcher__linux.cc
@@ -0,0 +1,78 @@
+--- chrome/browser/enterprise/signals/device_info_fetcher_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/enterprise/signals/device_info_fetcher_linux.cc
+@@ -4,12 +4,23 @@
+
+ #include "chrome/browser/enterprise/signals/device_info_fetcher_linux.h"
+
++#include "build/build_config.h"
++
+ #if defined(USE_GIO)
+ #include <gio/gio.h>
+ #endif // defined(USE_GIO)
+ #include <sys/stat.h>
++#if !defined(OS_BSD)
+ #include <sys/sysmacros.h>
++#endif
+
++#if defined(OS_BSD)
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <ifaddrs.h>
++#include <net/if_dl.h>
++#endif
++
+ #include <string>
+
+ #include "base/environment.h"
+@@ -118,6 +129,7 @@ SettingValue GetScreenlockSecured() {
+ // Implements the logic from the native host installation script. First find the
+ // root device identifier, then locate its parent and get its type.
+ SettingValue GetDiskEncrypted() {
++#if !defined(OS_BSD)
+ struct stat info;
+ // First figure out the device identifier. Fail fast if this fails.
+ if (stat("/", &info) != 0)
+@@ -139,11 +151,35 @@ SettingValue GetDiskEncrypted() {
+ }
+ return SettingValue::UNKNOWN;
+ }
++#endif
+ return SettingValue::DISABLED;
+ }
+
+ std::vector<std::string> GetMacAddresses() {
+ std::vector<std::string> result;
++#if defined(OS_BSD)
++ struct ifaddrs* ifa = nullptr;
++
++ if (getifaddrs(&ifa) != 0)
++ return result;
++
++ struct ifaddrs* interface = ifa;
++ for (; interface != nullptr; interface = interface->ifa_next) {
++ if (interface->ifa_addr == nullptr ||
++ interface->ifa_addr->sa_family != AF_LINK) {
++ continue;
++ }
++ struct sockaddr_dl* sdl =
++ reinterpret_cast<struct sockaddr_dl*>(interface->ifa_addr);
++ if (!sdl || sdl->sdl_alen != 6)
++ continue;
++ char* link_address = static_cast<char*>(LLADDR(sdl));
++ result.push_back(base::StringPrintf(
++ "%02x:%02x:%02x:%02x:%02x:%02x", link_address[0] & 0xff,
++ link_address[1] & 0xff, link_address[2] & 0xff, link_address[3] & 0xff,
++ link_address[4] & 0xff, link_address[5] & 0xff));
++ }
++#else
+ base::DirReaderPosix reader("/sys/class/net");
+ if (!reader.IsValid())
+ return result;
+@@ -166,6 +202,7 @@ std::vector<std::string> GetMacAddresses() {
+ &address);
+ result.push_back(address);
+ }
++#endif
+ return result;
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_extensions_BUILD.gn b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_BUILD.gn
new file mode 100644
index 000000000000..7006f184460a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_BUILD.gn
@@ -0,0 +1,13 @@
+--- chrome/browser/extensions/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/extensions/BUILD.gn
+@@ -1326,6 +1326,10 @@ static_library("extensions") {
+ deps += [ "//chrome/services/printing/public/mojom" ]
+ }
+
++ if (is_bsd) {
++ sources -= [ "api/image_writer_private/removable_storage_provider_linux.cc" ]
++ }
++
+ if (enable_service_discovery) {
+ sources += [
+ "api/mdns/mdns_api.cc",
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc
new file mode 100644
index 000000000000..a1298a5a5312
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc
+@@ -24,7 +24,7 @@
+ #include "base/win/registry.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/environment.h"
+ #include "base/nix/xdg_util.h"
+ #endif
+@@ -256,7 +256,7 @@ base::FilePath GetEndpointVerificationDir() {
+ bool got_path = false;
+ #if BUILDFLAG(IS_WIN)
+ got_path = base::PathService::Get(base::DIR_LOCAL_APP_DATA, &path);
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ path = base::nix::GetXDGDirectory(env.get(), base::nix::kXdgConfigHomeEnvVar,
+ base::nix::kDotConfigDir);
+@@ -267,7 +267,7 @@ base::FilePath GetEndpointVerificationDir() {
+ if (!got_path)
+ return path;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ path = path.AppendASCII("google");
+ #else
+ path = path.AppendASCII("Google");
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.cc b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.cc
new file mode 100644
index 000000000000..3b4faf05fd29
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/enterprise_reporting_private/conversion_utils.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/extensions/api/enterprise_reporting_private/conversion_utils.cc
+@@ -6,7 +6,7 @@
+
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+
+ #include <memory>
+ #include <utility>
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.h b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.h
new file mode 100644
index 000000000000..6d34ee964ec0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.h
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/enterprise_reporting_private/conversion_utils.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/extensions/api/enterprise_reporting_private/conversion_utils.h
+@@ -7,7 +7,7 @@
+
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+
+ #include <vector>
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.cc b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.cc
new file mode 100644
index 000000000000..caf7ab125f07
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.cc
+@@ -31,7 +31,7 @@
+ #include "components/reporting/util/statusor.h"
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "base/strings/string_util.h"
+ #include "chrome/browser/enterprise/signals/signals_aggregator_factory.h"
+ #include "chrome/browser/extensions/api/enterprise_reporting_private/conversion_utils.h"
+@@ -111,7 +111,7 @@ api::enterprise_reporting_private::ContextInfo ToConte
+ return info;
+ }
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+
+ device_signals::SignalsAggregationRequest CreateAggregationRequest(
+ const std::string& user_id,
+@@ -171,7 +171,7 @@ EnterpriseReportingPrivateGetDeviceIdFunction::
+
+ // getPersistentSecret
+
+-#if !BUILDFLAG(IS_LINUX)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD)
+
+ EnterpriseReportingPrivateGetPersistentSecretFunction::
+ EnterpriseReportingPrivateGetPersistentSecretFunction() = default;
+@@ -611,7 +611,7 @@ void EnterpriseReportingPrivateEnqueueRecordFunction::
+ }
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+
+ // getFileSystemInfo
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.h b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.h
new file mode 100644
index 000000000000..953ec81d8c7b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.h
@@ -0,0 +1,29 @@
+--- chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.h
+@@ -19,7 +19,7 @@
+ #include "components/reporting/proto/synced/record.pb.h"
+ #include "components/reporting/proto/synced/record_constants.pb.h"
+ #include "components/reporting/util/statusor.h"
+-#elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "components/device_signals/core/browser/signals_types.h"
+ #endif // BUILDFLAG(IS_CHROMEOS)
+
+@@ -54,7 +54,7 @@ class EnterpriseReportingPrivateGetDeviceIdFunction :
+ ~EnterpriseReportingPrivateGetDeviceIdFunction() override;
+ };
+
+-#if !BUILDFLAG(IS_LINUX)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD)
+
+ class EnterpriseReportingPrivateGetPersistentSecretFunction
+ : public ExtensionFunction {
+@@ -264,7 +264,7 @@ class EnterpriseReportingPrivateEnqueueRecordFunction
+
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+
+ class EnterpriseReportingPrivateGetFileSystemInfoFunction
+ : public ExtensionFunction {
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
new file mode 100644
index 000000000000..1f5d41a35c0b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc
+@@ -21,6 +21,7 @@ static base::LazyInstance<scoped_refptr<StorageDeviceL
+
+ void RemovableStorageProvider::GetAllDevices(DeviceListReadyCallback callback) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
++#if !defined(OS_BSD)
+ if (g_test_device_list.Get().get() != nullptr) {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+@@ -34,6 +35,9 @@ void RemovableStorageProvider::GetAllDevices(DeviceLis
+ base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
+ base::BindOnce(&RemovableStorageProvider::PopulateDeviceList),
+ std::move(callback));
++#else
++ NOTIMPLEMENTED();
++#endif
+ }
+
+ // static
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_messaging_native__process__launcher__posix.cc b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_messaging_native__process__launcher__posix.cc
new file mode 100644
index 000000000000..e10be280890f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_messaging_native__process__launcher__posix.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/messaging/native_process_launcher_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/extensions/api/messaging/native_process_launcher_posix.cc
+@@ -82,7 +82,7 @@ bool NativeProcessLauncher::LaunchNativeProcess(
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // Don't use no_new_privs mode, e.g. in case the host needs to use sudo.
+ options.allow_new_privs = true;
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
new file mode 100644
index 000000000000..985b9f06df86
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/settings_private/prefs_util.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/extensions/api/settings_private/prefs_util.cc
+@@ -186,7 +186,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlist
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ (*s_allowlist)[::prefs::kUseCustomChromeFrame] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
+@@ -200,7 +200,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlist
+ settings_api::PrefType::PREF_TYPE_NUMBER;
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ (*s_allowlist)[::prefs::kUsesSystemTheme] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc
new file mode 100644
index 000000000000..562190140f2e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc
+@@ -29,7 +29,7 @@
+ #include "extensions/browser/process_manager.h"
+ #include "extensions/common/error_utils.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "extensions/common/permissions/permissions_data.h"
+ #endif
+
+@@ -38,7 +38,7 @@ namespace {
+ bool CanEnableAudioDebugRecordingsFromExtension(
+ const extensions::Extension* extension) {
+ bool enabled_by_permissions = false;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (extension) {
+ enabled_by_permissions =
+ extension->permissions_data()->active_permissions().HasAPIPermission(
+@@ -580,7 +580,7 @@ void WebrtcLoggingPrivateStartEventLoggingFunction::Fi
+
+ ExtensionFunction::ResponseAction
+ WebrtcLoggingPrivateGetLogsDirectoryFunction::Run() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Unlike other WebrtcLoggingPrivate functions that take a RequestInfo object,
+ // this function shouldn't be called by a component extension on behalf of
+ // some web code. It returns a DirectoryEntry for use directly in the calling
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..9c6917813337
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/browser_context_keyed_service_factories.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/extensions/browser_context_keyed_service_factories.cc
+@@ -53,7 +53,7 @@
+ #include "extensions/browser/api/networking_private/networking_private_delegate_factory.h"
+ #include "ppapi/buildflags/buildflags.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h"
+ #endif
+
+@@ -121,7 +121,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()
+ extensions::SettingsPrivateEventRouterFactory::GetInstance();
+ extensions::SettingsOverridesAPI::GetFactoryInstance();
+ extensions::SidePanelService::GetFactoryInstance();
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ extensions::SystemIndicatorManagerFactory::GetInstance();
+ #endif
+ extensions::TabGroupsEventRouterFactory::GetInstance();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_extensions_external__provider__impl.cc b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_external__provider__impl.cc
new file mode 100644
index 000000000000..d8994e293c79
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_extensions_external__provider__impl.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/external_provider_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/extensions/external_provider_impl.cc
+@@ -818,7 +818,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+ if (!profile->GetPrefs()->GetBoolean(pref_names::kBlockExternalExtensions)) {
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ provider_list->push_back(std::make_unique<ExternalProviderImpl>(
+ service,
+ base::MakeRefCounted<ExternalPrefLoader>(
+@@ -846,7 +846,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+ bundled_extension_creation_flags));
+
+ // Define a per-user source of external extensions.
+-#if BUILDFLAG(IS_MAC) || ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \
++#if BUILDFLAG(IS_MAC) || ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && \
+ BUILDFLAG(CHROMIUM_BRANDING))
+ provider_list->push_back(std::make_unique<ExternalProviderImpl>(
+ service,
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc b/www/ungoogled-chromium/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc
new file mode 100644
index 000000000000..a59faf01c0f6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc
+@@ -252,7 +252,7 @@ const struct {
+ {base::DIR_HOME, FILE_PATH_LITERAL("Library/Mobile Documents"),
+ kDontBlockChildren},
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // On Linux also block access to devices via /dev, as well as security
+ // sensitive data in /sys and /proc.
+ {kNoBasePathKey, FILE_PATH_LITERAL("/dev"), kBlockAllChildren},
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_first__run_first__run__dialog.h b/www/ungoogled-chromium/files/patch-chrome_browser_first__run_first__run__dialog.h
new file mode 100644
index 000000000000..33184acb2312
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_first__run_first__run__dialog.h
@@ -0,0 +1,11 @@
+--- chrome/browser/first_run/first_run_dialog.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/first_run/first_run_dialog.h
+@@ -12,7 +12,7 @@
+ // Hide this function on platforms where the dialog does not exist.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || BUILDFLAG(IS_BSD)
+
+ class Profile;
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_first__run_first__run__internal.h b/www/ungoogled-chromium/files/patch-chrome_browser_first__run_first__run__internal.h
new file mode 100644
index 000000000000..4487d16175c3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_first__run_first__run__internal.h
@@ -0,0 +1,11 @@
+--- chrome/browser/first_run/first_run_internal.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/first_run/first_run_internal.h
+@@ -56,7 +56,7 @@ FirstRunState DetermineFirstRunState(bool has_sentinel
+ bool force_first_run,
+ bool no_first_run);
+
+-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // For testing, forces the first run dialog to either be shown or not. If not
+ // called, the decision to show the dialog or not will be made by Chrome based
+ // on a number of factors (such as install type, whether it's a Chrome-branded
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_flag__descriptions.cc b/www/ungoogled-chromium/files/patch-chrome_browser_flag__descriptions.cc
new file mode 100644
index 000000000000..1cf88fc6ccda
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_flag__descriptions.cc
@@ -0,0 +1,65 @@
+--- chrome/browser/flag_descriptions.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/flag_descriptions.cc
+@@ -6230,7 +6230,7 @@ const char kSideSearchDSESupportDescription[] =
+ // Random platform combinations -----------------------------------------------
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ const char kQuickCommandsName[] = "Quick Commands";
+ const char kQuickCommandsDescription[] =
+ "Enable a text interface to browser features. Invoke with Ctrl-Space.";
+@@ -6239,7 +6239,7 @@ const char kQuickCommandsDescription[] =
+ // BUILDFLAG(IS_FUCHSIA)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const char kFollowingFeedSidepanelName[] = "Following feed in the sidepanel";
+ const char kFollowingFeedSidepanelDescription[] =
+ "Enables the following feed in the sidepanel.";
+@@ -6253,7 +6253,7 @@ const char kWebShareDescription[] =
+ "platforms.";
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
+
+-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
++#if (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)) || BUILDFLAG(IS_BSD)
+ const char kOzonePlatformHintChoiceDefault[] = "Default";
+ const char kOzonePlatformHintChoiceAuto[] = "Auto";
+ const char kOzonePlatformHintChoiceX11[] = "X11";
+@@ -6273,7 +6273,7 @@ const char kWebBluetoothConfirmPairingSupportDescripti
+ "Bluetooth";
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const char kCleanUndecryptablePasswordsLinuxName[] =
+ "Cleanup local undecryptable passwords during initial sync flow";
+ const char kCleanUndecryptablePasswordsLinuxDescription[] =
+@@ -6286,7 +6286,7 @@ const char kForcePasswordInitialSyncWhenDecryptionFail
+ "storage and requests initial sync.";
+ #endif // BUILDFLAG(IS_LINUX)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ const char kSkipUndecryptablePasswordsName[] =
+ "Skip undecryptable passwords to use the available decryptable "
+ "passwords.";
+@@ -6295,7 +6295,7 @@ const char kSkipUndecryptablePasswordsDescription[] =
+ "there are undecryptable ones.";
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const char kAsyncDnsName[] = "Async DNS resolver";
+ const char kAsyncDnsDescription[] = "Enables the built-in DNS resolver.";
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
+@@ -6400,7 +6400,7 @@ const char kElasticOverscrollDescription[] =
+
+ #if BUILDFLAG(IS_WIN) || \
+ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
+- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ const char kUIDebugToolsName[] = "Debugging tools for UI";
+ const char kUIDebugToolsDescription[] =
+ "Enables additional keyboard shortcuts to help debugging.";
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_flag__descriptions.h b/www/ungoogled-chromium/files/patch-chrome_browser_flag__descriptions.h
new file mode 100644
index 000000000000..8fd516555478
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_flag__descriptions.h
@@ -0,0 +1,51 @@
+--- chrome/browser/flag_descriptions.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/flag_descriptions.h
+@@ -3577,7 +3577,7 @@ extern const char kSideSearchDSESupportDescription[];
+ // Random platform combinations -----------------------------------------------
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ extern const char kQuickCommandsName[];
+ extern const char kQuickCommandsDescription[];
+
+@@ -3594,7 +3594,7 @@ extern const char kWebBluetoothConfirmPairingSupportNa
+ extern const char kWebBluetoothConfirmPairingSupportDescription[];
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ extern const char kOzonePlatformHintChoiceDefault[];
+ extern const char kOzonePlatformHintChoiceAuto[];
+ extern const char kOzonePlatformHintChoiceX11[];
+@@ -3610,18 +3610,18 @@ extern const char kForcePasswordInitialSyncWhenDecrypt
+ extern const char kForcePasswordInitialSyncWhenDecryptionFailsDescription[];
+ #endif // BUILDFLAG(IS_LINUX)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ extern const char kSkipUndecryptablePasswordsName[];
+ extern const char kSkipUndecryptablePasswordsDescription[];
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ extern const char kAsyncDnsName[];
+ extern const char kAsyncDnsDescription[];
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ extern const char kFollowingFeedSidepanelName[];
+ extern const char kFollowingFeedSidepanelDescription[];
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
+@@ -3698,7 +3698,7 @@ extern const char kElasticOverscrollDescription[];
+
+ #if BUILDFLAG(IS_WIN) || \
+ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
+- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ extern const char kUIDebugToolsName[];
+ extern const char kUIDebugToolsDescription[];
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_headless_headless__mode__util.cc b/www/ungoogled-chromium/files/patch-chrome_browser_headless_headless__mode__util.cc
new file mode 100644
index 000000000000..3437f21bd003
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_headless_headless__mode__util.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/headless/headless_mode_util.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/headless/headless_mode_util.cc
+@@ -9,7 +9,7 @@
+ // Native headless is currently available on Linux, Windows and Mac platforms.
+ // More platforms will be added later, so avoid function level clutter by
+ // providing stub implementations at the end of the file.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+
+ #include <cstdlib>
+ #include <vector>
+@@ -17,7 +17,7 @@
+ #include "base/base_switches.h"
+ #include "ui/gfx/switches.h"
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "ui/ozone/public/ozone_switches.h"
+ #endif // BUILDFLAG(IS_LINUX)
+
+@@ -51,7 +51,7 @@ void SetUpCommandLine(const base::CommandLine* command
+ base::CommandLine::ForCurrentProcess()->AppendSwitch(
+ ::switches::kNoErrorDialogs);
+ }
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Native headless chrome on Linux relies on ozone/headless platform.
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+ ::switches::kOzonePlatform, switches::kHeadless);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_intranet__redirect__detector.h b/www/ungoogled-chromium/files/patch-chrome_browser_intranet__redirect__detector.h
new file mode 100644
index 000000000000..7777bae4ded8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_intranet__redirect__detector.h
@@ -0,0 +1,11 @@
+--- chrome/browser/intranet_redirect_detector.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/intranet_redirect_detector.h
+@@ -27,7 +27,7 @@ class SimpleURLLoader;
+ class PrefRegistrySimple;
+
+ #if !(BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA))
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD))
+ #error "IntranetRedirectDetector should only be built on Desktop platforms."
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc b/www/ungoogled-chromium/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
new file mode 100644
index 000000000000..f88898ead8e0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc
+@@ -39,10 +39,12 @@ void MTPDeviceMapService::RegisterMTPFileSystem(
+ // Note that this initializes the delegate asynchronously, but since
+ // the delegate will only be used from the IO thread, it is guaranteed
+ // to be created before use of it expects it to be there.
++#if !defined(OS_BSD)
+ CreateMTPDeviceAsyncDelegate(
+ device_location, read_only,
+ base::BindOnce(&MTPDeviceMapService::AddAsyncDelegate,
+ base::Unretained(this), device_location, read_only));
++#endif
+ mtp_device_usage_map_[key] = 0;
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc b/www/ungoogled-chromium/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
new file mode 100644
index 000000000000..db950777debd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/media_galleries/media_file_system_registry.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/media_galleries/media_file_system_registry.cc
+@@ -744,7 +744,12 @@ class MediaFileSystemRegistry::MediaFileSystemContextI
+ // Constructor in 'private' section because depends on private class definition.
+ MediaFileSystemRegistry::MediaFileSystemRegistry()
+ : file_system_context_(new MediaFileSystemContextImpl) {
+- StorageMonitor::GetInstance()->AddObserver(this);
++ /*
++ * This conditional is needed for shutdown. Destructors
++ * try to get the media file system registry.
++ */
++ if (StorageMonitor::GetInstance())
++ StorageMonitor::GetInstance()->AddObserver(this);
+ }
+
+ MediaFileSystemRegistry::~MediaFileSystemRegistry() {
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_media_audio__service__util.cc b/www/ungoogled-chromium/files/patch-chrome_browser_media_audio__service__util.cc
new file mode 100644
index 000000000000..786ac1a87954
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_media_audio__service__util.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/media/audio_service_util.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/media/audio_service_util.cc
+@@ -21,7 +21,7 @@
+
+ namespace {
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ bool GetPolicyOrFeature(const char* policy_name, const base::Feature& feature) {
+ const policy::PolicyMap& policies =
+@@ -40,7 +40,7 @@ bool GetPolicyOrFeature(const char* policy_name, const
+ bool IsAudioServiceSandboxEnabled() {
+ // TODO(crbug.com/1052397): Remove !IS_CHROMEOS_LACROS once lacros starts being
+ // built with OS_CHROMEOS instead of OS_LINUX.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ return GetPolicyOrFeature(policy::key::kAudioSandboxEnabled,
+ features::kAudioServiceSandbox);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_media_router_discovery_BUILD.gn b/www/ungoogled-chromium/files/patch-chrome_browser_media_router_discovery_BUILD.gn
new file mode 100644
index 000000000000..2a16d5cf5706
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_media_router_discovery_BUILD.gn
@@ -0,0 +1,11 @@
+--- chrome/browser/media/router/discovery/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/media/router/discovery/BUILD.gn
+@@ -79,7 +79,7 @@ static_library("discovery") {
+ "media_sink_discovery_metrics.h",
+ ]
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [ "discovery_network_list_wifi_linux.cc" ]
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc b/www/ungoogled-chromium/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
new file mode 100644
index 000000000000..60e13f141bbb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
@@ -0,0 +1,48 @@
+--- chrome/browser/media/router/discovery/discovery_network_list_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/media/router/discovery/discovery_network_list_posix.cc
+@@ -5,11 +5,12 @@
+ #include "chrome/browser/media/router/discovery/discovery_network_list.h"
+
+ #include <ifaddrs.h>
++#include <sys/socket.h>
++#include <sys/types.h>
++#include <sys/time.h>
+ #include <net/if.h>
+ #include <net/if_arp.h>
+ #include <netinet/in.h>
+-#include <sys/socket.h>
+-#include <sys/types.h>
+
+ #include <algorithm>
+
+@@ -18,7 +19,7 @@
+ #include "chrome/browser/media/router/discovery/discovery_network_list_wifi.h"
+ #include "net/base/net_errors.h"
+
+-#if !BUILDFLAG(IS_MAC)
++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ #include <netpacket/packet.h>
+ #else
+ #include <net/if_dl.h>
+@@ -27,7 +28,7 @@
+ namespace media_router {
+ namespace {
+
+-#if !BUILDFLAG(IS_MAC)
++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ using sll = struct sockaddr_ll;
+ #define SOCKET_ARP_TYPE(s) ((s)->sll_hatype)
+ #define SOCKET_ADDRESS_LEN(s) ((s)->sll_halen)
+@@ -38,6 +39,12 @@ using sll = struct sockaddr_dl;
+ #define SOCKET_ARP_TYPE(s) ((s)->sdl_type)
+ #define SOCKET_ADDRESS_LEN(s) ((s)->sdl_alen)
+ #define SOCKET_ADDRESS(s) (LLADDR(s))
++#endif
++
++#if BUILDFLAG(IS_BSD)
++bool MaybeGetWifiSSID(const std::string& if_name, std::string* ssid_out) {
++ return false;
++}
+ #endif
+
+ void GetDiscoveryNetworkInfoListImpl(
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc b/www/ungoogled-chromium/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
new file mode 100644
index 000000000000..5d728a5f210b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
@@ -0,0 +1,30 @@
+--- chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc
+@@ -9,7 +9,11 @@
+ #include <sys/socket.h>
+ #include <sys/types.h>
+
++#include "build/build_config.h"
++
++#if !defined(OS_BSD)
+ #include <linux/wireless.h>
++#endif
+
+ #include "base/check.h"
+ #include "base/files/scoped_file.h"
+@@ -20,6 +24,7 @@ namespace media_router {
+ bool MaybeGetWifiSSID(const std::string& if_name, std::string* ssid_out) {
+ DCHECK(ssid_out);
+
++#if !defined(OS_BSD)
+ base::ScopedFD ioctl_socket(socket(AF_INET, SOCK_DGRAM, 0));
+ if (!ioctl_socket.is_valid()) {
+ // AF_INET is for IPv4, so it may fail for IPv6-only hosts even when there
+@@ -41,6 +46,7 @@ bool MaybeGetWifiSSID(const std::string& if_name, std:
+ ssid_out->assign(ssid);
+ return true;
+ }
++#endif
+ return false;
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc b/www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
new file mode 100644
index 000000000000..aed7b870e278
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/media/webrtc/webrtc_event_log_uploader.cc
+@@ -40,7 +40,7 @@ const char kProduct[] = "Chrome";
+ const char kProduct[] = "Chrome_Mac";
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ const char kProduct[] = "Chrome_ChromeOS";
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ const char kProduct[] = "Chrome_Linux";
+ #elif BUILDFLAG(IS_ANDROID)
+ const char kProduct[] = "Chrome_Android";
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc b/www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
new file mode 100644
index 000000000000..97aab9b5cb52
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
@@ -0,0 +1,13 @@
+--- chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/media/webrtc/webrtc_log_uploader.cc
+@@ -281,6 +281,10 @@ void WebRtcLogUploader::SetupMultipart(
+ const char product[] = "Chrome_ChromeOS";
+ #elif BUILDFLAG(IS_FUCHSIA)
+ const char product[] = "Chrome_Fuchsia";
++#elif defined(OS_OPENBSD)
++ const char product[] = "Chrome_OpenBSD";
++#elif defined(OS_FREEBSD)
++ const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc b/www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc
new file mode 100644
index 000000000000..6afca51d3c32
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc
@@ -0,0 +1,33 @@
+--- chrome/browser/media/webrtc/webrtc_logging_controller.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/media/webrtc/webrtc_logging_controller.cc
+@@ -24,10 +24,10 @@
+ #include "content/public/browser/browser_context.h"
+ #include "content/public/browser/render_process_host.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "content/public/browser/child_process_security_policy.h"
+ #include "storage/browser/file_system/isolated_context.h"
+-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ using webrtc_event_logging::WebRtcEventLogManager;
+
+@@ -281,7 +281,7 @@ void WebRtcLoggingController::StartEventLogging(
+ web_app_id, callback);
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void WebRtcLoggingController::GetLogsDirectory(
+ LogsDirectoryCallback callback,
+ LogsDirectoryErrorCallback error_callback) {
+@@ -327,7 +327,7 @@ void WebRtcLoggingController::GrantLogsDirectoryAccess
+ FROM_HERE,
+ base::BindOnce(std::move(callback), file_system.id(), registered_name));
+ }
+-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ void WebRtcLoggingController::OnRtpPacket(
+ std::unique_ptr<uint8_t[]> packet_header,
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h b/www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h
new file mode 100644
index 000000000000..d8cde46077bf
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h
@@ -0,0 +1,20 @@
+--- chrome/browser/media/webrtc/webrtc_logging_controller.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/media/webrtc/webrtc_logging_controller.h
+@@ -132,7 +132,7 @@ class WebRtcLoggingController
+ size_t web_app_id,
+ const StartEventLoggingCallback& callback);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Ensures that the WebRTC Logs directory exists and then grants render
+ // process access to the 'WebRTC Logs' directory, and invokes |callback| with
+ // the ids necessary to create a DirectoryEntry object.
+@@ -191,7 +191,7 @@ class WebRtcLoggingController
+ bool success,
+ const std::string& error_message);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Grants the render process access to the 'WebRTC Logs' directory, and
+ // invokes |callback| with the ids necessary to create a DirectoryEntry
+ // object. If the |logs_path| couldn't be created or found, |error_callback|
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_memory__details.cc b/www/ungoogled-chromium/files/patch-chrome_browser_memory__details.cc
new file mode 100644
index 000000000000..f331ea41994c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_memory__details.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/memory_details.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/memory_details.cc
+@@ -38,7 +38,7 @@
+ #include "services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_BSD)
+ #include "content/public/browser/zygote_host/zygote_host_linux.h"
+ #endif
+
+@@ -329,7 +329,7 @@ void MemoryDetails::CollectChildInfoOnUIThread() {
+ std::ref(process)));
+ }
+
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_BSD)
+ if (content::ZygoteHost::GetInstance()->IsZygotePid(process.pid)) {
+ process.process_type = content::PROCESS_TYPE_ZYGOTE;
+ }
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_memory__details__linux.cc b/www/ungoogled-chromium/files/patch-chrome_browser_memory__details__linux.cc
new file mode 100644
index 000000000000..2407374d17a0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_memory__details__linux.cc
@@ -0,0 +1,37 @@
+--- chrome/browser/memory_details_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/memory_details_linux.cc
+@@ -13,6 +13,7 @@
+ #include <set>
+
+ #include "base/bind.h"
++#include "base/command_line.h"
+ #include "base/files/file_util.h"
+ #include "base/process/process_iterator.h"
+ #include "base/process/process_metrics.h"
+@@ -27,6 +28,7 @@
+ #include "content/public/browser/browser_task_traits.h"
+ #include "content/public/browser/browser_thread.h"
+ #include "content/public/common/process_type.h"
++#include "sandbox/policy/switches.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+ using base::ProcessEntry;
+@@ -70,9 +72,18 @@ ProcessData GetProcessDataMemoryInformation(
+
+ std::unique_ptr<base::ProcessMetrics> metrics(
+ base::ProcessMetrics::CreateProcessMetrics(pid));
++
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ if (!command_line->HasSwitch(sandbox::policy::switches::kNoSandbox)) {
++ pmi.num_open_fds = 0;
++ pmi.open_fds_soft_limit = 0;
++ goto out;
++ }
++
+ pmi.num_open_fds = metrics->GetOpenFdCount();
+ pmi.open_fds_soft_limit = metrics->GetOpenFdSoftLimit();
+
++out:
+ process_data.processes.push_back(pmi);
+ }
+ return process_data;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc b/www/ungoogled-chromium/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
new file mode 100644
index 000000000000..4c2a29c79a71
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
@@ -0,0 +1,23 @@
+--- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+@@ -58,8 +58,10 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
++#if !BUILDFLAG(IS_BSD)
+ #include <gnu/libc-version.h>
++#endif
+
+ #include "base/linux_util.h"
+ #include "base/strings/string_split.h"
+@@ -516,7 +518,7 @@ void RecordStartupMetrics() {
+
+ // Record whether Chrome is the default browser or not.
+ // Disabled on Linux due to hanging browser tests, see crbug.com/1216328.
+-#if !BUILDFLAG(IS_LINUX)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD)
+ shell_integration::DefaultWebClientState default_state =
+ shell_integration::GetDefaultBrowser();
+ base::UmaHistogramEnumeration("DefaultBrowser.State", default_state,
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc b/www/ungoogled-chromium/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc
new file mode 100644
index 000000000000..fa7b5da305e6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc
@@ -0,0 +1,47 @@
+--- chrome/browser/metrics/chrome_metrics_service_client.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/metrics/chrome_metrics_service_client.cc
+@@ -174,7 +174,7 @@
+ #include "chrome/notification_helper/notification_helper_constants.h"
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "components/metrics/motherboard_metrics_provider.h"
+ #endif
+
+@@ -721,7 +721,7 @@ void ChromeMetricsServiceClient::RegisterMetricsServic
+ metrics_service_->RegisterMetricsProvider(
+ std::make_unique<metrics::CPUMetricsProvider>());
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ metrics_service_->RegisterMetricsProvider(
+ std::make_unique<metrics::MotherboardMetricsProvider>());
+ #endif
+@@ -798,7 +798,7 @@ void ChromeMetricsServiceClient::RegisterMetricsServic
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ metrics_service_->RegisterMetricsProvider(
+ std::make_unique<DesktopPlatformFeaturesMetricsProvider>());
+@@ -887,7 +887,7 @@ void ChromeMetricsServiceClient::RegisterMetricsServic
+ std::make_unique<PowerMetricsProvider>());
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ metrics_service_->RegisterMetricsProvider(
+ metrics::CreateDesktopSessionMetricsProvider());
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_LINUX)
+@@ -1070,7 +1070,7 @@ bool ChromeMetricsServiceClient::RegisterForProfileEve
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ // This creates the DesktopProfileSessionDurationsServices if it didn't exist
+ // already.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_metrics_perf_cpu__identity.cc b/www/ungoogled-chromium/files/patch-chrome_browser_metrics_perf_cpu__identity.cc
new file mode 100644
index 000000000000..cd82738dac34
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_metrics_perf_cpu__identity.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/metrics/perf/cpu_identity.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/metrics/perf/cpu_identity.cc
+@@ -106,7 +106,7 @@ CPUIdentity GetCPUIdentity() {
+ result.release =
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ base::SysInfo::KernelVersion();
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ base::SysInfo::OperatingSystemVersion();
+ #else
+ #error "Unsupported configuration"
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_metrics_power_process__metrics__recorder__util.cc b/www/ungoogled-chromium/files/patch-chrome_browser_metrics_power_process__metrics__recorder__util.cc
new file mode 100644
index 000000000000..ef175527ea26
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_metrics_power_process__metrics__recorder__util.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/metrics/power/process_metrics_recorder_util.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/metrics/power/process_metrics_recorder_util.cc
+@@ -59,7 +59,7 @@ void RecordProcessHistograms(const char* histogram_suf
+ const ProcessMonitor::Metrics& metrics) {
+ RecordAverageCPUUsage(histogram_suffix, metrics.cpu_usage);
+ #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ base::UmaHistogramCounts10000(
+ base::StrCat({"PerformanceMonitor.IdleWakeups2.", histogram_suffix}),
+ metrics.idle_wakeups);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_metrics_power_process__monitor.cc b/www/ungoogled-chromium/files/patch-chrome_browser_metrics_power_process__monitor.cc
new file mode 100644
index 000000000000..d076f7e13161
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_metrics_power_process__monitor.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/metrics/power/process_monitor.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/metrics/power/process_monitor.cc
+@@ -64,7 +64,7 @@ ProcessMonitor::Metrics SampleMetrics(base::ProcessMet
+ #endif
+
+ #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ metrics.idle_wakeups = process_metrics.GetIdleWakeupsPerSecond();
+ #endif
+ #if BUILDFLAG(IS_MAC)
+@@ -81,7 +81,7 @@ void ScaleMetrics(ProcessMonitor::Metrics* metrics, do
+ metrics->cpu_usage *= factor;
+
+ #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ metrics->idle_wakeups *= factor;
+ #endif
+
+@@ -130,7 +130,7 @@ ProcessMonitor::Metrics& operator+=(ProcessMonitor::Me
+ lhs.cpu_usage += rhs.cpu_usage;
+
+ #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ lhs.idle_wakeups += rhs.idle_wakeups;
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_metrics_power_process__monitor.h b/www/ungoogled-chromium/files/patch-chrome_browser_metrics_power_process__monitor.h
new file mode 100644
index 000000000000..96d4b1b9418e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_metrics_power_process__monitor.h
@@ -0,0 +1,11 @@
+--- chrome/browser/metrics/power/process_monitor.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/metrics/power/process_monitor.h
+@@ -70,7 +70,7 @@ class ProcessMonitor : public content::BrowserChildPro
+ double cpu_usage = 0.0;
+
+ #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_AIX)
++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD)
+ // Returns the number of average idle cpu wakeups per second since the last
+ // time the metric was sampled.
+ int idle_wakeups = 0;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_net_system__network__context__manager.cc b/www/ungoogled-chromium/files/patch-chrome_browser_net_system__network__context__manager.cc
new file mode 100644
index 000000000000..0c360e4c3d4c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_net_system__network__context__manager.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/net/system_network_context_manager.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/net/system_network_context_manager.cc
+@@ -91,7 +91,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ #include "chrome/common/chrome_paths_internal.h"
+ #include "chrome/grit/chromium_strings.h"
+ #include "ui/base/l10n/l10n_util.h"
+@@ -173,7 +173,7 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAut
+ auth_dynamic_params->basic_over_http_enabled =
+ local_state->GetBoolean(prefs::kBasicAuthOverHttpEnabled);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ auth_dynamic_params->delegate_by_kdc_policy =
+ local_state->GetBoolean(prefs::kAuthNegotiateDelegateByKdcPolicy);
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
+@@ -484,7 +484,7 @@ SystemNetworkContextManager::SystemNetworkContextManag
+ pref_change_registrar_.Add(prefs::kAllHttpAuthSchemesAllowedForOrigins,
+ auth_pref_callback);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ pref_change_registrar_.Add(prefs::kAuthNegotiateDelegateByKdcPolicy,
+ auth_pref_callback);
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
+@@ -556,7 +556,7 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRe
+ registry->RegisterBooleanPref(prefs::kKerberosEnabled, false);
+ #endif // BUILDFLAG(IS_CHROMEOS_LACROS)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ registry->RegisterBooleanPref(prefs::kAuthNegotiateDelegateByKdcPolicy,
+ false);
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_new__tab__page_modules_drive_drive__service.cc b/www/ungoogled-chromium/files/patch-chrome_browser_new__tab__page_modules_drive_drive__service.cc
new file mode 100644
index 000000000000..1ba6c43090e5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_new__tab__page_modules_drive_drive__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/new_tab_page/modules/drive/drive_service.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/new_tab_page/modules/drive/drive_service.cc
+@@ -28,7 +28,7 @@
+ #include "services/network/public/cpp/resource_request.h"
+
+ namespace {
+-#if OS_LINUX
++#if defined(OS_LINUX) || defined(OS_BSD)
+ constexpr char kPlatform[] = "LINUX";
+ #elif OS_WIN
+ constexpr char kPlatform[] = "WINDOWS";
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_new__tab__page_new__tab__page__util.cc b/www/ungoogled-chromium/files/patch-chrome_browser_new__tab__page_new__tab__page__util.cc
new file mode 100644
index 000000000000..39e2e271b1f4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_new__tab__page_new__tab__page__util.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/new_tab_page/new_tab_page_util.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/new_tab_page/new_tab_page_util.cc
+@@ -11,7 +11,7 @@
+
+ namespace {
+ bool IsOsSupportedForRecipe() {
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_notifications_notification__display__service__impl.cc b/www/ungoogled-chromium/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
new file mode 100644
index 000000000000..8787c1699a3e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/notifications/notification_display_service_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/notifications/notification_display_service_impl.cc
+@@ -32,7 +32,7 @@
+ #endif
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/send_tab_to_self/desktop_notification_handler.h"
+ #include "chrome/browser/sharing/sharing_notification_handler.h"
+ #endif
+@@ -65,7 +65,7 @@ NotificationDisplayServiceImpl* NotificationDisplaySer
+ // static
+ void NotificationDisplayServiceImpl::RegisterProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ registry->RegisterBooleanPref(prefs::kAllowSystemNotifications, true);
+ #endif
+ }
+@@ -81,7 +81,7 @@ NotificationDisplayServiceImpl::NotificationDisplaySer
+ std::make_unique<PersistentNotificationHandler>());
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ AddNotificationHandler(
+ NotificationHandler::Type::SEND_TAB_TO_SELF,
+ std::make_unique<send_tab_to_self::DesktopNotificationHandler>(
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc b/www/ungoogled-chromium/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc
new file mode 100644
index 000000000000..b07d1a108822
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/notifications/notification_platform_bridge_delegator.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/notifications/notification_platform_bridge_delegator.cc
+@@ -57,7 +57,7 @@ bool SystemNotificationsEnabled(Profile* profile) {
+ #elif BUILDFLAG(IS_WIN)
+ return NotificationPlatformBridgeWin::SystemNotificationEnabled();
+ #else
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (profile) {
+ // Prefs take precedence over flags.
+ PrefService* prefs = profile->GetPrefs();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_password__manager_password__reuse__manager__factory.cc b/www/ungoogled-chromium/files/patch-chrome_browser_password__manager_password__reuse__manager__factory.cc
new file mode 100644
index 000000000000..41d9b18fc551
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_password__manager_password__reuse__manager__factory.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/password_manager/password_reuse_manager_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/password_manager/password_reuse_manager_factory.cc
+@@ -92,7 +92,7 @@ KeyedService* PasswordReuseManagerFactory::BuildServic
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ std::unique_ptr<password_manager::PasswordStoreSigninNotifier> notifier =
+ std::make_unique<password_manager::PasswordStoreSigninNotifierImpl>(
+ IdentityManagerFactory::GetForProfile(profile));
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_platform__util__linux.cc b/www/ungoogled-chromium/files/patch-chrome_browser_platform__util__linux.cc
new file mode 100644
index 000000000000..80fab6b84cb5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_platform__util__linux.cc
@@ -0,0 +1,12 @@
+--- chrome/browser/platform_util_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/platform_util_linux.cc
+@@ -295,7 +295,9 @@ void RunCommand(const std::string& command,
+
+ base::LaunchOptions options;
+ options.current_directory = working_directory;
++#if !defined(OS_BSD)
+ options.allow_new_privs = true;
++#endif
+ // xdg-open can fall back on mailcap which eventually might plumb through
+ // to a command that needs a terminal. Set the environment variable telling
+ // it that we definitely don't have a terminal available and that it should
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc b/www/ungoogled-chromium/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc
new file mode 100644
index 000000000000..734a5d051386
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/policy/browser_signin_policy_handler.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/policy/browser_signin_policy_handler.cc
+@@ -43,7 +43,7 @@ void BrowserSigninPolicyHandler::ApplyPolicySettings(c
+ policies.GetValue(policy_name(), base::Value::Type::INTEGER);
+ switch (static_cast<BrowserSigninMode>(value->GetInt())) {
+ case BrowserSigninMode::kForced:
+-#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD)
+ prefs->SetValue(prefs::kForceBrowserSignin, base::Value(true));
+ #endif
+ [[fallthrough]];
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc b/www/ungoogled-chromium/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc
new file mode 100644
index 000000000000..85259f1d457c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/policy/chrome_browser_cloud_management_controller_desktop.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/policy/chrome_browser_cloud_management_controller_desktop.cc
+@@ -47,7 +47,7 @@
+ #include "chrome/browser/policy/browser_dm_token_storage_mac.h"
+ #endif // BUILDFLAG(IS_MAC)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/policy/browser_dm_token_storage_linux.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+@@ -56,7 +56,7 @@
+ #include "chrome/install_static/install_util.h"
+ #endif // BUILDFLAG(IS_WIN)
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/enterprise/connectors/device_trust/device_trust_features.h"
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl.h"
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher.h"
+@@ -89,7 +89,7 @@ void ChromeBrowserCloudManagementControllerDesktop::
+
+ #if BUILDFLAG(IS_MAC)
+ storage_delegate = std::make_unique<BrowserDMTokenStorageMac>();
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ storage_delegate = std::make_unique<BrowserDMTokenStorageLinux>();
+ #elif BUILDFLAG(IS_WIN)
+ storage_delegate = std::make_unique<BrowserDMTokenStorageWin>();
+@@ -244,7 +244,7 @@ ChromeBrowserCloudManagementControllerDesktop::CreateC
+
+ std::unique_ptr<enterprise_connectors::DeviceTrustKeyManager>
+ ChromeBrowserCloudManagementControllerDesktop::CreateDeviceTrustKeyManager() {
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ if (enterprise_connectors::IsDeviceTrustConnectorFeatureEnabled()) {
+ auto key_rotation_launcher =
+ enterprise_connectors::KeyRotationLauncher::Create(
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc b/www/ungoogled-chromium/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
new file mode 100644
index 000000000000..c222fd8d6787
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
@@ -0,0 +1,120 @@
+--- chrome/browser/policy/configuration_policy_handler_list_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/policy/configuration_policy_handler_list_factory.cc
+@@ -187,12 +187,12 @@
+ #include "components/spellcheck/browser/pref_names.h"
+ #endif // BUILDFLAG(ENABLE_SPELLCHECK)
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "components/device_signals/core/browser/pref_names.h"
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/web_applications/policy/web_app_settings_policy_handler.h"
+ #endif
+
+@@ -699,7 +699,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ prefs::kManagedDefaultGeolocationSetting,
+ base::Value::Type::INTEGER },
+ #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) \
+- || BUILDFLAG(IS_FUCHSIA)
++ || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ { key::kRequireOnlineRevocationChecksForLocalAnchors,
+ prefs::kCertRevocationCheckingRequiredLocalAnchors,
+ base::Value::Type::BOOLEAN },
+@@ -1304,7 +1304,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ base::Value::Type::BOOLEAN },
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH)
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ { key::kGSSAPILibraryName,
+ prefs::kGSSAPILibraryName,
+ base::Value::Type::STRING },
+@@ -1374,18 +1374,18 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ prefs::kTotalMemoryLimitMb,
+ base::Value::Type::INTEGER },
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ { key::kBackgroundModeEnabled,
+ prefs::kBackgroundModeEnabled,
+ base::Value::Type::BOOLEAN },
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ { key::kUnmanagedDeviceSignalsConsentFlowEnabled,
+ device_signals::prefs::kUnmanagedDeviceSignalsConsentFlowEnabled,
+ base::Value::Type::BOOLEAN },
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) \
+- || BUILDFLAG(IS_FUCHSIA)
++ || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ { key::kDefaultBrowserSettingEnabled,
+ prefs::kDefaultBrowserSettingEnabled,
+ base::Value::Type::BOOLEAN },
+@@ -1398,7 +1398,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+ // || BUILDFLAG(IS_FUCHSIA)
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) \
+- || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ { key::kAutoplayAllowed,
+ prefs::kAutoplayAllowed,
+ base::Value::Type::BOOLEAN },
+@@ -1580,7 +1580,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ base::Value::Type::BOOLEAN },
+ #endif // BUILDFLAG(IS_CHROMEOS)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ { key::kAuthNegotiateDelegateByKdcPolicy,
+ prefs::kAuthNegotiateDelegateByKdcPolicy,
+ base::Value::Type::BOOLEAN },
+@@ -1639,7 +1639,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH)
+
+ #if BUILDFLAG(ENABLE_EXTENSIONS) && (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) \
+- || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_FUCHSIA))
++ || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_FUCHSIA)) || BUILDFLAG(IS_BSD)
+ { key::kChromeAppsEnabled,
+ extensions::pref_names::kChromeAppsEnabled,
+ base::Value::Type::BOOLEAN },
+@@ -1963,7 +1963,7 @@ std::unique_ptr<ConfigurationPolicyHandlerList> BuildH
+ key::kBrowsingDataLifetime, browsing_data::prefs::kBrowsingDataLifetime,
+ chrome_schema));
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ handlers->AddHandler(std::make_unique<LocalSyncPolicyHandler>());
+ handlers->AddHandler(std::make_unique<ThemeColorPolicyHandler>());
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
+@@ -2307,7 +2307,7 @@ std::unique_ptr<ConfigurationPolicyHandlerList> BuildH
+ chrome_schema));
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ handlers->AddHandler(
+ std::make_unique<web_app::WebAppSettingsPolicyHandler>(chrome_schema));
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
+@@ -2320,7 +2320,7 @@ std::unique_ptr<ConfigurationPolicyHandlerList> BuildH
+ #endif
+
+ #if BUILDFLAG(ENABLE_SPELLCHECK)
+-#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ handlers->AddHandler(std::make_unique<SpellcheckLanguagePolicyHandler>());
+ handlers->AddHandler(
+ std::make_unique<SpellcheckLanguageBlocklistPolicyHandler>(
+@@ -2328,7 +2328,7 @@ std::unique_ptr<ConfigurationPolicyHandlerList> BuildH
+ #endif // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
+ #endif // BUILDFLAG(ENABLE_SPELLCHECK)
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ handlers->AddHandler(std::make_unique<SimplePolicyHandler>(
+ key::kAllowSystemNotifications, prefs::kAllowSystemNotifications,
+ base::Value::Type::BOOLEAN));
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_policy_device__management__service__configuration.cc b/www/ungoogled-chromium/files/patch-chrome_browser_policy_device__management__service__configuration.cc
new file mode 100644
index 000000000000..cb361c1c571f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_policy_device__management__service__configuration.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/policy/device_management_service_configuration.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/policy/device_management_service_configuration.cc
+@@ -21,7 +21,7 @@
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
+ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \
+- !BUILDFLAG(IS_ANDROID))
++ !BUILDFLAG(IS_ANDROID)) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/enterprise/connectors/common.h"
+ #include "chrome/browser/enterprise/connectors/connectors_service.h"
+ #endif
+@@ -100,7 +100,7 @@ DeviceManagementServiceConfiguration::GetReportingConn
+ content::BrowserContext* context) const {
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
+ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \
+- !BUILDFLAG(IS_ANDROID))
++ !BUILDFLAG(IS_ANDROID)) || BUILDFLAG(IS_BSD)
+ auto* service =
+ enterprise_connectors::ConnectorsServiceFactory::GetForBrowserContext(
+ context);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_prefs_browser__prefs.cc b/www/ungoogled-chromium/files/patch-chrome_browser_prefs_browser__prefs.cc
new file mode 100644
index 000000000000..457d9b4c6aef
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_prefs_browser__prefs.cc
@@ -0,0 +1,44 @@
+--- chrome/browser/prefs/browser_prefs.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/prefs/browser_prefs.cc
+@@ -437,14 +437,14 @@
+ #include "components/os_crypt/os_crypt.h"
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/web_applications/url_handler_prefs.h"
+ #include "components/device_signals/core/browser/pref_names.h"
+ #endif
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ #include "chrome/browser/browser_switcher/browser_switcher_prefs.h"
+ #endif
+@@ -1211,7 +1211,7 @@ void RegisterLocalState(PrefRegistrySimple* registry)
+ #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ #endif // BUILDFLAG(IS_WIN)
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ web_app::url_handler_prefs::RegisterLocalStatePrefs(registry);
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+
+@@ -1525,13 +1525,13 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySync
+ safe_browsing::PostCleanupSettingsResetter::RegisterProfilePrefs(registry);
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ device_signals::RegisterProfilePrefs(registry);
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ browser_switcher::BrowserSwitcherPrefs::RegisterProfilePrefs(registry);
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc b/www/ungoogled-chromium/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc
new file mode 100644
index 000000000000..b51d1e1f3e1e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/prefs/pref_service_incognito_allowlist.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/prefs/pref_service_incognito_allowlist.cc
+@@ -138,7 +138,7 @@ const char* const kPersistentPrefNames[] = {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // Toggleing custom frames affects all open windows in the profile, hence
+ // should be written to the regular profile when changed in incognito mode.
+ prefs::kUseCustomChromeFrame,
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_printing_print__backend__service__manager.cc b/www/ungoogled-chromium/files/patch-chrome_browser_printing_print__backend__service__manager.cc
new file mode 100644
index 000000000000..a1ebf697be3f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_printing_print__backend__service__manager.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/printing/print_backend_service_manager.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/printing/print_backend_service_manager.cc
+@@ -481,7 +481,7 @@ absl::optional<uint32_t> PrintBackendServiceManager::R
+ query_clients_.insert(client_id);
+ break;
+ case ClientType::kQueryWithUi:
+-#if !BUILDFLAG(IS_LINUX)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD)
+ if (!query_with_ui_clients_.empty())
+ return absl::nullopt;
+ #endif
+@@ -706,7 +706,7 @@ PrintBackendServiceManager::DetermineIdleTimeoutUpdate
+ break;
+
+ case ClientType::kQueryWithUi:
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // No need to update if there were other query with UI clients.
+ if (query_with_ui_clients_.size() > 1)
+ return absl::nullopt;
+@@ -763,7 +763,7 @@ PrintBackendServiceManager::DetermineIdleTimeoutUpdate
+ return kNoClientsRegisteredResetOnIdleTimeout;
+
+ case ClientType::kQueryWithUi:
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // No need to update if there were other query with UI clients.
+ if (!query_with_ui_clients_.empty())
+ return absl::nullopt;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_printing_print__job__worker.cc b/www/ungoogled-chromium/files/patch-chrome_browser_printing_print__job__worker.cc
new file mode 100644
index 000000000000..b2c44c8923bc
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_printing_print__job__worker.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/printing/print_job_worker.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/printing/print_job_worker.cc
+@@ -195,7 +195,7 @@ void PrintJobWorker::SetSettings(base::Value::Dict new
+ crash_key = std::make_unique<crash_keys::ScopedPrinterInfo>(
+ print_backend->GetPrinterDriverInfo(printer_name));
+
+-#if BUILDFLAG(IS_LINUX) && defined(USE_CUPS)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(USE_CUPS)
+ PrinterBasicInfo basic_info;
+ if (print_backend->GetPrinterBasicInfo(printer_name, &basic_info) ==
+ mojom::ResultCode::kSuccess) {
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_process__singleton__posix.cc b/www/ungoogled-chromium/files/patch-chrome_browser_process__singleton__posix.cc
new file mode 100644
index 000000000000..eefe28c1247a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_process__singleton__posix.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/process_singleton_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/process_singleton_posix.cc
+@@ -97,7 +97,7 @@
+ #include "net/base/network_interfaces.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/process_singleton_dialog_linux.h"
+ #endif
+
+@@ -351,7 +351,7 @@ bool DisplayProfileInUseError(const base::FilePath& lo
+ if (g_disable_prompt)
+ return g_user_opted_unlock_in_use_profile;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ std::u16string relaunch_button_text =
+ l10n_util::GetStringUTF16(IDS_PROFILE_IN_USE_LINUX_RELAUNCH);
+ return ShowProcessSingletonDialog(error, relaunch_button_text);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc b/www/ungoogled-chromium/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
new file mode 100644
index 000000000000..6d299d7ad4ef
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
@@ -0,0 +1,25 @@
+--- chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+@@ -255,7 +255,7 @@
+ #include "chrome/browser/ui/cocoa/screentime/screentime_features.h"
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/enterprise/idle/idle_service_factory.h"
+ #endif
+
+@@ -435,11 +435,11 @@ void ChromeBrowserMainExtraPartsProfiles::
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ metrics::DesktopProfileSessionDurationsServiceFactory::GetInstance();
+ #endif
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ enterprise_idle::IdleServiceFactory::GetInstance();
+ #endif
+ ModelTypeStoreServiceFactory::GetInstance();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_profiles_profile__impl.cc b/www/ungoogled-chromium/files/patch-chrome_browser_profiles_profile__impl.cc
new file mode 100644
index 000000000000..3c4c1c3c9f30
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_profiles_profile__impl.cc
@@ -0,0 +1,31 @@
+--- chrome/browser/profiles/profile_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/profiles/profile_impl.cc
+@@ -259,6 +259,10 @@
+ #include "chrome/browser/spellchecker/spellcheck_service.h"
+ #endif
+
++#if BUILDFLAG(IS_OPENBSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#endif
++
+ using bookmarks::BookmarkModel;
+ using content::BrowserThread;
+ using content::DownloadManagerDelegate;
+@@ -838,7 +842,17 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode)
+ }
+
+ base::FilePath ProfileImpl::last_selected_directory() {
++#if BUILDFLAG(IS_OPENBSD)
++ // If unveil(2) is used, force the file dialog directory to something we
++ // know is available.
++ auto* sandbox = sandbox::policy::SandboxLinux::GetInstance();
++ if (sandbox->unveil_initialized())
++ return GetPrefs()->GetFilePath(prefs::kDownloadDefaultDirectory);
++ else
++ return GetPrefs()->GetFilePath(prefs::kSelectFileLastDirectory);
++#else
+ return GetPrefs()->GetFilePath(prefs::kSelectFileLastDirectory);
++#endif
+ }
+
+ void ProfileImpl::set_last_selected_directory(const base::FilePath& path) {
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_profiles_profiles__state.cc b/www/ungoogled-chromium/files/patch-chrome_browser_profiles_profiles__state.cc
new file mode 100644
index 000000000000..a14ab869289b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_profiles_profiles__state.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/profiles_state.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/profiles/profiles_state.cc
+@@ -180,7 +180,7 @@ bool IsGuestModeRequested(const base::CommandLine& com
+ PrefService* local_state,
+ bool show_warning) {
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ DCHECK(local_state);
+
+ // Check if guest mode enforcement commandline switch or policy are provided.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_renderer__preferences__util.cc b/www/ungoogled-chromium/files/patch-chrome_browser_renderer__preferences__util.cc
new file mode 100644
index 000000000000..629c68d749dd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_renderer__preferences__util.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/renderer_preferences_util.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/renderer_preferences_util.cc
+@@ -37,7 +37,7 @@
+ #include "ui/views/controls/textfield/textfield.h"
+ #endif
+
+-#if defined(USE_AURA) && BUILDFLAG(IS_LINUX)
++#if defined(USE_AURA) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD))
+ #include "chrome/browser/themes/theme_service.h"
+ #include "chrome/browser/themes/theme_service_factory.h"
+ #include "ui/linux/linux_ui.h"
+@@ -159,7 +159,7 @@ void UpdateFromSystemSettings(blink::RendererPreferenc
+ prefs->caret_blink_interval = views::Textfield::GetCaretBlinkInterval();
+ #endif
+
+-#if defined(USE_AURA) && BUILDFLAG(IS_LINUX)
++#if defined(USE_AURA) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD))
+ ui::LinuxUi* linux_ui = ui::LinuxUi::instance();
+ if (linux_ui) {
+ if (ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme()) {
+@@ -179,7 +179,7 @@ void UpdateFromSystemSettings(blink::RendererPreferenc
+ #endif
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_WIN)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ content::UpdateFontRendererPreferencesFromSystemSettings(prefs);
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_resources_plugin__metadata_plugins__linux.json b/www/ungoogled-chromium/files/patch-chrome_browser_resources_plugin__metadata_plugins__linux.json
new file mode 100644
index 000000000000..dbf3f3173a88
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_resources_plugin__metadata_plugins__linux.json
@@ -0,0 +1,31 @@
+--- chrome/browser/resources/plugin_metadata/plugins_linux.json.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/resources/plugin_metadata/plugins_linux.json
+@@ -1,28 +1,5 @@
+ {
+ "x-version": 46,
+- "adobe-flash-player": {
+- "mime_types": [
+- "application/futuresplash",
+- "application/x-shockwave-flash"
+- ],
+- "matching_mime_types": [
+- "application/futuresplash"
+- ],
+- "versions": [
+- {
+- "version": "32.0.0.445",
+- "status": "up_to_date",
+- "reference": "https://helpx.adobe.com/security/products/flash-player/apsb20-58.html"
+- }
+- ],
+- "lang": "en-US",
+- "name": "Adobe Flash Player",
+- "help_url": "https://support.9oo91e.qjz9zk/chrome/?p=plugin_flash",
+- "url": "https://support.9oo91e.qjz9zk/chrome/answer/6258784",
+- "displayurl": true,
+- "group_name_matcher": "*Shockwave Flash*",
+- "plugin_is_deprecated": true
+- },
+ "google-chrome-pdf": {
+ "mime_types": [
+ ],
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_resources_sandbox__internals_sandbox__internals.ts b/www/ungoogled-chromium/files/patch-chrome_browser_resources_sandbox__internals_sandbox__internals.ts
new file mode 100644
index 000000000000..0ae3c35837bd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_resources_sandbox__internals_sandbox__internals.ts
@@ -0,0 +1,29 @@
+--- chrome/browser/resources/sandbox_internals/sandbox_internals.ts.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/resources/sandbox_internals/sandbox_internals.ts
+@@ -2,7 +2,7 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-// <if expr="is_linux or is_chromeos">
++// <if expr="is_posix or is_chromeos">
+ import './strings.m.js';
+
+ import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+@@ -121,7 +121,7 @@ function androidHandler() {
+ }
+ // </if>
+
+-// <if expr="is_linux or is_chromeos">
++// <if expr="is_posix or is_chromeos">
+
+ /**
+ * Adds a status row that reports either Yes or No.
+@@ -182,7 +182,7 @@ document.addEventListener('DOMContentLoaded', () => {
+ // <if expr="is_android">
+ androidHandler();
+ // </if>
+- // <if expr="is_linux or is_chromeos">
++ // <if expr="is_posix or is_chromeos">
+ linuxHandler();
+ // </if>
+ });
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.ts b/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.ts
new file mode 100644
index 000000000000..42f8faccb9b3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.ts
@@ -0,0 +1,20 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.ts.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.ts
+@@ -16,7 +16,7 @@ export interface AppearanceBrowserProxy {
+
+ useDefaultTheme(): void;
+
+- // <if expr="is_linux">
++ // <if expr="is_bsd">
+ useSystemTheme(): void;
+ // </if>
+
+@@ -44,7 +44,7 @@ export class AppearanceBrowserProxyImpl implements App
+ chrome.send('useDefaultTheme');
+ }
+
+- // <if expr="is_linux">
++ // <if expr="is_bsd">
+ useSystemTheme() {
+ chrome.send('useSystemTheme');
+ }
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html b/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
new file mode 100644
index 000000000000..b2da140def2b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
@@ -0,0 +1,29 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_page.html.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_page.html
+@@ -27,7 +27,7 @@
+ <div class="flex cr-padded-text">
+ <div>$i18n{themes}</div><div class="secondary">[[themeSublabel_]]</div>
+ </div>
+-<if expr="not is_linux">
++<if expr="not is_posix">
+ <template is="dom-if" if="[[prefs.extensions.theme.id.value]]">
+ <div class="separator"></div>
+ <cr-button id="useDefault" on-click="onUseDefaultTap_">
+@@ -35,7 +35,7 @@
+ </cr-button>
+ </template>
+ </if>
+-<if expr="is_linux">
++<if expr="is_posix">
+ <div class="settings-row continuation"
+ hidden="[[!showThemesSecondary_(
+ prefs.extensions.theme.id.value, useSystemTheme_)]]"
+@@ -135,7 +135,7 @@
+ </div>
+ </template>
+
+-<if expr="is_linux">
++<if expr="is_posix">
+ <div class="hr" hidden="[[!pageVisibility.bookmarksBar]]"></div>
+ <settings-toggle-button
+ hidden="[[!showCustomChromeFrame_]]"
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.ts b/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.ts
new file mode 100644
index 000000000000..df888616a05f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.ts
@@ -0,0 +1,51 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_page.ts.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_page.ts
+@@ -145,7 +145,7 @@ export class SettingsAppearancePageElement extends
+ 'prefs.autogenerated.theme.policy.color.controlledBy)',
+ },
+
+- // <if expr="is_linux">
++ // <if expr="is_posix">
+ /**
+ * Whether to show the "Custom Chrome Frame" setting.
+ */
+@@ -174,7 +174,7 @@ export class SettingsAppearancePageElement extends
+ 'themeChanged_(' +
+ 'prefs.extensions.theme.id.value, useSystemTheme_, isForcedTheme_)',
+
+- // <if expr="is_linux">
++ // <if expr="is_posix">
+ // NOTE: this pref only exists on Linux.
+ 'useSystemThemePrefChanged_(prefs.extensions.theme.use_system.value)',
+ // </if>
+@@ -194,7 +194,7 @@ export class SettingsAppearancePageElement extends
+ private showReaderModeOption_: boolean;
+ private isForcedTheme_: boolean;
+
+- // <if expr="is_linux">
++ // <if expr="is_posix">
+ private showCustomChromeFrame_: boolean;
+ // </if>
+
+@@ -272,7 +272,7 @@ export class SettingsAppearancePageElement extends
+ this.appearanceBrowserProxy_.useDefaultTheme();
+ }
+
+- // <if expr="is_linux">
++ // <if expr="is_posix">
+ private useSystemThemePrefChanged_(useSystemTheme: boolean) {
+ this.useSystemTheme_ = useSystemTheme;
+ }
+@@ -333,10 +333,10 @@ export class SettingsAppearancePageElement extends
+ }
+
+ let i18nId;
+- // <if expr="is_linux">
++ // <if expr="is_posix">
+ i18nId = useSystemTheme ? 'systemTheme' : 'classicTheme';
+ // </if>
+- // <if expr="not is_linux">
++ // <if expr="not is_posix">
+ i18nId = 'chooseFromWebStore';
+ // </if>
+ this.themeSublabel_ = this.i18n(i18nId);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_autofill__page_passwords__shared.css b/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_autofill__page_passwords__shared.css
new file mode 100644
index 000000000000..4c328633c370
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_autofill__page_passwords__shared.css
@@ -0,0 +1,11 @@
+--- chrome/browser/resources/settings/autofill_page/passwords_shared.css.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/resources/settings/autofill_page/passwords_shared.css
+@@ -90,7 +90,7 @@ cr-input.password-input::part(input),
+ * necessary to prevent Chrome from using the operating system's font
+ * instead of the Material Design font.
+ * TODO(dbeam): why not font: inherit? */
+-<if expr="is_linux or is_chromeos">
++<if expr="is_posix or is_chromeos">
+ font-family: 'DejaVu Sans Mono', monospace;
+ </if>
+ <if expr="is_win">
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_route.ts b/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_route.ts
new file mode 100644
index 000000000000..7574effbd82c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_resources_settings_route.ts
@@ -0,0 +1,11 @@
+--- chrome/browser/resources/settings/route.ts.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/resources/settings/route.ts
+@@ -204,7 +204,7 @@ function createBrowserSettingsRoutes(): Partial<Settin
+ r.ACCESSIBILITY = r.ADVANCED.createSection(
+ '/accessibility', 'a11y', loadTimeData.getString('a11yPageTitle'));
+
+- // <if expr="is_linux">
++ // <if expr="is_posix">
+ r.CAPTIONS = r.ACCESSIBILITY.createChild('/captions');
+ // </if>
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_resources_signin_signin__shared.css b/www/ungoogled-chromium/files/patch-chrome_browser_resources_signin_signin__shared.css
new file mode 100644
index 000000000000..b66cd5840587
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_resources_signin_signin__shared.css
@@ -0,0 +1,11 @@
+--- chrome/browser/resources/signin/signin_shared.css.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/resources/signin/signin_shared.css
+@@ -37,7 +37,7 @@ cr-button + cr-button {
+ margin-inline-start: 8px;
+ }
+
+-<if expr="is_macosx or is_linux or is_chromeos">
++<if expr="is_macosx or is_posix or is_chromeos">
+ .action-container {
+ flex-flow: row-reverse;
+ justify-content: flex-start;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_resources_signin_sync__confirmation_sync__confirmation__app.html b/www/ungoogled-chromium/files/patch-chrome_browser_resources_signin_sync__confirmation_sync__confirmation__app.html
new file mode 100644
index 000000000000..0a8246857f8b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_resources_signin_sync__confirmation_sync__confirmation__app.html
@@ -0,0 +1,38 @@
+--- chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.html.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.html
+@@ -326,7 +326,7 @@
+ consent-confirmation autofocus>
+ $i18n{syncConfirmationConfirmLabel}
+ </cr-button>
+- <if expr="is_macosx or is_linux or chromeos_ash or chromeos_lacros">
++ <if expr="is_macosx or is_posix or chromeos_ash or chromeos_lacros">
+ <cr-button id="settingsButton" on-click="onGoToSettings_"
+ disabled="[[anyButtonClicked_]]" consent-confirmation>
+ $i18n{syncConfirmationSettingsLabel}
+@@ -336,7 +336,7 @@
+ disabled="[[anyButtonClicked_]]">
+ $i18n{syncConfirmationUndoLabel}
+ </cr-button>
+- <if expr="not (is_macosx or is_linux or chromeos_ash or chromeos_lacros)">
++ <if expr="not (is_macosx or is_posix or chromeos_ash or chromeos_lacros)">
+ <cr-button id="settingsButton" on-click="onGoToSettings_"
+ disabled="[[anyButtonClicked_]]" consent-confirmation>
+ $i18n{syncConfirmationSettingsLabel}
+@@ -379,7 +379,7 @@
+ consent-confirmation>
+ $i18n{syncConfirmationConfirmLabel}
+ </cr-button>
+- <if expr="is_macosx or is_linux or chromeos_ash or chromeos_lacros">
++ <if expr="is_macosx or is_posix or chromeos_ash or chromeos_lacros">
+ <cr-button id="settingsButton" on-click="onGoToSettings_"
+ disabled="[[anyButtonClicked_]]" consent-confirmation>
+ $i18n{syncConfirmationSettingsLabel}
+@@ -389,7 +389,7 @@
+ disabled="[[anyButtonClicked_]]">
+ $i18n{syncConfirmationUndoLabel}
+ </cr-button>
+- <if expr="not (is_macosx or is_linux or chromeos_ash or chromeos_lacros)">
++ <if expr="not (is_macosx or is_posix or chromeos_ash or chromeos_lacros)">
+ <cr-button id="settingsButton" on-click="onGoToSettings_"
+ disabled="[[anyButtonClicked_]]" consent-confirmation>
+ $i18n{syncConfirmationSettingsLabel}
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_cloud__content__scanning_binary__upload__service.cc b/www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_cloud__content__scanning_binary__upload__service.cc
new file mode 100644
index 000000000000..2ff63fa07686
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_cloud__content__scanning_binary__upload__service.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc
+@@ -17,7 +17,7 @@
+ #include "net/base/url_util.h"
+ #include "third_party/abseil-cpp/absl/types/variant.h"
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/enterprise/connectors/analysis/local_binary_upload_service_factory.h"
+ #endif
+
+@@ -287,7 +287,7 @@ BinaryUploadService* BinaryUploadService::GetForProfil
+ Profile* profile,
+ const enterprise_connectors::AnalysisSettings& settings) {
+ // Local content analysis is supported only on desktop platforms.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (settings.cloud_or_local_settings.is_cloud_analysis()) {
+ return CloudBinaryUploadServiceFactory::GetForProfile(profile);
+ } else {
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.cc b/www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.cc
new file mode 100644
index 000000000000..b67e29d16078
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/safe_browsing/download_protection/file_analyzer.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/safe_browsing/download_protection/file_analyzer.cc
+@@ -20,7 +20,7 @@
+ #include "content/public/browser/browser_thread.h"
+ #include "url/gurl.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/safe_browsing/download_protection/document_analysis_service.h"
+ #endif
+
+@@ -102,7 +102,7 @@ void FileAnalyzer::Start(const base::FilePath& target_
+ } else if (inspection_type == DownloadFileType::DMG) {
+ StartExtractDmgFeatures();
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ } else if (inspection_type == DownloadFileType::OFFICE_DOCUMENT) {
+ StartExtractDocumentFeatures();
+ #endif
+@@ -325,7 +325,7 @@ void FileAnalyzer::OnDmgAnalysisFinished(
+ }
+ #endif // BUILDFLAG(IS_MAC)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ void FileAnalyzer::StartExtractDocumentFeatures() {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.h b/www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.h
new file mode 100644
index 000000000000..515716e9b749
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.h
@@ -0,0 +1,29 @@
+--- chrome/browser/safe_browsing/download_protection/file_analyzer.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/safe_browsing/download_protection/file_analyzer.h
+@@ -17,7 +17,7 @@
+ #include "components/safe_browsing/core/common/proto/csd.pb.h"
+ #include "third_party/protobuf/src/google/protobuf/repeated_field.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ #include "chrome/services/file_util/public/cpp/sandboxed_document_analyzer.h"
+ #endif
+
+@@ -105,7 +105,7 @@ class FileAnalyzer {
+ const safe_browsing::ArchiveAnalyzerResults& archive_results);
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ void StartExtractDocumentFeatures();
+ void OnDocumentAnalysisFinished(
+ const DocumentAnalyzerResults& document_results);
+@@ -128,7 +128,7 @@ class FileAnalyzer {
+ scoped_refptr<SandboxedDMGAnalyzer> dmg_analyzer_;
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ scoped_refptr<SandboxedDocumentAnalyzer> document_analyzer_;
+ base::TimeTicks document_analysis_start_time_;
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc b/www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
new file mode 100644
index 000000000000..21df59785f9b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
+@@ -709,7 +709,7 @@ void IncidentReportingService::OnEnvironmentDataCollec
+
+ // Process::Current().CreationTime() is missing on some platforms.
+ #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ base::TimeDelta uptime =
+ first_incident_time_ - base::Process::Current().CreationTime();
+ environment_data->mutable_process()->set_uptime_msec(uptime.InMilliseconds());
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc b/www/ungoogled-chromium/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc
new file mode 100644
index 000000000000..9cea7aecf410
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc
+@@ -16,7 +16,7 @@
+ #include "components/send_tab_to_self/features.h"
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/send_tab_to_self/desktop_notification_handler.h"
+ #include "chrome/browser/ui/send_tab_to_self/send_tab_to_self_toolbar_icon_controller.h"
+ #endif
+@@ -48,7 +48,7 @@ SendTabToSelfToolbarIconController*
+ ReceivingUiHandlerRegistry::GetToolbarButtonControllerForProfile(
+ Profile* profile) {
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ for (const std::unique_ptr<ReceivingUiHandler>& handler :
+ applicable_handlers_) {
+ auto* button_controller =
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc b/www/ungoogled-chromium/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc
new file mode 100644
index 000000000000..ea6f220a2039
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/send_tab_to_self/send_tab_to_self_client_service.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/send_tab_to_self/send_tab_to_self_client_service.cc
+@@ -17,7 +17,7 @@
+ #include "components/send_tab_to_self/send_tab_to_self_model.h"
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/send_tab_to_self/send_tab_to_self_toolbar_icon_controller.h"
+ #endif
+
+@@ -51,7 +51,7 @@ void SendTabToSelfClientService::EntriesAddedRemotely(
+ const std::vector<const SendTabToSelfEntry*>& new_entries) {
+ for (const std::unique_ptr<ReceivingUiHandler>& handler : GetHandlers()) {
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ // Only respond to notifications corresponding to this service's profile
+ // for these OSes; mobile does not have a Profile.
+ // Cast note: on desktop, handlers are guaranteed to be the derived class
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_sharing_sharing__device__registration.cc b/www/ungoogled-chromium/files/patch-chrome_browser_sharing_sharing__device__registration.cc
new file mode 100644
index 000000000000..d437d5d6d27b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_sharing_sharing__device__registration.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/sharing/sharing_device_registration.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/sharing/sharing_device_registration.cc
+@@ -326,7 +326,7 @@ bool SharingDeviceRegistration::IsSmsFetcherSupported(
+
+ bool SharingDeviceRegistration::IsRemoteCopySupported() const {
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc b/www/ungoogled-chromium/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc
new file mode 100644
index 000000000000..c8d6862a76b8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/sharing/sharing_handler_registry_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/sharing/sharing_handler_registry_impl.cc
+@@ -24,7 +24,7 @@
+ #endif // BUILDFLAG(IS_ANDROID)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.h"
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_LINUX) ||
+ // BUILDFLAG(IS_CHROMEOS_LACROS)) BUILDFLAG(IS_CHROMEOS)
+@@ -78,7 +78,7 @@ SharingHandlerRegistryImpl::SharingHandlerRegistryImpl
+ }
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (sharing_device_registration->IsRemoteCopySupported()) {
+ AddSharingHandler(
+ std::make_unique<RemoteCopyMessageHandler>(profile),
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_shutdown__signal__handlers__posix.cc b/www/ungoogled-chromium/files/patch-chrome_browser_shutdown__signal__handlers__posix.cc
new file mode 100644
index 000000000000..53d6a60649ad
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_shutdown__signal__handlers__posix.cc
@@ -0,0 +1,21 @@
+--- chrome/browser/shutdown_signal_handlers_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/shutdown_signal_handlers_posix.cc
+@@ -187,12 +187,18 @@ void InstallShutdownSignalHandlers(
+ g_pipe_pid = getpid();
+ g_shutdown_pipe_read_fd = pipefd[0];
+ g_shutdown_pipe_write_fd = pipefd[1];
++#if defined(OS_BSD)
++ // PTHREAD_STACK_MIN causes chromium to crash under *BSD,
++ // we request the default pthread stack size by specifying 0 here.
++ const size_t kShutdownDetectorThreadStackSize = 0;
++#else
+ #if !defined(ADDRESS_SANITIZER)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+ #else
+ // ASan instrumentation bloats the stack frames, so we need to increase the
+ // stack size to avoid hitting the guard page.
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
++#endif
+ #endif
+ ShutdownDetector* detector = new ShutdownDetector(
+ g_shutdown_pipe_read_fd, std::move(shutdown_callback), task_runner);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_sync_chrome__sync__client.cc b/www/ungoogled-chromium/files/patch-chrome_browser_sync_chrome__sync__client.cc
new file mode 100644
index 000000000000..40fcd5bd37d3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_sync_chrome__sync__client.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/sync/chrome_sync_client.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/sync/chrome_sync_client.cc
+@@ -437,7 +437,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy
+
+ // Chrome prefers OS provided spell checkers where they exist. So only sync the
+ // custom dictionary on platforms that typically don't provide one.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ // Dictionary sync is enabled by default.
+ if (GetPrefService()->GetBoolean(spellcheck::prefs::kSpellCheckEnable)) {
+ controllers.push_back(
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_sync_device__info__sync__client__impl.cc b/www/ungoogled-chromium/files/patch-chrome_browser_sync_device__info__sync__client__impl.cc
new file mode 100644
index 000000000000..e07792431c28
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_sync_device__info__sync__client__impl.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/sync/device_info_sync_client_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/sync/device_info_sync_client_impl.cc
+@@ -42,7 +42,7 @@ std::string DeviceInfoSyncClientImpl::GetSigninScopedD
+ // in lacros-chrome once build flag switch of lacros-chrome is
+ // complete.
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
+- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD))
+ syncer::SyncPrefs prefs(profile_->GetPrefs());
+ if (prefs.IsLocalSyncEnabled()) {
+ return "local_device";
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group.cc b/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group.cc
new file mode 100644
index 000000000000..5a76c00dfbd7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/task_manager/sampling/task_group.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/task_manager/sampling/task_group.cc
+@@ -37,7 +37,7 @@ const int kBackgroundRefreshTypesMask =
+ #if BUILDFLAG(IS_WIN)
+ REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME |
+ #endif // BUILDFLAG(IS_WIN)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ REFRESH_TYPE_FD_COUNT |
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
+ #if BUILDFLAG(ENABLE_NACL)
+@@ -122,7 +122,7 @@ TaskGroup::TaskGroup(
+ #if BUILDFLAG(ENABLE_NACL)
+ nacl_debug_stub_port_(nacl::kGdbDebugStubPortUnknown),
+ #endif // BUILDFLAG(ENABLE_NACL)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ open_fd_count_(-1),
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
+ idle_wakeups_per_second_(-1),
+@@ -141,7 +141,7 @@ TaskGroup::TaskGroup(
+ weak_ptr_factory_.GetWeakPtr()),
+ base::BindRepeating(&TaskGroup::OnIdleWakeupsRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ base::BindRepeating(&TaskGroup::OnOpenFdCountRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
+@@ -321,7 +321,7 @@ void TaskGroup::OnRefreshNaClDebugStubPortDone(int nac
+ }
+ #endif // BUILDFLAG(ENABLE_NACL)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ void TaskGroup::OnOpenFdCountRefreshDone(int open_fd_count) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group.h b/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group.h
new file mode 100644
index 000000000000..456d09d0ed5a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group.h
@@ -0,0 +1,38 @@
+--- chrome/browser/task_manager/sampling/task_group.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/task_manager/sampling/task_group.h
+@@ -42,7 +42,7 @@ constexpr int kUnsupportedVMRefreshFlags =
+ REFRESH_TYPE_WEBCACHE_STATS | REFRESH_TYPE_NETWORK_USAGE |
+ REFRESH_TYPE_NACL | REFRESH_TYPE_IDLE_WAKEUPS | REFRESH_TYPE_HANDLES |
+ REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME | REFRESH_TYPE_PRIORITY |
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ REFRESH_TYPE_FD_COUNT |
+ #endif
+ REFRESH_TYPE_HARD_FAULTS;
+@@ -148,7 +148,7 @@ class TaskGroup {
+ }
+ #endif // BUILDFLAG(ENABLE_NACL)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ int open_fd_count() const { return open_fd_count_; }
+ void set_open_fd_count(int open_fd_count) { open_fd_count_ = open_fd_count; }
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
+@@ -168,7 +168,7 @@ class TaskGroup {
+ void RefreshNaClDebugStubPort(int child_process_unique_id);
+ void OnRefreshNaClDebugStubPortDone(int port);
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ void OnOpenFdCountRefreshDone(int open_fd_count);
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
+
+@@ -240,7 +240,7 @@ class TaskGroup {
+ #if BUILDFLAG(ENABLE_NACL)
+ int nacl_debug_stub_port_;
+ #endif // BUILDFLAG(ENABLE_NACL)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ // The number of file descriptors currently open by the process.
+ int open_fd_count_;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc b/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
new file mode 100644
index 000000000000..4bab66de4da2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
@@ -0,0 +1,47 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.cc
+@@ -44,7 +44,7 @@ TaskGroupSampler::TaskGroupSampler(
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnSwappedMemRefreshCallback& on_swapped_mem_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
+ const OnProcessPriorityCallback& on_process_priority)
+@@ -54,7 +54,7 @@ TaskGroupSampler::TaskGroupSampler(
+ on_cpu_refresh_callback_(on_cpu_refresh),
+ on_swapped_mem_refresh_callback_(on_swapped_mem_refresh),
+ on_idle_wakeups_callback_(on_idle_wakeups),
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ on_open_fd_count_callback_(on_open_fd_count),
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
+ on_process_priority_callback_(on_process_priority) {
+@@ -86,7 +86,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ base::BindOnce(on_swapped_mem_refresh_callback_));
+ }
+
+-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_IDLE_WAKEUPS,
+ refresh_flags)) {
+ base::PostTaskAndReplyWithResult(
+@@ -96,7 +96,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ }
+ #endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_FD_COUNT,
+ refresh_flags)) {
+ base::PostTaskAndReplyWithResult(
+@@ -146,7 +146,7 @@ int TaskGroupSampler::RefreshIdleWakeupsPerSecond() {
+ return process_metrics_->GetIdleWakeupsPerSecond();
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ int TaskGroupSampler::RefreshOpenFdCount() {
+ DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence());
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h b/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
new file mode 100644
index 000000000000..d49ceb278580
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
@@ -0,0 +1,38 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.h
+@@ -31,7 +31,7 @@ class TaskGroupSampler : public base::RefCountedThread
+ using OnCpuRefreshCallback = base::RepeatingCallback<void(double)>;
+ using OnSwappedMemRefreshCallback = base::RepeatingCallback<void(int64_t)>;
+ using OnIdleWakeupsCallback = base::RepeatingCallback<void(int)>;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ using OnOpenFdCountCallback = base::RepeatingCallback<void(int)>;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
+ using OnProcessPriorityCallback = base::RepeatingCallback<void(bool)>;
+@@ -42,7 +42,7 @@ class TaskGroupSampler : public base::RefCountedThread
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnSwappedMemRefreshCallback& on_memory_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
+ const OnProcessPriorityCallback& on_process_priority);
+@@ -62,7 +62,7 @@ class TaskGroupSampler : public base::RefCountedThread
+ double RefreshCpuUsage();
+ int64_t RefreshSwappedMem();
+ int RefreshIdleWakeupsPerSecond();
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ int RefreshOpenFdCount();
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
+ bool RefreshProcessPriority();
+@@ -86,7 +86,7 @@ class TaskGroupSampler : public base::RefCountedThread
+ const OnCpuRefreshCallback on_cpu_refresh_callback_;
+ const OnSwappedMemRefreshCallback on_swapped_mem_refresh_callback_;
+ const OnIdleWakeupsCallback on_idle_wakeups_callback_;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ const OnOpenFdCountCallback on_open_fd_count_callback_;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
+ const OnProcessPriorityCallback on_process_priority_callback_;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc b/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
new file mode 100644
index 000000000000..5d44e9b5c4b8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/task_manager/sampling/task_manager_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/task_manager/sampling/task_manager_impl.cc
+@@ -216,7 +216,7 @@ void TaskManagerImpl::GetUSERHandles(TaskId task_id,
+ }
+
+ int TaskManagerImpl::GetOpenFdCount(TaskId task_id) const {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ return GetTaskGroupByTaskId(task_id)->open_fd_count();
+ #else
+ return -1;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_task__manager__observer.h b/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_task__manager__observer.h
new file mode 100644
index 000000000000..8967eeab42fa
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_task__manager_task__manager__observer.h
@@ -0,0 +1,11 @@
+--- chrome/browser/task_manager/task_manager_observer.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/task_manager/task_manager_observer.h
+@@ -47,7 +47,7 @@ enum RefreshType {
+ // or backgrounded.
+ REFRESH_TYPE_PRIORITY = 1 << 13,
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ // For observers interested in getting the number of open file descriptors of
+ // processes.
+ REFRESH_TYPE_FD_COUNT = 1 << 14,
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__helper.cc b/www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__helper.cc
new file mode 100644
index 000000000000..01e717e60a1b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__helper.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/themes/theme_helper.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/themes/theme_helper.cc
+@@ -18,7 +18,7 @@
+ #include "ui/gfx/image/image.h"
+ #include "ui/native_theme/native_theme.h"
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "ui/linux/linux_ui.h"
+ #endif
+
+@@ -172,7 +172,7 @@ bool ThemeHelper::UseDarkModeColors(const CustomThemeS
+
+ ui::NativeTheme const* native_theme =
+ ui::NativeTheme::GetInstanceForNativeUi();
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (const auto* linux_ui = ui::LinuxUi::instance()) {
+ // We rely on the fact that the system theme is in use iff `theme_supplier`
+ // is non-null, but this is cheating. In the future this might not hold
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__service.cc b/www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__service.cc
new file mode 100644
index 000000000000..da43bedf59e6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__service.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/themes/theme_service.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/themes/theme_service.cc
+@@ -72,7 +72,7 @@
+ #include "extensions/browser/extension_registry_observer.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "ui/linux/linux_ui.h"
+ #include "ui/ozone/public/ozone_platform.h"
+ #endif
+@@ -314,7 +314,7 @@ CustomThemeSupplier* ThemeService::GetThemeSupplier()
+ }
+
+ bool ThemeService::ShouldUseSystemTheme() const {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return profile_->GetPrefs()->GetBoolean(prefs::kUsesSystemTheme);
+ #else
+ return false;
+@@ -322,7 +322,7 @@ bool ThemeService::ShouldUseSystemTheme() const {
+ }
+
+ bool ThemeService::ShouldUseCustomFrame() const {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (!ui::OzonePlatform::GetInstance()
+ ->GetPlatformRuntimeProperties()
+ .supports_server_side_window_decorations) {
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__service__aura__linux.cc b/www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__service__aura__linux.cc
new file mode 100644
index 000000000000..01244337ff38
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__service__aura__linux.cc
@@ -0,0 +1,37 @@
+--- chrome/browser/themes/theme_service_aura_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/themes/theme_service_aura_linux.cc
+@@ -13,7 +13,7 @@
+ #include "ui/gfx/image/image.h"
+ #include "ui/native_theme/native_theme_aura.h"
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "ui/linux/linux_ui.h"
+ #endif
+
+@@ -53,14 +53,14 @@ void SystemThemeLinux::StartUsingTheme() {
+ void SystemThemeLinux::StopUsingTheme() {
+ pref_service_->SetBoolean(prefs::kUsesSystemTheme, false);
+ // Have the former theme notify its observers of change.
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (auto* linux_ui = ui::LinuxUi::instance())
+ linux_ui->GetNativeTheme(nullptr)->NotifyOnNativeThemeUpdated();
+ #endif
+ }
+
+ bool SystemThemeLinux::GetColor(int id, SkColor* color) const {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (auto* linux_ui = ui::LinuxUi::instance()) {
+ return linux_ui->GetColor(
+ id, color, pref_service_->GetBoolean(prefs::kUseCustomChromeFrame));
+@@ -70,7 +70,7 @@ bool SystemThemeLinux::GetColor(int id, SkColor* color
+ }
+
+ bool SystemThemeLinux::GetDisplayProperty(int id, int* result) const {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (auto* linux_ui = ui::LinuxUi::instance())
+ return linux_ui->GetDisplayProperty(id, result);
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__service__factory.cc b/www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__service__factory.cc
new file mode 100644
index 000000000000..2b71ee4f3713
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_themes_theme__service__factory.cc
@@ -0,0 +1,37 @@
+--- chrome/browser/themes/theme_service_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/themes/theme_service_factory.cc
+@@ -25,11 +25,11 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ #include "chrome/browser/themes/theme_service_aura_linux.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "ui/linux/linux_ui.h"
+ #endif
+
+@@ -85,7 +85,7 @@ KeyedService* ThemeServiceFactory::BuildServiceInstanc
+ content::BrowserContext* profile) const {
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ using ThemeService = ThemeServiceAuraLinux;
+ #endif
+
+@@ -99,9 +99,9 @@ void ThemeServiceFactory::RegisterProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ bool default_uses_system_theme = false;
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const ui::LinuxUi* linux_ui = ui::LinuxUi::instance();
+ if (linux_ui)
+ default_uses_system_theme = linux_ui->GetDefaultUsesSystemTheme();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_browser.h b/www/ungoogled-chromium/files/patch-chrome_browser_ui_browser.h
new file mode 100644
index 000000000000..26ade1e9a7c0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_browser.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/browser.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/browser.h
+@@ -283,7 +283,7 @@ class Browser : public TabStripModelObserver,
+ int32_t restore_id = kDefaultRestoreId;
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // When the browser window is shown, the desktop environment is notified
+ // using this ID. In response, the desktop will stop playing the "waiting
+ // for startup" animation (if any).
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_browser__command__controller.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_browser__command__controller.cc
new file mode 100644
index 000000000000..6b3a51166fd1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_browser__command__controller.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/browser_command_controller.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/browser_command_controller.cc
+@@ -95,7 +95,7 @@
+ #include "components/user_manager/user_manager.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "ui/linux/linux_ui.h"
+ #endif
+
+@@ -280,7 +280,7 @@ bool BrowserCommandController::IsReservedCommandOrKey(
+ #endif
+ }
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // If this key was registered by the user as a content editing hotkey, then
+ // it is not reserved.
+ auto* linux_ui = ui::LinuxUi::instance();
+@@ -525,7 +525,7 @@ bool BrowserCommandController::ExecuteCommandWithDispo
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ case IDC_MINIMIZE_WINDOW:
+ browser_->window()->Minimize();
+ break;
+@@ -1088,7 +1088,7 @@ void BrowserCommandController::InitCommandState() {
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true);
+ command_updater_.UpdateCommandEnabled(IDC_MAXIMIZE_WINDOW, true);
+ command_updater_.UpdateCommandEnabled(IDC_RESTORE_WINDOW, true);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_browser__dialogs.h b/www/ungoogled-chromium/files/patch-chrome_browser_ui_browser__dialogs.h
new file mode 100644
index 000000000000..f6c228595604
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_browser__dialogs.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/browser_dialogs.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/browser_dialogs.h
+@@ -25,7 +25,7 @@
+ #include "ui/base/models/dialog_model.h"
+ #include "ui/gfx/native_widget_types.h"
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ #include "chrome/browser/web_applications/web_app_id.h"
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_browser__view__prefs.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_browser__view__prefs.cc
new file mode 100644
index 000000000000..3c16d497df0b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_browser__view__prefs.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/browser_view_prefs.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/browser_view_prefs.cc
+@@ -17,7 +17,7 @@ namespace {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ bool GetCustomFramePrefDefault() {
+ #if defined(USE_OZONE)
+ return ui::OzonePlatform::GetInstance()
+@@ -35,7 +35,7 @@ void RegisterBrowserViewProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ registry->RegisterBooleanPref(prefs::kUseCustomChromeFrame,
+ GetCustomFramePrefDefault());
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_chrome__pages.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_chrome__pages.cc
new file mode 100644
index 000000000000..3e01927252d6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_chrome__pages.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/chrome_pages.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/chrome_pages.cc
+@@ -68,7 +68,7 @@
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/web_applications/web_app_utils.h"
+ #endif
+
+@@ -580,7 +580,7 @@ void ShowBrowserSigninOrSettings(Browser* browser,
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ void ShowWebAppSettings(Browser* browser,
+ const std::string& app_id,
+ web_app::AppSettingsPageEntryPoint entry_point) {
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_chrome__pages.h b/www/ungoogled-chromium/files/patch-chrome_browser_ui_chrome__pages.h
new file mode 100644
index 000000000000..8f66a07376c5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_chrome__pages.h
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/chrome_pages.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/chrome_pages.h
+@@ -30,7 +30,7 @@ enum class ConsentLevel;
+ } // namespace signin
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ namespace web_app {
+ enum class AppSettingsPageEntryPoint;
+ } // namespace web_app
+@@ -213,7 +213,7 @@ void ShowBrowserSigninOrSettings(Browser* browser,
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // Show chrome://app-settings/<app-id> page.
+ void ShowWebAppSettings(Browser* browser,
+ const std::string& app_id,
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_color_native__chrome__color__mixer.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_color_native__chrome__color__mixer.cc
new file mode 100644
index 000000000000..2883eefb3eb9
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_color_native__chrome__color__mixer.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/color/native_chrome_color_mixer.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/color/native_chrome_color_mixer.cc
+@@ -7,7 +7,7 @@
+ #include "build/build_config.h"
+
+ #if !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_MAC) && \
+- !BUILDFLAG(IS_WIN)
++ !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_BSD)
+ void AddNativeChromeColorMixer(ui::ColorProvider* provider,
+ const ui::ColorProviderManager::Key& key) {}
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
new file mode 100644
index 000000000000..cc786986b23b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc
+@@ -16,7 +16,7 @@
+
+ // NOTE(koz): Linux doesn't use the thick shadowed border, so we add padding
+ // here.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const int ExclusiveAccessBubble::kPaddingPx = 8;
+ #else
+ const int ExclusiveAccessBubble::kPaddingPx = 15;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_sad__tab.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_sad__tab.cc
new file mode 100644
index 000000000000..ace2053983bb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_sad__tab.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/sad_tab.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/sad_tab.cc
+@@ -175,7 +175,7 @@ std::vector<int> SadTab::GetSubMessages() {
+ // Only show Incognito suggestion if not already in Incognito mode.
+ if (!web_contents_->GetBrowserContext()->IsOffTheRecord())
+ message_ids.insert(message_ids.begin(), IDS_SAD_TAB_RELOAD_INCOGNITO);
+-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Note: on macOS, Linux and ChromeOS, the first bullet is either one of
+ // IDS_SAD_TAB_RELOAD_CLOSE_TABS or IDS_SAD_TAB_RELOAD_CLOSE_NOTABS
+ // followed by one of the above suggestions.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_sharing__hub_sharing__hub__bubble__controller.h b/www/ungoogled-chromium/files/patch-chrome_browser_ui_sharing__hub_sharing__hub__bubble__controller.h
new file mode 100644
index 000000000000..cdfc93ad3195
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_sharing__hub_sharing__hub__bubble__controller.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/sharing_hub/sharing_hub_bubble_controller.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/sharing_hub/sharing_hub_bubble_controller.h
+@@ -37,7 +37,7 @@ class SharingHubBubbleController {
+ virtual bool ShouldOfferOmniboxIcon() = 0;
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // These two methods return the sets of first- and third-party actions;
+ // first-party actions are internal to Chrome and third-party actions are
+ // other websites or apps.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_signin__view__controller.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_signin__view__controller.cc
new file mode 100644
index 000000000000..78f690c4e831
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_signin__view__controller.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/signin_view_controller.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/signin_view_controller.cc
+@@ -271,7 +271,7 @@ void SigninViewController::ShowModalEnterpriseConfirma
+ SkColor profile_color,
+ signin::SigninChoiceCallback callback) {
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ CloseModalSignin();
+ dialog_ = std::make_unique<SigninModalDialogImpl>(
+ SigninViewControllerDelegate::CreateEnterpriseConfirmationDelegate(
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_signin__view__controller__delegate.h b/www/ungoogled-chromium/files/patch-chrome_browser_ui_signin__view__controller__delegate.h
new file mode 100644
index 000000000000..0cedc1e6dd3c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_signin__view__controller__delegate.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/signin_view_controller_delegate.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/signin_view_controller_delegate.h
+@@ -81,7 +81,7 @@ class SigninViewControllerDelegate {
+ #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) || BUILDFLAG(IS_CHROMEOS_LACROS)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ // Returns a platform-specific SigninViewContolllerDelegate instance that
+ // displays the enterprise confirmation modal dialog. The returned object
+ // should delete itself when the window it's managing is closed.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
new file mode 100644
index 000000000000..8e3ef1470e50
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/startup/bad_flags_prompt.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/startup/bad_flags_prompt.cc
+@@ -90,7 +90,7 @@ static const char* kBadFlags[] = {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // Speech dispatcher is buggy, it can crash and it can make Chrome freeze.
+ // http://crbug.com/327295
+ switches::kEnableSpeechDispatcher,
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
new file mode 100644
index 000000000000..008e4c5cd1f0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/startup/startup_browser_creator.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/startup/startup_browser_creator.cc
+@@ -128,7 +128,7 @@
+ #include "chrome/credential_provider/common/gcp_strings.h"
+ #endif // BUILDFLAG(IS_WIN)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/startup/web_app_info_recorder_utils.h"
+ #endif
+
+@@ -1017,7 +1017,7 @@ bool StartupBrowserCreator::ProcessCmdLineImpl(
+ silent_launch = true;
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ // Writes open and installed web apps to the specified file without
+ // launching a new browser window or tab.
+ if (base::FeatureList::IsEnabled(features::kListWebAppsSwitch) &&
+@@ -1207,7 +1207,7 @@ bool StartupBrowserCreator::ProcessCmdLineImpl(
+ CHECK_EQ(profile_info.mode, StartupProfileMode::kBrowserWindow)
+ << "Failed launch with app: couldn't pick a profile";
+ std::string app_id = command_line.GetSwitchValueASCII(switches::kAppId);
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // If Chrome Apps are deprecated and |app_id| is a Chrome App, display the
+ // deprecation UI instead of launching the app.
+ if (apps::OpenDeprecatedApplicationPrompt(privacy_safe_profile, app_id))
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc
new file mode 100644
index 000000000000..9fe32cf72b91
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/startup/startup_browser_creator_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/startup/startup_browser_creator_impl.cc
+@@ -241,7 +241,7 @@ Browser* StartupBrowserCreatorImpl::OpenTabsInBrowser(
+ // at the state of the MessageLoop.
+ Browser::CreateParams params = Browser::CreateParams(profile_, false);
+ params.creation_source = Browser::CreationSource::kStartupCreator;
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ params.startup_id = command_line_.GetSwitchValueASCII("desktop-startup-id");
+ #endif
+ browser = Browser::Create(params);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_tab__helpers.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_tab__helpers.cc
new file mode 100644
index 000000000000..5cbc21b565b3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_tab__helpers.cc
@@ -0,0 +1,36 @@
+--- chrome/browser/ui/tab_helpers.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/tab_helpers.cc
+@@ -200,7 +200,7 @@
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/autofill_assistant/common_dependencies_chrome.h"
+ #include "chrome/browser/autofill_assistant/platform_dependencies_desktop.h"
+ #include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h"
+@@ -516,13 +516,13 @@ void TabHelpers::AttachTabHelpers(WebContents* web_con
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ metrics::DesktopSessionDurationObserver::CreateForWebContents(web_contents);
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (base::FeatureList::IsEnabled(
+ features::kHappinessTrackingSurveysForDesktopDemo) ||
+ base::FeatureList::IsEnabled(features::kTrustSafetySentimentSurvey) ||
+@@ -537,7 +537,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_con
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (base::FeatureList::IsEnabled(
+ autofill_assistant::features::kAutofillAssistantDesktop)) {
+ autofill_assistant::CreateForWebContents(
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
new file mode 100644
index 000000000000..f0e07a0b1ce5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/task_manager/task_manager_columns.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/task_manager/task_manager_columns.cc
+@@ -93,7 +93,7 @@ const TableColumnData kColumns[] = {
+ std::size("100000") * kCharWidth, -1, true, false, false},
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ {IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
+ std::size("999") * kCharWidth, -1, true, false, false},
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
new file mode 100644
index 000000000000..6644248c9563
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/task_manager/task_manager_table_model.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/task_manager/task_manager_table_model.cc
+@@ -454,7 +454,7 @@ std::u16string TaskManagerTableModel::GetText(size_t r
+ ? stringifier_->backgrounded_string()
+ : stringifier_->foregrounded_string();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]);
+ return fd_count >= 0 ? base::FormatNumber(fd_count)
+@@ -621,7 +621,7 @@ int TaskManagerTableModel::CompareValues(size_t row1,
+ return BooleanCompare(is_proc1_bg, is_proc2_bg);
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int proc1_fd_count =
+ observed_task_manager()->GetOpenFdCount(tasks_[row1]);
+@@ -795,7 +795,7 @@ void TaskManagerTableModel::UpdateRefreshTypes(int col
+ type = REFRESH_TYPE_KEEPALIVE_COUNT;
+ break;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN:
+ type = REFRESH_TYPE_FD_COUNT;
+ break;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_accelerator__table.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_accelerator__table.cc
new file mode 100644
index 000000000000..8698e43035f4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_accelerator__table.cc
@@ -0,0 +1,43 @@
+--- chrome/browser/ui/views/accelerator_table.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/accelerator_table.cc
+@@ -61,11 +61,11 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_S, ui::EF_PLATFORM_ACCELERATOR, IDC_SAVE_PAGE},
+ {ui::VKEY_9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NUMPAD9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ {ui::VKEY_9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
+ #endif // BUILDFLAG(IS_LINUX)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ {ui::VKEY_NEXT, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, IDC_MOVE_TAB_NEXT},
+ {ui::VKEY_PRIOR, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN,
+ IDC_MOVE_TAB_PREVIOUS},
+@@ -93,7 +93,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_NUMPAD7, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_6},
+ {ui::VKEY_8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
+ {ui::VKEY_NUMPAD8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ {ui::VKEY_1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
+ {ui::VKEY_NUMPAD1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
+ {ui::VKEY_2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1},
+@@ -138,7 +138,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ IDC_SHOW_AVATAR_MENU},
+
+ // Platform-specific key maps.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ {ui::VKEY_BROWSER_BACK, ui::EF_NONE, IDC_BACK},
+ {ui::VKEY_BROWSER_FORWARD, ui::EF_NONE, IDC_FORWARD},
+ {ui::VKEY_BROWSER_HOME, ui::EF_NONE, IDC_HOME},
+@@ -236,7 +236,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_SPACE, ui::EF_CONTROL_DOWN, IDC_TOGGLE_QUICK_COMMANDS},
+ #endif // !BUILDFLAG(IS_CHROMEOS)
+ #endif // !BUILDFLAG(IS_MAC)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ {ui::VKEY_S, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN,
+ IDC_RUN_SCREEN_AI_VISUAL_ANNOTATIONS},
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc
new file mode 100644
index 000000000000..c668c4b565bc
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc
+@@ -19,7 +19,7 @@
+ #include "ui/gfx/image/image_skia.h"
+ #include "ui/views/widget/widget.h"
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/shell_integration_linux.h"
+ #endif
+
+@@ -55,7 +55,7 @@ void ChromeNativeAppWindowViewsAura::OnBeforeWidgetIni
+ const AppWindow::CreateParams& create_params,
+ views::Widget::InitParams* init_params,
+ views::Widget* widget) {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ std::string app_name =
+ web_app::GenerateApplicationNameFromAppId(app_window()->extension_id());
+ // Set up a custom WM_CLASS for app windows. This allows task switchers in
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
new file mode 100644
index 000000000000..a5b582881274
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc
+@@ -41,7 +41,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -136,7 +136,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // On the Linux desktop, we want to prevent the user from logging in as root,
+ // so that we don't destroy the profile. Now that we have some minimal ui
+ // initialized, check to see if we're running as root and bail if we are.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_chrome__views__delegate.h b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
new file mode 100644
index 000000000000..073c09667ddc
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
@@ -0,0 +1,16 @@
+--- chrome/browser/ui/views/chrome_views_delegate.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/chrome_views_delegate.h
+@@ -51,11 +51,11 @@ class ChromeViewsDelegate : public views::ViewsDelegat
+ base::OnceClosure callback) override;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ bool WindowManagerProvidesTitleBar(bool maximized) override;
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ gfx::ImageSkia* GetDefaultWindowIcon() const override;
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_chrome__views__delegate__linux.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_chrome__views__delegate__linux.cc
new file mode 100644
index 000000000000..7cfeaf148f28
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_chrome__views__delegate__linux.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/chrome_views_delegate_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/chrome_views_delegate_linux.cc
+@@ -23,7 +23,7 @@ bool IsDesktopEnvironmentUnity() {
+ return desktop_env == base::nix::DESKTOP_ENVIRONMENT_UNITY;
+ }
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ int GetWindowIconResourceId() {
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ switch (chrome::GetChannel()) {
+@@ -67,7 +67,7 @@ views::NativeWidget* ChromeViewsDelegate::CreateNative
+ delegate);
+ }
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ gfx::ImageSkia* ChromeViewsDelegate::GetDefaultWindowIcon() const {
+ ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
+ return rb.GetImageSkiaNamed(GetWindowIconResourceId());
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_download_download__item__view.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_download_download__item__view.cc
new file mode 100644
index 000000000000..e09f8e82713d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_download_download__item__view.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/download/download_item_view.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/download/download_item_view.cc
+@@ -188,7 +188,7 @@ bool UseNewWarnings() {
+ }
+
+ int GetFilenameStyle(const views::Label& label) {
+-#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD)
+ if (UseNewWarnings())
+ return views::style::STYLE_EMPHASIZED;
+ #endif
+@@ -196,7 +196,7 @@ int GetFilenameStyle(const views::Label& label) {
+ }
+
+ int GetFilenameStyle(const views::StyledLabel& label) {
+-#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD)
+ if (UseNewWarnings())
+ return views::style::STYLE_EMPHASIZED;
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view.cc
new file mode 100644
index 000000000000..47228c427b3d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/eye_dropper/eye_dropper_view.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/eye_dropper/eye_dropper_view.cc
+@@ -157,7 +157,7 @@ EyeDropperView::EyeDropperView(content::RenderFrameHos
+ // EyeDropper/WidgetDelegate.
+ set_owned_by_client();
+ SetPreferredSize(GetSize());
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Use TYPE_MENU for Linux to ensure that the eye dropper view is displayed
+ // above the color picker.
+ views::Widget::InitParams params(views::Widget::InitParams::TYPE_MENU);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view__aura.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view__aura.cc
new file mode 100644
index 000000000000..da14c6991580
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view__aura.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/eye_dropper/eye_dropper_view_aura.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/eye_dropper/eye_dropper_view_aura.cc
+@@ -86,7 +86,7 @@ void EyeDropperView::MoveViewToFront() {
+ }
+
+ void EyeDropperView::CaptureInputIfNeeded() {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // The eye dropper needs to capture input since it is not activated
+ // in order to avoid dismissing the color picker.
+ GetWidget()->GetNativeWindow()->SetCapture();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_first__run__dialog.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_first__run__dialog.cc
new file mode 100644
index 000000000000..d0f4c2750fc0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_first__run__dialog.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/first_run_dialog.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/first_run_dialog.cc
+@@ -34,7 +34,7 @@
+
+ namespace {
+
+-#if !BUILDFLAG(IS_MAC)
++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ void InitCrashReporterIfEnabled(bool enabled) {
+ if (!crash_reporter::IsCrashpadEnabled() && enabled)
+ breakpad::InitCrashReporter(std::string());
+@@ -122,7 +122,7 @@ bool FirstRunDialog::Accept() {
+
+ #if BUILDFLAG(IS_MAC)
+ ChangeMetricsReportingState(report_crashes_->GetChecked());
+-#else
++#elif !BUILDFLAG(IS_BSD)
+ ChangeMetricsReportingStateWithReply(
+ report_crashes_->GetChecked(),
+ base::BindOnce(&InitCrashReporterIfEnabled));
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_browser__frame.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
new file mode 100644
index 000000000000..662bbdbfb29e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
@@ -0,0 +1,52 @@
+--- chrome/browser/ui/views/frame/browser_frame.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/frame/browser_frame.cc
+@@ -49,11 +49,11 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ #include "ui/display/screen.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "ui/linux/linux_ui.h"
+ #endif
+
+@@ -62,7 +62,7 @@ namespace {
+ bool IsUsingGtkTheme(Profile* profile) {
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ return ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme();
+ #else
+ return false;
+@@ -279,7 +279,7 @@ void BrowserFrame::OnNativeWidgetWorkspaceChanged() {
+ IsVisibleOnAllWorkspaces());
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // If the window was sent to a different workspace, prioritize it if
+ // it was sent to the current workspace and deprioritize it
+ // otherwise. This is done by MoveBrowsersInWorkspaceToFront()
+@@ -402,7 +402,7 @@ void BrowserFrame::SelectNativeTheme() {
+ return;
+ }
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const ui::LinuxUi* linux_ui = ui::LinuxUi::instance();
+ // Ignore GTK+ for web apps with window-controls-overlay as the
+ // display_override so the web contents can blend with the overlay by using
+@@ -421,7 +421,7 @@ bool BrowserFrame::RegenerateFrameOnThemeChange(
+ bool need_regenerate = false;
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // GTK and user theme changes can both change frame buttons, so the frame
+ // always needs to be regenerated on Linux.
+ need_regenerate = true;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
new file mode 100644
index 000000000000..b15713dec599
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc
+@@ -16,7 +16,7 @@
+ #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/views/frame/browser_frame_view_layout_linux.h"
+ #include "chrome/browser/ui/views/frame/browser_frame_view_layout_linux_native.h"
+ #include "chrome/browser/ui/views/frame/browser_frame_view_linux.h"
+@@ -34,7 +34,7 @@ namespace {
+ std::unique_ptr<OpaqueBrowserFrameView> CreateOpaqueBrowserFrameView(
+ BrowserFrame* frame,
+ BrowserView* browser_view) {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ auto* linux_ui = ui::LinuxUi::instance();
+ auto* profile = browser_view->browser()->profile();
+ auto* theme_service_factory = ThemeServiceFactory::GetForProfile(profile);
+@@ -74,7 +74,7 @@ std::unique_ptr<BrowserNonClientFrameView> CreateBrows
+ BrowserFrame* frame,
+ BrowserView* browser_view) {
+ // TODO(https://crbug.com/1346734): Enable it on all platforms.
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (browser_view->browser()->is_type_picture_in_picture()) {
+ return std::make_unique<PictureInPictureBrowserFrameView>(frame,
+ browser_view);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_browser__view.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_browser__view.cc
new file mode 100644
index 000000000000..75923ed0b9b5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_browser__view.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/browser_view.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/frame/browser_view.cc
+@@ -2013,7 +2013,7 @@ void BrowserView::TabDraggingStatusChanged(bool is_dra
+ // CrOS cleanup is done.
+ // TODO(crbug.com/1052397): Revisit the macro expression 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))
+ contents_web_view_->SetFastResize(is_dragging);
+ if (!is_dragging) {
+ // When tab dragging is ended, we need to make sure the web contents get
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
new file mode 100644
index 000000000000..3a133f151d10
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
+@@ -55,7 +55,7 @@
+ #include "ui/views/window/vector_icons/vector_icons.h"
+ #include "ui/views/window/window_shape.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "ui/views/controls/menu/menu_runner.h"
+ #endif
+
+@@ -557,7 +557,7 @@ OpaqueBrowserFrameView::FrameButtonStyle
+ OpaqueBrowserFrameView::GetFrameButtonStyle() const {
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ return FrameButtonStyle::kMdButton;
+ #else
+ return FrameButtonStyle::kImageButton;
+@@ -767,7 +767,7 @@ gfx::Rect OpaqueBrowserFrameView::GetIconBounds() cons
+ }
+
+ void OpaqueBrowserFrameView::WindowIconPressed() {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Chrome OS doesn't show the window icon, and Windows handles this on its own
+ // due to the hit test being HTSYSMENU.
+ menu_runner_ = std::make_unique<views::MenuRunner>(
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.h b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.h
new file mode 100644
index 000000000000..12aacca6a8ca
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view.h
+@@ -226,7 +226,7 @@ class OpaqueBrowserFrameView : public BrowserNonClient
+ // Background painter for the window frame.
+ std::unique_ptr<views::FrameBackground> frame_background_;
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ std::unique_ptr<views::MenuRunner> menu_runner_;
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
new file mode 100644
index 000000000000..dbf4eff5997a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/system_menu_model_builder.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_builder.cc
+@@ -76,7 +76,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser
+ ui::SimpleMenuModel* model) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ model->AddItemWithStringId(IDC_MINIMIZE_WINDOW, IDS_MINIMIZE_WINDOW_MENU);
+ model->AddItemWithStringId(IDC_MAXIMIZE_WINDOW, IDS_MAXIMIZE_WINDOW_MENU);
+ model->AddItemWithStringId(IDC_RESTORE_WINDOW, IDS_RESTORE_WINDOW_MENU);
+@@ -92,7 +92,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser
+ }
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ bool supports_server_side_decorations = true;
+ #if defined(USE_OZONE) && !BUILDFLAG(IS_CHROMEOS)
+@@ -144,7 +144,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForAppOrPo
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
+ }
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE);
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
new file mode 100644
index 000000000000..f1ac1f702e74
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/system_menu_model_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_delegate.cc
+@@ -23,7 +23,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ #include "chrome/common/pref_names.h"
+ #include "components/prefs/pref_service.h"
+ #endif
+@@ -40,7 +40,7 @@ SystemMenuModelDelegate::~SystemMenuModelDelegate() {}
+ bool SystemMenuModelDelegate::IsCommandIdChecked(int command_id) const {
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ if (command_id == IDC_USE_SYSTEM_TITLE_BAR) {
+ PrefService* prefs = browser_->profile()->GetPrefs();
+ return !prefs->GetBoolean(prefs::kUseCustomChromeFrame);
+@@ -62,7 +62,7 @@ bool SystemMenuModelDelegate::IsCommandIdEnabled(int c
+ bool SystemMenuModelDelegate::IsCommandIdVisible(int command_id) const {
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ bool is_maximized = browser_->window()->IsMaximized();
+ switch (command_id) {
+ case IDC_MAXIMIZE_WINDOW:
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_hung__renderer__view.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
new file mode 100644
index 000000000000..6cd0dad3a315
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/hung_renderer_view.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/hung_renderer_view.cc
+@@ -401,7 +401,7 @@ void HungRendererDialogView::ForceCrashHungRenderer()
+ content::RenderProcessHost* rph =
+ hung_pages_table_model_->GetRenderWidgetHost()->GetProcess();
+ if (rph) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // A generic |CrashDumpHungChildProcess()| is not implemented for Linux.
+ // Instead we send an explicit IPC to crash on the renderer's IO thread.
+ rph->ForceCrash();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_profiles_profile__menu__view__base.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_profiles_profile__menu__view__base.cc
new file mode 100644
index 000000000000..00f34b3da5ee
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_profiles_profile__menu__view__base.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/profiles/profile_menu_view_base.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/profiles/profile_menu_view_base.cc
+@@ -570,7 +570,7 @@ void ProfileMenuViewBase::SetProfileIdentityInfo(
+
+ // 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)
+ // crbug.com/1161166: Orca does not read the accessible window title of the
+ // bubble, so we duplicate it in the top-level menu item. To be revisited
+ // after considering other options, including fixes on the AT side.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.cc
new file mode 100644
index 000000000000..36c21a54dbaa
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc
+@@ -160,7 +160,7 @@ SigninViewControllerDelegateViews::CreateProfileCustom
+ #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) || BUILDFLAG(IS_CHROMEOS_LACROS)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ // static
+ std::unique_ptr<views::WebView>
+ SigninViewControllerDelegateViews::CreateEnterpriseConfirmationWebView(
+@@ -445,7 +445,7 @@ SigninViewControllerDelegate::CreateProfileCustomizati
+ #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) || BUILDFLAG(IS_CHROMEOS_LACROS)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ // static
+ SigninViewControllerDelegate*
+ SigninViewControllerDelegate::CreateEnterpriseConfirmationDelegate(
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.h b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.h
new file mode 100644
index 000000000000..83a9729613c1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.h
+@@ -76,7 +76,7 @@ class SigninViewControllerDelegateViews
+ #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) || BUILDFLAG(IS_CHROMEOS_LACROS)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ static std::unique_ptr<views::WebView> CreateEnterpriseConfirmationWebView(
+ Browser* browser,
+ const AccountInfo& account_info,
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_tabs_tab.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_tabs_tab.cc
new file mode 100644
index 000000000000..e41d2e4dc723
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_tabs_tab.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/tabs/tab.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/tabs/tab.cc
+@@ -583,7 +583,7 @@ void Tab::MaybeUpdateHoverStatus(const ui::MouseEvent&
+ if (mouse_hovered_ || !GetWidget()->IsMouseEventsEnabled())
+ return;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Move the hit test area for hovering up so that it is not overlapped by tab
+ // hover cards when they are shown.
+ // TODO(crbug.com/978134): Once Linux/CrOS widget transparency is solved,
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
new file mode 100644
index 000000000000..28bf8d0b38c1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/views/tabs/tab_drag_controller.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/tabs/tab_drag_controller.cc
+@@ -476,7 +476,7 @@ void TabDragController::Init(TabDragContext* source_co
+ // synchronous on desktop Linux, so use that.
+ // - Chrome OS
+ // Releasing capture on Ash cancels gestures so avoid it.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ can_release_capture_ = false;
+ #endif
+ start_point_in_screen_ = gfx::Point(source_view_offset, mouse_offset.y());
+@@ -1029,7 +1029,7 @@ TabDragController::DragBrowserToNewTabStrip(TabDragCon
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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))
+ // EndMoveLoop is going to snap the window back to its original location.
+ // Hide it so users don't see this. Hiding a window in Linux aura causes
+ // it to lose capture so skip it.
+@@ -1944,7 +1944,7 @@ void TabDragController::CompleteDrag() {
+ }
+
+ // If source window was maximized - maximize the new window as well.
+-#if !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_MAC)
++#if !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ // Keeping maximized state breaks snap to Grid on Windows when dragging
+ // tabs from maximized windows. TODO:(crbug.com/727051) Explore doing this
+ // for other desktop OS's. kMaximizedStateRetainedOnTabDrag in
+@@ -2334,7 +2334,7 @@ TabDragController::Liveness TabDragController::GetLoca
+ }
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // Exclude windows which are pending deletion via Browser::TabStripEmpty().
+ // These windows can be returned in the Linux Aura port because the browser
+ // window which was used for dragging is not hidden once all of its tabs are
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_tabs_tab__hover__card__controller.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_tabs_tab__hover__card__controller.cc
new file mode 100644
index 000000000000..f306cae63a13
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_views_tabs_tab__hover__card__controller.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/tabs/tab_hover_card_controller.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/views/tabs/tab_hover_card_controller.cc
+@@ -72,7 +72,7 @@ GetMemoryPressureOverride() {
+ // Fetches the Omnibox drop-down widget, or returns null if the drop-down is
+ // not visible.
+ void FixWidgetStackOrder(views::Widget* widget, const Browser* browser) {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Ensure the hover card Widget assumes the highest z-order to avoid occlusion
+ // by other secondary UI Widgets (such as the omnibox Widget, see
+ // crbug.com/1226536).
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_web__applications_app__browser__controller.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_web__applications_app__browser__controller.cc
new file mode 100644
index 000000000000..372fa974f5f5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_web__applications_app__browser__controller.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/web_applications/app_browser_controller.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/web_applications/app_browser_controller.cc
+@@ -428,7 +428,7 @@ CustomThemeSupplier* AppBrowserController::GetThemeSup
+ }
+
+ bool AppBrowserController::ShouldUseSystemTheme() const {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return browser_->profile()->GetPrefs()->GetBoolean(prefs::kUsesSystemTheme);
+ #else
+ return false;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_about__ui.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_about__ui.cc
new file mode 100644
index 000000000000..9ccf195d71f4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_about__ui.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/about_ui.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/webui/about_ui.cc
+@@ -622,7 +622,7 @@ std::string ChromeURLs() {
+ return html;
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ std::string AboutLinuxProxyConfig() {
+ std::string data;
+ AppendHeader(&data,
+@@ -680,7 +680,7 @@ void AboutUIHTMLSource::StartDataRequest(
+ response =
+ ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(idr);
+ }
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ } else if (source_name_ == chrome::kChromeUILinuxProxyConfigHost) {
+ response = AboutLinuxProxyConfig();
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
new file mode 100644
index 000000000000..79a011b4769d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
@@ -0,0 +1,92 @@
+--- chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+@@ -309,7 +309,7 @@
+ #include "chrome/browser/ui/webui/app_launcher_page_ui.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/webui/webui_js_error/webui_js_error_ui.h"
+ #endif
+
+@@ -335,17 +335,17 @@
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/webui/discards/discards_ui.h"
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_ANDROID)
++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/webui/sandbox/sandbox_internals_ui.h"
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/ui/webui/connectors_internals/connectors_internals_ui.h"
+ #endif
+
+@@ -698,7 +698,7 @@ bool IsAboutUI(const GURL& url) {
+ #if !BUILDFLAG(IS_ANDROID)
+ || url.host_piece() == chrome::kChromeUITermsHost
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ || url.host_piece() == chrome::kChromeUILinuxProxyConfigHost
+ #endif
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -1132,7 +1132,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ #endif // !defined(USE_REAL_DBUS_CLIENTS)
+ #endif // !defined(OFFICIAL_BUILD)
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (url.host_piece() == chrome::kChromeUIWebUIJsErrorHost)
+ return &NewWebUI<WebUIJsErrorUI>;
+ #endif
+@@ -1193,7 +1193,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ if (url.host_piece() == chrome::kChromeUINaClHost)
+ return &NewWebUI<NaClUI>;
+ #endif
+-#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \
++#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && \
+ defined(TOOLKIT_VIEWS)) || \
+ defined(USE_AURA)
+ if (url.host_piece() == chrome::kChromeUITabModalConfirmDialogHost)
+@@ -1253,27 +1253,27 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ }
+ #endif
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_ANDROID)
++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ if (url.host_piece() == chrome::kChromeUISandboxHost) {
+ return &NewWebUI<SandboxInternalsUI>;
+ }
+ #endif
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ if (url.host_piece() == chrome::kChromeUIConnectorsInternalsHost)
+ return &NewWebUI<enterprise_connectors::ConnectorsInternalsUI>;
+ #endif
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (url.host_piece() == chrome::kChromeUIDiscardsHost)
+ return &NewWebUI<DiscardsUI>;
+ #endif
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (url.host_piece() == chrome::kChromeUIBrowserSwitchHost)
+ return &NewWebUI<BrowserSwitchUI>;
+ #endif
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ if (url.host_piece() == chrome::kChromeUIWebAppSettingsHost)
+ return &NewWebUI<WebAppSettingsUI>;
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_connectors__internals_zero__trust__utils.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_connectors__internals_zero__trust__utils.cc
new file mode 100644
index 000000000000..768086c998d3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_connectors__internals_zero__trust__utils.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/webui/connectors_internals/zero_trust_utils.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/webui/connectors_internals/zero_trust_utils.cc
+@@ -6,7 +6,7 @@
+
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/browser_process.h"
+ #include "chrome/browser/policy/chrome_browser_policy_connector.h"
+ #include "components/enterprise/browser/controller/chrome_browser_cloud_management_controller.h"
+@@ -22,7 +22,7 @@ namespace utils {
+
+ namespace {
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+
+ connectors_internals::mojom::KeyTrustLevel ParseTrustLevel(
+ BPKUR::KeyTrustLevel trust_level) {
+@@ -53,7 +53,7 @@ connectors_internals::mojom::KeyType AlgorithmToType(
+ } // namespace
+
+ connectors_internals::mojom::KeyInfoPtr GetKeyInfo() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ auto* key_manager = g_browser_process->browser_policy_connector()
+ ->chrome_browser_cloud_management_controller()
+ ->GetDeviceTrustKeyManager();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_ntp_app__launcher__handler.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_ntp_app__launcher__handler.cc
new file mode 100644
index 000000000000..456d863faca8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_ntp_app__launcher__handler.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/ntp/app_launcher_handler.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/webui/ntp/app_launcher_handler.cc
+@@ -325,7 +325,7 @@ base::Value::Dict AppLauncherHandler::CreateExtensionI
+ bool is_deprecated_app = false;
+ auto* context = extension_service_->GetBrowserContext();
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ is_deprecated_app =
+ extensions::IsExtensionUnsupportedDeprecatedApp(context, extension->id());
+ #endif
+@@ -1427,7 +1427,7 @@ void AppLauncherHandler::InstallOsHooks(const web_app:
+ options.os_hooks[web_app::OsHookType::kUninstallationViaOsSettings] =
+ web_app->CanUserUninstallWebApp();
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ options.os_hooks[web_app::OsHookType::kUrlHandlers] = true;
+ #else
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
new file mode 100644
index 000000000000..314ab424365e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.cc
+@@ -29,7 +29,7 @@ void AppearanceHandler::RegisterMessages() {
+ "useDefaultTheme",
+ base::BindRepeating(&AppearanceHandler::HandleUseDefaultTheme,
+ base::Unretained(this)));
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ web_ui()->RegisterMessageCallback(
+ "useSystemTheme",
+ base::BindRepeating(&AppearanceHandler::HandleUseSystemTheme,
+@@ -43,7 +43,7 @@ void AppearanceHandler::HandleUseDefaultTheme(const ba
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ void AppearanceHandler::HandleUseSystemTheme(const base::Value::List& args) {
+ if (profile_->IsChild())
+ NOTREACHED();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
new file mode 100644
index 000000000000..071849d7603c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.h
+@@ -40,7 +40,7 @@ class AppearanceHandler : public SettingsPageUIHandler
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // Changes the UI theme of the browser to the system (GTK+) theme.
+ void HandleUseSystemTheme(const base::Value::List& args);
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc
new file mode 100644
index 000000000000..d60e79b1a027
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc
@@ -0,0 +1,47 @@
+--- chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+@@ -115,7 +115,7 @@
+ #include "chrome/browser/ui/webui/settings/chromeos/constants/routes.mojom.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ #include "ui/display/screen.h"
+ #endif
+
+@@ -136,7 +136,7 @@
+ #include "chrome/browser/ui/webui/certificate_manager_localized_strings_provider.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "ui/ozone/public/ozone_platform.h"
+ #endif
+
+@@ -359,7 +359,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ {"sidePanelAlignRight", IDS_SETTINGS_SIDE_PANEL_ALIGN_RIGHT},
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ {"systemTheme", IDS_SETTINGS_SYSTEM_THEME},
+ {"useSystemTheme", IDS_SETTINGS_USE_SYSTEM_THEME},
+ {"classicTheme", IDS_SETTINGS_CLASSIC_THEME},
+@@ -367,7 +367,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ #else
+ {"resetToDefaultTheme", IDS_SETTINGS_RESET_TO_DEFAULT_THEME},
+ #endif
+-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS},
+ #endif
+ #if BUILDFLAG(IS_MAC)
+@@ -391,7 +391,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ bool show_custom_chrome_frame = ui::OzonePlatform::GetInstance()
+ ->GetPlatformRuntimeProperties()
+ .supports_server_side_window_decorations;
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_ui_window__sizer_window__sizer.cc b/www/ungoogled-chromium/files/patch-chrome_browser_ui_window__sizer_window__sizer.cc
new file mode 100644
index 000000000000..771275d1f465
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_ui_window__sizer_window__sizer.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/window_sizer/window_sizer.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/ui/window_sizer/window_sizer.cc
+@@ -173,7 +173,7 @@ void WindowSizer::GetBrowserWindowBoundsAndShowState(
+ browser, window_bounds, show_state);
+ }
+
+-#if !BUILDFLAG(IS_LINUX)
++#if !BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Linux has its own implementation, see WindowSizerLinux.
+ // static
+ void WindowSizer::GetBrowserWindowBoundsAndShowState(
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_extension__status__utils.h b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_extension__status__utils.h
new file mode 100644
index 000000000000..a505b144ba32
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_extension__status__utils.h
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/extension_status_utils.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/web_applications/extension_status_utils.h
+@@ -43,7 +43,7 @@ bool IsExternalExtensionUninstalled(content::BrowserCo
+ const std::string& extension_id);
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // Returns whether |extension_id| is a Chrome App and should be blocked by the
+ // Chrome Apps Deprecation. Policy installed Chrome Apps are still allowed, and
+ // all apps are allowed if the deprecation feature flag is not enabled.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_extensions_extension__status__utils.cc b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_extensions_extension__status__utils.cc
new file mode 100644
index 000000000000..c8d2c8203473
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_extensions_extension__status__utils.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/web_applications/extensions/extension_status_utils.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/web_applications/extensions/extension_status_utils.cc
+@@ -26,7 +26,7 @@ namespace {
+ const char* g_preinstalled_app_for_testing = nullptr;
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ base::Feature kChromeAppsDeprecationExcludeForceInstalls(
+ "ChromeAppsDeprecationExcludeForceInstalls",
+ base::FEATURE_DISABLED_BY_DEFAULT);
+@@ -100,7 +100,7 @@ bool IsExternalExtensionUninstalled(content::BrowserCo
+ }
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ bool IsExtensionUnsupportedDeprecatedApp(content::BrowserContext* context,
+ const std::string& extension_id) {
+ if (!base::FeatureList::IsEnabled(features::kChromeAppsDeprecation))
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__file__handler__registration.h b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__file__handler__registration.h
new file mode 100644
index 000000000000..1523c76c356f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__file__handler__registration.h
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/os_integration/web_app_file_handler_registration.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/web_applications/os_integration/web_app_file_handler_registration.h
+@@ -44,7 +44,7 @@ void UnregisterFileHandlersWithOs(const AppId& app_id,
+ Profile* profile,
+ ResultCallback callback);
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Exposed for testing purposes. Register the set of
+ // MIME-type-to-file-extensions mappings corresponding to |file_handlers|. File
+ // I/O and a a callout to the Linux shell are performed asynchronously.
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut.cc b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut.cc
new file mode 100644
index 000000000000..5c15a91c769b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut.cc
@@ -0,0 +1,47 @@
+--- chrome/browser/web_applications/os_integration/web_app_shortcut.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/web_applications/os_integration/web_app_shortcut.cc
+@@ -45,7 +45,7 @@ namespace {
+
+ #if BUILDFLAG(IS_MAC)
+ const int kDesiredIconSizesForShortcut[] = {16, 32, 128, 256, 512};
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Linux supports icons of any size. FreeDesktop Icon Theme Specification states
+ // that "Minimally you should install a 48x48 icon in the hicolor theme."
+ const int kDesiredIconSizesForShortcut[] = {16, 32, 48, 128, 256, 512};
+@@ -130,7 +130,7 @@ std::string GetAllFilesInDir(const base::FilePath& fil
+ } // namespace
+
+ ScopedShortcutOverrideForTesting::ScopedShortcutOverrideForTesting() {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ auto callback = base::BindRepeating(
+ [](ScopedShortcutOverrideForTesting* scoped_override,
+ base::FilePath filename, std::string xdg_command,
+@@ -163,7 +163,7 @@ ScopedShortcutOverrideForTesting::~ScopedShortcutOverr
+ }
+ }
+ }
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Reset the file handling callback.
+ SetUpdateMimeInfoDatabaseOnLinuxCallbackForTesting(
+ UpdateMimeInfoDatabaseOnLinuxCallback());
+@@ -210,7 +210,7 @@ std::unique_ptr<ScopedShortcutOverrideForTesting> Over
+ scoped_override->chrome_apps_folder.CreateUniqueTempDirUnderPath(
+ base_path);
+ DCHECK(success);
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ bool success =
+ scoped_override->desktop.CreateUniqueTempDirUnderPath(base_path);
+ DCHECK(success);
+@@ -230,7 +230,7 @@ std::unique_ptr<ScopedShortcutOverrideForTesting> Over
+ #elif BUILDFLAG(IS_MAC)
+ bool success = scoped_override->chrome_apps_folder.CreateUniqueTempDir();
+ DCHECK(success);
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ bool success = scoped_override->desktop.CreateUniqueTempDir();
+ DCHECK(success);
+ success = scoped_override->startup.CreateUniqueTempDir();
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut.h b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut.h
new file mode 100644
index 000000000000..f99ff3a2af0f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut.h
@@ -0,0 +1,38 @@
+--- chrome/browser/web_applications/os_integration/web_app_shortcut.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/web_applications/os_integration/web_app_shortcut.h
+@@ -19,7 +19,7 @@
+ #include "ui/gfx/image/image_family.h"
+ #include "url/gurl.h"
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/browser/web_applications/os_integration/web_app_shortcut_linux.h"
+ #endif // BUILDFLAG(IS_LINUX)
+
+@@ -33,7 +33,7 @@ class ImageSkia;
+
+ namespace web_app {
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ struct LinuxFileRegistration {
+ std::string xdg_command;
+ std::string file_contents;
+@@ -61,7 +61,7 @@ struct ScopedShortcutOverrideForTesting {
+ #elif BUILDFLAG(IS_MAC)
+ base::ScopedTempDir chrome_apps_folder;
+ std::map<base::FilePath, bool> startup_enabled;
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ base::ScopedTempDir desktop;
+ base::ScopedTempDir startup;
+ std::vector<LinuxFileRegistration> linux_file_registration;
+@@ -107,7 +107,7 @@ struct ShortcutInfo {
+ std::set<std::string> file_handler_extensions;
+ std::set<std::string> file_handler_mime_types;
+ std::set<std::string> protocol_handlers;
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ std::set<DesktopActionInfo> actions;
+ #endif // BUILDFLAG(IS_LINUX)
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut__manager.cc b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut__manager.cc
new file mode 100644
index 000000000000..c0bad1f9acb2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_os__integration_web__app__shortcut__manager.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/os_integration/web_app_shortcut_manager.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/web_applications/os_integration/web_app_shortcut_manager.cc
+@@ -379,7 +379,7 @@ std::unique_ptr<ShortcutInfo> WebAppShortcutManager::B
+ }
+ }
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const std::vector<WebAppShortcutsMenuItemInfo>& shortcuts_menu_item_infos =
+ app->shortcuts_menu_item_infos();
+ DCHECK_LE(shortcuts_menu_item_infos.size(), kMaxApplicationDockMenuItems);
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_web__app__provider.cc b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_web__app__provider.cc
new file mode 100644
index 000000000000..04c87937043f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_web__applications_web__app__provider.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/web_app_provider.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/web_applications/web_app_provider.cc
+@@ -271,7 +271,7 @@ void WebAppProvider::CreateSubsystems(Profile* profile
+ protocol_handler_manager.get());
+
+ std::unique_ptr<UrlHandlerManager> url_handler_manager;
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ url_handler_manager = std::make_unique<UrlHandlerManagerImpl>(profile);
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_browser_webauthn_chrome__authenticator__request__delegate.cc b/www/ungoogled-chromium/files/patch-chrome_browser_webauthn_chrome__authenticator__request__delegate.cc
new file mode 100644
index 000000000000..13d33562de06
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_browser_webauthn_chrome__authenticator__request__delegate.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/webauthn/chrome_authenticator_request_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/browser/webauthn/chrome_authenticator_request_delegate.cc
+@@ -668,7 +668,7 @@ void ChromeAuthenticatorRequestDelegate::ConfigureCabl
+ }
+ }
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // No caBLEv1 on Linux. It tends to crash bluez.
+ if (std::any_of(pairings_from_extension.begin(),
+ pairings_from_extension.end(),
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_channel__info.h b/www/ungoogled-chromium/files/patch-chrome_common_channel__info.h
new file mode 100644
index 000000000000..5a179988a615
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_channel__info.h
@@ -0,0 +1,11 @@
+--- chrome/common/channel_info.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/channel_info.h
+@@ -106,7 +106,7 @@ std::string GetChannelSuffixForDataDir();
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // Returns the channel-specific filename of the desktop shortcut used to launch
+ // the browser.
+ std::string GetDesktopName(base::Environment* env);
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_channel__info__posix.cc b/www/ungoogled-chromium/files/patch-chrome_common_channel__info__posix.cc
new file mode 100644
index 000000000000..c001cb0cc1b1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_channel__info__posix.cc
@@ -0,0 +1,11 @@
+--- chrome/common/channel_info_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/channel_info_posix.cc
+@@ -93,7 +93,7 @@ std::string GetChannelSuffixForDataDir() {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ std::string GetDesktopName(base::Environment* env) {
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ // Google Chrome packaged as a snap is a special case: the application name
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_chrome__features.cc b/www/ungoogled-chromium/files/patch-chrome_common_chrome__features.cc
new file mode 100644
index 000000000000..f653b4aa3c1e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_chrome__features.cc
@@ -0,0 +1,65 @@
+--- chrome/common/chrome_features.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/chrome_features.cc
+@@ -90,7 +90,7 @@ const base::Feature kAsyncDns {
+ };
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // Enables or disables the Autofill survey triggered by opening a prompt to
+ // save address info.
+ const base::Feature kAutofillAddressSurvey{"AutofillAddressSurvey",
+@@ -105,7 +105,7 @@ const base::Feature kAutofillPasswordSurvey{"AutofillP
+ base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Enables the Restart background mode optimization. When all Chrome UI is
+ // closed and it goes in the background, allows to restart the browser to
+ // discard memory.
+@@ -268,7 +268,7 @@ const base::Feature kDesktopPWAsEnforceWebAppSettingsP
+ // Enables or disables Desktop PWAs to be auto-started on OS login.
+ const base::Feature kDesktopPWAsRunOnOsLogin {
+ "DesktopPWAsRunOnOsLogin",
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
+@@ -284,7 +284,7 @@ const base::Feature kDesktopPWAsWebBundles{"DesktopPWA
+ base::FEATURE_DISABLED_BY_DEFAULT};
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // Controls whether Chrome Apps are supported. See https://crbug.com/1221251.
+ // If the feature is disabled, Chrome Apps continue to work. If enabled, Chrome
+ // Apps will not launch and will be marked in the UI as deprecated.
+@@ -317,7 +317,7 @@ const base::FeatureParam<bool> kDnsOverHttpsFallbackPa
+ const base::FeatureParam<bool> kDnsOverHttpsShowUiParam {
+ &kDnsOverHttps, "ShowUi",
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX)
++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ true
+ #else
+ false
+@@ -603,7 +603,7 @@ const base::Feature kKioskEnableAppService("KioskEnabl
+ const base::Feature kUpdateHistoryEntryPointsInIncognito{
+ "UpdateHistoryEntryPointsInIncognito", base::FEATURE_ENABLED_BY_DEFAULT};
+
+-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
++#if (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)) || BUILDFLAG(IS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ const base::Feature kLinuxLowMemoryMonitor{"LinuxLowMemoryMonitor",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+@@ -616,7 +616,7 @@ constexpr base::FeatureParam<int> kLinuxLowMemoryMonit
+ &kLinuxLowMemoryMonitor, "critical_level", 255};
+ #endif // BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ const base::Feature kListWebAppsSwitch{"ListWebAppsSwitch",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_chrome__features.h b/www/ungoogled-chromium/files/patch-chrome_common_chrome__features.h
new file mode 100644
index 000000000000..12a3a4cdecc7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_chrome__features.h
@@ -0,0 +1,47 @@
+--- chrome/common/chrome_features.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/chrome_features.h
+@@ -81,7 +81,7 @@ extern const base::Feature kAppShimNewCloseBehavior;
+ COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kAsyncDns;
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kAutofillAddressSurvey;
+ COMPONENT_EXPORT(CHROME_FEATURES)
+@@ -90,7 +90,7 @@ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kAutofillPasswordSurvey;
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kBackgroundModeAllowRestart;
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+@@ -204,7 +204,7 @@ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kDesktopPWAsWebBundles;
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kChromeAppsDeprecation;
+ COMPONENT_EXPORT(CHROME_FEATURES)
+@@ -429,7 +429,7 @@ extern const base::Feature kKioskEnableAppService;
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kUpdateHistoryEntryPointsInIncognito;
+
+-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CHROMEOS)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kLinuxLowMemoryMonitor;
+ COMPONENT_EXPORT(CHROME_FEATURES)
+@@ -438,7 +438,7 @@ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::FeatureParam<int> kLinuxLowMemoryMonitorCriticalLevel;
+ #endif // BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kListWebAppsSwitch;
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_chrome__paths.cc b/www/ungoogled-chromium/files/patch-chrome_common_chrome__paths.cc
new file mode 100644
index 000000000000..86f7f5b67206
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_chrome__paths.cc
@@ -0,0 +1,87 @@
+--- chrome/common/chrome_paths.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/chrome_paths.cc
+@@ -49,14 +49,14 @@
+
+ namespace {
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // The path to the external extension <id>.json files.
+ // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/
+ const base::FilePath::CharType kFilepathSinglePrefExtensions[] =
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+- FILE_PATH_LITERAL("/usr/share/google-chrome/extensions");
++ FILE_PATH_LITERAL("/usr/local/share/ungoogled-chromium/extensions");
+ #else
+- FILE_PATH_LITERAL("/usr/share/chromium/extensions");
++ FILE_PATH_LITERAL("/usr/local/share/ungoogled-chromium/extensions");
+ #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+@@ -178,7 +178,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ return false;
+ break;
+ case chrome::DIR_DEFAULT_DOWNLOADS_SAFE:
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (!GetUserDownloadsDirectorySafe(&cur))
+ return false;
+ break;
+@@ -421,12 +421,14 @@ bool PathProvider(int key, base::FilePath* result) {
+ if (!base::PathExists(cur)) // We don't want to create this
+ return false;
+ break;
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_OPENBSD)
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC)
+ case chrome::DIR_POLICY_FILES: {
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ cur = base::FilePath(FILE_PATH_LITERAL("/etc/opt/chrome/policies"));
++#elif BUILDFLAG(IS_FREEBSD)
++ cur = base::FilePath(FILE_PATH_LITERAL("/usr/local/etc/ungoogled-chromium/policies"));
+ #else
+- cur = base::FilePath(FILE_PATH_LITERAL("/etc/chromium/policies"));
++ cur = base::FilePath(FILE_PATH_LITERAL("/etc/ungoogled-chromium/policies"));
+ #endif
+ break;
+ }
+@@ -436,7 +438,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || \
+ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
+ BUILDFLAG(CHROMIUM_BRANDING)) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ case chrome::DIR_USER_EXTERNAL_EXTENSIONS: {
+ if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur))
+ return false;
+@@ -444,7 +446,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ break;
+ }
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: {
+ cur = base::FilePath(kFilepathSinglePrefExtensions);
+ break;
+@@ -488,7 +490,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ break;
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ case chrome::DIR_NATIVE_MESSAGING:
+ #if BUILDFLAG(IS_MAC)
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+@@ -502,9 +504,12 @@ bool PathProvider(int key, base::FilePath* result) {
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/opt/chrome/native-messaging-hosts"));
++#elif BUILDFLAG(IS_FREEBSD)
++ cur = base::FilePath(FILE_PATH_LITERAL(
++ "/usr/local/etc/ungoogled-chromium/native-messaging-hosts"));
+ #else
+ cur = base::FilePath(FILE_PATH_LITERAL(
+- "/etc/chromium/native-messaging-hosts"));
++ "/etc/ungoogled-chromium/native-messaging-hosts"));
+ #endif
+ #endif // !BUILDFLAG(IS_MAC)
+ break;
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_chrome__paths.h b/www/ungoogled-chromium/files/patch-chrome_common_chrome__paths.h
new file mode 100644
index 000000000000..5b914f0a3a93
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_chrome__paths.h
@@ -0,0 +1,29 @@
+--- chrome/common/chrome_paths.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/chrome_paths.h
+@@ -56,7 +56,7 @@ enum {
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || \
+ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
+ BUILDFLAG(CHROMIUM_BRANDING)) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ DIR_USER_EXTERNAL_EXTENSIONS, // Directory for per-user external extensions
+ // on Chrome Mac and Chromium Linux.
+ // On Chrome OS, this path is used for OEM
+@@ -64,7 +64,7 @@ enum {
+ // create it.
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ DIR_STANDALONE_EXTERNAL_EXTENSIONS, // Directory for 'per-extension'
+ // definition manifest files that
+ // describe extensions which are to be
+@@ -117,7 +117,7 @@ enum {
+ DIR_CHROMEOS_CUSTOM_WALLPAPERS, // Directory where custom wallpapers
+ // reside.
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ DIR_NATIVE_MESSAGING, // System directory where native messaging host
+ // manifest files are stored.
+ DIR_USER_NATIVE_MESSAGING, // Directory with Native Messaging Hosts
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_chrome__paths__internal.h b/www/ungoogled-chromium/files/patch-chrome_common_chrome__paths__internal.h
new file mode 100644
index 000000000000..8189610cadee
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_chrome__paths__internal.h
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_paths_internal.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/chrome_paths_internal.h
+@@ -45,7 +45,7 @@ void GetUserCacheDirectory(const base::FilePath& profi
+ // Get the path to the user's documents directory.
+ bool GetUserDocumentsDirectory(base::FilePath* result);
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Gets the path to a safe default download directory for a user.
+ bool GetUserDownloadsDirectorySafe(base::FilePath* result);
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_chrome__switches.cc b/www/ungoogled-chromium/files/patch-chrome_common_chrome__switches.cc
new file mode 100644
index 000000000000..debda459cda1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_chrome__switches.cc
@@ -0,0 +1,19 @@
+--- chrome/common/chrome_switches.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/chrome_switches.cc
+@@ -814,14 +814,14 @@ const char kAllowNaClSocketAPI[] = "allow-nacl-socket-
+ #endif
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ const char kEnableNewAppMenuIcon[] = "enable-new-app-menu-icon";
+
+ // Causes the browser to launch directly in guest mode.
+ const char kGuest[] = "guest";
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ // Writes open and installed web apps for each profile to the specified file
+ // without launching a new browser window or tab. Pass a absolute file path to
+ // specify where to output the information. Can be used together with optional
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_chrome__switches.h b/www/ungoogled-chromium/files/patch-chrome_common_chrome__switches.h
new file mode 100644
index 000000000000..3afd12c90a33
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_chrome__switches.h
@@ -0,0 +1,17 @@
+--- chrome/common/chrome_switches.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/chrome_switches.h
+@@ -257,12 +257,12 @@ extern const char kAllowNaClSocketAPI[];
+ #endif
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ extern const char kEnableNewAppMenuIcon[];
+ extern const char kGuest[];
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ extern const char kListApps[];
+ extern const char kProfileBaseName[];
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_extensions_permissions_chrome__permission__message__rules.cc b/www/ungoogled-chromium/files/patch-chrome_common_extensions_permissions_chrome__permission__message__rules.cc
new file mode 100644
index 000000000000..46b2a972b9f5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_extensions_permissions_chrome__permission__message__rules.cc
@@ -0,0 +1,11 @@
+--- chrome/common/extensions/permissions/chrome_permission_message_rules.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/extensions/permissions/chrome_permission_message_rules.cc
+@@ -284,7 +284,7 @@ int GetEnterpriseReportingPrivatePermissionMessageId()
+ }
+ #if BUILDFLAG(IS_WIN)
+ return IDS_EXTENSION_PROMPT_WARNING_ENTERPRISE_REPORTING_PRIVATE_ENABLED_WIN;
+-#elif BUILDFLAG(IS_LINUX) or BUILDFLAG(IS_MAC)
++#elif BUILDFLAG(IS_LINUX) or BUILDFLAG(IS_MAC) or BUILDFLAG(IS_BSD)
+ return IDS_EXTENSION_PROMPT_WARNING_ENTERPRISE_REPORTING_PRIVATE_ENABLED_LINUX_AND_MACOS;
+ #else
+ return IDS_EXTENSION_PROMPT_WARNING_ENTERPRISE_REPORTING_PRIVATE;
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_media_cdm__host__file__path.cc b/www/ungoogled-chromium/files/patch-chrome_common_media_cdm__host__file__path.cc
new file mode 100644
index 000000000000..da2b36d17556
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_media_cdm__host__file__path.cc
@@ -0,0 +1,11 @@
+--- chrome/common/media/cdm_host_file_path.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/media/cdm_host_file_path.cc
+@@ -94,7 +94,7 @@ void AddCdmHostFilePaths(
+ cdm_host_file_paths->emplace_back(chrome_framework_path,
+ chrome_framework_sig_path);
+
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ base::FilePath chrome_exe_dir;
+ if (!base::PathService::Get(base::DIR_EXE, &chrome_exe_dir))
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_pref__names.cc b/www/ungoogled-chromium/files/patch-chrome_common_pref__names.cc
new file mode 100644
index 000000000000..f6c3f3be0929
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_pref__names.cc
@@ -0,0 +1,56 @@
+--- chrome/common/pref_names.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/pref_names.cc
+@@ -1249,7 +1249,7 @@ const char kUseAshProxy[] = "lacros.proxy.use_ash_prox
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // Linux specific preference on whether we should match the system theme.
+ const char kUsesSystemTheme[] = "extensions.theme.use_system";
+ #endif
+@@ -1348,7 +1348,7 @@ const char kShowUpdatePromotionInfoBar[] =
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // Boolean that is false if we should show window manager decorations. If
+ // true, we draw a custom chrome frame (thicker title bar and blue border).
+ const char kUseCustomChromeFrame[] = "browser.custom_chrome_frame";
+@@ -1854,7 +1854,7 @@ const char kDownloadDirUpgraded[] = "download.director
+ const char kDownloadLastCompleteTime[] = "download.last_complete_time";
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ const char kOpenPdfDownloadInSystemReader[] =
+ "download.open_pdf_in_system_reader";
+ #endif
+@@ -2151,7 +2151,7 @@ const char kWebAppsPreferences[] = "web_apps.web_app_i
+ // its isolation requirements.
+ const char kWebAppsIsolationState[] = "web_apps.isolation_state";
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ // Dictionary that maps origins to web apps that can act as URL handlers.
+ const char kWebAppsUrlHandlerInfo[] = "web_apps.url_handler_info";
+@@ -2251,7 +2251,7 @@ const char kAmbientAuthenticationInPrivateModesEnabled
+ // requests.
+ const char kBasicAuthOverHttpEnabled[] = "auth.basic_over_http_enabled";
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Boolean that specifies whether OK-AS-DELEGATE flag from KDC is respected
+ // along with kAuthNegotiateDelegateAllowlist.
+ const char kAuthNegotiateDelegateByKdcPolicy[] =
+@@ -3275,7 +3275,7 @@ const char kBlockAutoplayEnabled[] = "media.block_auto
+ const char kSandboxExternalProtocolBlocked[] =
+ "profile.sandbox_external_protocol_blocked";
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Boolean that indicates if system notifications are allowed to be used in
+ // place of Chrome notifications.
+ const char kAllowSystemNotifications[] = "system_notifications.allowed";
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_pref__names.h b/www/ungoogled-chromium/files/patch-chrome_common_pref__names.h
new file mode 100644
index 000000000000..6b46a50e222b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_pref__names.h
@@ -0,0 +1,56 @@
+--- chrome/common/pref_names.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/pref_names.h
+@@ -389,7 +389,7 @@ extern const char kUseAshProxy[];
+ #endif // BUILDFLAG(IS_CHROMEOS_LACROS)
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ extern const char kUsesSystemTheme[];
+ #endif
+ extern const char kCurrentThemePackFilename[];
+@@ -414,7 +414,7 @@ extern const char kShowUpdatePromotionInfoBar[];
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ extern const char kUseCustomChromeFrame[];
+ #endif
+ #if BUILDFLAG(ENABLE_PLUGINS)
+@@ -604,7 +604,7 @@ extern const char kDownloadAllowedURLsForOpenByPolicy[
+ extern const char kDownloadDirUpgraded[];
+ extern const char kDownloadLastCompleteTime[];
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ extern const char kOpenPdfDownloadInSystemReader[];
+ #endif
+ #if BUILDFLAG(IS_ANDROID)
+@@ -714,7 +714,7 @@ extern const char kWebAppsUninstalledDefaultChromeApps
+ extern const char kWebAppsPreferences[];
+ extern const char kWebAppsIsolationState[];
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ extern const char kWebAppsUrlHandlerInfo[];
+ #endif
+@@ -846,7 +846,7 @@ extern const char kGloballyScopeHTTPAuthCacheEnabled[]
+ extern const char kAmbientAuthenticationInPrivateModesEnabled[];
+ extern const char kBasicAuthOverHttpEnabled[];
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ extern const char kAuthNegotiateDelegateByKdcPolicy[];
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
+
+@@ -1115,7 +1115,7 @@ extern const char kBlockAutoplayEnabled[];
+ #endif
+ extern const char kSandboxExternalProtocolBlocked[];
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ extern const char kAllowSystemNotifications[];
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_url__constants.cc b/www/ungoogled-chromium/files/patch-chrome_common_url__constants.cc
new file mode 100644
index 000000000000..6b7ac458f22b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_url__constants.cc
@@ -0,0 +1,11 @@
+--- chrome/common/url_constants.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/url_constants.cc
+@@ -489,7 +489,7 @@ const char kPhoneHubPermissionLearnMoreURL[] =
+ "https://support.9oo91e.qjz9zk/chromebook/?p=multidevice";
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ const char kChromeAppsDeprecationLearnMoreURL[] =
+ "https://support.9oo91e.qjz9zk/chrome/?p=chrome_app_deprecation";
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_url__constants.h b/www/ungoogled-chromium/files/patch-chrome_common_url__constants.h
new file mode 100644
index 000000000000..f325c957ca5d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_url__constants.h
@@ -0,0 +1,11 @@
+--- chrome/common/url_constants.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/url_constants.h
+@@ -462,7 +462,7 @@ extern const char kOutdatedPluginLearnMoreURL[];
+ extern const char kPhoneHubPermissionLearnMoreURL[];
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+
+ // "Learn more" URL for the chrome apps deprecation dialog.
+ extern const char kChromeAppsDeprecationLearnMoreURL[];
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_webui__url__constants.cc b/www/ungoogled-chromium/files/patch-chrome_common_webui__url__constants.cc
new file mode 100644
index 000000000000..24017ab34f64
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_webui__url__constants.cc
@@ -0,0 +1,68 @@
+--- chrome/common/webui_url_constants.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/webui_url_constants.cc
+@@ -478,18 +478,18 @@ const char kOsUIScanningAppURL[] = "os://scanning";
+ const char kOsUIVersionURL[] = "os://version";
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const char kChromeUIWebUIJsErrorHost[] = "webuijserror";
+ const char kChromeUIWebUIJsErrorURL[] = "chrome://webuijserror/";
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ const char kChromeUIConnectorsInternalsHost[] = "connectors-internals";
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const char kChromeUIDiscardsHost[] = "discards";
+ const char kChromeUIDiscardsURL[] = "chrome://discards/";
+ #endif
+@@ -504,14 +504,14 @@ const char kChromeUILinuxProxyConfigHost[] = "linux-pr
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_ANDROID)
++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ const char kChromeUISandboxHost[] = "sandbox";
+ #endif
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || \
+- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || BUILDFLAG(IS_BSD)
+ const char kChromeUIBrowserSwitchHost[] = "browser-switch";
+ const char kChromeUIBrowserSwitchURL[] = "chrome://browser-switch/";
+ const char kChromeUIEnterpriseProfileWelcomeHost[] =
+@@ -527,7 +527,7 @@ const char kChromeUIProfilePickerUrl[] = "chrome://pro
+ const char kChromeUIProfilePickerStartupQuery[] = "startup";
+ #endif
+
+-#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \
++#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && \
+ defined(TOOLKIT_VIEWS)) || \
+ defined(USE_AURA)
+ const char kChromeUITabModalConfirmDialogHost[] = "tab-modal-confirm-dialog";
+@@ -602,7 +602,7 @@ const char kPrivacySandboxSubPagePath[] = "/privacySan
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ const char kChromeUIWebAppSettingsURL[] = "chrome://app-settings/";
+ const char kChromeUIWebAppSettingsHost[] = "app-settings";
+ #endif
+@@ -810,7 +810,7 @@ const char* const kChromeDebugURLs[] = {
+ blink::kChromeUIGpuJavaCrashURL,
+ kChromeUIJavaCrashURL,
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ kChromeUIWebUIJsErrorURL,
+ #endif
+ kChromeUIQuitURL,
diff --git a/www/ungoogled-chromium/files/patch-chrome_common_webui__url__constants.h b/www/ungoogled-chromium/files/patch-chrome_common_webui__url__constants.h
new file mode 100644
index 000000000000..998890eedc46
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_common_webui__url__constants.h
@@ -0,0 +1,57 @@
+--- chrome/common/webui_url_constants.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/common/webui_url_constants.h
+@@ -407,24 +407,24 @@ extern const char kOsUIScanningAppURL[];
+ extern const char kOsUIVersionURL[];
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ extern const char kChromeUIWebUIJsErrorHost[];
+ extern const char kChromeUIWebUIJsErrorURL[];
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ extern const char kChromeUIConnectorsInternalsHost[];
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ extern const char kChromeUIDiscardsHost[];
+ extern const char kChromeUIDiscardsURL[];
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ extern const char kChromeUIWebAppSettingsURL[];
+ extern const char kChromeUIWebAppSettingsHost[];
+ #endif
+@@ -439,14 +439,14 @@ extern const char kChromeUILinuxProxyConfigHost[];
+ #endif
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_ANDROID)
++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ extern const char kChromeUISandboxHost[];
+ #endif
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || \
+- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD))
+ extern const char kChromeUIBrowserSwitchHost[];
+ extern const char kChromeUIBrowserSwitchURL[];
+ extern const char kChromeUIEnterpriseProfileWelcomeHost[];
+@@ -459,7 +459,7 @@ extern const char kChromeUIProfilePickerUrl[];
+ extern const char kChromeUIProfilePickerStartupQuery[];
+ #endif
+
+-#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \
++#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && \
+ defined(TOOLKIT_VIEWS)) || \
+ defined(USE_AURA)
+ extern const char kChromeUITabModalConfirmDialogHost[];
diff --git a/www/ungoogled-chromium/files/patch-chrome_renderer_chrome__render__frame__observer.cc b/www/ungoogled-chromium/files/patch-chrome_renderer_chrome__render__frame__observer.cc
new file mode 100644
index 000000000000..f58a7eb7fcc7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_renderer_chrome__render__frame__observer.cc
@@ -0,0 +1,11 @@
+--- chrome/renderer/chrome_render_frame_observer.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/renderer/chrome_render_frame_observer.cc
+@@ -342,7 +342,7 @@ void ChromeRenderFrameObserver::OnDestruct() {
+
+ void ChromeRenderFrameObserver::DraggableRegionsChanged() {
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Only the main frame is allowed to control draggable regions, to avoid other
+ // frames manipulate the regions in the browser process.
+ if (!render_frame()->IsMainFrame())
diff --git a/www/ungoogled-chromium/files/patch-chrome_services_file__util_public_mojom_safe__document__analyzer__mojom__traits.h b/www/ungoogled-chromium/files/patch-chrome_services_file__util_public_mojom_safe__document__analyzer__mojom__traits.h
new file mode 100644
index 000000000000..c68e2ffb6434
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_services_file__util_public_mojom_safe__document__analyzer__mojom__traits.h
@@ -0,0 +1,11 @@
+--- chrome/services/file_util/public/mojom/safe_document_analyzer_mojom_traits.h.orig 2022-10-01 07:40:07 UTC
++++ chrome/services/file_util/public/mojom/safe_document_analyzer_mojom_traits.h
+@@ -16,7 +16,7 @@
+ #include "mojo/public/cpp/bindings/struct_traits.h"
+
+ #if !BUILDFLAG(FULL_SAFE_BROWSING) || \
+- (!BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_WIN))
++ (!BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_BSD))
+ #error BUILDFLAG(FULL_SAFE_BROWSING) should be set and either OS_LINUX or OS_WIN defined.
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_services_printing_print__backend__service__impl.cc b/www/ungoogled-chromium/files/patch-chrome_services_printing_print__backend__service__impl.cc
new file mode 100644
index 000000000000..624461016424
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_services_printing_print__backend__service__impl.cc
@@ -0,0 +1,11 @@
+--- chrome/services/printing/print_backend_service_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/services/printing/print_backend_service_impl.cc
+@@ -604,7 +604,7 @@ void PrintBackendServiceImpl::UpdatePrintSettings(
+ crash_keys_ = std::make_unique<crash_keys::ScopedPrinterInfo>(
+ print_backend_->GetPrinterDriverInfo(*printer_name));
+
+-#if BUILDFLAG(IS_LINUX) && defined(USE_CUPS)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(USE_CUPS)
+ // Try to fill in advanced settings based upon basic info options.
+ PrinterBasicInfo basic_info;
+ if (print_backend_->GetPrinterBasicInfo(*printer_name, &basic_info) ==
diff --git a/www/ungoogled-chromium/files/patch-chrome_services_speech_audio__source__fetcher__impl.cc b/www/ungoogled-chromium/files/patch-chrome_services_speech_audio__source__fetcher__impl.cc
new file mode 100644
index 000000000000..417e10c5f5e3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_services_speech_audio__source__fetcher__impl.cc
@@ -0,0 +1,11 @@
+--- chrome/services/speech/audio_source_fetcher_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/services/speech/audio_source_fetcher_impl.cc
+@@ -69,7 +69,7 @@ void AudioSourceFetcherImpl::Start(
+
+ // TODO(crbug.com/1185978): Check implementation / sandbox policy on Mac and
+ // Windows.
+-#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ is_started_ = true;
+ // Initialize the AudioCapturerSource with |this| as the CaptureCallback,
+ // get the parameters for the device ID, then start audio capture.
diff --git a/www/ungoogled-chromium/files/patch-chrome_test_BUILD.gn b/www/ungoogled-chromium/files/patch-chrome_test_BUILD.gn
new file mode 100644
index 000000000000..4e00722192cb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_test_BUILD.gn
@@ -0,0 +1,11 @@
+--- chrome/test/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ chrome/test/BUILD.gn
+@@ -9859,7 +9859,7 @@ test("chrome_app_unittests") {
+ "//components/heap_profiling/in_process",
+ "//components/safe_browsing:buildflags",
+ ]
+- if (!is_fuchsia) {
++ if (!is_fuchsia && !is_bsd) {
+ deps += [ "//third_party/breakpad:client" ]
+ }
+ if (enable_gwp_asan) {
diff --git a/www/ungoogled-chromium/files/patch-chrome_test_chromedriver_chrome__launcher.cc b/www/ungoogled-chromium/files/patch-chrome_test_chromedriver_chrome__launcher.cc
new file mode 100644
index 000000000000..f8a58eebc7cc
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_test_chromedriver_chrome__launcher.cc
@@ -0,0 +1,10 @@
+--- chrome/test/chromedriver/chrome_launcher.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/test/chromedriver/chrome_launcher.cc
+@@ -65,6 +65,7 @@
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
++#include <sys/wait.h>
+ #include <unistd.h>
+ #elif BUILDFLAG(IS_WIN)
+ #include "chrome/test/chromedriver/keycode_text_conversion.h"
diff --git a/www/ungoogled-chromium/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc b/www/ungoogled-chromium/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
new file mode 100644
index 000000000000..45b5391abb81
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
@@ -0,0 +1,20 @@
+--- chrome/test/chromedriver/chrome/chrome_finder.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/test/chromedriver/chrome/chrome_finder.cc
+@@ -53,7 +53,7 @@ void GetApplicationDirs(std::vector<base::FilePath>* l
+ installation_locations[i].Append(L"Chromium\\Application"));
+ }
+ }
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void GetApplicationDirs(std::vector<base::FilePath>* locations) {
+ // TODO: Respect users' PATH variables.
+ // Until then, we use an approximation of the most common defaults.
+@@ -138,7 +138,7 @@ bool FindChrome(base::FilePath* browser_exe) {
+ base::FilePath browser_exes_array[] = {
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
+ base::FilePath(chrome::kBrowserProcessExecutablePath),
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ base::FilePath("google-chrome"),
+ base::FilePath(chrome::kBrowserProcessExecutablePath),
+ base::FilePath("chromium"),
diff --git a/www/ungoogled-chromium/files/patch-chrome_test_chromedriver_key__converter__unittest.cc b/www/ungoogled-chromium/files/patch-chrome_test_chromedriver_key__converter__unittest.cc
new file mode 100644
index 000000000000..824f38e7e4ab
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_test_chromedriver_key__converter__unittest.cc
@@ -0,0 +1,20 @@
+--- chrome/test/chromedriver/key_converter_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/test/chromedriver/key_converter_unittest.cc
+@@ -246,7 +246,7 @@ TEST(KeyConverter, ToggleModifiers) {
+ CheckEventsReleaseModifiers(keys, key_events);
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Fails on bots: crbug.com/174962
+ #define MAYBE_AllEnglishKeyboardSymbols DISABLED_AllEnglishKeyboardSymbols
+ #else
+@@ -303,7 +303,7 @@ TEST(KeyConverter, AllEnglishKeyboardTextChars) {
+ TEST(KeyConverter, AllSpecialWebDriverKeysOnEnglishKeyboard) {
+ ui::ScopedKeyboardLayout keyboard_layout(ui::KEYBOARD_LAYOUT_ENGLISH_US);
+ const char kTextForKeys[] = {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ 0, 0, 0, 0, '\t', 0, '\r', '\r', 0, 0, 0, 0, 0,
+ #else
+ 0, 0, 0, 0, 0, 0, '\r', '\r', 0, 0, 0, 0, 0,
diff --git a/www/ungoogled-chromium/files/patch-chrome_test_chromedriver_keycode__text__conversion__unittest.cc b/www/ungoogled-chromium/files/patch-chrome_test_chromedriver_keycode__text__conversion__unittest.cc
new file mode 100644
index 000000000000..984e914d08dd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_test_chromedriver_keycode__text__conversion__unittest.cc
@@ -0,0 +1,20 @@
+--- chrome/test/chromedriver/keycode_text_conversion_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/test/chromedriver/keycode_text_conversion_unittest.cc
+@@ -67,7 +67,7 @@ std::string ConvertKeyCodeToTextNoError(ui::KeyboardCo
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // Fails on bots: crbug.com/174962
+ #define MAYBE_KeyCodeToText DISABLED_KeyCodeToText
+ #else
+@@ -104,7 +104,7 @@ TEST(KeycodeTextConversionTest, MAYBE_KeyCodeToText) {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // Fails on bots: crbug.com/174962
+ #define MAYBE_CharToKeyCode DISABLED_CharToKeyCode
+ #else
diff --git a/www/ungoogled-chromium/files/patch-chrome_test_interaction_webui__interaction__test__util.cc b/www/ungoogled-chromium/files/patch-chrome_test_interaction_webui__interaction__test__util.cc
new file mode 100644
index 000000000000..08779fd481e6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_test_interaction_webui__interaction__test__util.cc
@@ -0,0 +1,11 @@
+--- chrome/test/interaction/webui_interaction_test_util.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/test/interaction/webui_interaction_test_util.cc
+@@ -54,7 +54,7 @@ class RenderFrameHost;
+
+ namespace {
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ #define SUPPORTS_PIXEL_TESTS 1
+ #else
+ #define SUPPORTS_PIXEL_TESTS 0
diff --git a/www/ungoogled-chromium/files/patch-chrome_updater_app_app__install.cc b/www/ungoogled-chromium/files/patch-chrome_updater_app_app__install.cc
new file mode 100644
index 000000000000..1a35ae2e11ca
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_updater_app_app__install.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/app/app_install.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/updater/app/app_install.cc
+@@ -215,7 +215,7 @@ void AppInstall::WakeCandidate() {
+ update_service_internal, base::WrapRefCounted(this)));
+ }
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // TODO(crbug.com/1276114) - implement.
+ void AppInstall::WakeCandidateDone() {
+ NOTIMPLEMENTED();
diff --git a/www/ungoogled-chromium/files/patch-chrome_updater_app_app__uninstall.cc b/www/ungoogled-chromium/files/patch-chrome_updater_app_app__uninstall.cc
new file mode 100644
index 000000000000..d65915c56048
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_updater_app_app__uninstall.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/app/app_uninstall.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/updater/app/app_uninstall.cc
+@@ -32,7 +32,7 @@
+ #include "chrome/updater/win/setup/uninstall.h"
+ #elif BUILDFLAG(IS_MAC)
+ #include "chrome/updater/mac/setup/setup.h"
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/updater/linux/setup/setup.h"
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_updater_configurator.cc b/www/ungoogled-chromium/files/patch-chrome_updater_configurator.cc
new file mode 100644
index 000000000000..1757fce8fecf
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_updater_configurator.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/configurator.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/updater/configurator.cc
+@@ -41,7 +41,7 @@
+ #include "chrome/updater/win/net/network.h"
+ #elif BUILDFLAG(IS_MAC)
+ #include "chrome/updater/mac/net/network.h"
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/updater/linux/net/network.h"
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_updater_device__management_dm__client.cc b/www/ungoogled-chromium/files/patch-chrome_updater_device__management_dm__client.cc
new file mode 100644
index 000000000000..6e0c28022cb8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_updater_device__management_dm__client.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/device_management/dm_client.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/updater/device_management/dm_client.cc
+@@ -36,7 +36,7 @@
+ #include "chrome/updater/win/net/network.h"
+ #elif BUILDFLAG(IS_MAC)
+ #include "chrome/updater/mac/net/network.h"
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/updater/linux/net/network.h"
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_updater_device__management_dm__storage.cc b/www/ungoogled-chromium/files/patch-chrome_updater_device__management_dm__storage.cc
new file mode 100644
index 000000000000..9d2d8337d81b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_updater_device__management_dm__storage.cc
@@ -0,0 +1,20 @@
+--- chrome/updater/device_management/dm_storage.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/updater/device_management/dm_storage.cc
+@@ -70,7 +70,7 @@ bool DeleteObsoletePolicies(const base::FilePath& cach
+
+ } // namespace
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // TODO(crbug.com/1276162) - implement.
+ DMStorage::DMStorage(const base::FilePath& policy_cache_root)
+ : policy_cache_root_(policy_cache_root),
+@@ -215,7 +215,7 @@ DMStorage::GetOmahaPolicySettings() const {
+ return omaha_settings;
+ }
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // TODO(crbug.com/1276162) - implement.
+ scoped_refptr<DMStorage> GetDefaultDMStorage() {
+ NOTIMPLEMENTED();
diff --git a/www/ungoogled-chromium/files/patch-chrome_updater_installer.cc b/www/ungoogled-chromium/files/patch-chrome_updater_installer.cc
new file mode 100644
index 000000000000..6d7d6473fcfa
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_updater_installer.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/installer.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/updater/installer.cc
+@@ -243,7 +243,7 @@ absl::optional<base::FilePath> Installer::GetCurrentIn
+ return path->AppendASCII(pv_.GetString());
+ }
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+
+ AppInstallerResult RunApplicationInstaller(
+ const AppInfo& /*app_info*/,
diff --git a/www/ungoogled-chromium/files/patch-chrome_updater_updater.cc b/www/ungoogled-chromium/files/patch-chrome_updater_updater.cc
new file mode 100644
index 000000000000..f6c0a90a6704
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_updater_updater.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/updater.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/updater/updater.cc
+@@ -44,7 +44,7 @@
+ #include "chrome/updater/win/win_util.h"
+ #elif BUILDFLAG(IS_MAC)
+ #include "chrome/updater/app/server/mac/server.h"
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/updater/app/server/linux/server.h"
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chrome_updater_util.cc b/www/ungoogled-chromium/files/patch-chrome_updater_util.cc
new file mode 100644
index 000000000000..9a24ce4bb535
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_updater_util.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/util.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/updater/util.cc
+@@ -263,7 +263,7 @@ GURL AppendQueryParameter(const GURL& url,
+ return url.ReplaceComponents(replacements);
+ }
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+
+ // TODO(crbug.com/1276188) - implement the functions below.
+ absl::optional<base::FilePath> GetBaseInstallDirectory(UpdaterScope scope) {
diff --git a/www/ungoogled-chromium/files/patch-chrome_utility_services.cc b/www/ungoogled-chromium/files/patch-chrome_utility_services.cc
new file mode 100644
index 000000000000..28c42c2f3d12
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chrome_utility_services.cc
@@ -0,0 +1,56 @@
+--- chrome/utility/services.cc.orig 2022-10-01 07:40:07 UTC
++++ chrome/utility/services.cc
+@@ -56,7 +56,7 @@
+ #include "chrome/services/system_signals/mac/mac_system_signals_service.h"
+ #endif // BUILDFLAG(IS_MAC)
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "chrome/services/system_signals/linux/linux_system_signals_service.h"
+ #endif // BUILDFLAG(IS_LINUX)
+
+@@ -84,7 +84,7 @@
+ #include "chrome/services/file_util/file_util_service.h" // nogncheck
+ #endif
+
+-#if BUILDFLAG(FULL_SAFE_BROWSING) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN))
++#if BUILDFLAG(FULL_SAFE_BROWSING) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD))
+ #include "chrome/services/file_util/document_analysis_service.h" // nogncheck
+ #endif
+
+@@ -218,7 +218,7 @@ auto RunMacNotificationService(
+ }
+ #endif // BUILDFLAG(IS_MAC)
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ auto RunSystemSignalsService(
+ mojo::PendingReceiver<device_signals::mojom::SystemSignalsService>
+ receiver) {
+@@ -287,7 +287,7 @@ auto RunCupsIppParser(
+ }
+ #endif
+
+-#if BUILDFLAG(FULL_SAFE_BROWSING) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN))
++#if BUILDFLAG(FULL_SAFE_BROWSING) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD))
+ auto RunDocumentAnalysis(
+ mojo::PendingReceiver<chrome::mojom::DocumentAnalysisService> receiver) {
+ return std::make_unique<DocumentAnalysisService>(std::move(receiver));
+@@ -471,7 +471,7 @@ void RegisterMainThreadServices(mojo::ServiceFactory&
+ services.Add(RunWindowsIconReader);
+ #endif // BUILDFLAG(IS_WIN)
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ services.Add(RunSystemSignalsService);
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+
+@@ -487,7 +487,7 @@ void RegisterMainThreadServices(mojo::ServiceFactory&
+ services.Add(RunFileUtil);
+ #endif
+
+-#if BUILDFLAG(FULL_SAFE_BROWSING) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN))
++#if BUILDFLAG(FULL_SAFE_BROWSING) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD))
+ services.Add(RunDocumentAnalysis);
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-chromecast_browser_cast__browser__main__parts.cc b/www/ungoogled-chromium/files/patch-chromecast_browser_cast__browser__main__parts.cc
new file mode 100644
index 000000000000..eb0b15685242
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chromecast_browser_cast__browser__main__parts.cc
@@ -0,0 +1,38 @@
+--- chromecast/browser/cast_browser_main_parts.cc.orig 2022-10-01 07:40:07 UTC
++++ chromecast/browser/cast_browser_main_parts.cc
+@@ -90,7 +90,7 @@
+ #include "ui/base/ui_base_switches.h"
+ #include "ui/gl/gl_switches.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include <fontconfig/fontconfig.h>
+ #include <signal.h>
+ #include <sys/prctl.h>
+@@ -265,7 +265,7 @@ class CastViewsDelegate : public views::ViewsDelegate
+
+ #endif // defined(USE_AURA)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ base::FilePath GetApplicationFontsDir() {
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+@@ -311,7 +311,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = {
+ {cc::switches::kDisableThreadedAnimation, ""},
+ #endif // BUILDFLAG(IS_ANDROID)
+ #endif // BUILDFLAG(IS_CAST_AUDIO_ONLY)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #if defined(ARCH_CPU_X86_FAMILY)
+ // This is needed for now to enable the x11 Ozone platform to work with
+ // current Linux/NVidia OpenGL drivers.
+@@ -482,7 +482,7 @@ void CastBrowserMainParts::ToolkitInitialized() {
+ views_delegate_ = std::make_unique<CastViewsDelegate>();
+ #endif // defined(USE_AURA)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ base::FilePath dir_font = GetApplicationFontsDir();
+ const FcChar8* dir_font_char8 =
+ reinterpret_cast<const FcChar8*>(dir_font.value().data());
diff --git a/www/ungoogled-chromium/files/patch-chromecast_browser_cast__content__browser__client.cc b/www/ungoogled-chromium/files/patch-chromecast_browser_cast__content__browser__client.cc
new file mode 100644
index 000000000000..014dffd782d1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chromecast_browser_cast__content__browser__client.cc
@@ -0,0 +1,11 @@
+--- chromecast/browser/cast_content_browser_client.cc.orig 2022-10-01 07:40:07 UTC
++++ chromecast/browser/cast_content_browser_client.cc
+@@ -434,7 +434,7 @@ void CastContentBrowserClient::AppendExtraCommandLineS
+ switches::kAudioOutputChannels));
+ }
+ } else if (process_type == switches::kGpuProcess) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Necessary for accelerated 2d canvas. By default on Linux, Chromium
+ // assumes GLES2 contexts can be lost to a power-save mode, which breaks GPU
+ // canvas apps.
diff --git a/www/ungoogled-chromium/files/patch-chromecast_media_base_default__monotonic__clock.cc b/www/ungoogled-chromium/files/patch-chromecast_media_base_default__monotonic__clock.cc
new file mode 100644
index 000000000000..753872a00b8f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-chromecast_media_base_default__monotonic__clock.cc
@@ -0,0 +1,20 @@
+--- chromecast/media/base/default_monotonic_clock.cc.orig 2022-10-01 07:40:07 UTC
++++ chromecast/media/base/default_monotonic_clock.cc
+@@ -11,7 +11,7 @@
+ #include "base/time/time.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)
+ #include "chromecast/media/base/buildflags.h"
+ #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) ||
+ // BUILDFLAG(IS_CHROMEOS)
+@@ -28,7 +28,7 @@ std::unique_ptr<MonotonicClock> MonotonicClock::Create
+ return std::make_unique<DefaultMonotonicClock>();
+ }
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ int64_t MonotonicClockNow() {
+ timespec now = {0, 0};
+ #if BUILDFLAG(MEDIA_CLOCK_MONOTONIC_RAW)
diff --git a/www/ungoogled-chromium/files/patch-components_autofill__assistant_browser_autofill__assistant__impl.cc b/www/ungoogled-chromium/files/patch-components_autofill__assistant_browser_autofill__assistant__impl.cc
new file mode 100644
index 000000000000..58b2bdd13f97
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_autofill__assistant_browser_autofill__assistant__impl.cc
@@ -0,0 +1,11 @@
+--- components/autofill_assistant/browser/autofill_assistant_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ components/autofill_assistant/browser/autofill_assistant_impl.cc
+@@ -150,7 +150,7 @@ void AutofillAssistantImpl::GetCapabilitiesByHashPrefi
+ client_context.set_platform_type(ClientContextProto::PLATFORM_TYPE_ANDROID);
+ #endif
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ client_context.set_platform_type(ClientContextProto::PLATFORM_TYPE_DESKTOP);
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-components_autofill__assistant_browser_client__context.cc b/www/ungoogled-chromium/files/patch-components_autofill__assistant_browser_client__context.cc
new file mode 100644
index 000000000000..3b44dfd77ad4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_autofill__assistant_browser_client__context.cc
@@ -0,0 +1,11 @@
+--- components/autofill_assistant/browser/client_context.cc.orig 2022-10-01 07:40:07 UTC
++++ components/autofill_assistant/browser/client_context.cc
+@@ -23,7 +23,7 @@ ClientContextImpl::ClientContextImpl(const Client* cli
+ proto_.set_platform_type(ClientContextProto::PLATFORM_TYPE_ANDROID);
+ #endif
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ proto_.set_platform_type(ClientContextProto::PLATFORM_TYPE_DESKTOP);
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-components_autofill__payments__strings.grdp b/www/ungoogled-chromium/files/patch-components_autofill__payments__strings.grdp
new file mode 100644
index 000000000000..b88b4e882f7c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_autofill__payments__strings.grdp
@@ -0,0 +1,11 @@
+--- components/autofill_payments_strings.grdp.orig 2022-10-01 07:40:07 UTC
++++ components/autofill_payments_strings.grdp
+@@ -127,7 +127,7 @@
+ <message name="IDS_AUTOFILL_FIX_FLOW_PROMPT_SAVE_CARD_LABEL" desc="Text to show on the button to save the card to Google when the fix flow dialog is shown after the Autofill save card prompt." formatter_data="android_java">
+ Save card
+ </message>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <then>
+ <message name="IDS_AUTOFILL_SAVE_CARD_PROMPT_TITLE_TO_CLOUD" desc="Title text for the Autofill save card prompt when the card is to be saved by uploading it to Google Payments and also saved locally. The prompt can be either a bubble or an infobar.">
+ Do you want to save this card to your Google Account?
diff --git a/www/ungoogled-chromium/files/patch-components_autofill_core_browser_personal__data__manager.cc b/www/ungoogled-chromium/files/patch-components_autofill_core_browser_personal__data__manager.cc
new file mode 100644
index 000000000000..bd3593d56c76
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_autofill_core_browser_personal__data__manager.cc
@@ -0,0 +1,12 @@
+--- components/autofill/core/browser/personal_data_manager.cc.orig 2022-10-01 07:40:07 UTC
++++ components/autofill/core/browser/personal_data_manager.cc
+@@ -2057,7 +2057,8 @@ bool PersonalDataManager::ShouldShowCardsFromAccountOp
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FUCHSIA) || \
++ BUILDFLAG(IS_BSD)
+ // This option should only be shown for users that have not enabled the Sync
+ // Feature and that have server credit cards available.
+ if (!sync_service_ || sync_service_->IsSyncFeatureEnabled() ||
diff --git a/www/ungoogled-chromium/files/patch-components_autofill_core_common_autofill__payments__features.cc b/www/ungoogled-chromium/files/patch-components_autofill_core_common_autofill__payments__features.cc
new file mode 100644
index 000000000000..f1edeeb51e1f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_autofill_core_common_autofill__payments__features.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/common/autofill_payments_features.cc.orig 2022-10-01 07:40:07 UTC
++++ components/autofill/core/common/autofill_payments_features.cc
+@@ -237,7 +237,7 @@ const base::FeatureParam<int>
+ bool ShouldShowImprovedUserConsentForCreditCardSave() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ // The new user consent UI is fully launched on MacOS, Windows and Linux.
+ return true;
diff --git a/www/ungoogled-chromium/files/patch-components_autofill_core_common_autofill__util.cc b/www/ungoogled-chromium/files/patch-components_autofill_core_common_autofill__util.cc
new file mode 100644
index 000000000000..0e69778436af
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_autofill_core_common_autofill__util.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/common/autofill_util.cc.orig 2022-10-01 07:40:07 UTC
++++ components/autofill/core/common/autofill_util.cc
+@@ -154,7 +154,7 @@ bool SanitizedFieldIsEmpty(const std::u16string& value
+
+ bool ShouldAutoselectFirstSuggestionOnArrowDown() {
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/www/ungoogled-chromium/files/patch-components_cast__channel_cast__message__util.cc b/www/ungoogled-chromium/files/patch-components_cast__channel_cast__message__util.cc
new file mode 100644
index 000000000000..d933cc53c664
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_cast__channel_cast__message__util.cc
@@ -0,0 +1,11 @@
+--- components/cast_channel/cast_message_util.cc.orig 2022-10-01 07:40:07 UTC
++++ components/cast_channel/cast_message_util.cc
+@@ -169,7 +169,7 @@ int GetVirtualConnectPlatformValue() {
+ return 4;
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ return 5;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ return 6;
+ #else
+ return 0;
diff --git a/www/ungoogled-chromium/files/patch-components_components__chromium__strings.grd b/www/ungoogled-chromium/files/patch-components_components__chromium__strings.grd
new file mode 100644
index 000000000000..0f5aedc522b6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_components__chromium__strings.grd
@@ -0,0 +1,11 @@
+--- components/components_chromium_strings.grd.orig 2022-10-01 07:40:07 UTC
++++ components/components_chromium_strings.grd
+@@ -223,7 +223,7 @@
+ </message>
+ </if>
+ <!-- The ChromeOS version of this string is defined in //components/error_page_strings.grdp. -->
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_DISABLE_PLATFORM" desc="Linux instructions for disabling use of a proxy server.">
+ Go to
+ the Chromium menu &gt;
diff --git a/www/ungoogled-chromium/files/patch-components_components__google__chrome__strings.grd b/www/ungoogled-chromium/files/patch-components_components__google__chrome__strings.grd
new file mode 100644
index 000000000000..db47c3f0e614
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_components__google__chrome__strings.grd
@@ -0,0 +1,11 @@
+--- components/components_google_chrome_strings.grd.orig 2022-10-01 07:40:07 UTC
++++ components/components_google_chrome_strings.grd
+@@ -230,7 +230,7 @@
+ </message>
+ </if>
+ <!-- The ChromeOS version of this string is defined in //components/error_page_strings.grdp. -->
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_DISABLE_PLATFORM" desc="Linux instructions for disabling use of a proxy server.">
+ Go to
+ the Chrome menu &gt;
diff --git a/www/ungoogled-chromium/files/patch-components_content__settings_core_browser_website__settings__registry.cc b/www/ungoogled-chromium/files/patch-components_content__settings_core_browser_website__settings__registry.cc
new file mode 100644
index 000000000000..ee7c381f0b59
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_content__settings_core_browser_website__settings__registry.cc
@@ -0,0 +1,11 @@
+--- components/content_settings/core/browser/website_settings_registry.cc.orig 2022-10-01 07:40:07 UTC
++++ components/content_settings/core/browser/website_settings_registry.cc
+@@ -66,7 +66,7 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Re
+ #if BUILDFLAG(IS_WIN)
+ if (!(platform & PLATFORM_WINDOWS))
+ return nullptr;
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (!(platform & PLATFORM_LINUX))
+ return nullptr;
+ #elif BUILDFLAG(IS_MAC)
diff --git a/www/ungoogled-chromium/files/patch-components_cookie__config_cookie__store__util.cc b/www/ungoogled-chromium/files/patch-components_cookie__config_cookie__store__util.cc
new file mode 100644
index 000000000000..b8cfb001b843
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_cookie__config_cookie__store__util.cc
@@ -0,0 +1,11 @@
+--- components/cookie_config/cookie_store_util.cc.orig 2022-10-01 07:40:07 UTC
++++ components/cookie_config/cookie_store_util.cc
+@@ -12,7 +12,7 @@
+ namespace cookie_config {
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ namespace {
+
+ // Use the operating system's mechanisms to encrypt cookies before writing
diff --git a/www/ungoogled-chromium/files/patch-components_crash_content_browser_BUILD.gn b/www/ungoogled-chromium/files/patch-components_crash_content_browser_BUILD.gn
new file mode 100644
index 000000000000..80a33c372a41
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_crash_content_browser_BUILD.gn
@@ -0,0 +1,29 @@
+--- components/crash/content/browser/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ components/crash/content/browser/BUILD.gn
+@@ -21,7 +21,7 @@ source_set("browser") {
+ "//content/public/common",
+ ]
+
+- if (is_linux || is_chromeos || is_android) {
++ if ((is_linux && !is_bsd) || is_chromeos || is_android) {
+ # Want this file on both Linux and Android.
+ sources += [
+ "crash_handler_host_linux.cc",
+@@ -37,7 +37,7 @@ source_set("browser") {
+
+ # This is not in the GYP build but this target includes breakpad client
+ # headers, so add the dependency here.
+- if ((is_posix && !is_ios) || is_fuchsia) {
++ if ((is_posix && !is_ios && !is_bsd) || is_fuchsia) {
+ configs += [ "//third_party/breakpad:client_config" ]
+ public_configs = [ "//third_party/breakpad:client_config" ]
+ }
+@@ -59,7 +59,7 @@ source_set("browser") {
+ "//components/crash/android:jni_headers",
+ "//mojo/public/cpp/bindings",
+ ]
+- } else {
++ } else if (!is_bsd) {
+ deps += [ "//third_party/breakpad:client" ]
+ }
+ }
diff --git a/www/ungoogled-chromium/files/patch-components_crash_core_app_BUILD.gn b/www/ungoogled-chromium/files/patch-components_crash_core_app_BUILD.gn
new file mode 100644
index 000000000000..5450169ec6f5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_crash_core_app_BUILD.gn
@@ -0,0 +1,52 @@
+--- components/crash/core/app/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ components/crash/core/app/BUILD.gn
+@@ -52,7 +52,7 @@ static_library("app") {
+ "crashpad.h",
+ ]
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [
+ "breakpad_linux.cc",
+ "breakpad_linux.h",
+@@ -62,6 +62,10 @@ static_library("app") {
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [ "crashpad.cc" ]
++ }
++
+ defines = [ "CRASH_IMPLEMENTATION" ]
+
+ public_deps = [ ":lib" ]
+@@ -93,7 +97,7 @@ static_library("app") {
+ libs = [ "log" ]
+ }
+
+- if (is_android || is_linux || is_chromeos) {
++ if ((is_android || is_linux || is_chromeos) && !is_bsd) {
+ deps += [
+ "//base:base_static",
+ "//components/crash/core/common",
+@@ -101,7 +105,7 @@ static_library("app") {
+ ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ deps += [ "//third_party/breakpad:client" ]
+ }
+
+@@ -221,11 +225,6 @@ if (is_mac || is_android || is_linux || is_chromeos) {
+ # define custom UserStreamDataSources.
+ executable("chrome_crashpad_handler") {
+ sources = [ "chrome_crashpad_handler.cc" ]
+-
+- deps = [
+- ":crashpad_handler_main",
+- "//third_party/crashpad/crashpad/handler",
+- ]
+
+ if (is_mac && (is_component_build || is_asan)) {
+ ldflags = [
diff --git a/www/ungoogled-chromium/files/patch-components_crash_core_app_chrome__crashpad__handler.cc b/www/ungoogled-chromium/files/patch-components_crash_core_app_chrome__crashpad__handler.cc
new file mode 100644
index 000000000000..c03ff87afc81
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_crash_core_app_chrome__crashpad__handler.cc
@@ -0,0 +1,12 @@
+--- components/crash/core/app/chrome_crashpad_handler.cc.orig 2022-10-01 07:40:07 UTC
++++ components/crash/core/app/chrome_crashpad_handler.cc
+@@ -6,5 +6,9 @@
+ extern "C" int CrashpadHandlerMain(int argc, char* argv[]);
+
+ int main(int argc, char* argv[]) {
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++ return -1;
++#else
+ return CrashpadHandlerMain(argc, argv);
++#endif
+ }
diff --git a/www/ungoogled-chromium/files/patch-components_crash_core_browser_crash__upload__list__crashpad.cc b/www/ungoogled-chromium/files/patch-components_crash_core_browser_crash__upload__list__crashpad.cc
new file mode 100644
index 000000000000..25a4075cb518
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_crash_core_browser_crash__upload__list__crashpad.cc
@@ -0,0 +1,16 @@
+--- components/crash/core/browser/crash_upload_list_crashpad.cc.orig 2022-10-01 07:40:07 UTC
++++ components/crash/core/browser/crash_upload_list_crashpad.cc
+@@ -51,9 +51,13 @@ std::vector<UploadList::UploadInfo> CrashUploadListCra
+
+ void CrashUploadListCrashpad::ClearUploadList(const base::Time& begin,
+ const base::Time& end) {
++#if !defined(OS_BSD)
+ crash_reporter::ClearReportsBetween(begin, end);
++#endif
+ }
+
+ void CrashUploadListCrashpad::RequestSingleUpload(const std::string& local_id) {
++#if !defined(OS_BSD)
+ crash_reporter::RequestSingleCrashUpload(local_id);
++#endif
+ }
diff --git a/www/ungoogled-chromium/files/patch-components_crash_core_common_BUILD.gn b/www/ungoogled-chromium/files/patch-components_crash_core_common_BUILD.gn
new file mode 100644
index 000000000000..bdc08a3634c9
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_crash_core_common_BUILD.gn
@@ -0,0 +1,20 @@
+--- components/crash/core/common/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ components/crash/core/common/BUILD.gn
+@@ -8,7 +8,7 @@ import("//components/gwp_asan/buildflags/buildflags.gn
+
+ declare_args() {
+ # If set to true, this will stub out and disable the entire crash key system.
+- use_crash_key_stubs = is_fuchsia
++ use_crash_key_stubs = is_fuchsia || is_bsd
+ }
+
+ group("common") {
+@@ -190,7 +190,7 @@ source_set("unit_tests") {
+ sources += [ "crash_key_breakpad_ios_unittest.cc" ]
+ deps += [ "//third_party/breakpad:client" ]
+ include_dirs = [ "//third_party/breakpad/breakpad/src/" ]
+- } else if (!is_mac && !is_win && !is_fuchsia && !is_android) {
++ } else if (!is_mac && !is_win && !is_fuchsia && !is_android && !is_bsd) {
+ include_dirs = [ "//third_party/breakpad/breakpad/src/" ]
+ sources += [ "crash_key_breakpad_unittest.cc" ]
+ }
diff --git a/www/ungoogled-chromium/files/patch-components_device__signals_core_common_signals__features.cc b/www/ungoogled-chromium/files/patch-components_device__signals_core_common_signals__features.cc
new file mode 100644
index 000000000000..9b73ce14388f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_device__signals_core_common_signals__features.cc
@@ -0,0 +1,11 @@
+--- components/device_signals/core/common/signals_features.cc.orig 2022-10-01 07:40:07 UTC
++++ components/device_signals/core/common/signals_features.cc
+@@ -18,7 +18,7 @@ const base::FeatureParam<bool> kDisableAntiVirus{&kNew
+ const base::FeatureParam<bool> kDisableHotfix{&kNewEvSignalsEnabled,
+ "DisableHotfix", false};
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ // Enables the consent promo for sharing device signal when a managed user
+ // signs in on an unmanaged device. This occurs after the sign-in intercept
+ // and before the sync promo (if enabled)
diff --git a/www/ungoogled-chromium/files/patch-components_device__signals_core_common_signals__features.h b/www/ungoogled-chromium/files/patch-components_device__signals_core_common_signals__features.h
new file mode 100644
index 000000000000..3c556b7cb45e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_device__signals_core_common_signals__features.h
@@ -0,0 +1,11 @@
+--- components/device_signals/core/common/signals_features.h.orig 2022-10-01 07:40:07 UTC
++++ components/device_signals/core/common/signals_features.h
+@@ -20,7 +20,7 @@ extern const base::FeatureParam<bool> kDisableSettings
+ extern const base::FeatureParam<bool> kDisableAntiVirus;
+ extern const base::FeatureParam<bool> kDisableHotfix;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ extern const base::Feature kDeviceSignalsPromoAfterSigninIntercept;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
+
diff --git a/www/ungoogled-chromium/files/patch-components_device__signals_core_system__signals_platform__delegate.cc b/www/ungoogled-chromium/files/patch-components_device__signals_core_system__signals_platform__delegate.cc
new file mode 100644
index 000000000000..52414a062c8e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_device__signals_core_system__signals_platform__delegate.cc
@@ -0,0 +1,11 @@
+--- components/device_signals/core/system_signals/platform_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ components/device_signals/core/system_signals/platform_delegate.cc
+@@ -11,7 +11,7 @@ namespace device_signals {
+
+ bool CustomFilePathComparator::operator()(const base::FilePath& a,
+ const base::FilePath& b) const {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // On Linux, the file system is case sensitive.
+ return a < b;
+ #else
diff --git a/www/ungoogled-chromium/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc b/www/ungoogled-chromium/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
new file mode 100644
index 000000000000..3cf12b8ef80a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
@@ -0,0 +1,11 @@
+--- components/discardable_memory/service/discardable_shared_memory_manager.cc.orig 2022-10-01 07:40:07 UTC
++++ components/discardable_memory/service/discardable_shared_memory_manager.cc
+@@ -171,7 +171,7 @@ uint64_t GetDefaultMemoryLimit() {
+ // Limits the number of FDs used to 32, assuming a 4MB allocation size.
+ uint64_t max_default_memory_limit = 128 * kMegabyte;
+ #else
+- uint64_t max_default_memory_limit = 512 * kMegabyte;
++ uint64_t max_default_memory_limit = 128 * kMegabyte;
+ #endif
+
+ // Use 1/8th of discardable memory on low-end devices.
diff --git a/www/ungoogled-chromium/files/patch-components_embedder__support_user__agent__utils__unittest.cc b/www/ungoogled-chromium/files/patch-components_embedder__support_user__agent__utils__unittest.cc
new file mode 100644
index 000000000000..48b2b6c7b88d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_embedder__support_user__agent__utils__unittest.cc
@@ -0,0 +1,20 @@
+--- components/embedder_support/user_agent_utils_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ components/embedder_support/user_agent_utils_unittest.cc
+@@ -80,7 +80,7 @@ const char kDesktop[] =
+ "Safari/537.36";
+ #endif // BUILDFLAG(IS_ANDROID)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ std::string GetMachine() {
+ struct utsname unixinfo;
+ uname(&unixinfo);
+@@ -188,7 +188,7 @@ void CheckUserAgentStringOrdering(bool mobile_device)
+ int value;
+ ASSERT_TRUE(base::StringToInt(pieces[i], &value));
+ }
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // X11; Linux x86_64
+ ASSERT_EQ(2u, pieces.size());
+ ASSERT_EQ("X11", pieces[0]);
diff --git a/www/ungoogled-chromium/files/patch-components_feature__engagement_public_event__constants.cc b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_event__constants.cc
new file mode 100644
index 000000000000..a8aaca73b6af
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_event__constants.cc
@@ -0,0 +1,11 @@
+--- components/feature_engagement/public/event_constants.cc.orig 2022-10-01 07:40:07 UTC
++++ components/feature_engagement/public/event_constants.cc
+@@ -11,7 +11,7 @@ namespace feature_engagement {
+ namespace events {
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ const char kNewTabOpened[] = "new_tab_opened";
+ const char kSixthTabOpened[] = "sixth_tab_opened";
+ const char kTabGroupCreated[] = "tab_group_created";
diff --git a/www/ungoogled-chromium/files/patch-components_feature__engagement_public_event__constants.h b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_event__constants.h
new file mode 100644
index 000000000000..e853dbb20322
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_event__constants.h
@@ -0,0 +1,11 @@
+--- components/feature_engagement/public/event_constants.h.orig 2022-10-01 07:40:07 UTC
++++ components/feature_engagement/public/event_constants.h
+@@ -13,7 +13,7 @@ namespace events {
+
+ // Desktop
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // The user has explicitly opened a new tab via an entry point from inside of
+ // Chrome.
+ extern const char kNewTabOpened[];
diff --git a/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__configurations.cc b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__configurations.cc
new file mode 100644
index 000000000000..48d746886957
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__configurations.cc
@@ -0,0 +1,21 @@
+--- components/feature_engagement/public/feature_configurations.cc.orig 2022-10-01 07:40:07 UTC
++++ components/feature_engagement/public/feature_configurations.cc
+@@ -35,7 +35,7 @@ FeatureConfig CreateAlwaysTriggerConfig(const base::Fe
+ absl::optional<FeatureConfig> GetClientSideFeatureConfig(
+ const base::Feature* feature) {
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (kIPHPasswordsAccountStorageFeature.name == feature->name) {
+ absl::optional<FeatureConfig> config = FeatureConfig();
+ config->valid = true;
+@@ -904,7 +904,8 @@ absl::optional<FeatureConfig> GetClientSideFeatureConf
+ #endif // BUILDFLAG(IS_ANDROID)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || \
++ BUILDFLAG(IS_BSD)
+ if (kIPHAutofillVirtualCardSuggestionFeature.name == feature->name) {
+ // A config that allows the virtual card credit card suggestion IPH to be
+ // shown when:
diff --git a/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__constants.cc b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__constants.cc
new file mode 100644
index 000000000000..c27e974e1c7d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__constants.cc
@@ -0,0 +1,20 @@
+--- components/feature_engagement/public/feature_constants.cc.orig 2022-10-01 07:40:07 UTC
++++ components/feature_engagement/public/feature_constants.cc
+@@ -24,7 +24,7 @@ const base::Feature kIPHDummyFeature{"IPH_Dummy",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ const base::Feature kIPHDesktopSharedHighlightingFeature{
+ "IPH_DesktopSharedHighlighting", base::FEATURE_DISABLED_BY_DEFAULT};
+ const base::Feature kIPHDesktopTabGroupsNewGroupFeature{
+@@ -294,7 +294,7 @@ const base::Feature kIPHOverflowMenuTipFeature{
+ "IPH_OverflowMenuTip", base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif // BUILDFLAG(IS_IOS)
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) || \
+ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
+ const base::Feature kIPHAutofillVirtualCardSuggestionFeature{
+ "IPH_AutofillVirtualCardSuggestion", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__constants.h b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__constants.h
new file mode 100644
index 000000000000..2bb3d52f6d7c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__constants.h
@@ -0,0 +1,20 @@
+--- components/feature_engagement/public/feature_constants.h.orig 2022-10-01 07:40:07 UTC
++++ components/feature_engagement/public/feature_constants.h
+@@ -32,7 +32,7 @@ extern const base::Feature kIPHDummyFeature;
+ extern const base::Feature kEnableIPH;
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ extern const base::Feature kIPHDesktopSharedHighlightingFeature;
+ extern const base::Feature kIPHDesktopTabGroupsNewGroupFeature;
+ extern const base::Feature kIPHFocusHelpBubbleScreenReaderPromoFeature;
+@@ -178,7 +178,7 @@ extern const base::Feature kIPHFollowWhileBrowsingFeat
+ extern const base::Feature kIPHOverflowMenuTipFeature;
+ #endif // BUILDFLAG(IS_IOS)
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) || \
+ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
+ extern const base::Feature kIPHAutofillVirtualCardSuggestionFeature;
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ||
diff --git a/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__list.cc b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__list.cc
new file mode 100644
index 000000000000..7cf69232ce82
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__list.cc
@@ -0,0 +1,21 @@
+--- components/feature_engagement/public/feature_list.cc.orig 2022-10-01 07:40:07 UTC
++++ components/feature_engagement/public/feature_list.cc
+@@ -118,7 +118,7 @@ const base::Feature* const kAllFeatures[] = {
+ &kIPHOverflowMenuTipFeature,
+ #endif // BUILDFLAG(IS_IOS)
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ &kIPHDesktopTabGroupsNewGroupFeature,
+ &kIPHFocusHelpBubbleScreenReaderPromoFeature,
+ &kIPHGMCCastStartStopFeature,
+@@ -142,7 +142,8 @@ const base::Feature* const kAllFeatures[] = {
+ // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || \
++ BUILDFLAG(IS_BSD)
+ &kIPHAutofillVirtualCardSuggestionFeature,
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ||
+ // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ||
diff --git a/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__list.h b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__list.h
new file mode 100644
index 000000000000..e40ab862c1c7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_feature__engagement_public_feature__list.h
@@ -0,0 +1,40 @@
+--- components/feature_engagement/public/feature_list.h.orig 2022-10-01 07:40:07 UTC
++++ components/feature_engagement/public/feature_list.h
+@@ -216,7 +216,7 @@ DEFINE_VARIATION_PARAM(kIPHOverflowMenuTipFeature, "IP
+ #endif // BUILDFLAG(IS_IOS)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ DEFINE_VARIATION_PARAM(kIPHDesktopTabGroupsNewGroupFeature,
+ "IPH_DesktopTabGroupsNewGroup");
+ DEFINE_VARIATION_PARAM(kIPHFocusModeFeature, "IPH_FocusMode");
+@@ -249,7 +249,8 @@ DEFINE_VARIATION_PARAM(kIPHWebUiHelpBubbleTestFeature,
+ // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || \
++ BUILDFLAG(IS_BSD)
+ DEFINE_VARIATION_PARAM(kIPHAutofillVirtualCardSuggestionFeature,
+ "IPH_AutofillVirtualCardSuggestion");
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ||
+@@ -351,7 +352,7 @@ constexpr flags_ui::FeatureEntry::FeatureVariation
+ VARIATION_ENTRY(kIPHFollowWhileBrowsingFeature),
+ VARIATION_ENTRY(kIPHOverflowMenuTipFeature),
+ #elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ VARIATION_ENTRY(kIPHDesktopTabGroupsNewGroupFeature),
+ VARIATION_ENTRY(kIPHFocusModeFeature),
+ VARIATION_ENTRY(kIPHGlobalMediaControls),
+@@ -376,7 +377,8 @@ constexpr flags_ui::FeatureEntry::FeatureVariation
+ // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || \
++ BUILDFLAG(IS_BSD)
+ VARIATION_ENTRY(kIPHAutofillVirtualCardSuggestionFeature),
+ #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ||
+ // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ||
diff --git a/www/ungoogled-chromium/files/patch-components_feed_core_proto_v2_wire_version.proto b/www/ungoogled-chromium/files/patch-components_feed_core_proto_v2_wire_version.proto
new file mode 100644
index 000000000000..2f58534a63e0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_feed_core_proto_v2_wire_version.proto
@@ -0,0 +1,13 @@
+--- components/feed/core/proto/v2/wire/version.proto.orig 2022-10-01 07:40:07 UTC
++++ components/feed/core/proto/v2/wire/version.proto
+@@ -25,8 +25,8 @@ message Version {
+ BETA = 3;
+ RELEASE = 4;
+ }
+- optional int32 major = 1;
+- optional int32 minor = 2;
++ optional int32 gmajor = 1;
++ optional int32 gminor = 2;
+ optional int32 build = 3;
+ optional int32 revision = 4;
+ optional Architecture architecture = 5;
diff --git a/www/ungoogled-chromium/files/patch-components_feed_core_v2_feed__network__impl__unittest.cc b/www/ungoogled-chromium/files/patch-components_feed_core_v2_feed__network__impl__unittest.cc
new file mode 100644
index 000000000000..4ee893275001
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_feed_core_v2_feed__network__impl__unittest.cc
@@ -0,0 +1,13 @@
+--- components/feed/core/v2/feed_network_impl_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ components/feed/core/v2/feed_network_impl_unittest.cc
+@@ -807,8 +807,8 @@ TEST_F(FeedNetworkTest, SendApiRequest_DecodesClientIn
+
+ EXPECT_EQ(feedwire::ClientInfo::CHROME_ANDROID, client_info.app_type());
+ EXPECT_EQ(feedwire::Version::RELEASE, client_info.app_version().build_type());
+- EXPECT_EQ(1, client_info.app_version().major());
+- EXPECT_EQ(2, client_info.app_version().minor());
++ EXPECT_EQ(1, client_info.app_version().gmajor());
++ EXPECT_EQ(2, client_info.app_version().gminor());
+ EXPECT_EQ(3, client_info.app_version().build());
+ EXPECT_EQ(4, client_info.app_version().revision());
+ EXPECT_FALSE(client_info.chrome_client_info().start_surface());
diff --git a/www/ungoogled-chromium/files/patch-components_feed_core_v2_proto__util.cc b/www/ungoogled-chromium/files/patch-components_feed_core_v2_proto__util.cc
new file mode 100644
index 000000000000..e96b8092f96a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_feed_core_v2_proto__util.cc
@@ -0,0 +1,24 @@
+--- components/feed/core/v2/proto_util.cc.orig 2022-10-01 07:40:07 UTC
++++ components/feed/core/v2/proto_util.cc
+@@ -90,8 +90,8 @@ feedwire::Version GetPlatformVersionMessage() {
+
+ int32_t major, minor, revision;
+ base::SysInfo::OperatingSystemVersionNumbers(&major, &minor, &revision);
+- result.set_major(major);
+- result.set_minor(minor);
++ result.set_gmajor(major);
++ result.set_gminor(minor);
+ result.set_revision(revision);
+ #if BUILDFLAG(IS_ANDROID)
+ result.set_api_version(base::android::BuildInfo::GetInstance()->sdk_int());
+@@ -106,8 +106,8 @@ feedwire::Version GetAppVersionMessage(const ChromeInf
+ // Chrome's version is in the format: MAJOR,MINOR,BUILD,PATCH.
+ const std::vector<uint32_t>& numbers = chrome_info.version.components();
+ if (numbers.size() > 3) {
+- result.set_major(static_cast<int32_t>(numbers[0]));
+- result.set_minor(static_cast<int32_t>(numbers[1]));
++ result.set_gmajor(static_cast<int32_t>(numbers[0]));
++ result.set_gminor(static_cast<int32_t>(numbers[1]));
+ result.set_build(static_cast<int32_t>(numbers[2]));
+ result.set_revision(static_cast<int32_t>(numbers[3]));
+ }
diff --git a/www/ungoogled-chromium/files/patch-components_feed_core_v2_proto__util__unittest.cc b/www/ungoogled-chromium/files/patch-components_feed_core_v2_proto__util__unittest.cc
new file mode 100644
index 000000000000..cb267087ae62
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_feed_core_v2_proto__util__unittest.cc
@@ -0,0 +1,13 @@
+--- components/feed/core/v2/proto_util_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ components/feed/core/v2/proto_util_unittest.cc
+@@ -42,8 +42,8 @@ TEST(ProtoUtilTest, CreateClientInfo) {
+ feedwire::ClientInfo result = CreateClientInfo(request_metadata);
+ EXPECT_EQ(feedwire::ClientInfo::CHROME_ANDROID, result.app_type());
+ EXPECT_EQ(feedwire::Version::RELEASE, result.app_version().build_type());
+- EXPECT_EQ(1, result.app_version().major());
+- EXPECT_EQ(2, result.app_version().minor());
++ EXPECT_EQ(1, result.app_version().gmajor());
++ EXPECT_EQ(2, result.app_version().gminor());
+ EXPECT_EQ(3, result.app_version().build());
+ EXPECT_EQ(4, result.app_version().revision());
+ EXPECT_FALSE(result.chrome_client_info().start_surface());
diff --git a/www/ungoogled-chromium/files/patch-components_feed_core_v2_test_proto__printer.cc b/www/ungoogled-chromium/files/patch-components_feed_core_v2_test_proto__printer.cc
new file mode 100644
index 000000000000..9e76c9f619c3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_feed_core_v2_test_proto__printer.cc
@@ -0,0 +1,13 @@
+--- components/feed/core/v2/test/proto_printer.cc.orig 2022-10-01 07:40:07 UTC
++++ components/feed/core/v2/test/proto_printer.cc
+@@ -157,8 +157,8 @@ class TextProtoPrinter {
+ }
+ TextProtoPrinter& operator<<(const feedwire::Version& v) {
+ BeginMessage();
+- PRINT_FIELD(major);
+- PRINT_FIELD(minor);
++ PRINT_FIELD(gmajor);
++ PRINT_FIELD(gminor);
+ PRINT_FIELD(build);
+ PRINT_FIELD(revision);
+ PRINT_FIELD(architecture);
diff --git a/www/ungoogled-chromium/files/patch-components_flags__ui_flags__state.cc b/www/ungoogled-chromium/files/patch-components_flags__ui_flags__state.cc
new file mode 100644
index 000000000000..79d02662b268
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_flags__ui_flags__state.cc
@@ -0,0 +1,11 @@
+--- components/flags_ui/flags_state.cc.orig 2022-10-01 07:40:07 UTC
++++ components/flags_ui/flags_state.cc
+@@ -681,7 +681,7 @@ unsigned short FlagsState::GetCurrentPlatform() {
+ return kOsCrOS;
+ #elif BUILDFLAG(IS_CHROMEOS_LACROS)
+ return kOsLacros;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_OPENBSD)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return kOsLinux;
+ #elif BUILDFLAG(IS_ANDROID)
+ return kOsAndroid;
diff --git a/www/ungoogled-chromium/files/patch-components_gwp__asan_BUILD.gn b/www/ungoogled-chromium/files/patch-components_gwp__asan_BUILD.gn
new file mode 100644
index 000000000000..20011f07ddcb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_gwp__asan_BUILD.gn
@@ -0,0 +1,11 @@
+--- components/gwp_asan/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ components/gwp_asan/BUILD.gn
+@@ -14,7 +14,7 @@ test("gwp_asan_unittests") {
+ "//components/gwp_asan/common:unit_tests",
+ "//testing/gtest",
+ ]
+- if (is_win || is_mac || is_linux || is_chromeos || is_android) {
++ if ((is_win || is_mac || is_linux || is_chromeos || is_android) && !is_bsd) {
+ deps += [
+ "//components/gwp_asan/client:unit_tests",
+ "//components/gwp_asan/crash_handler:unit_tests",
diff --git a/www/ungoogled-chromium/files/patch-components_gwp__asan_crash__handler_crash__analyzer.cc b/www/ungoogled-chromium/files/patch-components_gwp__asan_crash__handler_crash__analyzer.cc
new file mode 100644
index 000000000000..c8b955c2a8e6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_gwp__asan_crash__handler_crash__analyzer.cc
@@ -0,0 +1,20 @@
+--- components/gwp_asan/crash_handler/crash_analyzer.cc.orig 2022-10-01 07:40:07 UTC
++++ components/gwp_asan/crash_handler/crash_analyzer.cc
+@@ -26,7 +26,7 @@
+ #include "third_party/crashpad/crashpad/snapshot/process_snapshot.h"
+ #include "third_party/crashpad/crashpad/util/process/process_memory.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 <signal.h>
+ #elif BUILDFLAG(IS_APPLE)
+ #include <mach/exception_types.h>
+@@ -81,7 +81,7 @@ bool CrashAnalyzer::GetExceptionInfo(
+
+ crashpad::VMAddress CrashAnalyzer::GetAccessAddress(
+ const crashpad::ExceptionSnapshot& exception) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ if (exception.Exception() == SIGSEGV || exception.Exception() == SIGBUS)
+ return exception.ExceptionAddress();
+ #elif BUILDFLAG(IS_APPLE)
diff --git a/www/ungoogled-chromium/files/patch-components_invalidation_impl_invalidation__switches.cc b/www/ungoogled-chromium/files/patch-components_invalidation_impl_invalidation__switches.cc
new file mode 100644
index 000000000000..7453082a0fa0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_invalidation_impl_invalidation__switches.cc
@@ -0,0 +1,11 @@
+--- components/invalidation/impl/invalidation_switches.cc.orig 2022-10-01 07:40:07 UTC
++++ components/invalidation/impl/invalidation_switches.cc
+@@ -21,7 +21,7 @@ const int kDefaultInstanceIDTokenTTLSeconds = 14 * 24
+ const base::Feature kSyncInstanceIDTokenTTL {
+ "SyncInstanceIDTokenTTL",
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_IOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/www/ungoogled-chromium/files/patch-components_live__caption_caption__util.cc b/www/ungoogled-chromium/files/patch-components_live__caption_caption__util.cc
new file mode 100644
index 000000000000..26f40a5c1b8e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_live__caption_caption__util.cc
@@ -0,0 +1,11 @@
+--- components/live_caption/caption_util.cc.orig 2022-10-01 07:40:07 UTC
++++ components/live_caption/caption_util.cc
+@@ -140,7 +140,7 @@ bool IsLiveCaptionFeatureSupported() {
+ return false;
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Check if the CPU has the required instruction set to run the Speech
+ // On-Device API (SODA) library.
+ static bool has_sse41 = base::CPU().has_sse41();
diff --git a/www/ungoogled-chromium/files/patch-components_metrics_drive__metrics__provider__linux.cc b/www/ungoogled-chromium/files/patch-components_metrics_drive__metrics__provider__linux.cc
new file mode 100644
index 000000000000..e6add558bf0d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_metrics_drive__metrics__provider__linux.cc
@@ -0,0 +1,16 @@
+--- components/metrics/drive_metrics_provider_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ components/metrics/drive_metrics_provider_linux.cc
+@@ -4,7 +4,13 @@
+
+ #include "components/metrics/drive_metrics_provider.h"
+
++#if defined(OS_BSD)
++#include <sys/types.h>
++#define MAJOR(dev) major(dev)
++#define MINOR(dev) minor(dev)
++#else
+ #include <linux/kdev_t.h> // For MAJOR()/MINOR().
++#endif
+ #include <sys/stat.h>
+ #include <string>
+
diff --git a/www/ungoogled-chromium/files/patch-components_metrics_motherboard.cc b/www/ungoogled-chromium/files/patch-components_metrics_motherboard.cc
new file mode 100644
index 000000000000..e98a187c6c58
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_metrics_motherboard.cc
@@ -0,0 +1,10 @@
+--- components/metrics/motherboard.cc.orig 2022-10-01 07:40:07 UTC
++++ components/metrics/motherboard.cc
+@@ -1,6 +1,7 @@
+ // Copyright 2022 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.
++// CHECK
+
+ #include "components/metrics/motherboard.h"
+
diff --git a/www/ungoogled-chromium/files/patch-components_neterror_resources_neterror.js b/www/ungoogled-chromium/files/patch-components_neterror_resources_neterror.js
new file mode 100644
index 000000000000..4e7118206988
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_neterror_resources_neterror.js
@@ -0,0 +1,11 @@
+--- components/neterror/resources/neterror.js.orig 2022-10-01 07:40:07 UTC
++++ components/neterror/resources/neterror.js
+@@ -130,7 +130,7 @@ function detailsButtonClick() {
+
+ let primaryControlOnLeft = true;
+ // clang-format off
+-// <if expr="is_macosx or is_ios or is_linux or is_chromeos or is_android">
++// <if expr="is_macosx or is_ios or is_posix or is_chromeos or is_android">
+ // clang-format on
+ primaryControlOnLeft = false;
+ // </if>
diff --git a/www/ungoogled-chromium/files/patch-components_network__session__configurator_browser_network__session__configurator.cc b/www/ungoogled-chromium/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
new file mode 100644
index 000000000000..eb6b751ce2b9
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
@@ -0,0 +1,11 @@
+--- components/network_session_configurator/browser/network_session_configurator.cc.orig 2022-10-01 07:40:07 UTC
++++ components/network_session_configurator/browser/network_session_configurator.cc
+@@ -824,7 +824,7 @@ net::URLRequestContextBuilder::HttpCacheParams::Type C
+ }
+ #endif // #if !BUILDFLAG(IS_ANDROID)
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE;
+ #else
+ return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE;
diff --git a/www/ungoogled-chromium/files/patch-components_network__session__configurator_browser_network__session__configurator__unittest.cc b/www/ungoogled-chromium/files/patch-components_network__session__configurator_browser_network__session__configurator__unittest.cc
new file mode 100644
index 000000000000..c464fc6f34bf
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_network__session__configurator_browser_network__session__configurator__unittest.cc
@@ -0,0 +1,11 @@
+--- components/network_session_configurator/browser/network_session_configurator_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ components/network_session_configurator/browser/network_session_configurator_unittest.cc
+@@ -833,7 +833,7 @@ TEST_F(NetworkSessionConfiguratorTest, HostRules) {
+ }
+
+ TEST_F(NetworkSessionConfiguratorTest, DefaultCacheBackend) {
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ EXPECT_EQ(net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE,
+ ChooseCacheType());
+ #elif BUILDFLAG(IS_MAC)
diff --git a/www/ungoogled-chromium/files/patch-components_new__or__sad__tab__strings.grdp b/www/ungoogled-chromium/files/patch-components_new__or__sad__tab__strings.grdp
new file mode 100644
index 000000000000..2e1c39c706a8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_new__or__sad__tab__strings.grdp
@@ -0,0 +1,20 @@
+--- components/new_or_sad_tab_strings.grdp.orig 2022-10-01 07:40:07 UTC
++++ components/new_or_sad_tab_strings.grdp
+@@ -66,7 +66,7 @@
+ Close other tabs or apps
+ </message>
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_SAD_TAB_RELOAD_CLOSE_TABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other Chrome tabs or programs running on their computer.">
+ Close other tabs or programs
+ </message>
+@@ -76,7 +76,7 @@
+ Close other apps
+ </message>
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_SAD_TAB_RELOAD_CLOSE_NOTABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other programs running on their computer (Linux).">
+ Close other programs
+ </message>
diff --git a/www/ungoogled-chromium/files/patch-components_optimization__guide_core_optimization__guide__util.cc b/www/ungoogled-chromium/files/patch-components_optimization__guide_core_optimization__guide__util.cc
new file mode 100644
index 000000000000..d4211fedec9c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_optimization__guide_core_optimization__guide__util.cc
@@ -0,0 +1,11 @@
+--- components/optimization_guide/core/optimization_guide_util.cc.orig 2022-10-01 07:40:07 UTC
++++ components/optimization_guide/core/optimization_guide_util.cc
+@@ -25,7 +25,7 @@ optimization_guide::proto::Platform GetPlatform() {
+ return optimization_guide::proto::PLATFORM_CHROMEOS;
+ #elif BUILDFLAG(IS_ANDROID)
+ return optimization_guide::proto::PLATFORM_ANDROID;
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return optimization_guide::proto::PLATFORM_LINUX;
+ #else
+ return optimization_guide::proto::PLATFORM_UNKNOWN;
diff --git a/www/ungoogled-chromium/files/patch-components_os__crypt_keyring__util__linux.cc b/www/ungoogled-chromium/files/patch-components_os__crypt_keyring__util__linux.cc
new file mode 100644
index 000000000000..924b5ad9cf95
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_os__crypt_keyring__util__linux.cc
@@ -0,0 +1,17 @@
+--- components/os_crypt/keyring_util_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ components/os_crypt/keyring_util_linux.cc
+@@ -68,12 +68,12 @@ bool GnomeKeyringLoader::LoadGnomeKeyring() {
+ if (keyring_loaded)
+ return true;
+
+- void* handle = dlopen("libgnome-keyring.so.0", RTLD_NOW | RTLD_GLOBAL);
++ void* handle = dlopen("libgnome-keyring.so", RTLD_NOW | RTLD_GLOBAL);
+ if (!handle) {
+ // We wanted to use GNOME Keyring, but we couldn't load it. Warn, because
+ // either the user asked for this, or we autodetected it incorrectly. (Or
+ // the system has broken libraries, which is also good to warn about.)
+- LOG(WARNING) << "Could not load libgnome-keyring.so.0: " << dlerror();
++ LOG(WARNING) << "Could not load libgnome-keyring.so: " << dlerror();
+ return false;
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-components_os__crypt_libsecret__util__linux.cc b/www/ungoogled-chromium/files/patch-components_os__crypt_libsecret__util__linux.cc
new file mode 100644
index 000000000000..c1580cd34c36
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_os__crypt_libsecret__util__linux.cc
@@ -0,0 +1,18 @@
+--- components/os_crypt/libsecret_util_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ components/os_crypt/libsecret_util_linux.cc
+@@ -102,13 +102,13 @@ bool LibsecretLoader::LoadLibsecret() {
+ if (libsecret_loaded_)
+ return true;
+
+- static void* handle = dlopen("libsecret-1.so.0", RTLD_NOW | RTLD_GLOBAL);
++ static void* handle = dlopen("libsecret-1.so", RTLD_NOW | RTLD_GLOBAL);
+ if (!handle) {
+ // We wanted to use libsecret, but we couldn't load it. Warn, because
+ // either the user asked for this, or we autodetected it incorrectly. (Or
+ // the system has broken libraries, which is also good to warn about.)
+ // TODO(crbug.com/607435): Channel this message to the user-facing log
+- VLOG(1) << "Could not load libsecret-1.so.0: " << dlerror();
++ VLOG(1) << "Could not load libsecret-1.so: " << dlerror();
+ return false;
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-components_os__crypt_os__crypt.h b/www/ungoogled-chromium/files/patch-components_os__crypt_os__crypt.h
new file mode 100644
index 000000000000..f1b85204420f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_os__crypt_os__crypt.h
@@ -0,0 +1,72 @@
+--- components/os_crypt/os_crypt.h.orig 2022-10-01 07:40:07 UTC
++++ components/os_crypt/os_crypt.h
+@@ -15,7 +15,7 @@
+ #include "build/build_config.h"
+ #include "build/chromecast_buildflags.h"
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ class KeyStorageLinux;
+ #endif // BUILDFLAG(IS_LINUX)
+
+@@ -24,7 +24,7 @@ class PrefRegistrySimple;
+ class PrefService;
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ namespace crypto {
+ class SymmetricKey;
+ }
+@@ -37,7 +37,7 @@ struct Config;
+ // Temporary interface due to OSCrypt refactor. See OSCryptImpl for descriptions
+ // of what each function does.
+ namespace OSCrypt {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ COMPONENT_EXPORT(OS_CRYPT)
+ void SetConfig(std::unique_ptr<os_crypt::Config> config);
+ #endif // BUILDFLAG(IS_LINUX)
+@@ -82,7 +82,7 @@ COMPONENT_EXPORT(OS_CRYPT) void UseMockKeyForTesting(b
+ COMPONENT_EXPORT(OS_CRYPT) void SetLegacyEncryptionForTesting(bool legacy);
+ COMPONENT_EXPORT(OS_CRYPT) void ResetStateForTesting();
+ #endif // BUILDFLAG(IS_WIN)
+-#if (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS))
++#if (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)) || BUILDFLAG(IS_BSD)
+ COMPONENT_EXPORT(OS_CRYPT)
+ void UseMockKeyStorageForTesting(
+ base::OnceCallback<std::unique_ptr<KeyStorageLinux>()>
+@@ -109,7 +109,7 @@ class COMPONENT_EXPORT(OS_CRYPT) OSCryptImpl {
+ // Returns singleton instance of OSCryptImpl.
+ static OSCryptImpl* GetInstance();
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Set the configuration of OSCryptImpl.
+ // This method, or SetRawEncryptionKey(), must be called before using
+ // EncryptString() and DecryptString().
+@@ -201,7 +201,7 @@ class COMPONENT_EXPORT(OS_CRYPT) OSCryptImpl {
+ void ResetStateForTesting();
+ #endif
+
+-#if (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS))
++#if (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)) || BUILDFLAG(IS_BSD)
+ // For unit testing purposes, inject methods to be used.
+ // |storage_provider_factory| provides the desired |KeyStorage|
+ // implementation. If the provider returns |nullptr|, a hardcoded password
+@@ -226,13 +226,13 @@ class COMPONENT_EXPORT(OS_CRYPT) OSCryptImpl {
+ crypto::SymmetricKey* GetEncryptionKey();
+ #endif // BUILDFLAG(IS_APPLE)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ // This lock is used to make the GetEncryptionKey and
+ // GetRawEncryptionKey methods thread-safe.
+ static base::Lock& GetLock();
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_APPLE)
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Create the KeyStorage. Will be null if no service is found. A Config must
+ // be set before every call to this method.
+ std::unique_ptr<KeyStorageLinux> CreateKeyStorage();
diff --git a/www/ungoogled-chromium/files/patch-components_paint__preview_browser_paint__preview__client.cc b/www/ungoogled-chromium/files/patch-components_paint__preview_browser_paint__preview__client.cc
new file mode 100644
index 000000000000..a919f1758101
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_paint__preview_browser_paint__preview__client.cc
@@ -0,0 +1,13 @@
+--- components/paint_preview/browser/paint_preview_client.cc.orig 2022-10-01 07:40:07 UTC
++++ components/paint_preview/browser/paint_preview_client.cc
+@@ -309,8 +309,8 @@ void PaintPreviewClient::CapturePaintPreview(
+ metadata->set_url(url.spec());
+ metadata->set_version(kPaintPreviewVersion);
+ auto* chromeVersion = metadata->mutable_chrome_version();
+- chromeVersion->set_major(CHROME_VERSION_MAJOR);
+- chromeVersion->set_minor(CHROME_VERSION_MINOR);
++ chromeVersion->set_gmajor(CHROME_VERSION_MAJOR);
++ chromeVersion->set_gminor(CHROME_VERSION_MINOR);
+ chromeVersion->set_build(CHROME_VERSION_BUILD);
+ chromeVersion->set_patch(CHROME_VERSION_PATCH);
+ document_data.callback = std::move(callback);
diff --git a/www/ungoogled-chromium/files/patch-components_paint__preview_browser_paint__preview__client__unittest.cc b/www/ungoogled-chromium/files/patch-components_paint__preview_browser_paint__preview__client__unittest.cc
new file mode 100644
index 000000000000..4a711056abdd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_paint__preview_browser_paint__preview__client__unittest.cc
@@ -0,0 +1,13 @@
+--- components/paint_preview/browser/paint_preview_client_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ components/paint_preview/browser/paint_preview_client_unittest.cc
+@@ -171,8 +171,8 @@ TEST_P(PaintPreviewClientRenderViewHostTest, CaptureMa
+ metadata->set_url(expected_url.spec());
+ metadata->set_version(kPaintPreviewVersion);
+ auto* chromeVersion = metadata->mutable_chrome_version();
+- chromeVersion->set_major(CHROME_VERSION_MAJOR);
+- chromeVersion->set_minor(CHROME_VERSION_MINOR);
++ chromeVersion->set_gmajor(CHROME_VERSION_MAJOR);
++ chromeVersion->set_gminor(CHROME_VERSION_MINOR);
+ chromeVersion->set_build(CHROME_VERSION_BUILD);
+ chromeVersion->set_patch(CHROME_VERSION_PATCH);
+ PaintPreviewFrameProto* main_frame = expected_proto.mutable_root_frame();
diff --git a/www/ungoogled-chromium/files/patch-components_paint__preview_common_proto_paint__preview.proto b/www/ungoogled-chromium/files/patch-components_paint__preview_common_proto_paint__preview.proto
new file mode 100644
index 000000000000..eb79178c7cc4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_paint__preview_common_proto_paint__preview.proto
@@ -0,0 +1,13 @@
+--- components/paint_preview/common/proto/paint_preview.proto.orig 2022-10-01 07:40:07 UTC
++++ components/paint_preview/common/proto/paint_preview.proto
+@@ -82,8 +82,8 @@ message PaintPreviewFrameProto {
+ // Stores Chrome version.
+ // NEXT_TAG = 5
+ message ChromeVersionProto {
+- optional uint64 major = 1;
+- optional uint64 minor = 2;
++ optional uint64 gmajor = 1;
++ optional uint64 gminor = 2;
+ optional uint64 build = 3;
+ optional uint64 patch = 4;
+ }
diff --git a/www/ungoogled-chromium/files/patch-components_paint__preview_player_player__compositor__delegate.cc b/www/ungoogled-chromium/files/patch-components_paint__preview_player_player__compositor__delegate.cc
new file mode 100644
index 000000000000..fe792ef11614
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_paint__preview_player_player__compositor__delegate.cc
@@ -0,0 +1,13 @@
+--- components/paint_preview/player/player_compositor_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ components/paint_preview/player/player_compositor_delegate.cc
+@@ -444,8 +444,8 @@ void PlayerCompositorDelegate::ValidateProtoAndLoadAXT
+ // use the AXTreeUpdate.
+ auto chrome_version = capture_result_->proto.metadata().chrome_version();
+ if (capture_result_->proto.metadata().has_chrome_version() &&
+- chrome_version.major() == CHROME_VERSION_MAJOR &&
+- chrome_version.minor() == CHROME_VERSION_MINOR &&
++ chrome_version.gmajor() == CHROME_VERSION_MAJOR &&
++ chrome_version.gminor() == CHROME_VERSION_MINOR &&
+ chrome_version.build() == CHROME_VERSION_BUILD &&
+ chrome_version.patch() == CHROME_VERSION_PATCH) {
+ paint_preview_service_->GetFileMixin()->GetAXTreeUpdate(
diff --git a/www/ungoogled-chromium/files/patch-components_password__manager_core_browser_login__database.cc b/www/ungoogled-chromium/files/patch-components_password__manager_core_browser_login__database.cc
new file mode 100644
index 000000000000..6b086ba64c3e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_password__manager_core_browser_login__database.cc
@@ -0,0 +1,29 @@
+--- components/password_manager/core/browser/login_database.cc.orig 2022-10-01 07:40:07 UTC
++++ components/password_manager/core/browser/login_database.cc
+@@ -731,7 +731,7 @@ std::string GeneratePlaceholders(size_t count) {
+ return result;
+ }
+
+-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Fills |form| with necessary data required to be removed from the database
+ // and returns it.
+ PasswordForm GetFormForRemoval(sql::Statement& statement) {
+@@ -748,7 +748,7 @@ PasswordForm GetFormForRemoval(sql::Statement& stateme
+ // Whether we should try to return the decryptable passwords while the
+ // encryption service fails for some passwords.
+ bool ShouldReturnPartialPasswords() {
+-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return base::FeatureList::IsEnabled(features::kSkipUndecryptablePasswords);
+ #else
+ return false;
+@@ -1577,7 +1577,7 @@ bool LoginDatabase::DeleteAndRecreateDatabaseFile() {
+ }
+
+ DatabaseCleanupResult LoginDatabase::DeleteUndecryptableLogins() {
+-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ TRACE_EVENT0("passwords", "LoginDatabase::DeleteUndecryptableLogins");
+ // If the Keychain in MacOS or the real secret key in Linux is unavailable,
+ // don't delete any logins.
diff --git a/www/ungoogled-chromium/files/patch-components_password__manager_core_browser_login__database__unittest.cc b/www/ungoogled-chromium/files/patch-components_password__manager_core_browser_login__database__unittest.cc
new file mode 100644
index 000000000000..e994089de766
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_password__manager_core_browser_login__database__unittest.cc
@@ -0,0 +1,29 @@
+--- components/password_manager/core/browser/login_database_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ components/password_manager/core/browser/login_database_unittest.cc
+@@ -2092,7 +2092,7 @@ TEST_F(LoginDatabaseUndecryptableLoginsTest, DeleteUnd
+ base::HistogramTester histogram_tester;
+ ASSERT_TRUE(db.Init());
+
+-#if BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS))
++#if BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)) || BUILDFLAG(IS_BSD)
+ // Make sure that we can't get any logins when database is corrupted.
+ // Disabling the checks in chromecast because encryption is unavailable.
+ std::vector<std::unique_ptr<PasswordForm>> result;
+@@ -2118,7 +2118,7 @@ TEST_F(LoginDatabaseUndecryptableLoginsTest, DeleteUnd
+ #endif
+
+ // Check histograms.
+-#if BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS))
++#if BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)) || BUILDFLAG(IS_BSD)
+ histogram_tester.ExpectUniqueSample("PasswordManager.CleanedUpPasswords", 2,
+ 1);
+ histogram_tester.ExpectUniqueSample(
+@@ -2170,7 +2170,7 @@ TEST_F(LoginDatabaseUndecryptableLoginsTest, KeychainL
+ }
+ #endif // BUILDFLAG(IS_MAC)
+
+-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Test getting auto sign in logins when there are undecryptable ones
+ TEST_F(LoginDatabaseUndecryptableLoginsTest, GetAutoSignInLogins) {
+ PrimaryKeyToFormMap key_to_form_map;
diff --git a/www/ungoogled-chromium/files/patch-components_password__manager_core_browser_sync_password__sync__bridge.cc b/www/ungoogled-chromium/files/patch-components_password__manager_core_browser_sync_password__sync__bridge.cc
new file mode 100644
index 000000000000..b7776d7069d2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_password__manager_core_browser_sync_password__sync__bridge.cc
@@ -0,0 +1,20 @@
+--- components/password_manager/core/browser/sync/password_sync_bridge.cc.orig 2022-10-01 07:40:07 UTC
++++ components/password_manager/core/browser/sync/password_sync_bridge.cc
+@@ -177,7 +177,7 @@ bool ShouldRecoverPasswordsDuringMerge() {
+ // Delete the local undecryptable copy when this is MacOS only.
+ #if BUILDFLAG(IS_MAC)
+ return true;
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return base::FeatureList::IsEnabled(
+ features::kSyncUndecryptablePasswordsLinux);
+ #else
+@@ -186,7 +186,7 @@ bool ShouldRecoverPasswordsDuringMerge() {
+ }
+
+ bool ShouldCleanSyncMetadataDuringStartupWhenDecryptionFails() {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return ShouldRecoverPasswordsDuringMerge() &&
+ base::FeatureList::IsEnabled(
+ features::kForceInitialSyncWhenDecryptionFails);
diff --git a/www/ungoogled-chromium/files/patch-components_password__manager_core_common_password__manager__features.cc b/www/ungoogled-chromium/files/patch-components_password__manager_core_common_password__manager__features.cc
new file mode 100644
index 000000000000..7dbd032149eb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_password__manager_core_common_password__manager__features.cc
@@ -0,0 +1,28 @@
+--- components/password_manager/core/common/password_manager_features.cc.orig 2022-10-01 07:40:07 UTC
++++ components/password_manager/core/common/password_manager_features.cc
+@@ -83,7 +83,7 @@ const base::Feature kFillingAcrossAffiliatedWebsites{
+ const base::Feature kFillOnAccountSelect = {"fill-on-account-select",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // When enabled, initial sync will be forced during startup if the password
+ // store has encryption service failures.
+ const base::Feature kForceInitialSyncWhenDecryptionFails = {
+@@ -189,14 +189,14 @@ const base::Feature kRecoverFromNeverSaveAndroid = {
+ const base::Feature kPasswordStrengthIndicator = {
+ "PasswordStrengthIndicator", base::FEATURE_DISABLED_BY_DEFAULT};
+
+-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Displays at least the decryptable and never saved logins in the password
+ // manager
+ const base::Feature kSkipUndecryptablePasswords = {
+ "SkipUndecryptablePasswords", base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // When enabled, all undecryptable passwords are deleted from the local database
+ // during initial sync flow.
+ const base::Feature kSyncUndecryptablePasswordsLinux = {
diff --git a/www/ungoogled-chromium/files/patch-components_password__manager_core_common_password__manager__features.h b/www/ungoogled-chromium/files/patch-components_password__manager_core_common_password__manager__features.h
new file mode 100644
index 000000000000..78ca670c8d79
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_password__manager_core_common_password__manager__features.h
@@ -0,0 +1,24 @@
+--- components/password_manager/core/common/password_manager_features.h.orig 2022-10-01 07:40:07 UTC
++++ components/password_manager/core/common/password_manager_features.h
+@@ -37,7 +37,7 @@ extern const base::Feature KEnablePasswordGenerationFo
+ extern const base::Feature kEnablePasswordManagerWithinFencedFrame;
+ extern const base::Feature kFillingAcrossAffiliatedWebsites;
+ extern const base::Feature kFillOnAccountSelect;
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ extern const base::Feature kForceInitialSyncWhenDecryptionFails;
+ #endif
+ extern const base::Feature kInferConfirmationPasswordField;
+@@ -63,10 +63,10 @@ extern const base::Feature kPasswordReuseDetectionEnab
+ extern const base::Feature kPasswordScriptsFetching;
+ extern const base::Feature kPasswordStrengthIndicator;
+ extern const base::Feature kRecoverFromNeverSaveAndroid;
+-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ extern const base::Feature kSkipUndecryptablePasswords;
+ #endif
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ extern const base::Feature kSyncUndecryptablePasswordsLinux;
+ #endif
+ #if BUILDFLAG(IS_ANDROID)
diff --git a/www/ungoogled-chromium/files/patch-components_performance__manager_public_features.h b/www/ungoogled-chromium/files/patch-components_performance__manager_public_features.h
new file mode 100644
index 000000000000..313517a226cf
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_performance__manager_public_features.h
@@ -0,0 +1,11 @@
+--- components/performance_manager/public/features.h.orig 2022-10-01 07:40:07 UTC
++++ components/performance_manager/public/features.h
+@@ -20,7 +20,7 @@ extern const base::Feature kRunOnMainThread;
+
+ #if !BUILDFLAG(IS_ANDROID)
+
+-#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #define URGENT_DISCARDING_FROM_PERFORMANCE_MANAGER() false
+ #else
+ #define URGENT_DISCARDING_FROM_PERFORMANCE_MANAGER() true
diff --git a/www/ungoogled-chromium/files/patch-components_permissions_prediction__service_prediction__common.cc b/www/ungoogled-chromium/files/patch-components_permissions_prediction__service_prediction__common.cc
new file mode 100644
index 000000000000..d655e13e6739
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_permissions_prediction__service_prediction__common.cc
@@ -0,0 +1,20 @@
+--- components/permissions/prediction_service/prediction_common.cc.orig 2022-10-01 07:40:07 UTC
++++ components/permissions/prediction_service/prediction_common.cc
+@@ -33,7 +33,7 @@ int BucketizeValue(int count) {
+
+ ClientFeatures_Platform GetCurrentPlatformProto() {
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ return permissions::ClientFeatures_Platform_PLATFORM_DESKTOP;
+ #elif BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
+ return permissions::ClientFeatures_Platform_PLATFORM_MOBILE;
+@@ -44,7 +44,7 @@ ClientFeatures_Platform GetCurrentPlatformProto() {
+
+ ClientFeatures_PlatformEnum GetCurrentPlatformEnumProto() {
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ return permissions::ClientFeatures_PlatformEnum_PLATFORM_DESKTOP_V2;
+ #elif BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
+ return permissions::ClientFeatures_PlatformEnum_PLATFORM_MOBILE_V2;
diff --git a/www/ungoogled-chromium/files/patch-components_policy_core_browser_policy__pref__mapping__test.cc b/www/ungoogled-chromium/files/patch-components_policy_core_browser_policy__pref__mapping__test.cc
new file mode 100644
index 000000000000..871cd617c130
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_policy_core_browser_policy__pref__mapping__test.cc
@@ -0,0 +1,11 @@
+--- components/policy/core/browser/policy_pref_mapping_test.cc.orig 2022-10-01 07:40:07 UTC
++++ components/policy/core/browser/policy_pref_mapping_test.cc
+@@ -338,7 +338,7 @@ class PolicyTestCase {
+ const std::string os("chromeos_lacros");
+ #elif BUILDFLAG(IS_IOS)
+ const std::string os("ios");
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const std::string os("linux");
+ #elif BUILDFLAG(IS_MAC)
+ const std::string os("mac");
diff --git a/www/ungoogled-chromium/files/patch-components_policy_core_common_cloud_cloud__policy__client.cc b/www/ungoogled-chromium/files/patch-components_policy_core_common_cloud_cloud__policy__client.cc
new file mode 100644
index 000000000000..9ec77c61a2c4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_policy_core_common_cloud_cloud__policy__client.cc
@@ -0,0 +1,11 @@
+--- components/policy/core/common/cloud/cloud_policy_client.cc.orig 2022-10-01 07:40:07 UTC
++++ components/policy/core/common/cloud/cloud_policy_client.cc
+@@ -447,7 +447,7 @@ void CloudPolicyClient::FetchPolicy() {
+ fetch_request->set_invalidation_payload(invalidation_payload_);
+ }
+ }
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Only set browser device identifier for CBCM Chrome cloud policy on
+ // desktop.
+ if (type_to_fetch.first ==
diff --git a/www/ungoogled-chromium/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc b/www/ungoogled-chromium/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
new file mode 100644
index 000000000000..2504a7ecdb0e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
@@ -0,0 +1,55 @@
+--- components/policy/core/common/cloud/cloud_policy_util.cc.orig 2022-10-01 07:40:07 UTC
++++ components/policy/core/common/cloud/cloud_policy_util.cc
+@@ -20,7 +20,7 @@
+ #endif
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || \
+- BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ #include <pwd.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -35,10 +35,15 @@
+ #import <SystemConfiguration/SCDynamicStoreCopySpecific.h>
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ #include <limits.h> // For HOST_NAME_MAX
+ #endif
+
++#if BUILDFLAG(IS_FREEBSD)
++#include <sys/param.h>
++#define HOST_NAME_MAX MAXHOSTNAMELEN
++#endif
++
+ #include <utility>
+
+ #include "base/check.h"
+@@ -82,7 +87,7 @@ namespace em = enterprise_management;
+
+ std::string GetMachineName() {
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ char hostname[HOST_NAME_MAX];
+ if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success.
+ return hostname;
+@@ -140,7 +145,7 @@ std::string GetMachineName() {
+
+ std::string GetOSVersion() {
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_APPLE) || \
+- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ return base::SysInfo::OperatingSystemVersion();
+ #elif BUILDFLAG(IS_WIN)
+ base::win::OSInfo::VersionNumber version_number =
+@@ -163,7 +168,7 @@ std::string GetOSArchitecture() {
+ }
+
+ std::string GetOSUsername() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ struct passwd* creds = getpwuid(getuid());
+ if (!creds || !creds->pw_name)
+ return std::string();
diff --git a/www/ungoogled-chromium/files/patch-components_policy_resources_policy__templates.json b/www/ungoogled-chromium/files/patch-components_policy_resources_policy__templates.json
new file mode 100644
index 000000000000..fed8532f39e2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_policy_resources_policy__templates.json
@@ -0,0 +1,200 @@
+--- components/policy/resources/policy_templates.json.orig 2022-10-01 07:40:07 UTC
++++ components/policy/resources/policy_templates.json
+@@ -1446,7 +1446,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'pastarmovj@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win7:11-', 'chrome.mac:11-', 'chrome.linux:11-'],
++ 'supported_on': ['chrome.win7:11-', 'chrome.mac:11-', 'chrome.linux:11-', 'chrome.openbsd:11-', 'chrome.freebsd:11-'],
+ 'future_on': ['fuchsia'],
+ 'features': {
+ 'dynamic_refresh': True,
+@@ -2596,7 +2596,7 @@
+ 'owners': ['file://remoting/OWNERS', 'jamiewalch@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-'],
++ 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome.openbsd:25-', 'chrome.freebsd:25-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -4386,7 +4386,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'pastarmovj@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:57-', 'chrome.mac:88-', 'chrome.linux:88-'],
++ 'supported_on': ['chrome.win:57-', 'chrome.mac:88-', 'chrome.linux:88-', 'chrome.openbsd:88-', 'chrome.freebsd:88-'],
+ 'future_on': ['fuchsia'],
+ 'features': {
+ 'dynamic_refresh': False,
+@@ -4416,7 +4416,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'pastarmovj@ch40m1um.qjz9zk'],
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.win:57-', 'chrome.mac:88-', 'chrome.linux:88-'],
++ 'supported_on': ['chrome.win:57-', 'chrome.mac:88-', 'chrome.linux:88-', 'chrome.openbsd:88-', 'chrome.freebsd:88-'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -5400,7 +5400,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'rsorokin@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:74-','chrome.mac:74-','chrome_os:74-'],
++ 'supported_on': ['chrome.linux:74-','chrome.mac:74-','chrome_os:74-','chrome.openbsd:74-','chrome.freebsd:74-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -5462,7 +5462,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'rsorokin@ch40m1um.qjz9zk'],
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.linux:9-'],
++ 'supported_on': ['chrome.linux:9-','chrome.openbsd:9-','chrome.freebsd:9-'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -5529,7 +5529,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'rsorokin@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-'],
++ 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-','chrome.openbsd:63-','chrome.freebsd:63-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -11143,7 +11143,7 @@
+ 'owners': ['file://net/cert/OWNERS', 'rsleevi@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-'],
++ 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-', 'chrome.openbsd:30-', 'chrome.freebsd:30-'],
+ 'future_on': ['fuchsia'],
+ 'features': {
+ 'dynamic_refresh': True,
+@@ -11268,7 +11268,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'pmarko@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome_os:77-83', 'chrome.linux:79-83', 'chrome.mac:83-'],
++ 'supported_on': ['chrome_os:77-83', 'chrome.linux:79-83', 'chrome.mac:83-', 'chrome.openbsd:79-83', 'chrome.freebsd:79-83'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -13532,7 +13532,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'pmarko@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:19-', 'chrome.linux:19-'],
++ 'supported_on': ['chrome.win:19-', 'chrome.linux:19-', 'chrome.openbsd:19-', 'chrome.freebsd:19-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -14402,7 +14402,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'bartfab@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-'],
++ 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-', 'chrome.openbsd:31-', 'chrome.freebsd:31-'],
+ 'future_on': ['fuchsia'],
+ 'features': {
+ 'dynamic_refresh': True,
+@@ -17239,7 +17239,7 @@
+ 'deprecated': True,
+ 'schema': { 'type': 'boolean' },
+ 'supported_on': ['chrome.win:64-', 'chrome.mac:66-', 'android:65-'],
+- 'future_on': ['chrome.linux'],
++ 'future_on': ['chrome.linux','chrome.openbsd','chrome.freebsd'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -21470,7 +21470,7 @@
+ 'items': { 'type': 'string' }
+ },
+ # Spell checking is provided by macOS, so can't be controlled on Mac.
+- 'supported_on': ['chrome.win:65-', 'chrome.linux:65-', 'chrome_os:65-'],
++ 'supported_on': ['chrome.win:65-', 'chrome.linux:65-', 'chrome_os:65-', 'chrome.openbsd:65-', 'chrome.freebsd:65-'],
+ 'features': {
+ 'can_be_recommended': False,
+ 'dynamic_refresh': True,
+@@ -21501,7 +21501,7 @@
+ 'items': { 'type': 'string' }
+ },
+ # Spell checking is provided by macOS, so can't be controlled on Mac.
+- 'supported_on': ['chrome.win:75-100', 'chrome.linux:75-100', 'chrome_os:75-100'],
++ 'supported_on': ['chrome.win:75-100', 'chrome.linux:75-100', 'chrome_os:75-100', 'chrome.openbsd:75-100', 'chrome.freebsd:75-100'],
+ 'deprecated': True,
+ 'features': {
+ 'can_be_recommended': False,
+@@ -21535,7 +21535,7 @@
+ 'items': { 'type': 'string' }
+ },
+ # Spell checking is provided by macOS, so can't be controlled on Mac.
+- 'supported_on': ['chrome.win:86-', 'chrome.linux:86-', 'chrome_os:86-'],
++ 'supported_on': ['chrome.win:86-', 'chrome.linux:86-', 'chrome_os:86-', 'chrome.openbsd:86-', 'chrome.freebsd:86-'],
+ 'features': {
+ 'can_be_recommended': False,
+ 'dynamic_refresh': True,
+@@ -22319,7 +22319,7 @@
+ 'owners': ['fbeaufort@ch40m1um.qjz9zk', 'beccahughes@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:66-', 'chrome.linux:66-', 'chrome.mac:66-', 'chrome_os:66-'],
++ 'supported_on': ['chrome.win:66-', 'chrome.linux:66-', 'chrome.mac:66-', 'chrome_os:66-', 'chrome.openbsd:66-', 'chrome.freebsd:66-'],
+ 'future_on': ['fuchsia'],
+ 'features': {
+ 'dynamic_refresh': True,
+@@ -27015,7 +27015,7 @@
+ 'owners': ['file://services/audio/OWNERS', 'dalecurtis@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:79-', 'chrome.linux:79-', 'chrome.mac:79-'],
++ 'supported_on': ['chrome.win:79-', 'chrome.linux:79-', 'chrome.mac:79-', 'chrome.openbsd:79-', 'chrome.freebsd:79-'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -28415,7 +28415,7 @@ If this policy is left unset, privacy screen is disabl
+ 'owners': ['file://chrome/browser/notifications/OWNERS', 'knollr@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:83-100'],
++ 'supported_on': ['chrome.linux:83-100','chrome.openbsd:83-100','chrome.freebsd:83-100'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
+@@ -28439,7 +28439,7 @@ If set to False, <ph name="PRODUCT_NAME">$1<ex>Google
+ 'owners': ['file://chrome/browser/notifications/OWNERS'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:90-'],
++ 'supported_on': ['chrome.linux:90-','chrome.openbsd:90-','chrome.freebsd:90-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
+@@ -29549,7 +29549,7 @@ If you disable this policy, web page scrolling to spec
+ 'owners': ['asumaneev@9oo91e.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:91-92', 'chrome_os:91-'],
++ 'supported_on': ['chrome.linux:91-92', 'chrome_os:91-', 'chrome.openbsd:91-', 'chrome.freebsd:91-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -30851,7 +30851,7 @@ This is the same behavior as <ph name="POLICY_VALUE_PR
+ },
+ ],
+ 'default': True,
+- 'supported_on': ['chrome.win:93-', 'chrome.linux:93-', 'chrome.mac:93-'],
++ 'supported_on': ['chrome.win:93-', 'chrome.linux:93-', 'chrome.mac:93-', 'chrome.openbsd:93-', 'chrome.freebsd:93-'],
+ 'future_on': ['fuchsia'],
+ 'features': {
+ 'dynamic_refresh': True,
+@@ -30985,7 +30985,7 @@ This is the same behavior as <ph name="POLICY_VALUE_PR
+ 'owners': ['mattm@ch40m1um.qjz9zk'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:104-', 'chrome.mac:104-', 'chrome.linux:104-'],
++ 'supported_on': ['chrome.win:104-', 'chrome.mac:104-', 'chrome.linux:104-', 'chrome.openbsd:104-', 'chrome.freebsd:104-'],
+ 'future_on': ['fuchsia'],
+ 'features': {
+ 'dynamic_refresh': True,
diff --git a/www/ungoogled-chromium/files/patch-components_policy_tools_generate__policy__source.py b/www/ungoogled-chromium/files/patch-components_policy_tools_generate__policy__source.py
new file mode 100644
index 000000000000..f062ca5f186e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_policy_tools_generate__policy__source.py
@@ -0,0 +1,14 @@
+--- components/policy/tools/generate_policy_source.py.orig 2022-10-01 07:40:07 UTC
++++ components/policy/tools/generate_policy_source.py
+@@ -50,8 +50,10 @@ PLATFORM_STRINGS = {
+ 'fuchsia': ['fuchsia'],
+ 'chrome.win': ['win'],
+ 'chrome.linux': ['linux'],
++ 'chrome.openbsd': ['openbsd'],
++ 'chrome.freebsd': ['freebsd'],
+ 'chrome.mac': ['mac'],
+- 'chrome.*': ['win', 'mac', 'linux'],
++ 'chrome.*': ['win', 'mac', 'linux', 'openbsd', 'freebsd'],
+ 'chrome.win7': ['win'],
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-components_safe__browsing_content_common_file__type__policies__unittest.cc b/www/ungoogled-chromium/files/patch-components_safe__browsing_content_common_file__type__policies__unittest.cc
new file mode 100644
index 000000000000..5e39baf441ab
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_safe__browsing_content_common_file__type__policies__unittest.cc
@@ -0,0 +1,11 @@
+--- components/safe_browsing/content/common/file_type_policies_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ components/safe_browsing/content/common/file_type_policies_unittest.cc
+@@ -139,7 +139,7 @@ TEST_F(FileTypePoliciesTest, UnpackResourceBundle) {
+ EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting());
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE,
+ file_type.platform_settings(0).danger_level());
+ EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN,
diff --git a/www/ungoogled-chromium/files/patch-components_safe__browsing_content_resources_gen__file__type__proto.py b/www/ungoogled-chromium/files/patch-components_safe__browsing_content_resources_gen__file__type__proto.py
new file mode 100644
index 000000000000..1b374397d17c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_safe__browsing_content_resources_gen__file__type__proto.py
@@ -0,0 +1,19 @@
+--- components/safe_browsing/content/resources/gen_file_type_proto.py.orig 2022-10-01 07:40:07 UTC
++++ components/safe_browsing/content/resources/gen_file_type_proto.py
+@@ -35,6 +35,7 @@ def PlatformTypes():
+ download_file_types_pb2.DownloadFileType.PLATFORM_CHROME_OS,
+ "fuchsia": download_file_types_pb2.DownloadFileType.PLATFORM_FUCHSIA,
+ "linux": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
++ "openbsd": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
+ "mac": download_file_types_pb2.DownloadFileType.PLATFORM_MAC,
+ "win": download_file_types_pb2.DownloadFileType.PLATFORM_WINDOWS,
+ }
+@@ -179,7 +180,7 @@ class DownloadFileTypeProtoGenerator(BinaryProtoGenera
+ '-t',
+ '--type',
+ help='The platform type. One of android, chromeos, ' +
+- 'linux, mac, win')
++ 'linux, mac, win, openbsd')
+
+ def AddExtraCommandLineArgsForVirtualEnvRun(self, opts, command):
+ if opts.type is not None:
diff --git a/www/ungoogled-chromium/files/patch-components_safe__browsing_core_browser_db_v4__protocol__manager__util.cc b/www/ungoogled-chromium/files/patch-components_safe__browsing_core_browser_db_v4__protocol__manager__util.cc
new file mode 100644
index 000000000000..525ac7d1c7c2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_safe__browsing_core_browser_db_v4__protocol__manager__util.cc
@@ -0,0 +1,11 @@
+--- components/safe_browsing/core/browser/db/v4_protocol_manager_util.cc.orig 2022-10-01 07:40:07 UTC
++++ components/safe_browsing/core/browser/db/v4_protocol_manager_util.cc
+@@ -113,7 +113,7 @@ std::ostream& operator<<(std::ostream& os, const ListI
+ PlatformType GetCurrentPlatformType() {
+ #if BUILDFLAG(IS_WIN)
+ return WINDOWS_PLATFORM;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return LINUX_PLATFORM;
+ #elif BUILDFLAG(IS_IOS)
+ return IOS_PLATFORM;
diff --git a/www/ungoogled-chromium/files/patch-components_safe__browsing_core_browser_realtime_url__lookup__service__base.cc b/www/ungoogled-chromium/files/patch-components_safe__browsing_core_browser_realtime_url__lookup__service__base.cc
new file mode 100644
index 000000000000..72560abd432c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_safe__browsing_core_browser_realtime_url__lookup__service__base.cc
@@ -0,0 +1,11 @@
+--- components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc.orig 2022-10-01 07:40:07 UTC
++++ components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc
+@@ -108,7 +108,7 @@ RTLookupRequest::OSType GetRTLookupRequestOSType() {
+ return RTLookupRequest::OS_TYPE_FUCHSIA;
+ #elif BUILDFLAG(IS_IOS)
+ return RTLookupRequest::OS_TYPE_IOS;
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return RTLookupRequest::OS_TYPE_LINUX;
+ #elif BUILDFLAG(IS_MAC)
+ return RTLookupRequest::OS_TYPE_MAC;
diff --git a/www/ungoogled-chromium/files/patch-components_security__interstitials_content_utils.cc b/www/ungoogled-chromium/files/patch-components_security__interstitials_content_utils.cc
new file mode 100644
index 000000000000..bcdd6a0d1641
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_security__interstitials_content_utils.cc
@@ -0,0 +1,11 @@
+--- components/security_interstitials/content/utils.cc.orig 2022-10-01 07:40:07 UTC
++++ components/security_interstitials/content/utils.cc
+@@ -34,7 +34,7 @@ void LaunchDateAndTimeSettings() {
+ #if BUILDFLAG(IS_ANDROID)
+ JNIEnv* env = base::android::AttachCurrentThread();
+ Java_DateAndTimeSettingsHelper_openDateAndTimeSettings(env);
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ struct ClockCommand {
+ const char* const pathname;
+ const char* const argument;
diff --git a/www/ungoogled-chromium/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc b/www/ungoogled-chromium/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc
new file mode 100644
index 000000000000..89910e39fa81
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc
@@ -0,0 +1,29 @@
+--- components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.cc
+@@ -19,7 +19,7 @@
+
+ #if BUILDFLAG(IS_WIN)
+ #include "content/public/child/dwrite_font_proxy_init_win.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #endif
+
+@@ -64,7 +64,7 @@ PaintPreviewCompositorCollectionImpl::PaintPreviewComp
+ // Initialize font access for Skia.
+ #if BUILDFLAG(IS_WIN)
+ content::InitializeDWriteFontProxy();
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ mojo::PendingRemote<font_service::mojom::FontService> font_service;
+ content::UtilityThread::Get()->BindHostReceiver(
+ font_service.InitWithNewPipeAndPassReceiver());
+@@ -87,7 +87,7 @@ PaintPreviewCompositorCollectionImpl::PaintPreviewComp
+ base::BindOnce([] { SkFontMgr::RefDefault(); }));
+
+ // Sanity check that fonts are working.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // No WebSandbox is provided on Linux so the local fonts aren't accessible.
+ // This is fine since since the subsetted fonts are provided in the SkPicture.
+ // However, we still need to check that the SkFontMgr starts as it is used by
diff --git a/www/ungoogled-chromium/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h b/www/ungoogled-chromium/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h
new file mode 100644
index 000000000000..1499ae4d82a2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h
@@ -0,0 +1,20 @@
+--- components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.h.orig 2022-10-01 07:40:07 UTC
++++ components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.h
+@@ -21,7 +21,7 @@
+ #include "mojo/public/cpp/bindings/pending_receiver.h"
+ #include "mojo/public/cpp/bindings/receiver.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "third_party/skia/include/core/SkRefCnt.h"
+ #endif
+@@ -73,7 +73,7 @@ class PaintPreviewCompositorCollectionImpl
+ std::unique_ptr<PaintPreviewCompositorImpl>>
+ compositors_;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.cc b/www/ungoogled-chromium/files/patch-components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..28a811034ca0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.cc
@@ -0,0 +1,18 @@
+--- components/services/screen_ai/sandbox/screen_ai_sandbox_hook_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ components/services/screen_ai/sandbox/screen_ai_sandbox_hook_linux.cc
+@@ -36,6 +36,7 @@ bool ScreenAIPreSandboxHook(sandbox::policy::SandboxLi
+ }
+ screen_ai::StoreComponentBinaryPath(library_path);
+
++#if !BUILDFLAG(IS_BSD)
+ auto* instance = sandbox::policy::SandboxLinux::GetInstance();
+
+ std::vector<BrokerFilePermission> permissions{
+@@ -59,6 +60,7 @@ bool ScreenAIPreSandboxHook(sandbox::policy::SandboxLi
+ sandbox::syscall_broker::COMMAND_OPEN}),
+ permissions, sandbox::policy::SandboxLinux::PreSandboxHook(), options);
+ instance->EngageNamespaceSandboxIfPossible();
++#endif
+
+ return true;
+ }
diff --git a/www/ungoogled-chromium/files/patch-components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.h b/www/ungoogled-chromium/files/patch-components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.h
new file mode 100644
index 000000000000..69f6c508cfc3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.h
@@ -0,0 +1,16 @@
+--- components/services/screen_ai/sandbox/screen_ai_sandbox_hook_linux.h.orig 2022-10-01 07:40:07 UTC
++++ components/services/screen_ai/sandbox/screen_ai_sandbox_hook_linux.h
+@@ -5,7 +5,13 @@
+ #ifndef COMPONENTS_SERVICES_SCREEN_AI_SANDBOX_SCREEN_AI_SANDBOX_HOOK_LINUX_H_
+ #define COMPONENTS_SERVICES_SCREEN_AI_SANDBOX_SCREEN_AI_SANDBOX_HOOK_LINUX_H_
+
++#include "build/build_config.h"
++
++#if BUILDFLAG(IS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#else
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+
+ namespace screen_ai {
+
diff --git a/www/ungoogled-chromium/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc b/www/ungoogled-chromium/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc
new file mode 100644
index 000000000000..97fcf242cc5d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc
@@ -0,0 +1,11 @@
+--- components/startup_metric_utils/browser/startup_metric_utils.cc.orig 2022-10-01 07:40:07 UTC
++++ components/startup_metric_utils/browser/startup_metric_utils.cc
+@@ -311,7 +311,7 @@ base::TimeTicks StartupTimeToTimeTicks(base::Time time
+ // Enabling this logic on OS X causes a significant performance regression.
+ // TODO(crbug.com/601270): Remove IS_APPLE ifdef once priority changes are
+ // ignored on Mac main thread.
+-#if !BUILDFLAG(IS_APPLE)
++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD)
+ static bool statics_initialized = false;
+ if (!statics_initialized) {
+ statics_initialized = true;
diff --git a/www/ungoogled-chromium/files/patch-components_storage__monitor_BUILD.gn b/www/ungoogled-chromium/files/patch-components_storage__monitor_BUILD.gn
new file mode 100644
index 000000000000..638902b77608
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_storage__monitor_BUILD.gn
@@ -0,0 +1,11 @@
+--- components/storage_monitor/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ components/storage_monitor/BUILD.gn
+@@ -175,7 +175,7 @@ source_set("unit_tests") {
+ "storage_monitor_chromeos_unittest.cc",
+ ]
+ }
+- } else if (is_linux || is_chromeos_lacros) {
++ } else if ((is_linux || is_chromeos_lacros) && !is_bsd) {
+ if (use_udev) {
+ sources += [ "storage_monitor_linux_unittest.cc" ]
+ }
diff --git a/www/ungoogled-chromium/files/patch-components_storage__monitor_removable__device__constants.cc b/www/ungoogled-chromium/files/patch-components_storage__monitor_removable__device__constants.cc
new file mode 100644
index 000000000000..934f6fc570fe
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_storage__monitor_removable__device__constants.cc
@@ -0,0 +1,11 @@
+--- components/storage_monitor/removable_device_constants.cc.orig 2022-10-01 07:40:07 UTC
++++ components/storage_monitor/removable_device_constants.cc
+@@ -10,7 +10,7 @@ namespace storage_monitor {
+ const char kFSUniqueIdPrefix[] = "UUID:";
+ const char kVendorModelSerialPrefix[] = "VendorModelSerial:";
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const char kVendorModelVolumeStoragePrefix[] = "VendorModelVolumeStorage:";
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-components_storage__monitor_removable__device__constants.h b/www/ungoogled-chromium/files/patch-components_storage__monitor_removable__device__constants.h
new file mode 100644
index 000000000000..4cc5ace87c78
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_storage__monitor_removable__device__constants.h
@@ -0,0 +1,11 @@
+--- components/storage_monitor/removable_device_constants.h.orig 2022-10-01 07:40:07 UTC
++++ components/storage_monitor/removable_device_constants.h
+@@ -14,7 +14,7 @@ namespace storage_monitor {
+ extern const char kFSUniqueIdPrefix[];
+ extern const char kVendorModelSerialPrefix[];
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ extern const char kVendorModelVolumeStoragePrefix[];
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-components_sync__device__info_local__device__info__util.cc b/www/ungoogled-chromium/files/patch-components_sync__device__info_local__device__info__util.cc
new file mode 100644
index 000000000000..f7b7a5d3b001
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_sync__device__info_local__device__info__util.cc
@@ -0,0 +1,11 @@
+--- components/sync_device_info/local_device_info_util.cc.orig 2022-10-01 07:40:07 UTC
++++ components/sync_device_info/local_device_info_util.cc
+@@ -78,7 +78,7 @@ void OnMachineStatisticsLoaded(LocalDeviceNameInfo* na
+ sync_pb::SyncEnums::DeviceType GetLocalDeviceType() {
+ #if BUILDFLAG(IS_CHROMEOS)
+ return sync_pb::SyncEnums_DeviceType_TYPE_CROS;
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return sync_pb::SyncEnums_DeviceType_TYPE_LINUX;
+ #elif BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
+ return ui::GetDeviceFormFactor() == ui::DEVICE_FORM_FACTOR_TABLET
diff --git a/www/ungoogled-chromium/files/patch-components_sync__device__info_local__device__info__util__linux.cc b/www/ungoogled-chromium/files/patch-components_sync__device__info_local__device__info__util__linux.cc
new file mode 100644
index 000000000000..ddbd44d88e5c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_sync__device__info_local__device__info__util__linux.cc
@@ -0,0 +1,14 @@
+--- components/sync_device_info/local_device_info_util_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ components/sync_device_info/local_device_info_util_linux.cc
+@@ -9,6 +9,11 @@
+
+ #include "base/linux_util.h"
+
++#if defined(__FreeBSD__)
++#include <sys/param.h>
++#define HOST_NAME_MAX MAXHOSTNAMELEN
++#endif
++
+ namespace syncer {
+
+ std::string GetPersonalizableDeviceNameInternal() {
diff --git a/www/ungoogled-chromium/files/patch-components_translate_core_common_translate__util.cc b/www/ungoogled-chromium/files/patch-components_translate_core_common_translate__util.cc
new file mode 100644
index 000000000000..40880167056a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_translate_core_common_translate__util.cc
@@ -0,0 +1,11 @@
+--- components/translate/core/common/translate_util.cc.orig 2022-10-01 07:40:07 UTC
++++ components/translate/core/common/translate_util.cc
+@@ -34,7 +34,7 @@ const base::Feature kTranslateSubFrames{"TranslateSubF
+ const base::Feature kTFLiteLanguageDetectionEnabled{
+ "TFLiteLanguageDetectionEnabled",
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_ANDROID)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/www/ungoogled-chromium/files/patch-components_update__client_update__query__params.cc b/www/ungoogled-chromium/files/patch-components_update__client_update__query__params.cc
new file mode 100644
index 000000000000..7c538dde74a6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_update__client_update__query__params.cc
@@ -0,0 +1,11 @@
+--- components/update_client/update_query_params.cc.orig 2022-10-01 07:40:07 UTC
++++ components/update_client/update_query_params.cc
+@@ -40,6 +40,8 @@ const char kOs[] =
+ "fuchsia";
+ #elif BUILDFLAG(IS_OPENBSD)
+ "openbsd";
++#elif defined(OS_FREEBSD)
++ "freebsd";
+ #else
+ #error "unknown os"
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc b/www/ungoogled-chromium/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc
new file mode 100644
index 000000000000..2a17f1524c1d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc
@@ -0,0 +1,11 @@
+--- components/url_formatter/spoof_checks/idn_spoof_checker.cc.orig 2022-10-01 07:40:07 UTC
++++ components/url_formatter/spoof_checks/idn_spoof_checker.cc
+@@ -285,7 +285,7 @@ IDNSpoofChecker::IDNSpoofChecker() {
+ // The ideal fix would be to change the omnibox font used for Thai. In
+ // that case, the Linux-only list should be revisited and potentially
+ // removed.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ "[ทนบพรหเแ๐ดลปฟม]",
+ #else
+ "[บพเแ๐]",
diff --git a/www/ungoogled-chromium/files/patch-components_viz_common_gpu_dawn__context__provider.cc b/www/ungoogled-chromium/files/patch-components_viz_common_gpu_dawn__context__provider.cc
new file mode 100644
index 000000000000..aa83acdce915
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_common_gpu_dawn__context__provider.cc
@@ -0,0 +1,11 @@
+--- components/viz/common/gpu/dawn_context_provider.cc.orig 2022-10-01 07:40:07 UTC
++++ components/viz/common/gpu/dawn_context_provider.cc
+@@ -20,7 +20,7 @@ namespace {
+ wgpu::BackendType GetDefaultBackendType() {
+ #if BUILDFLAG(IS_WIN)
+ return wgpu::BackendType::D3D12;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return wgpu::BackendType::Vulkan;
+ #else
+ NOTREACHED();
diff --git a/www/ungoogled-chromium/files/patch-components_viz_host_host__display__client.cc b/www/ungoogled-chromium/files/patch-components_viz_host_host__display__client.cc
new file mode 100644
index 000000000000..af10966bbf7e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_host_host__display__client.cc
@@ -0,0 +1,11 @@
+--- components/viz/host/host_display_client.cc.orig 2022-10-01 07:40:07 UTC
++++ components/viz/host/host_display_client.cc
+@@ -61,7 +61,7 @@ void HostDisplayClient::CreateLayeredWindowUpdater(
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ void HostDisplayClient::DidCompleteSwapWithNewSize(const gfx::Size& size) {
+ NOTIMPLEMENTED();
+ }
diff --git a/www/ungoogled-chromium/files/patch-components_viz_host_host__display__client.h b/www/ungoogled-chromium/files/patch-components_viz_host_host__display__client.h
new file mode 100644
index 000000000000..9280a99e5288
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_host_host__display__client.h
@@ -0,0 +1,11 @@
+--- components/viz/host/host_display_client.h.orig 2022-10-01 07:40:07 UTC
++++ components/viz/host/host_display_client.h
+@@ -48,7 +48,7 @@ class VIZ_HOST_EXPORT HostDisplayClient : public mojom
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ void DidCompleteSwapWithNewSize(const gfx::Size& size) override;
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-components_viz_host_renderer__settings__creation.cc b/www/ungoogled-chromium/files/patch-components_viz_host_renderer__settings__creation.cc
new file mode 100644
index 000000000000..f36bcd39c7bf
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_host_renderer__settings__creation.cc
@@ -0,0 +1,11 @@
+--- components/viz/host/renderer_settings_creation.cc.orig 2022-10-01 07:40:07 UTC
++++ components/viz/host/renderer_settings_creation.cc
+@@ -52,7 +52,7 @@ RendererSettings CreateRendererSettings() {
+ renderer_settings.partial_swap_enabled =
+ !command_line->HasSwitch(switches::kUIDisablePartialSwap);
+
+-#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Simple frame rate throttling only works on macOS and Linux
+ renderer_settings.apply_simple_frame_rate_throttling =
+ features::IsSimpleFrameRateThrottlingEnabled();
diff --git a/www/ungoogled-chromium/files/patch-components_viz_service_display__embedder_skia__output__surface__impl.cc b/www/ungoogled-chromium/files/patch-components_viz_service_display__embedder_skia__output__surface__impl.cc
new file mode 100644
index 000000000000..781cf688d460
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_service_display__embedder_skia__output__surface__impl.cc
@@ -0,0 +1,11 @@
+--- components/viz/service/display_embedder/skia_output_surface_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ components/viz/service/display_embedder/skia_output_surface_impl.cc
+@@ -1156,7 +1156,7 @@ GrBackendFormat SkiaOutputSurfaceImpl::GetGrBackendFor
+ ->GetDeviceQueue()
+ ->GetVulkanPhysicalDevice(),
+ VK_IMAGE_TILING_OPTIMAL, ycbcr_info);
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Textures that were allocated _on linux_ with ycbcr info came from
+ // VaapiVideoDecoder, which exports using DRM format modifiers.
+ return GrBackendFormat::MakeVk(gr_ycbcr_info,
diff --git a/www/ungoogled-chromium/files/patch-components_viz_service_display__embedder_software__output__surface.cc b/www/ungoogled-chromium/files/patch-components_viz_service_display__embedder_software__output__surface.cc
new file mode 100644
index 000000000000..e3a01f679221
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_service_display__embedder_software__output__surface.cc
@@ -0,0 +1,20 @@
+--- components/viz/service/display_embedder/software_output_surface.cc.orig 2022-10-01 07:40:07 UTC
++++ components/viz/service/display_embedder/software_output_surface.cc
+@@ -93,7 +93,7 @@ void SoftwareOutputSurface::SwapBuffersCallback(base::
+ now.SnappedToNextTick(refresh_timebase_, refresh_interval_) - now;
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ if (needs_swap_size_notifications_)
+ client_->DidSwapWithSize(pixel_size);
+ #endif
+@@ -120,7 +120,7 @@ gfx::OverlayTransform SoftwareOutputSurface::GetDispla
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ void SoftwareOutputSurface::SetNeedsSwapSizeNotifications(
+ bool needs_swap_size_notifications) {
+ needs_swap_size_notifications_ = needs_swap_size_notifications;
diff --git a/www/ungoogled-chromium/files/patch-components_viz_service_display__embedder_software__output__surface.h b/www/ungoogled-chromium/files/patch-components_viz_service_display__embedder_software__output__surface.h
new file mode 100644
index 000000000000..7fffb4339ed9
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_service_display__embedder_software__output__surface.h
@@ -0,0 +1,20 @@
+--- components/viz/service/display_embedder/software_output_surface.h.orig 2022-10-01 07:40:07 UTC
++++ components/viz/service/display_embedder/software_output_surface.h
+@@ -47,7 +47,7 @@ class VIZ_SERVICE_EXPORT SoftwareOutputSurface : publi
+ gfx::OverlayTransform GetDisplayTransform() override;
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ void SetNeedsSwapSizeNotifications(
+ bool needs_swap_size_notifications) override;
+ #endif
+@@ -69,7 +69,7 @@ class VIZ_SERVICE_EXPORT SoftwareOutputSurface : publi
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ bool needs_swap_size_notifications_ = false;
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-components_viz_service_display_skia__renderer.cc b/www/ungoogled-chromium/files/patch-components_viz_service_display_skia__renderer.cc
new file mode 100644
index 000000000000..16120d5747cb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_service_display_skia__renderer.cc
@@ -0,0 +1,11 @@
+--- components/viz/service/display/skia_renderer.cc.orig 2022-10-01 07:40:07 UTC
++++ components/viz/service/display/skia_renderer.cc
+@@ -1026,7 +1026,7 @@ void SkiaRenderer::ClearFramebuffer() {
+ if (current_frame()->current_render_pass->has_transparent_background) {
+ ClearCanvas(SkColors::kTransparent);
+ } else {
+-#if DCHECK_IS_ON() && !BUILDFLAG(IS_LINUX)
++#if DCHECK_IS_ON() && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD)
+ // On DEBUG builds, opaque render passes are cleared to blue
+ // to easily see regions that were not drawn on the screen.
+ // ClearCavas() call causes slight pixel difference, so linux-ref and
diff --git a/www/ungoogled-chromium/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc b/www/ungoogled-chromium/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc
new file mode 100644
index 000000000000..c3bf31ec5556
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc
@@ -0,0 +1,20 @@
+--- components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc
+@@ -97,7 +97,7 @@ RootCompositorFrameSinkImpl::Create(
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // For X11, we need notify client about swap completion after resizing, so the
+ // client can use it for synchronize with X11 WM.
+ output_surface->SetNeedsSwapSizeNotifications(true);
+@@ -576,7 +576,7 @@ void RootCompositorFrameSinkImpl::DisplayDidCompleteSw
+ display_client_->DidCompleteSwapWithSize(pixel_size);
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ if (display_client_ && pixel_size != last_swap_pixel_size_) {
+ last_swap_pixel_size_ = pixel_size;
+ display_client_->DidCompleteSwapWithNewSize(last_swap_pixel_size_);
diff --git a/www/ungoogled-chromium/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h b/www/ungoogled-chromium/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h
new file mode 100644
index 000000000000..9137469ec852
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h
@@ -0,0 +1,11 @@
+--- components/viz/service/frame_sinks/root_compositor_frame_sink_impl.h.orig 2022-10-01 07:40:07 UTC
++++ components/viz/service/frame_sinks/root_compositor_frame_sink_impl.h
+@@ -196,7 +196,7 @@ class VIZ_SERVICE_EXPORT RootCompositorFrameSinkImpl
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ gfx::Size last_swap_pixel_size_;
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-components_viz_test_fake__display__client.cc b/www/ungoogled-chromium/files/patch-components_viz_test_fake__display__client.cc
new file mode 100644
index 000000000000..d3220fd0ea96
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_test_fake__display__client.cc
@@ -0,0 +1,11 @@
+--- components/viz/test/fake_display_client.cc.orig 2022-10-01 07:40:07 UTC
++++ components/viz/test/fake_display_client.cc
+@@ -25,7 +25,7 @@ void FakeDisplayClient::CreateLayeredWindowUpdater(
+ mojo::PendingReceiver<mojom::LayeredWindowUpdater> receiver) {}
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ void FakeDisplayClient::DidCompleteSwapWithNewSize(const gfx::Size& size) {}
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-components_viz_test_fake__display__client.h b/www/ungoogled-chromium/files/patch-components_viz_test_fake__display__client.h
new file mode 100644
index 000000000000..6004b9d2d6dc
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_test_fake__display__client.h
@@ -0,0 +1,11 @@
+--- components/viz/test/fake_display_client.h.orig 2022-10-01 07:40:07 UTC
++++ components/viz/test/fake_display_client.h
+@@ -34,7 +34,7 @@ class FakeDisplayClient : public mojom::DisplayClient
+ mojo::PendingReceiver<mojom::LayeredWindowUpdater> receiver) override;
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ void DidCompleteSwapWithNewSize(const gfx::Size& size) override;
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-components_viz_test_mock__display__client.h b/www/ungoogled-chromium/files/patch-components_viz_test_mock__display__client.h
new file mode 100644
index 000000000000..49f237ebb8a3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-components_viz_test_mock__display__client.h
@@ -0,0 +1,11 @@
+--- components/viz/test/mock_display_client.h.orig 2022-10-01 07:40:07 UTC
++++ components/viz/test/mock_display_client.h
+@@ -44,7 +44,7 @@ class MockDisplayClient : public mojom::DisplayClient
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ MOCK_METHOD1(DidCompleteSwapWithNewSize, void(const gfx::Size&));
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-content_app_content__main.cc b/www/ungoogled-chromium/files/patch-content_app_content__main.cc
new file mode 100644
index 000000000000..a45fec98a696
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_app_content__main.cc
@@ -0,0 +1,11 @@
+--- content/app/content_main.cc.orig 2022-10-01 07:40:07 UTC
++++ content/app/content_main.cc
+@@ -284,7 +284,7 @@ RunContentProcess(ContentMainParams params,
+ #endif
+ base::EnableTerminationOnOutOfMemory();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // The various desktop environments set this environment variable that
+ // allows the dbus client library to connect directly to the bus. When this
+ // variable is not set (test environments like xvfb-run), the dbus client
diff --git a/www/ungoogled-chromium/files/patch-content_app_content__main__runner__impl.cc b/www/ungoogled-chromium/files/patch-content_app_content__main__runner__impl.cc
new file mode 100644
index 000000000000..4d1093d2122c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_app_content__main__runner__impl.cc
@@ -0,0 +1,120 @@
+--- content/app/content_main_runner_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ content/app/content_main_runner_impl.cc
+@@ -130,13 +130,13 @@
+ #include "base/posix/global_descriptors.h"
+ #include "content/public/common/content_descriptors.h"
+
+-#if !BUILDFLAG(IS_MAC)
++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ #include "content/public/common/zygote/zygote_fork_delegate_linux.h"
+ #endif
+
+ #endif // BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/native_library.h"
+ #include "base/rand_util.h"
+ #include "content/public/common/zygote/sandbox_support_linux.h"
+@@ -175,6 +175,10 @@
+ #include "media/base/media_switches.h"
+ #endif
+
++#if BUILDFLAG(IS_BSD)
++#include "base/system/sys_info.h"
++#endif
++
+ #if BUILDFLAG(IS_ANDROID)
+ #include "base/system/sys_info.h"
+ #include "content/browser/android/battery_metrics.h"
+@@ -360,7 +364,7 @@ void InitializeZygoteSandboxForBrowserProcess(
+ }
+ #endif // BUILDFLAG(USE_ZYGOTE_HANDLE)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ #if BUILDFLAG(ENABLE_PPAPI)
+ // Loads the (native) libraries but does not initialize them (i.e., does not
+@@ -396,7 +400,7 @@ void PreloadLibraryCdms() {
+ }
+ #endif // BUILDFLAG(ENABLE_LIBRARY_CDMS)
+
+-#if BUILDFLAG(USE_ZYGOTE_HANDLE)
++#if BUILDFLAG(USE_ZYGOTE_HANDLE) || BUILDFLAG(IS_BSD)
+ void PreSandboxInit() {
+ // Pre-acquire resources needed by BoringSSL. See
+ // https://boringssl.9oo91esource.qjz9zk/boringssl/+/HEAD/SANDBOXING.md
+@@ -412,6 +416,11 @@ void PreSandboxInit() {
+ #endif
+ InitializeWebRtcModule();
+
++#if BUILDFLAG(IS_BSD)
++ // "cache" the amount of physical memory before pledge(2)
++ base::SysInfo::AmountOfPhysicalMemoryMB();
++#endif
++
+ // Set the android SkFontMgr for blink. We need to ensure this is done
+ // before the sandbox is initialized to allow the font manager to access
+ // font configuration files on disk.
+@@ -594,7 +603,7 @@ int NO_STACK_PROTECTOR RunZygote(ContentMainDelegate*
+ delegate->ZygoteStarting(&zygote_fork_delegates);
+ media::InitializeMediaLibrary();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ PreSandboxInit();
+ #endif
+
+@@ -785,11 +794,10 @@ int ContentMainRunnerImpl::Initialize(ContentMainParam
+ kFieldTrialDescriptor + base::GlobalDescriptors::kBaseDescriptor);
+ #endif // !BUILDFLAG(IS_ANDROID)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+ g_fds->Set(kCrashDumpSignal,
+ kCrashDumpSignal + base::GlobalDescriptors::kBaseDescriptor);
+-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ||
+- // BUILDFLAG(IS_OPENBSD)
++#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+ #endif // !BUILDFLAG(IS_WIN)
+
+@@ -972,6 +980,16 @@ int ContentMainRunnerImpl::Initialize(ContentMainParam
+ }
+ #endif
+
++#if BUILDFLAG(IS_BSD)
++ if (process_type.empty()) {
++ sandbox::policy::SandboxLinux::Options sandbox_options;
++ sandbox::policy::SandboxLinux::GetInstance()->InitializeSandbox(
++ sandbox::policy::SandboxTypeFromCommandLine(
++ *base::CommandLine::ForCurrentProcess()),
++ sandbox::policy::SandboxLinux::PreSandboxHook(), sandbox_options);
++ }
++#endif
++
+ delegate_->SandboxInitialized(process_type);
+
+ #if BUILDFLAG(USE_ZYGOTE_HANDLE)
+@@ -1031,7 +1049,7 @@ int NO_STACK_PROTECTOR ContentMainRunnerImpl::Run() {
+ mojo::core::InitFeatures();
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // If dynamic Mojo Core is being used, ensure that it's loaded very early in
+ // the child/zygote process, before any sandbox is initialized. The library
+ // is not fully initialized with IPC support until a ChildProcess is later
+@@ -1064,6 +1082,11 @@ int NO_STACK_PROTECTOR ContentMainRunnerImpl::Run() {
+ content_main_params_.reset();
+
+ RegisterMainThreadFactories();
++
++#if BUILDFLAG(IS_BSD)
++ if (!process_type.empty())
++ PreSandboxInit();
++#endif
+
+ if (process_type.empty())
+ return RunBrowser(std::move(main_params), start_minimal_browser);
diff --git a/www/ungoogled-chromium/files/patch-content_browser_BUILD.gn b/www/ungoogled-chromium/files/patch-content_browser_BUILD.gn
new file mode 100644
index 000000000000..b2b706e09cff
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_BUILD.gn
@@ -0,0 +1,16 @@
+--- content/browser/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ content/browser/BUILD.gn
+@@ -2471,6 +2471,13 @@ source_set("browser") {
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "sandbox_ipc_linux.cc",
++ "sandbox_ipc_linux.h",
++ ]
++ }
++
+ if (is_chromeos) {
+ deps += [ "//components/value_store:value_store" ]
+ sources += [
diff --git a/www/ungoogled-chromium/files/patch-content_browser_browser__child__process__host__impl.cc b/www/ungoogled-chromium/files/patch-content_browser_browser__child__process__host__impl.cc
new file mode 100644
index 000000000000..ec1aa82e9a58
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_browser__child__process__host__impl.cc
@@ -0,0 +1,10 @@
+--- content/browser/browser_child_process_host_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/browser_child_process_host_impl.cc
+@@ -307,6 +307,7 @@ void BrowserChildProcessHostImpl::LaunchWithoutExtraCo
+ switches::kDisableBestEffortTasks,
+ switches::kDisableLogging,
+ switches::kEnableLogging,
++ switches::kDisableUnveil,
+ switches::kIPCConnectionTimeout,
+ switches::kLogBestEffortTasks,
+ switches::kLogFile,
diff --git a/www/ungoogled-chromium/files/patch-content_browser_browser__main__loop.cc b/www/ungoogled-chromium/files/patch-content_browser_browser__main__loop.cc
new file mode 100644
index 000000000000..6ad1a5642dc3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_browser__main__loop.cc
@@ -0,0 +1,37 @@
+--- content/browser/browser_main_loop.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/browser_main_loop.cc
+@@ -240,6 +240,12 @@
+ #include "mojo/public/cpp/bindings/lib/test_random_mojo_delays.h"
+ #endif
+
++#if BUILDFLAG(IS_BSD)
++#include "content/browser/sandbox_host_linux.h"
++#include "content/public/common/zygote/sandbox_support_linux.h"
++#include "sandbox/policy/sandbox.h"
++#endif
++
+ // One of the linux specific headers defines this as a macro.
+ #ifdef DestroyAll
+ #undef DestroyAll
+@@ -523,6 +529,12 @@ int BrowserMainLoop::EarlyInitialization() {
+ // by now since a thread to start the ServiceManager has been created
+ // before the browser main loop starts.
+ DCHECK(SandboxHostLinux::GetInstance()->IsInitialized());
++#elif BUILDFLAG(IS_BSD)
++ base::FileHandleMappingVector additional_remapped_fds;
++ base::LaunchOptions options;
++ SandboxHostLinux::GetInstance()->Init();
++ const int sfd = SandboxHostLinux::GetInstance()->GetChildSocket();
++ options.fds_to_remap.push_back(std::make_pair(sfd, GetSandboxFD()));
+ #endif
+
+ // GLib's spawning of new processes is buggy, so it's important that at this
+@@ -554,7 +566,7 @@ int BrowserMainLoop::EarlyInitialization() {
+ base::PlatformThread::SetCurrentThreadType(base::ThreadType::kCompositing);
+
+ #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_ANDROID)
++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ // We use quite a few file descriptors for our IPC as well as disk the disk
+ // cache,and the default limit on the Mac is low (256), so bump it up.
+
diff --git a/www/ungoogled-chromium/files/patch-content_browser_child__process__launcher__helper__linux.cc b/www/ungoogled-chromium/files/patch-content_browser_child__process__launcher__helper__linux.cc
new file mode 100644
index 000000000000..7eaac8edc3cf
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_child__process__launcher__helper__linux.cc
@@ -0,0 +1,80 @@
+--- content/browser/child_process_launcher_helper_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/child_process_launcher_helper_linux.cc
+@@ -20,7 +20,9 @@
+ #include "content/public/common/result_codes.h"
+ #include "content/public/common/sandboxed_process_launcher_delegate.h"
+ #include "content/public/common/zygote/sandbox_support_linux.h"
++#if !BUILDFLAG(IS_BSD)
+ #include "content/public/common/zygote/zygote_handle.h"
++#endif
+ #include "sandbox/policy/linux/sandbox_linux.h"
+
+ namespace content {
+@@ -74,6 +76,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ int* launch_result) {
+ *is_synchronous_launch = true;
+ Process process;
++#if !BUILDFLAG(IS_BSD)
+ ZygoteHandle zygote_handle =
+ base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kNoZygote)
+ ? nullptr
+@@ -87,7 +90,6 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ GetProcessType());
+ *launch_result = LAUNCH_RESULT_SUCCESS;
+
+-#if !BUILDFLAG(IS_OPENBSD)
+ if (handle) {
+ // It could be a renderer process or an utility process.
+ int oom_score = content::kMiscOomScore;
+@@ -96,15 +98,17 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ oom_score = content::kLowestRendererOomScore;
+ ZygoteHostImpl::GetInstance()->AdjustRendererOOMScore(handle, oom_score);
+ }
+-#endif
+
+ process.process = base::Process(handle);
+ process.zygote = zygote_handle;
+ } else {
++#endif
+ process.process = base::LaunchProcess(*command_line(), options);
+ *launch_result = process.process.IsValid() ? LAUNCH_RESULT_SUCCESS
+ : LAUNCH_RESULT_FAILURE;
++#if !BUILDFLAG(IS_BSD)
+ }
++#endif
+
+ #if BUILDFLAG(IS_CHROMEOS)
+ if (GetProcessType() == switches::kRendererProcess) {
+@@ -124,10 +128,14 @@ ChildProcessTerminationInfo ChildProcessLauncherHelper
+ const ChildProcessLauncherHelper::Process& process,
+ bool known_dead) {
+ ChildProcessTerminationInfo info;
++#if !BUILDFLAG(IS_BSD)
+ if (process.zygote) {
+ info.status = process.zygote->GetTerminationStatus(
+ process.process.Handle(), known_dead, &info.exit_code);
+ } else if (known_dead) {
++#else
++ if (known_dead) {
++#endif
+ info.status = base::GetKnownDeadTerminationStatus(process.process.Handle(),
+ &info.exit_code);
+ } else {
+@@ -151,13 +159,17 @@ void ChildProcessLauncherHelper::ForceNormalProcessTer
+ DCHECK(CurrentlyOnProcessLauncherTaskRunner());
+ process.process.Terminate(RESULT_CODE_NORMAL_EXIT, false);
+ // On POSIX, we must additionally reap the child.
++#if !BUILDFLAG(IS_BSD)
+ if (process.zygote) {
+ // If the renderer was created via a zygote, we have to proxy the reaping
+ // through the zygote process.
+ process.zygote->EnsureProcessTerminated(process.process.Handle());
+ } else {
++#endif
+ base::EnsureProcessTerminated(std::move(process.process));
++#if !BUILDFLAG(IS_BSD)
+ }
++#endif
+ }
+
+ void ChildProcessLauncherHelper::SetProcessPriorityOnLauncherThread(
diff --git a/www/ungoogled-chromium/files/patch-content_browser_compositor_viz__process__transport__factory.cc b/www/ungoogled-chromium/files/patch-content_browser_compositor_viz__process__transport__factory.cc
new file mode 100644
index 000000000000..a466cb2b5071
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_compositor_viz__process__transport__factory.cc
@@ -0,0 +1,11 @@
+--- content/browser/compositor/viz_process_transport_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/compositor/viz_process_transport_factory.cc
+@@ -112,7 +112,7 @@ class HostDisplayClient : public viz::HostDisplayClien
+ // viz::HostDisplayClient:
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ void DidCompleteSwapWithNewSize(const gfx::Size& size) override {
+ compositor_->OnCompleteSwapWithNewSize(size);
+ }
diff --git a/www/ungoogled-chromium/files/patch-content_browser_devtools_protocol_system__info__handler.cc b/www/ungoogled-chromium/files/patch-content_browser_devtools_protocol_system__info__handler.cc
new file mode 100644
index 000000000000..e01ab8748453
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_devtools_protocol_system__info__handler.cc
@@ -0,0 +1,11 @@
+--- content/browser/devtools/protocol/system_info_handler.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/devtools/protocol/system_info_handler.cc
+@@ -50,7 +50,7 @@ std::unique_ptr<SystemInfo::Size> GfxSizeToSystemInfoS
+ // Windows builds need more time -- see Issue 873112 and 1004472.
+ // Mac builds need more time - see Issue angleproject:6182.
+ #if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !defined(NDEBUG)) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || defined(USE_OZONE)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || defined(USE_OZONE) || BUILDFLAG(IS_BSD)
+ static constexpr int kGPUInfoWatchdogTimeoutMultiplierOS = 3;
+ #else
+ static constexpr int kGPUInfoWatchdogTimeoutMultiplierOS = 1;
diff --git a/www/ungoogled-chromium/files/patch-content_browser_download_download__manager__impl.cc b/www/ungoogled-chromium/files/patch-content_browser_download_download__manager__impl.cc
new file mode 100644
index 000000000000..cb53d132b7cc
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_download_download__manager__impl.cc
@@ -0,0 +1,29 @@
+--- content/browser/download/download_manager_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/download/download_manager_impl.cc
+@@ -91,7 +91,7 @@
+ #include "third_party/blink/public/common/storage_key/storage_key.h"
+ #include "url/origin.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/nix/xdg_util.h"
+ #endif
+
+@@ -218,7 +218,7 @@ class DownloadItemFactoryImpl : public download::Downl
+ }
+ };
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ base::FilePath GetTemporaryDownloadDirectory() {
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ return base::nix::GetXDGDirectory(env.get(), "XDG_DATA_HOME", ".local/share");
+@@ -654,7 +654,7 @@ bool DownloadManagerImpl::InterceptDownload(
+
+ base::FilePath DownloadManagerImpl::GetDefaultDownloadDirectory() {
+ base::FilePath default_download_directory;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // TODO(thomasanderson,crbug.com/784010): Remove this when all Linux
+ // distros with versions of GTK lower than 3.14.7 are no longer
+ // supported. This should happen when support for Ubuntu Trusty and
diff --git a/www/ungoogled-chromium/files/patch-content_browser_font__access_font__enumeration__data__source.cc b/www/ungoogled-chromium/files/patch-content_browser_font__access_font__enumeration__data__source.cc
new file mode 100644
index 000000000000..436cf61d2eca
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_font__access_font__enumeration__data__source.cc
@@ -0,0 +1,29 @@
+--- content/browser/font_access/font_enumeration_data_source.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/font_access/font_enumeration_data_source.cc
+@@ -16,7 +16,7 @@
+ #include "content/browser/font_access/font_enumeration_data_source_win.h"
+ #elif BUILDFLAG(IS_MAC)
+ #include "content/browser/font_access/font_enumeration_data_source_mac.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "content/browser/font_access/font_enumeration_data_source_linux.h"
+ #endif // BUILDFLAG(IS_WIN)
+
+@@ -61,7 +61,7 @@ std::unique_ptr<FontEnumerationDataSource> FontEnumera
+ return std::make_unique<FontEnumerationDataSourceWin>();
+ #elif BUILDFLAG(IS_MAC)
+ return std::make_unique<FontEnumerationDataSourceMac>();
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return std::make_unique<FontEnumerationDataSourceLinux>();
+ #else
+ return std::make_unique<FontEnumerationDataSourceNull>();
+@@ -76,7 +76,7 @@ bool FontEnumerationDataSource::IsOsSupported() {
+ return true;
+ #elif BUILDFLAG(IS_MAC)
+ return true;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/www/ungoogled-chromium/files/patch-content_browser_gpu_compositor__util.cc b/www/ungoogled-chromium/files/patch-content_browser_gpu_compositor__util.cc
new file mode 100644
index 000000000000..70f50eb78237
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_gpu_compositor__util.cc
@@ -0,0 +1,20 @@
+--- content/browser/gpu/compositor_util.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/gpu/compositor_util.cc
+@@ -148,7 +148,7 @@ const GpuFeatureData GetGpuFeatureData(
+ {"video_decode",
+ SafeGetFeatureStatus(gpu_feature_info,
+ gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE),
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ !base::FeatureList::IsEnabled(media::kVaapiVideoDecodeLinux),
+ #else
+ command_line.HasSwitch(switches::kDisableAcceleratedVideoDecode),
+@@ -160,7 +160,7 @@ const GpuFeatureData GetGpuFeatureData(
+ {"video_encode",
+ SafeGetFeatureStatus(gpu_feature_info,
+ gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_ENCODE),
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ !base::FeatureList::IsEnabled(media::kVaapiVideoEncodeLinux),
+ #else
+ command_line.HasSwitch(switches::kDisableAcceleratedVideoEncode),
diff --git a/www/ungoogled-chromium/files/patch-content_browser_gpu_gpu__process__host.cc b/www/ungoogled-chromium/files/patch-content_browser_gpu_gpu__process__host.cc
new file mode 100644
index 000000000000..0c82a12eb149
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_gpu_gpu__process__host.cc
@@ -0,0 +1,28 @@
+--- content/browser/gpu/gpu_process_host.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/gpu/gpu_process_host.cc
+@@ -101,7 +101,7 @@
+ #include "ui/ozone/public/ozone_switches.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "ui/gfx/switches.h"
+ #endif
+
+@@ -253,6 +253,7 @@ static const char* const kSwitchNames[] = {
+ switches::kEnableBackgroundThreadPool,
+ switches::kEnableGpuRasterization,
+ switches::kEnableLogging,
++ switches::kDisableUnveil,
+ switches::kEnableDeJelly,
+ switches::kDeJellyScreenWidth,
+ switches::kDoubleBufferCompositing,
+@@ -286,7 +287,7 @@ static const char* const kSwitchNames[] = {
+ switches::kOzoneDumpFile,
+ switches::kDisableBufferBWCompression,
+ #endif
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ switches::kX11Display,
+ switches::kNoXshm,
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-content_browser_media_frameless__media__interface__proxy.cc b/www/ungoogled-chromium/files/patch-content_browser_media_frameless__media__interface__proxy.cc
new file mode 100644
index 000000000000..8ad8f219401a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_media_frameless__media__interface__proxy.cc
@@ -0,0 +1,20 @@
+--- content/browser/media/frameless_media_interface_proxy.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/media/frameless_media_interface_proxy.cc
+@@ -16,7 +16,7 @@
+ #include "media/mojo/mojom/renderer_extensions.mojom.h"
+ #include "media/mojo/mojom/stable/stable_video_decoder.mojom.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "content/public/browser/stable_video_decoder_factory.h"
+ #include "media/base/media_switches.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+@@ -67,7 +67,7 @@ void FramelessMediaInterfaceProxy::CreateVideoDecoder(
+
+ mojo::PendingRemote<media::stable::mojom::StableVideoDecoder>
+ oop_video_decoder;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (base::FeatureList::IsEnabled(media::kUseOutOfProcessVideoDecoding)) {
+ if (!render_process_host_) {
+ if (!stable_vd_factory_remote_.is_bound()) {
diff --git a/www/ungoogled-chromium/files/patch-content_browser_media_frameless__media__interface__proxy.h b/www/ungoogled-chromium/files/patch-content_browser_media_frameless__media__interface__proxy.h
new file mode 100644
index 000000000000..160ffa7400b7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_media_frameless__media__interface__proxy.h
@@ -0,0 +1,20 @@
+--- content/browser/media/frameless_media_interface_proxy.h.orig 2022-10-01 07:40:07 UTC
++++ content/browser/media/frameless_media_interface_proxy.h
+@@ -19,7 +19,7 @@
+ #include "mojo/public/cpp/bindings/receiver_set.h"
+ #include "mojo/public/cpp/bindings/remote.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "media/mojo/mojom/stable/stable_video_decoder.mojom.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+@@ -99,7 +99,7 @@ class FramelessMediaInterfaceProxy final
+ // Connections to the renderer.
+ mojo::ReceiverSet<media::mojom::InterfaceFactory> receivers_;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Connection to the StableVideoDecoderFactory that lives in a utility
+ // process. This is only used for out-of-process video decoding and only when
+ // the FramelessMediaInterfaceProxy is created without a RenderProcessHost
diff --git a/www/ungoogled-chromium/files/patch-content_browser_media_media__interface__proxy.cc b/www/ungoogled-chromium/files/patch-content_browser_media_media__interface__proxy.cc
new file mode 100644
index 000000000000..7fb119bb599c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_media_media__interface__proxy.cc
@@ -0,0 +1,20 @@
+--- content/browser/media/media_interface_proxy.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/media/media_interface_proxy.cc
+@@ -76,7 +76,7 @@
+ #include "media/mojo/services/mojo_renderer_service.h" // nogncheck
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "content/public/browser/stable_video_decoder_factory.h"
+ #include "media/base/media_switches.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+@@ -327,7 +327,7 @@ void MediaInterfaceProxy::CreateVideoDecoder(
+
+ mojo::PendingRemote<media::stable::mojom::StableVideoDecoder>
+ oop_video_decoder;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (base::FeatureList::IsEnabled(media::kUseOutOfProcessVideoDecoding)) {
+ render_frame_host().GetProcess()->CreateStableVideoDecoder(
+ oop_video_decoder.InitWithNewPipeAndPassReceiver());
diff --git a/www/ungoogled-chromium/files/patch-content_browser_media_media__keys__listener__manager__impl.cc b/www/ungoogled-chromium/files/patch-content_browser_media_media__keys__listener__manager__impl.cc
new file mode 100644
index 000000000000..ad92cde20a36
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_media_media__keys__listener__manager__impl.cc
@@ -0,0 +1,11 @@
+--- content/browser/media/media_keys_listener_manager_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/media/media_keys_listener_manager_impl.cc
+@@ -233,7 +233,7 @@ void MediaKeysListenerManagerImpl::StartListeningForMe
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+ #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
+- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ system_media_controls_ = system_media_controls::SystemMediaControls::Create(
+ media::AudioManager::GetGlobalAppName());
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc b/www/ungoogled-chromium/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc
new file mode 100644
index 000000000000..a6e4517fa15b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc
@@ -0,0 +1,20 @@
+--- content/browser/ppapi_plugin_process_host_receiver_bindings.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/ppapi_plugin_process_host_receiver_bindings.cc
+@@ -8,7 +8,7 @@
+
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck
+ #include "content/browser/font_service.h" // nogncheck
+ #endif
+@@ -17,7 +17,7 @@ namespace content {
+
+ void PpapiPluginProcessHost::BindHostReceiver(
+ mojo::GenericPendingReceiver receiver) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (auto font_receiver = receiver.As<font_service::mojom::FontService>())
+ ConnectToFontService(std::move(font_receiver));
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-content_browser_renderer__host_delegated__frame__host.cc b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_delegated__frame__host.cc
new file mode 100644
index 000000000000..a04178b1549a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_delegated__frame__host.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/delegated_frame_host.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/renderer_host/delegated_frame_host.cc
+@@ -289,7 +289,7 @@ void DelegatedFrameHost::EmbedSurface(
+
+ if (!primary_surface_id ||
+ primary_surface_id->local_surface_id() != local_surface_id_) {
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ // On Windows and Linux, we would like to produce new content as soon as
+ // possible or the OS will create an additional black gutter. Until we can
+ // block resize on surface synchronization on these platforms, we will not
diff --git a/www/ungoogled-chromium/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
new file mode 100644
index 000000000000..ba10c72162f8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/input/input_device_change_observer.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/renderer_host/input/input_device_change_observer.cc
+@@ -9,7 +9,7 @@
+
+ #if BUILDFLAG(IS_WIN)
+ #include "ui/events/devices/input_device_observer_win.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "ui/events/devices/device_data_manager.h"
+ #elif BUILDFLAG(IS_ANDROID)
+ #include "ui/events/devices/input_device_observer_android.h"
+@@ -21,7 +21,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+ render_view_host_impl_ = rvhi;
+ #if BUILDFLAG(IS_WIN)
+ ui::InputDeviceObserverWin::GetInstance()->AddObserver(this);
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ ui::DeviceDataManager::GetInstance()->AddObserver(this);
+ #elif BUILDFLAG(IS_ANDROID)
+ ui::InputDeviceObserverAndroid::GetInstance()->AddObserver(this);
+@@ -31,7 +31,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+ InputDeviceChangeObserver::~InputDeviceChangeObserver() {
+ #if BUILDFLAG(IS_WIN)
+ ui::InputDeviceObserverWin::GetInstance()->RemoveObserver(this);
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ ui::DeviceDataManager::GetInstance()->RemoveObserver(this);
+ #elif BUILDFLAG(IS_ANDROID)
+ ui::InputDeviceObserverAndroid::GetInstance()->RemoveObserver(this);
diff --git a/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__message__filter.cc b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__message__filter.cc
new file mode 100644
index 000000000000..b05ad23c9acb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__message__filter.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/render_message_filter.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/renderer_host/render_message_filter.cc
+@@ -66,7 +66,7 @@
+ #if BUILDFLAG(IS_MAC)
+ #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/linux_util.h"
+ #include "base/threading/platform_thread.h"
+ #endif
+@@ -128,7 +128,7 @@ void RenderMessageFilter::GenerateFrameRoutingID(
+ std::move(callback).Run(routing_id, frame_token, devtools_frame_token);
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void RenderMessageFilter::SetThreadTypeOnWorkerThread(
+ base::PlatformThreadId ns_tid,
+ base::ThreadType thread_type) {
+@@ -149,7 +149,7 @@ void RenderMessageFilter::SetThreadTypeOnWorkerThread(
+ }
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void RenderMessageFilter::SetThreadType(int32_t ns_tid,
+ base::ThreadType thread_type) {
+ constexpr base::TaskTraits kTraits = {
diff --git a/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__message__filter.h b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__message__filter.h
new file mode 100644
index 000000000000..cb1840b24b2b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__message__filter.h
@@ -0,0 +1,18 @@
+--- content/browser/renderer_host/render_message_filter.h.orig 2022-10-01 07:40:07 UTC
++++ content/browser/renderer_host/render_message_filter.h
+@@ -78,13 +78,13 @@ class RenderMessageFilter
+ void GenerateRoutingID(GenerateRoutingIDCallback routing_id) override;
+ void GenerateFrameRoutingID(GenerateFrameRoutingIDCallback callback) override;
+ void HasGpuProcess(HasGpuProcessCallback callback) override;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void SetThreadType(int32_t ns_tid, base::ThreadType thread_type) override;
+ #endif
+
+ void OnResolveProxy(const GURL& url, IPC::Message* reply_msg);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void SetThreadTypeOnWorkerThread(base::PlatformThreadId ns_tid,
+ base::ThreadType thread_type);
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__process__host__impl.cc b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__process__host__impl.cc
new file mode 100644
index 000000000000..74d1312b0617
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__process__host__impl.cc
@@ -0,0 +1,55 @@
+--- content/browser/renderer_host/render_process_host_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/renderer_host/render_process_host_impl.cc
+@@ -212,7 +212,7 @@
+ #include "third_party/blink/public/mojom/android_font_lookup/android_font_lookup.mojom.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include <sys/resource.h>
+
+ #include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck
+@@ -1136,7 +1136,7 @@ static constexpr size_t kUnknownPlatformProcessLimit =
+ // to indicate failure and std::numeric_limits<size_t>::max() to indicate
+ // unlimited.
+ size_t GetPlatformProcessLimit() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ struct rlimit limit;
+ if (getrlimit(RLIMIT_NPROC, &limit) != 0)
+ return kUnknownPlatformProcessLimit;
+@@ -1223,7 +1223,7 @@ class RenderProcessHostImpl::IOThreadHostImpl : public
+ return;
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (auto font_receiver = receiver.As<font_service::mojom::FontService>()) {
+ ConnectToFontService(std::move(font_receiver));
+ return;
+@@ -2115,7 +2115,7 @@ void RenderProcessHostImpl::CreateWebSocketConnector(
+ std::move(receiver));
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void RenderProcessHostImpl::CreateStableVideoDecoder(
+ mojo::PendingReceiver<media::stable::mojom::StableVideoDecoder> receiver) {
+ if (!stable_video_decoder_factory_remote_.is_bound()) {
+@@ -3244,6 +3244,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLin
+ switches::kDisableSpeechAPI,
+ switches::kDisableThreadedCompositing,
+ switches::kDisableTouchDragDrop,
++ switches::kDisableUnveil,
+ switches::kDisableV8IdleTasks,
+ switches::kDisableVideoCaptureUseGpuMemoryBuffer,
+ switches::kDisableWebGLImageChromium,
+@@ -4720,7 +4721,7 @@ void RenderProcessHostImpl::ResetIPC() {
+ coordinator_connector_receiver_.reset();
+ tracing_registration_.reset();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ stable_video_decoder_factory_remote_.reset();
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
diff --git a/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__process__host__impl.h b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__process__host__impl.h
new file mode 100644
index 000000000000..03444b10582f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__process__host__impl.h
@@ -0,0 +1,38 @@
+--- content/browser/renderer_host/render_process_host_impl.h.orig 2022-10-01 07:40:07 UTC
++++ content/browser/renderer_host/render_process_host_impl.h
+@@ -83,7 +83,7 @@
+ #include "content/public/browser/android/child_process_importance.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "media/mojo/mojom/stable/stable_video_decoder.mojom.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+@@ -472,7 +472,7 @@ class CONTENT_EXPORT RenderProcessHostImpl
+ // Sets this RenderProcessHost to be guest only. For Testing only.
+ void SetForGuestsOnlyForTesting();
+
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ // Launch the zygote early in the browser startup.
+ static void EarlyZygoteLaunch();
+ #endif // BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_MAC)
+@@ -671,7 +671,7 @@ class CONTENT_EXPORT RenderProcessHostImpl
+ mojo::PendingReceiver<blink::mojom::WebSocketConnector> receiver)
+ override;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void CreateStableVideoDecoder(
+ mojo::PendingReceiver<media::stable::mojom::StableVideoDecoder> receiver)
+ override;
+@@ -1121,7 +1121,7 @@ class CONTENT_EXPORT RenderProcessHostImpl
+ // RenderProcessHost. This is destroyed early in ResetIPC() method.
+ std::unique_ptr<PermissionServiceContext> permission_service_context_;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Connection to the StableVideoDecoderFactory that lives in a utility
+ // process. This is only used for out-of-process video decoding.
+ mojo::Remote<media::stable::mojom::StableVideoDecoderFactory>
diff --git a/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__view__host__impl.cc b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__view__host__impl.cc
new file mode 100644
index 000000000000..20c66ef5325e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__view__host__impl.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_view_host_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/renderer_host/render_view_host_impl.cc
+@@ -259,7 +259,7 @@ void RenderViewHostImpl::GetPlatformSpecificPrefs(
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CYVSCROLL);
+ prefs->arrow_bitmap_width_horizontal_scroll_bar_in_dips =
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CXHSCROLL);
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ prefs->system_font_family_name = gfx::Font().GetFontName();
+ #elif BUILDFLAG(IS_FUCHSIA)
+ // Make Blink's "focus ring" invisible. The focus ring is a hairline border
diff --git a/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
new file mode 100644
index 000000000000..6bd58b9d9a06
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
@@ -0,0 +1,47 @@
+--- content/browser/renderer_host/render_widget_host_view_aura.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/renderer_host/render_widget_host_view_aura.cc
+@@ -116,7 +116,7 @@
+ #include "ui/gfx/gdi_util.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "content/browser/accessibility/browser_accessibility_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/linux/linux_ui.h"
+@@ -441,7 +441,7 @@ gfx::NativeViewAccessible RenderWidgetHostViewAura::Ge
+ if (manager)
+ return ToBrowserAccessibilityWin(manager->GetRoot())->GetCOM();
+
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ BrowserAccessibilityManager* manager =
+ host()->GetOrCreateRootBrowserAccessibilityManager();
+ if (manager && manager->GetRoot())
+@@ -1579,7 +1579,7 @@ bool RenderWidgetHostViewAura::ShouldDoLearning() {
+ return GetTextInputManager() && GetTextInputManager()->should_do_learning();
+ }
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ bool RenderWidgetHostViewAura::SetCompositionFromExistingText(
+ const gfx::Range& range,
+ const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) {
+@@ -2400,7 +2400,7 @@ bool RenderWidgetHostViewAura::NeedsInputGrab() {
+ }
+
+ bool RenderWidgetHostViewAura::NeedsMouseCapture() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ return NeedsInputGrab();
+ #else
+ return false;
+@@ -2577,7 +2577,7 @@ void RenderWidgetHostViewAura::ForwardKeyboardEventWit
+ if (!target_host)
+ return;
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ auto* linux_ui = ui::LinuxUi::instance();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
+ if (!event.skip_in_browser && linux_ui && event.os_event &&
diff --git a/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__widget__host__view__aura.h b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__widget__host__view__aura.h
new file mode 100644
index 000000000000..2e86d47d20bc
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__widget__host__view__aura.h
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_widget_host_view_aura.h.orig 2022-10-01 07:40:07 UTC
++++ content/browser/renderer_host/render_widget_host_view_aura.h
+@@ -245,7 +245,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
+ ukm::SourceId GetClientSourceForMetrics() const override;
+ bool ShouldDoLearning() override;
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ bool SetCompositionFromExistingText(
+ const gfx::Range& range,
+ const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) override;
diff --git a/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
new file mode 100644
index 000000000000..a285e627b456
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/renderer_host/render_widget_host_view_event_handler.cc
+@@ -596,7 +596,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand
+ if (event->type() == ui::ET_MOUSE_EXITED) {
+ if (mouse_locked || selection_popup)
+ return false;
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Don't forward the mouse leave message which is received when the context
+ // menu is displayed by the page. This confuses the page and causes state
+ // changes.
diff --git a/www/ungoogled-chromium/files/patch-content_browser_sandbox__host__linux.cc b/www/ungoogled-chromium/files/patch-content_browser_sandbox__host__linux.cc
new file mode 100644
index 000000000000..3926f49c7e99
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_sandbox__host__linux.cc
@@ -0,0 +1,18 @@
+--- content/browser/sandbox_host_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/sandbox_host_linux.cc
+@@ -45,6 +45,7 @@ void SandboxHostLinux::Init() {
+ // Instead, it replies on a temporary socket provided by the caller.
+ PCHECK(0 == shutdown(browser_socket, SHUT_WR)) << "shutdown";
+
++#if !defined(OS_BSD)
+ int pipefds[2];
+ CHECK(0 == pipe(pipefds));
+ const int child_lifeline_fd = pipefds[0];
+@@ -55,6 +56,7 @@ void SandboxHostLinux::Init() {
+ ipc_thread_ = std::make_unique<base::DelegateSimpleThread>(
+ ipc_handler_.get(), "sandbox_ipc_thread");
+ ipc_thread_->Start();
++#endif
+ }
+
+ } // namespace content
diff --git a/www/ungoogled-chromium/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc b/www/ungoogled-chromium/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc
new file mode 100644
index 000000000000..077626d3c16e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc
@@ -0,0 +1,11 @@
+--- content/browser/scheduler/responsiveness/jank_monitor_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/scheduler/responsiveness/jank_monitor_impl.cc
+@@ -334,7 +334,7 @@ void JankMonitorImpl::ThreadExecutionState::DidRunTask
+ // in context menus, among others). Simply ignore the mismatches for now.
+ // See https://crbug.com/929813 for the details of why the mismatch
+ // happens.
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && defined(USE_OZONE)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)) && defined(USE_OZONE)
+ task_execution_metadata_.clear();
+ #endif
+ return;
diff --git a/www/ungoogled-chromium/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc b/www/ungoogled-chromium/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
new file mode 100644
index 000000000000..da364b32ef0c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
@@ -0,0 +1,20 @@
+--- content/browser/scheduler/responsiveness/native_event_observer.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/scheduler/responsiveness/native_event_observer.cc
+@@ -15,7 +15,7 @@
+
+ #include "ui/events/platform/platform_event_source.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "ui/aura/env.h"
+ #include "ui/events/event.h"
+ #endif
+@@ -39,7 +39,7 @@ NativeEventObserver::~NativeEventObserver() {
+ DeregisterObserver();
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void NativeEventObserver::RegisterObserver() {
+ aura::Env::GetInstance()->AddWindowEventDispatcherObserver(this);
+ }
diff --git a/www/ungoogled-chromium/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h b/www/ungoogled-chromium/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
new file mode 100644
index 000000000000..3c67407496f1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
@@ -0,0 +1,47 @@
+--- content/browser/scheduler/responsiveness/native_event_observer.h.orig 2022-10-01 07:40:07 UTC
++++ content/browser/scheduler/responsiveness/native_event_observer.h
+@@ -15,7 +15,7 @@
+ #include "content/public/browser/native_event_processor_observer_mac.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "ui/aura/window_event_dispatcher_observer.h"
+ #endif
+
+@@ -40,7 +40,7 @@ namespace responsiveness {
+ class CONTENT_EXPORT NativeEventObserver
+ #if BUILDFLAG(IS_MAC)
+ : public NativeEventProcessorObserver
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ : public aura::WindowEventDispatcherObserver
+ #elif BUILDFLAG(IS_WIN)
+ : public base::MessagePumpForUI::Observer
+@@ -57,7 +57,7 @@ class CONTENT_EXPORT NativeEventObserver
+ NativeEventObserver(WillRunEventCallback will_run_event_callback,
+ DidRunEventCallback did_run_event_callback);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ NativeEventObserver(const NativeEventObserver&) = delete;
+ NativeEventObserver& operator=(const NativeEventObserver&) = delete;
+@@ -73,7 +73,7 @@ class CONTENT_EXPORT NativeEventObserver
+ // Exposed for tests.
+ void WillRunNativeEvent(const void* opaque_identifier) override;
+ void DidRunNativeEvent(const void* opaque_identifier) override;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // aura::WindowEventDispatcherObserver overrides:
+ void OnWindowEventDispatcherStartedProcessing(
+ aura::WindowEventDispatcher* dispatcher,
+@@ -90,7 +90,7 @@ class CONTENT_EXPORT NativeEventObserver
+ void RegisterObserver();
+ void DeregisterObserver();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ struct EventInfo {
+ const void* unique_id;
+ };
diff --git a/www/ungoogled-chromium/files/patch-content_browser_utility__process__host__receiver__bindings.cc b/www/ungoogled-chromium/files/patch-content_browser_utility__process__host__receiver__bindings.cc
new file mode 100644
index 000000000000..ce16cb77b122
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_utility__process__host__receiver__bindings.cc
@@ -0,0 +1,20 @@
+--- content/browser/utility_process_host_receiver_bindings.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/utility_process_host_receiver_bindings.cc
+@@ -10,7 +10,7 @@
+ #include "content/public/browser/content_browser_client.h"
+ #include "content/public/common/content_client.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck
+ #include "content/browser/font_service.h" // nogncheck
+ #endif
+@@ -19,7 +19,7 @@ namespace content {
+
+ void UtilityProcessHost::BindHostReceiver(
+ mojo::GenericPendingReceiver receiver) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (auto font_receiver = receiver.As<font_service::mojom::FontService>()) {
+ ConnectToFontService(std::move(font_receiver));
+ return;
diff --git a/www/ungoogled-chromium/files/patch-content_browser_utility__sandbox__delegate.cc b/www/ungoogled-chromium/files/patch-content_browser_utility__sandbox__delegate.cc
new file mode 100644
index 000000000000..ab1de93edd99
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_utility__sandbox__delegate.cc
@@ -0,0 +1,24 @@
+--- content/browser/utility_sandbox_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/utility_sandbox_delegate.cc
+@@ -63,10 +63,10 @@ UtilitySandboxedProcessLauncherDelegate::
+ #if BUILDFLAG(ENABLE_PLUGINS)
+ sandbox_type_ == sandbox::mojom::Sandbox::kPpapi ||
+ #endif
+-#if BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ sandbox_type_ == sandbox::mojom::Sandbox::kVideoCapture ||
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ sandbox_type_ == sandbox::mojom::Sandbox::kHardwareVideoDecoding ||
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -109,7 +109,7 @@ ZygoteHandle UtilitySandboxedProcessLauncherDelegate::
+ // unsandboxed zygote and then apply their actual sandboxes in the forked
+ // process upon startup.
+ if (sandbox_type_ == sandbox::mojom::Sandbox::kNetwork ||
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ sandbox_type_ == sandbox::mojom::Sandbox::kHardwareVideoDecoding ||
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/www/ungoogled-chromium/files/patch-content_browser_v8__snapshot__files.cc b/www/ungoogled-chromium/files/patch-content_browser_v8__snapshot__files.cc
new file mode 100644
index 000000000000..8d15a11ec93d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_v8__snapshot__files.cc
@@ -0,0 +1,11 @@
+--- content/browser/v8_snapshot_files.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/v8_snapshot_files.cc
+@@ -10,7 +10,7 @@
+ namespace content {
+
+ std::map<std::string, base::FilePath> GetV8SnapshotFilesToPreload() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #if defined(USE_V8_CONTEXT_SNAPSHOT)
+ return {{kV8ContextSnapshotDataDescriptor,
+ base::FilePath(FILE_PATH_LITERAL(V8_CONTEXT_SNAPSHOT_FILENAME))}};
diff --git a/www/ungoogled-chromium/files/patch-content_browser_web__contents_web__contents__view__aura.cc b/www/ungoogled-chromium/files/patch-content_browser_web__contents_web__contents__view__aura.cc
new file mode 100644
index 000000000000..99db0d33e13f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_web__contents_web__contents__view__aura.cc
@@ -0,0 +1,29 @@
+--- content/browser/web_contents/web_contents_view_aura.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/web_contents/web_contents_view_aura.cc
+@@ -176,7 +176,7 @@ class WebDragSourceAura : public content::WebContentsO
+ raw_ptr<aura::Window> window_;
+ };
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ // Fill out the OSExchangeData with a file contents, synthesizing a name if
+ // necessary.
+ void PrepareDragForFileContents(const DropData& drop_data,
+@@ -259,7 +259,7 @@ void PrepareDragData(const DropData& drop_data,
+ if (!drop_data.download_metadata.empty())
+ PrepareDragForDownload(drop_data, provider, web_contents);
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ // We set the file contents before the URL because the URL also sets file
+ // contents (to a .URL shortcut). We want to prefer file content data over
+ // a shortcut so we add it first.
+@@ -1360,7 +1360,7 @@ void WebContentsViewAura::OnMouseEvent(ui::MouseEvent*
+ // Linux window managers like to handle raise-on-click themselves. If we
+ // raise-on-click manually, this may override user settings that prevent
+ // focus-stealing.
+-#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD)
+ // It is possible for the web-contents to be destroyed while it is being
+ // activated. Use a weak-ptr to track whether that happened or not.
+ // More in https://crbug.com/1040725
diff --git a/www/ungoogled-chromium/files/patch-content_browser_webui_web__ui__main__frame__observer.cc b/www/ungoogled-chromium/files/patch-content_browser_webui_web__ui__main__frame__observer.cc
new file mode 100644
index 000000000000..53aef2195d08
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_webui_web__ui__main__frame__observer.cc
@@ -0,0 +1,38 @@
+--- content/browser/webui/web_ui_main_frame_observer.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/webui/web_ui_main_frame_observer.cc
+@@ -13,7 +13,7 @@
+ #include "content/public/browser/navigation_handle.h"
+ #include "content/public/browser/web_ui_controller.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/callback_helpers.h"
+ #include "base/feature_list.h"
+ #include "base/logging.h"
+@@ -31,7 +31,7 @@ namespace content {
+
+ namespace {
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Remove the pieces of the URL we don't want to send back with the error
+ // reports. In particular, do not send query or fragments as those can have
+ // privacy-sensitive information in them.
+@@ -55,7 +55,7 @@ WebUIMainFrameObserver::WebUIMainFrameObserver(WebUIIm
+
+ WebUIMainFrameObserver::~WebUIMainFrameObserver() = default;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void WebUIMainFrameObserver::OnDidAddMessageToConsole(
+ RenderFrameHost* source_frame,
+ blink::mojom::ConsoleMessageLevel log_level,
+@@ -163,7 +163,7 @@ void WebUIMainFrameObserver::ReadyToCommitNavigation(
+
+ // TODO(crbug.com/1129544) This is currently disabled due to Windows DLL
+ // thunking issues. Fix & re-enable.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ MaybeEnableWebUIJavaScriptErrorReporting(navigation_handle);
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+ }
diff --git a/www/ungoogled-chromium/files/patch-content_browser_webui_web__ui__main__frame__observer.h b/www/ungoogled-chromium/files/patch-content_browser_webui_web__ui__main__frame__observer.h
new file mode 100644
index 000000000000..1299e6cfde90
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_webui_web__ui__main__frame__observer.h
@@ -0,0 +1,20 @@
+--- content/browser/webui/web_ui_main_frame_observer.h.orig 2022-10-01 07:40:07 UTC
++++ content/browser/webui/web_ui_main_frame_observer.h
+@@ -44,7 +44,7 @@ class CONTENT_EXPORT WebUIMainFrameObserver : public W
+
+ // TODO(crbug.com/1129544) This is currently disabled due to Windows DLL
+ // thunking issues. Fix & re-enable.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // On official Google builds, capture and report JavaScript error messages on
+ // WebUI surfaces back to Google. This allows us to fix JavaScript errors and
+ // exceptions.
+@@ -60,7 +60,7 @@ class CONTENT_EXPORT WebUIMainFrameObserver : public W
+ void ReadyToCommitNavigation(NavigationHandle* navigation_handle) override;
+
+ private:
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void MaybeEnableWebUIJavaScriptErrorReporting(
+ NavigationHandle* navigation_handle);
+
diff --git a/www/ungoogled-chromium/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc b/www/ungoogled-chromium/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc
new file mode 100644
index 000000000000..e2c2b3c24c0a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc
@@ -0,0 +1,70 @@
+--- content/browser/zygote_host/zygote_host_impl_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ content/browser/zygote_host/zygote_host_impl_linux.cc
+@@ -28,6 +28,7 @@ namespace content {
+
+ namespace {
+
++#if !BUILDFLAG(IS_BSD)
+ // Receive a fixed message on fd and return the sender's PID.
+ // Returns true if the message received matches the expected message.
+ bool ReceiveFixedMessage(int fd,
+@@ -49,6 +50,7 @@ bool ReceiveFixedMessage(int fd,
+ return false;
+ return true;
+ }
++#endif
+
+ } // namespace
+
+@@ -58,9 +60,13 @@ ZygoteHost* ZygoteHost::GetInstance() {
+ }
+
+ ZygoteHostImpl::ZygoteHostImpl()
++#if !BUILDFLAG(IS_BSD)
+ : use_namespace_sandbox_(false),
+ use_suid_sandbox_(false),
+ use_suid_sandbox_for_adj_oom_score_(false),
++#else
++ :
++#endif
+ sandbox_binary_(),
+ zygote_pids_lock_(),
+ zygote_pids_() {}
+@@ -73,6 +79,7 @@ ZygoteHostImpl* ZygoteHostImpl::GetInstance() {
+ }
+
+ void ZygoteHostImpl::Init(const base::CommandLine& command_line) {
++#if !BUILDFLAG(IS_BSD)
+ if (command_line.HasSwitch(sandbox::policy::switches::kNoSandbox)) {
+ return;
+ }
+@@ -123,6 +130,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com
+ "you can try using --"
+ << sandbox::policy::switches::kNoSandbox << ".";
+ }
++#endif
+ }
+
+ void ZygoteHostImpl::AddZygotePid(pid_t pid) {
+@@ -147,6 +155,7 @@ pid_t ZygoteHostImpl::LaunchZygote(
+ base::CommandLine* cmd_line,
+ base::ScopedFD* control_fd,
+ base::FileHandleMappingVector additional_remapped_fds) {
++#if !BUILDFLAG(IS_BSD)
+ int fds[2];
+ CHECK_EQ(0, socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds));
+ CHECK(base::UnixDomainSocket::EnableReceiveProcessId(fds[0]));
+@@ -214,9 +223,12 @@ pid_t ZygoteHostImpl::LaunchZygote(
+
+ AddZygotePid(pid);
+ return pid;
++#else
++ return 0;
++#endif
+ }
+
+-#if !BUILDFLAG(IS_OPENBSD)
++#if !BUILDFLAG(IS_BSD)
+ void ZygoteHostImpl::AdjustRendererOOMScore(base::ProcessHandle pid,
+ int score) {
+ // 1) You can't change the oom_score_adj of a non-dumpable process
diff --git a/www/ungoogled-chromium/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h b/www/ungoogled-chromium/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h
new file mode 100644
index 000000000000..026b272c0f92
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h
@@ -0,0 +1,25 @@
+--- content/browser/zygote_host/zygote_host_impl_linux.h.orig 2022-10-01 07:40:07 UTC
++++ content/browser/zygote_host/zygote_host_impl_linux.h
+@@ -42,8 +42,10 @@ class CONTENT_EXPORT ZygoteHostImpl : public ZygoteHos
+ base::ScopedFD* control_fd,
+ base::FileHandleMappingVector additional_remapped_fds);
+
++#if !defined(OS_BSD)
+ void AdjustRendererOOMScore(base::ProcessHandle process_handle,
+ int score) override;
++#endif
+ bool HasZygote() { return !zygote_pids_.empty(); }
+
+ private:
+@@ -57,9 +59,11 @@ class CONTENT_EXPORT ZygoteHostImpl : public ZygoteHos
+
+ int renderer_sandbox_status_;
+
++#if !defined(OS_BSD)
+ bool use_namespace_sandbox_;
+ bool use_suid_sandbox_;
+ bool use_suid_sandbox_for_adj_oom_score_;
++#endif
+ std::string sandbox_binary_;
+
+ // This lock protects the |zygote_pids_| set.
diff --git a/www/ungoogled-chromium/files/patch-content_child_child__process.cc b/www/ungoogled-chromium/files/patch-content_child_child__process.cc
new file mode 100644
index 000000000000..549d9c537bf5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_child_child__process.cc
@@ -0,0 +1,11 @@
+--- content/child/child_process.cc.orig 2022-10-01 07:40:07 UTC
++++ content/child/child_process.cc
+@@ -68,7 +68,7 @@ ChildProcess::ChildProcess(base::ThreadType io_thread_
+ DCHECK(!g_lazy_child_process_tls.Pointer()->Get());
+ g_lazy_child_process_tls.Pointer()->Set(this);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const base::CommandLine& command_line =
+ *base::CommandLine::ForCurrentProcess();
+ const bool is_embedded_in_browser_process =
diff --git a/www/ungoogled-chromium/files/patch-content_common_BUILD.gn b/www/ungoogled-chromium/files/patch-content_common_BUILD.gn
new file mode 100644
index 000000000000..2605a71433c9
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_common_BUILD.gn
@@ -0,0 +1,12 @@
+--- content/common/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ content/common/BUILD.gn
+@@ -428,6 +428,9 @@ if (is_linux || is_chromeos) {
+ public = [ "set_process_title_linux.h" ]
+ sources = [ "set_process_title_linux.cc" ]
+ deps = [ "//base" ]
++ if (is_bsd) {
++ sources -= [ "set_process_title_linux.cc" ]
++ }
+ }
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-content_common_font__list__unittest.cc b/www/ungoogled-chromium/files/patch-content_common_font__list__unittest.cc
new file mode 100644
index 000000000000..2663be43b370
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_common_font__list__unittest.cc
@@ -0,0 +1,11 @@
+--- content/common/font_list_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ content/common/font_list_unittest.cc
+@@ -48,7 +48,7 @@ TEST(FontList, GetFontList) {
+ EXPECT_TRUE(HasFontWithName(fonts, "MS Gothic", "MS Gothic"));
+ EXPECT_TRUE(HasFontWithName(fonts, "Segoe UI", "Segoe UI"));
+ EXPECT_TRUE(HasFontWithName(fonts, "Verdana", "Verdana"));
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ EXPECT_TRUE(HasFontWithName(fonts, "Arimo", "Arimo"));
+ #else
+ EXPECT_TRUE(HasFontWithName(fonts, "Arial", "Arial"));
diff --git a/www/ungoogled-chromium/files/patch-content_common_mojo__core__library__support.cc b/www/ungoogled-chromium/files/patch-content_common_mojo__core__library__support.cc
new file mode 100644
index 000000000000..8651a63ab495
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_common_mojo__core__library__support.cc
@@ -0,0 +1,11 @@
+--- content/common/mojo_core_library_support.cc.orig 2022-10-01 07:40:07 UTC
++++ content/common/mojo_core_library_support.cc
+@@ -15,7 +15,7 @@ bool IsMojoCoreSharedLibraryEnabled() {
+ }
+
+ absl::optional<base::FilePath> GetMojoCoreSharedLibraryPath() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const base::CommandLine& command_line =
+ *base::CommandLine::ForCurrentProcess();
+ if (!command_line.HasSwitch(switches::kMojoCoreLibraryPath))
diff --git a/www/ungoogled-chromium/files/patch-content_common_user__agent.cc b/www/ungoogled-chromium/files/patch-content_common_user__agent.cc
new file mode 100644
index 000000000000..42f783a98e52
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_common_user__agent.cc
@@ -0,0 +1,37 @@
+--- content/common/user_agent.cc.orig 2022-10-01 07:40:07 UTC
++++ content/common/user_agent.cc
+@@ -41,7 +41,7 @@ std::string GetUserAgentPlatform() {
+ return "";
+ #elif BUILDFLAG(IS_MAC)
+ return "Macintosh; ";
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return "X11; "; // strange, but that's what Firefox uses
+ #elif BUILDFLAG(IS_ANDROID)
+ return "Linux; ";
+@@ -63,7 +63,7 @@ std::string GetUnifiedPlatform() {
+ return "Windows NT 10.0; Win64; x64";
+ #elif BUILDFLAG(IS_FUCHSIA)
+ return "Fuchsia";
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return "X11; Linux x86_64";
+ #else
+ #error Unsupported platform
+@@ -275,6 +275,16 @@ std::string BuildOSCpuInfoFromOSVersionAndCpuType(cons
+ "Android %s", os_version.c_str()
+ #elif BUILDFLAG(IS_FUCHSIA)
+ "Fuchsia"
++#elif BUILDFLAG(IS_BSD)
++#if defined(__x86_64__)
++ "Linux x86_64; %s %s",
++#elif defined(__aarch64__)
++ "Linux aarch64; %s %s",
++#else
++ "Linux i686; %s %s",
++#endif
++ unixinfo.sysname, // e.g. Linux
++ cpu_type.c_str() // e.g. i686
+ #elif BUILDFLAG(IS_POSIX)
+ "%s %s",
+ unixinfo.sysname, // e.g. Linux
diff --git a/www/ungoogled-chromium/files/patch-content_gpu_gpu__main.cc b/www/ungoogled-chromium/files/patch-content_gpu_gpu__main.cc
new file mode 100644
index 000000000000..55d9fbdeced2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_gpu_gpu__main.cc
@@ -0,0 +1,47 @@
+--- content/gpu/gpu_main.cc.orig 2022-10-01 07:40:07 UTC
++++ content/gpu/gpu_main.cc
+@@ -86,7 +86,7 @@
+ #include "sandbox/win/src/sandbox.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "content/gpu/gpu_sandbox_hook_linux.h"
+ #include "sandbox/policy/linux/sandbox_linux.h"
+ #include "sandbox/policy/sandbox_type.h"
+@@ -108,7 +108,7 @@ namespace content {
+
+ namespace {
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread*,
+ const gpu::GPUInfo*,
+ const gpu::GpuPreferences&);
+@@ -170,7 +170,7 @@ class ContentSandboxHelper : public gpu::GpuSandboxHel
+ bool EnsureSandboxInitialized(gpu::GpuWatchdogThread* watchdog_thread,
+ const gpu::GPUInfo* gpu_info,
+ const gpu::GpuPreferences& gpu_prefs) override {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return StartSandboxLinux(watchdog_thread, gpu_info, gpu_prefs);
+ #elif BUILDFLAG(IS_WIN)
+ return StartSandboxWindows(sandbox_info_);
+@@ -266,7 +266,7 @@ int GpuMain(MainFunctionParams parameters) {
+ std::make_unique<base::SingleThreadTaskExecutor>(
+ gpu_preferences.message_pump_type);
+ }
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #error "Unsupported Linux platform."
+ #elif BUILDFLAG(IS_MAC)
+ // Cross-process CoreAnimation requires a CFRunLoop to function at all, and
+@@ -401,7 +401,7 @@ int GpuMain(MainFunctionParams parameters) {
+
+ namespace {
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdog_thread,
+ const gpu::GPUInfo* gpu_info,
+ const gpu::GpuPreferences& gpu_prefs) {
diff --git a/www/ungoogled-chromium/files/patch-content_gpu_gpu__sandbox__hook__linux.cc b/www/ungoogled-chromium/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..ea48f1b4ea5f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
@@ -0,0 +1,70 @@
+--- content/gpu/gpu_sandbox_hook_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ content/gpu/gpu_sandbox_hook_linux.cc
+@@ -118,6 +118,7 @@ void AddStandardChromeOsPermissions(
+ permissions->push_back(BrokerFilePermission::ReadOnly(kAngleGlesPath));
+ }
+
++#if !defined(OS_BSD)
+ void AddV4L2GpuPermissions(
+ std::vector<BrokerFilePermission>* permissions,
+ const sandbox::policy::SandboxSeccompBPF::Options& options) {
+@@ -434,8 +435,10 @@ std::vector<BrokerFilePermission> FilePermissionsForGp
+ AddStandardGpuPermissions(&permissions);
+ return permissions;
+ }
++#endif
+
+ void LoadArmGpuLibraries() {
++#if !defined(OS_BSD)
+ // Preload the Mali library.
+ if (UseChromecastSandboxAllowlist()) {
+ for (const char* path : kAllowedChromecastPaths) {
+@@ -477,6 +480,7 @@ void LoadArmGpuLibraries() {
+ dlopen(driver_paths[i], dlopen_flag);
+ }
+ }
++#endif
+ }
+
+ bool LoadAmdGpuLibraries() {
+@@ -542,12 +546,14 @@ void LoadV4L2Libraries(
+ }
+
+ void LoadChromecastV4L2Libraries() {
++#if !defined(OS_BSD)
+ for (const char* path : kAllowedChromecastPaths) {
+ const std::string library_path(std::string(path) +
+ std::string("libvpcodec.so"));
+ if (dlopen(library_path.c_str(), dlopen_flag))
+ break;
+ }
++#endif
+ }
+
+ bool LoadLibrariesForGpu(
+@@ -575,6 +581,7 @@ bool LoadLibrariesForGpu(
+ return true;
+ }
+
++#if !defined(OS_BSD)
+ sandbox::syscall_broker::BrokerCommandSet CommandSetForGPU(
+ const sandbox::policy::SandboxLinux::Options& options) {
+ sandbox::syscall_broker::BrokerCommandSet command_set;
+@@ -597,13 +604,17 @@ bool BrokerProcessPreSandboxHook(
+ SetProcessTitleFromCommandLine(nullptr);
+ return true;
+ }
++#endif
+
+ } // namespace
+
+ bool GpuProcessPreSandboxHook(sandbox::policy::SandboxLinux::Options options) {
++ NOTIMPLEMENTED();
++#if !defined(OS_BSD)
+ sandbox::policy::SandboxLinux::GetInstance()->StartBrokerProcess(
+ CommandSetForGPU(options), FilePermissionsForGpu(options),
+ base::BindOnce(BrokerProcessPreSandboxHook), options);
++#endif
+
+ if (!LoadLibrariesForGpu(options))
+ return false;
diff --git a/www/ungoogled-chromium/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc b/www/ungoogled-chromium/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
new file mode 100644
index 000000000000..116b24c26313
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
@@ -0,0 +1,29 @@
+--- content/ppapi_plugin/ppapi_blink_platform_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ content/ppapi_plugin/ppapi_blink_platform_impl.cc
+@@ -20,7 +20,7 @@
+
+ #if BUILDFLAG(IS_MAC)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #include "mojo/public/cpp/bindings/pending_remote.h"
+ #endif
+@@ -35,7 +35,7 @@ typedef struct CGFont* CGFontRef;
+ namespace content {
+
+ PpapiBlinkPlatformImpl::PpapiBlinkPlatformImpl() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ mojo::PendingRemote<font_service::mojom::FontService> font_service;
+ ChildThread::Get()->BindHostReceiver(
+ font_service.InitWithNewPipeAndPassReceiver());
+@@ -53,7 +53,7 @@ PpapiBlinkPlatformImpl::~PpapiBlinkPlatformImpl() {
+ void PpapiBlinkPlatformImpl::Shutdown() {}
+
+ blink::WebSandboxSupport* PpapiBlinkPlatformImpl::GetSandboxSupport() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ return sandbox_support_.get();
+ #else
+ return nullptr;
diff --git a/www/ungoogled-chromium/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h b/www/ungoogled-chromium/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
new file mode 100644
index 000000000000..294f436373ff
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
@@ -0,0 +1,25 @@
+--- content/ppapi_plugin/ppapi_blink_platform_impl.h.orig 2022-10-01 07:40:07 UTC
++++ content/ppapi_plugin/ppapi_blink_platform_impl.h
+@@ -12,7 +12,7 @@
+ #include "build/build_config.h"
+ #include "content/child/blink_platform_impl.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "third_party/skia/include/core/SkRefCnt.h"
+ #endif
+@@ -38,11 +38,11 @@ class PpapiBlinkPlatformImpl : public BlinkPlatformImp
+ blink::WebString DefaultLocale() override;
+
+ private:
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+ };
diff --git a/www/ungoogled-chromium/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc b/www/ungoogled-chromium/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc
new file mode 100644
index 000000000000..c3148a341b66
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc
@@ -0,0 +1,23 @@
+--- content/ppapi_plugin/ppapi_plugin_main.cc.orig 2022-10-01 07:40:07 UTC
++++ content/ppapi_plugin/ppapi_plugin_main.cc
+@@ -53,6 +53,11 @@
+ #include "gin/v8_initializer.h"
+ #endif
+
++#if BUILDFLAG(IS_OPENBSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#include "sandbox/policy/sandbox_type.h"
++#endif
++
+ #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID)
+ #include <stdlib.h>
+ #endif
+@@ -136,7 +141,7 @@ int PpapiPluginMain(MainFunctionParams parameters) {
+ gin::V8Initializer::LoadV8Snapshot();
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD)
+ sandbox::policy::SandboxLinux::GetInstance()->InitializeSandbox(
+ sandbox::policy::SandboxTypeFromCommandLine(command_line),
+ sandbox::policy::SandboxLinux::PreSandboxHook(),
diff --git a/www/ungoogled-chromium/files/patch-content_public_browser_render__process__host.h b/www/ungoogled-chromium/files/patch-content_public_browser_render__process__host.h
new file mode 100644
index 000000000000..43d5bbc6e27d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_public_browser_render__process__host.h
@@ -0,0 +1,20 @@
+--- content/public/browser/render_process_host.h.orig 2022-10-01 07:40:07 UTC
++++ content/public/browser/render_process_host.h
+@@ -53,7 +53,7 @@
+ #include "content/public/browser/android/child_process_importance.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "media/mojo/mojom/stable/stable_video_decoder.mojom-forward.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+@@ -626,7 +626,7 @@ class CONTENT_EXPORT RenderProcessHost : public IPC::S
+ const blink::StorageKey& storage_key,
+ mojo::PendingReceiver<blink::mojom::WebSocketConnector> receiver) = 0;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ virtual void CreateStableVideoDecoder(
+ mojo::PendingReceiver<media::stable::mojom::StableVideoDecoder>
+ receiver) = 0;
diff --git a/www/ungoogled-chromium/files/patch-content_public_browser_zygote__host_zygote__host__linux.h b/www/ungoogled-chromium/files/patch-content_public_browser_zygote__host_zygote__host__linux.h
new file mode 100644
index 000000000000..5a50e595b73f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_public_browser_zygote__host_zygote__host__linux.h
@@ -0,0 +1,16 @@
+--- content/public/browser/zygote_host/zygote_host_linux.h.orig 2022-10-01 07:40:07 UTC
++++ content/public/browser/zygote_host/zygote_host_linux.h
+@@ -30,11 +30,13 @@ class ZygoteHost {
+ // after the first render has been forked.
+ virtual int GetRendererSandboxStatus() = 0;
+
++#if !defined(OS_BSD)
+ // Adjust the OOM score of the given renderer's PID. The allowed
+ // range for the score is [0, 1000], where higher values are more
+ // likely to be killed by the OOM killer.
+ virtual void AdjustRendererOOMScore(base::ProcessHandle process_handle,
+ int score) = 0;
++#endif
+ };
+
+ } // namespace content
diff --git a/www/ungoogled-chromium/files/patch-content_public_common_common__param__traits__macros.h b/www/ungoogled-chromium/files/patch-content_public_common_common__param__traits__macros.h
new file mode 100644
index 000000000000..e3b217c455e5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_public_common_common__param__traits__macros.h
@@ -0,0 +1,11 @@
+--- content/public/common/common_param_traits_macros.h.orig 2022-10-01 07:40:07 UTC
++++ content/public/common/common_param_traits_macros.h
+@@ -128,7 +128,7 @@ IPC_STRUCT_TRAITS_BEGIN(blink::RendererPreferences)
+ IPC_STRUCT_TRAITS_MEMBER(accept_languages)
+ IPC_STRUCT_TRAITS_MEMBER(plugin_fullscreen_allowed)
+ IPC_STRUCT_TRAITS_MEMBER(caret_browsing_enabled)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(system_font_family_name)
+ #endif
+ #if BUILDFLAG(IS_WIN)
diff --git a/www/ungoogled-chromium/files/patch-content_public_common_content__features.cc b/www/ungoogled-chromium/files/patch-content_public_common_content__features.cc
new file mode 100644
index 000000000000..54d678c45ac6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_public_common_content__features.cc
@@ -0,0 +1,50 @@
+--- content/public/common/content_features.cc.orig 2022-10-01 07:40:07 UTC
++++ content/public/common/content_features.cc
+@@ -43,7 +43,7 @@ const base::Feature kAudioServiceOutOfProcess {
+ "AudioServiceOutOfProcess",
+ // TODO(crbug.com/1052397): Remove !IS_CHROMEOS_LACROS once lacros starts being
+ // built with OS_CHROMEOS instead of OS_LINUX.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+@@ -55,7 +55,7 @@ const base::Feature kAudioServiceOutOfProcess {
+ // kAudioServiceOutOfProcess feature is enabled.
+ const base::Feature kAudioServiceSandbox {
+ "AudioServiceSandbox",
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
+@@ -1086,7 +1086,7 @@ const base::Feature kWebAssemblyBaseline{"WebAssemblyB
+ const base::Feature kWebAssemblyCodeProtection{
+ "WebAssemblyCodeProtection", base::FEATURE_ENABLED_BY_DEFAULT};
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_X86_64)
+ // Use memory protection keys in userspace (PKU) (if available) to protect code
+ // JITed for WebAssembly. Fall back to traditional memory protection if
+ // WebAssemblyCodeProtection is also enabled.
+@@ -1122,7 +1122,7 @@ const base::Feature kWebAssemblyTiering{"WebAssemblyTi
+ const base::Feature kWebAssemblyTrapHandler {
+ "WebAssemblyTrapHandler",
+ #if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_MAC)) && \
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)) && \
+ defined(ARCH_CPU_X86_64)) || \
+ (BUILDFLAG(IS_MAC) && defined(ARCH_CPU_ARM64))
+ base::FEATURE_ENABLED_BY_DEFAULT
+@@ -1192,7 +1192,11 @@ const base::Feature kWebUIReportOnlyTrustedTypes{
+
+ // Controls whether the WebUSB API is enabled:
+ // https://wicg.github.io/webusb
++#if BUILDFLAG(IS_BSD)
++const base::Feature kWebUsb{"WebUSB", base::FEATURE_DISABLED_BY_DEFAULT};
++#else
+ const base::Feature kWebUsb{"WebUSB", base::FEATURE_ENABLED_BY_DEFAULT};
++#endif
+
+ // Controls whether the WebXR Device API is enabled.
+ const base::Feature kWebXr{"WebXR", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/www/ungoogled-chromium/files/patch-content_public_common_content__features.h b/www/ungoogled-chromium/files/patch-content_public_common_content__features.h
new file mode 100644
index 000000000000..20204cfaadc0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_public_common_content__features.h
@@ -0,0 +1,11 @@
+--- content/public/common/content_features.h.orig 2022-10-01 07:40:07 UTC
++++ content/public/common/content_features.h
+@@ -282,7 +282,7 @@ CONTENT_EXPORT extern const base::Feature kV8VmFuture;
+ CONTENT_EXPORT extern const base::Feature kWebAppWindowControlsOverlay;
+ CONTENT_EXPORT extern const base::Feature kWebAssemblyBaseline;
+ CONTENT_EXPORT extern const base::Feature kWebAssemblyCodeProtection;
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_X86_64)
+ CONTENT_EXPORT extern const base::Feature kWebAssemblyCodeProtectionPku;
+ #endif // (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) &&
+ // defined(ARCH_CPU_X86_64)
diff --git a/www/ungoogled-chromium/files/patch-content_public_common_content__switches.cc b/www/ungoogled-chromium/files/patch-content_public_common_content__switches.cc
new file mode 100644
index 000000000000..343e819259ac
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_public_common_content__switches.cc
@@ -0,0 +1,20 @@
+--- content/public/common/content_switches.cc.orig 2022-10-01 07:40:07 UTC
++++ content/public/common/content_switches.cc
+@@ -370,6 +370,8 @@ const char kEnableGpuMemoryBufferVideoFrames[] =
+ // builds.
+ const char kEnableLogging[] = "enable-logging";
+
++const char kDisableUnveil[] = "disable-unveil";
++
+ // Enables the type, downlinkMax attributes of the NetInfo API. Also, enables
+ // triggering of change attribute of the NetInfo API when there is a change in
+ // the connection type.
+@@ -984,7 +986,7 @@ const char kEnableAutomation[] = "enable-automation";
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ // Allows sending text-to-speech requests to speech-dispatcher, a common
+ // Linux speech service. Because it's buggy, the user must explicitly
+ // enable it so that visiting a random webpage can't cause instability.
diff --git a/www/ungoogled-chromium/files/patch-content_public_common_content__switches.h b/www/ungoogled-chromium/files/patch-content_public_common_content__switches.h
new file mode 100644
index 000000000000..32e9393e0a85
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_public_common_content__switches.h
@@ -0,0 +1,19 @@
+--- content/public/common/content_switches.h.orig 2022-10-01 07:40:07 UTC
++++ content/public/common/content_switches.h
+@@ -118,6 +118,7 @@ CONTENT_EXPORT extern const char kEnableBlinkTestFeatu
+ CONTENT_EXPORT extern const char kEnableGpuMemoryBufferVideoFrames[];
+ CONTENT_EXPORT extern const char kEnableLCDText[];
+ CONTENT_EXPORT extern const char kEnableLogging[];
++CONTENT_EXPORT extern const char kDisableUnveil[];
+ CONTENT_EXPORT extern const char kEnableNetworkInformationDownlinkMax[];
+ CONTENT_EXPORT extern const char kEnableCanvas2DLayers[];
+ CONTENT_EXPORT extern const char kEnablePluginPlaceholderTesting[];
+@@ -265,7 +266,7 @@ CONTENT_EXPORT extern const char kRendererWaitForJavaD
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ CONTENT_EXPORT extern const char kEnableSpeechDispatcher[];
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-content_public_common_zygote_features.gni b/www/ungoogled-chromium/files/patch-content_public_common_zygote_features.gni
new file mode 100644
index 000000000000..a6eee1453e0c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_public_common_zygote_features.gni
@@ -0,0 +1,8 @@
+--- content/public/common/zygote/features.gni.orig 2022-10-01 07:40:07 UTC
++++ content/public/common/zygote/features.gni
+@@ -2,4 +2,4 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+-use_zygote_handle = is_posix && !is_android && !is_mac
++use_zygote_handle = is_posix && !is_android && !is_mac && !is_bsd
diff --git a/www/ungoogled-chromium/files/patch-content_public_test_mock__render__process__host.h b/www/ungoogled-chromium/files/patch-content_public_test_mock__render__process__host.h
new file mode 100644
index 000000000000..da8e6fe099c6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_public_test_mock__render__process__host.h
@@ -0,0 +1,11 @@
+--- content/public/test/mock_render_process_host.h.orig 2022-10-01 07:40:07 UTC
++++ content/public/test/mock_render_process_host.h
+@@ -261,7 +261,7 @@ class MockRenderProcessHost : public RenderProcessHost
+ const blink::StorageKey& storage_key,
+ mojo::PendingReceiver<blink::mojom::WebSocketConnector> receiver)
+ override {}
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void CreateStableVideoDecoder(
+ mojo::PendingReceiver<media::stable::mojom::StableVideoDecoder> receiver)
+ override {}
diff --git a/www/ungoogled-chromium/files/patch-content_public_test_mock__render__thread.cc b/www/ungoogled-chromium/files/patch-content_public_test_mock__render__thread.cc
new file mode 100644
index 000000000000..2f51e0bffbf6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_public_test_mock__render__thread.cc
@@ -0,0 +1,11 @@
+--- content/public/test/mock_render_thread.cc.orig 2022-10-01 07:40:07 UTC
++++ content/public/test/mock_render_thread.cc
+@@ -62,7 +62,7 @@ class MockRenderMessageFilterImpl : public mojom::Rend
+ std::move(callback).Run(false);
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void SetThreadType(int32_t platform_thread_id,
+ base::ThreadType thread_type) override {}
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-content_renderer_media_render__media__client.cc b/www/ungoogled-chromium/files/patch-content_renderer_media_render__media__client.cc
new file mode 100644
index 000000000000..762ea4ee3550
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_renderer_media_render__media__client.cc
@@ -0,0 +1,11 @@
+--- content/renderer/media/render_media_client.cc.orig 2022-10-01 07:40:07 UTC
++++ content/renderer/media/render_media_client.cc
+@@ -21,7 +21,7 @@ namespace {
+ // it asynchronously ahead of time, but can fallback to a blocking call
+ // when it's needed synchronously.
+ #if BUILDFLAG(ENABLE_PLATFORM_HEVC) && \
+- (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX))
++ (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD))
+ #define NEEDS_PROFILE_UPDATER 1
+ #else
+ #define NEEDS_PROFILE_UPDATER 0
diff --git a/www/ungoogled-chromium/files/patch-content_renderer_render__process__impl.cc b/www/ungoogled-chromium/files/patch-content_renderer_render__process__impl.cc
new file mode 100644
index 000000000000..212bc6d5cf0e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_renderer_render__process__impl.cc
@@ -0,0 +1,29 @@
+--- content/renderer/render_process_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ content/renderer/render_process_impl.cc
+@@ -46,7 +46,7 @@
+ #if BUILDFLAG(IS_WIN)
+ #include "base/win/win_util.h"
+ #endif
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_X86_64)
+ #include "v8/include/v8-wasm-trap-handler-posix.h"
+ #endif
+
+@@ -138,7 +138,7 @@ RenderProcessImpl::RenderProcessImpl()
+ SetV8FlagIfNotFeature(features::kWebAssemblyCodeProtection,
+ "--no-wasm-write-protect-code-memory");
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_X86_64)
+ SetV8FlagIfFeature(features::kWebAssemblyCodeProtectionPku,
+ "--wasm-memory-protection-keys");
+ SetV8FlagIfNotFeature(features::kWebAssemblyCodeProtectionPku,
+@@ -224,7 +224,7 @@ RenderProcessImpl::RenderProcessImpl()
+
+ v8::V8::SetFlagsFromString("--freeze-flags-after-init");
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_X86_64)
+ if (base::FeatureList::IsEnabled(features::kWebAssemblyTrapHandler)) {
+ if (command_line->HasSwitch(switches::kEnableCrashpad) ||
+ command_line->HasSwitch(switches::kEnableCrashReporter) ||
diff --git a/www/ungoogled-chromium/files/patch-content_renderer_render__thread__impl.cc b/www/ungoogled-chromium/files/patch-content_renderer_render__thread__impl.cc
new file mode 100644
index 000000000000..91b765f18967
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_renderer_render__thread__impl.cc
@@ -0,0 +1,38 @@
+--- content/renderer/render_thread_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ content/renderer/render_thread_impl.cc
+@@ -190,7 +190,7 @@
+
+ #if BUILDFLAG(IS_MAC)
+ #include <malloc/malloc.h>
+-#else
++#elif !BUILDFLAG(IS_OPENBSD)
+ #include <malloc.h>
+ #endif
+
+@@ -671,7 +671,7 @@ void RenderThreadImpl::Init() {
+ base::DiscardableMemoryAllocator::SetInstance(
+ discardable_memory_allocator_.get());
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ render_message_filter()->SetThreadType(
+ ChildProcess::current()->io_thread_id(), base::ThreadType::kCompositing);
+ #endif
+@@ -1041,7 +1041,7 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl:
+
+ const bool enable_video_decode_accelerator =
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ base::FeatureList::IsEnabled(media::kVaapiVideoDecodeLinux) &&
+ #else
+ !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode) &&
+@@ -1052,7 +1052,7 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl:
+
+ const bool enable_video_encode_accelerator =
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ base::FeatureList::IsEnabled(media::kVaapiVideoEncodeLinux) &&
+ #else
+ !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoEncode) &&
diff --git a/www/ungoogled-chromium/files/patch-content_renderer_renderer__blink__platform__impl.cc b/www/ungoogled-chromium/files/patch-content_renderer_renderer__blink__platform__impl.cc
new file mode 100644
index 000000000000..4ebb392f9018
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_renderer_renderer__blink__platform__impl.cc
@@ -0,0 +1,47 @@
+--- content/renderer/renderer_blink_platform_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ content/renderer/renderer_blink_platform_impl.cc
+@@ -108,7 +108,7 @@
+
+ #if BUILDFLAG(IS_MAC)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #endif
+
+@@ -177,7 +177,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+ main_thread_scheduler_(main_thread_scheduler) {
+ // RenderThread may not exist in some tests.
+ if (RenderThreadImpl::current()) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ mojo::PendingRemote<font_service::mojom::FontService> font_service;
+ RenderThreadImpl::current()->BindHostReceiver(
+ font_service.InitWithNewPipeAndPassReceiver());
+@@ -187,7 +187,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+ #endif
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ if (sandboxEnabled()) {
+ #if BUILDFLAG(IS_MAC)
+ sandbox_support_ = std::make_unique<WebSandboxSupportMac>();
+@@ -254,7 +254,7 @@ RendererBlinkPlatformImpl::WrapURLLoaderFactory(
+ /*terminate_sync_load_event=*/nullptr);
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void RendererBlinkPlatformImpl::SetThreadType(base::PlatformThreadId thread_id,
+ base::ThreadType thread_type) {
+ if (RenderThreadImpl* render_thread = RenderThreadImpl::current()) {
+@@ -265,7 +265,7 @@ void RendererBlinkPlatformImpl::SetThreadType(base::Pl
+ #endif
+
+ blink::WebSandboxSupport* RendererBlinkPlatformImpl::GetSandboxSupport() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ return sandbox_support_.get();
+ #else
+ // These platforms do not require sandbox support.
diff --git a/www/ungoogled-chromium/files/patch-content_renderer_renderer__blink__platform__impl.h b/www/ungoogled-chromium/files/patch-content_renderer_renderer__blink__platform__impl.h
new file mode 100644
index 000000000000..2658d25ec546
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_renderer_renderer__blink__platform__impl.h
@@ -0,0 +1,38 @@
+--- content/renderer/renderer_blink_platform_impl.h.orig 2022-10-01 07:40:07 UTC
++++ content/renderer/renderer_blink_platform_impl.h
+@@ -29,7 +29,7 @@
+ #include "third_party/blink/public/common/user_agent/user_agent_metadata.h"
+ #include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h" // nogncheck
+ #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck
+ #endif
+@@ -169,7 +169,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+ const blink::WebURL& top_document_web_url) override;
+ gpu::GpuMemoryBufferManager* GetGpuMemoryBufferManager() override;
+ blink::WebString ConvertIDNToUnicode(const blink::WebString& host) override;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void SetThreadType(base::PlatformThreadId thread_id,
+ base::ThreadType) override;
+ #endif
+@@ -235,7 +235,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+ void Collect3DContextInformation(blink::Platform::GraphicsInfo* gl_info,
+ const gpu::GPUInfo& gpu_info) const;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+
+@@ -255,7 +255,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+ mutable base::WaitableEvent io_thread_id_ready_event_;
+ base::PlatformThreadId io_thread_id_ = base::kInvalidThreadId;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc b/www/ungoogled-chromium/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
new file mode 100644
index 000000000000..8b47f3e05ab0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
@@ -0,0 +1,18 @@
+--- content/renderer/renderer_main_platform_delegate_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ content/renderer/renderer_main_platform_delegate_linux.cc
+@@ -44,6 +44,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() {
+ // any renderer has been started.
+ // Here, we test that the status of SeccompBpf in the renderer is consistent
+ // with what SandboxLinux::GetStatus() said we would do.
++#if !defined(OS_BSD)
+ auto* linux_sandbox = sandbox::policy::SandboxLinux::GetInstance();
+ if (linux_sandbox->GetStatus() & sandbox::policy::SandboxLinux::kSeccompBPF) {
+ CHECK(linux_sandbox->seccomp_bpf_started());
+@@ -65,6 +66,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() {
+ CHECK_EQ(errno, EPERM);
+ }
+ #endif // __x86_64__
++#endif
+
+ return true;
+ }
diff --git a/www/ungoogled-chromium/files/patch-content_shell_BUILD.gn b/www/ungoogled-chromium/files/patch-content_shell_BUILD.gn
new file mode 100644
index 000000000000..ffaf91638428
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_shell_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/shell/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ content/shell/BUILD.gn
+@@ -893,7 +893,7 @@ group("content_shell_crash_test") {
+ if (is_win) {
+ data_deps += [ "//build/win:copy_cdb_to_output" ]
+ }
+- if (is_posix) {
++ if (is_posix && !is_bsd) {
+ data_deps += [
+ "//third_party/breakpad:dump_syms",
+ "//third_party/breakpad:minidump_stackwalk",
diff --git a/www/ungoogled-chromium/files/patch-content_shell_app_shell__main__delegate.cc b/www/ungoogled-chromium/files/patch-content_shell_app_shell__main__delegate.cc
new file mode 100644
index 000000000000..f0db400681f9
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_shell_app_shell__main__delegate.cc
@@ -0,0 +1,11 @@
+--- content/shell/app/shell_main_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ content/shell/app/shell_main_delegate.cc
+@@ -208,7 +208,7 @@ void ShellMainDelegate::PreSandboxStartup() {
+ // Reporting for sub-processes will be initialized in ZygoteForked.
+ if (process_type != switches::kZygoteProcess) {
+ crash_reporter::InitializeCrashpad(process_type.empty(), process_type);
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ crash_reporter::SetFirstChanceExceptionHandler(
+ v8::TryHandleWebAssemblyTrapPosix);
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-content_shell_browser_shell__browser__main__parts.cc b/www/ungoogled-chromium/files/patch-content_shell_browser_shell__browser__main__parts.cc
new file mode 100644
index 000000000000..cda7e588a61f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_shell_browser_shell__browser__main__parts.cc
@@ -0,0 +1,47 @@
+--- content/shell/browser/shell_browser_main_parts.cc.orig 2022-10-01 07:40:07 UTC
++++ content/shell/browser/shell_browser_main_parts.cc
+@@ -50,7 +50,7 @@
+ #include "net/base/network_change_notifier.h"
+ #endif
+
+-#if defined(USE_AURA) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD))
+ #include "ui/base/ime/init/input_method_initializer.h"
+ #endif
+
+@@ -65,7 +65,7 @@
+ #include "chromeos/lacros/dbus/lacros_dbus_thread_manager.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "ui/linux/linux_ui.h" // nogncheck
+ #include "ui/linux/linux_ui_factory.h" // nogncheck
+ #endif
+@@ -129,7 +129,7 @@ void ShellBrowserMainParts::PostCreateMainMessageLoop(
+ }
+
+ int ShellBrowserMainParts::PreEarlyInitialization() {
+-#if defined(USE_AURA) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD))
+ ui::InitializeInputMethodForTesting();
+ #endif
+ #if BUILDFLAG(IS_ANDROID)
+@@ -153,7 +153,7 @@ void ShellBrowserMainParts::ToolkitInitialized() {
+ if (switches::IsRunWebTestsSwitchPresent())
+ return;
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ ui::LinuxUi::SetInstance(ui::CreateLinuxUi());
+ #endif
+ }
+@@ -196,7 +196,7 @@ void ShellBrowserMainParts::PostMainMessageLoopRun() {
+ ShellDevToolsManagerDelegate::StopHttpHandler();
+ browser_context_.reset();
+ off_the_record_browser_context_.reset();
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ ui::LinuxUi::SetInstance(nullptr);
+ #endif
+ performance_manager_lifetime_.reset();
diff --git a/www/ungoogled-chromium/files/patch-content_shell_browser_shell__paths.cc b/www/ungoogled-chromium/files/patch-content_shell_browser_shell__paths.cc
new file mode 100644
index 000000000000..3d3d8ff2ebb8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_shell_browser_shell__paths.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_paths.cc.orig 2022-10-01 07:40:07 UTC
++++ content/shell/browser/shell_paths.cc
+@@ -13,7 +13,7 @@
+
+ #if BUILDFLAG(IS_FUCHSIA)
+ #include "base/fuchsia/file_utils.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/nix/xdg_util.h"
+ #endif
+
+@@ -25,7 +25,7 @@ bool GetDefaultUserDataDirectory(base::FilePath* resul
+ #if BUILDFLAG(IS_WIN)
+ CHECK(base::PathService::Get(base::DIR_LOCAL_APP_DATA, result));
+ *result = result->Append(std::wstring(L"content_shell"));
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::FilePath config_dir(base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir));
diff --git a/www/ungoogled-chromium/files/patch-content_shell_utility_shell__content__utility__client.cc b/www/ungoogled-chromium/files/patch-content_shell_utility_shell__content__utility__client.cc
new file mode 100644
index 000000000000..b37d5ac19acf
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_shell_utility_shell__content__utility__client.cc
@@ -0,0 +1,20 @@
+--- content/shell/utility/shell_content_utility_client.cc.orig 2022-10-01 07:40:07 UTC
++++ content/shell/utility/shell_content_utility_client.cc
+@@ -32,7 +32,7 @@
+ #include "sandbox/policy/sandbox.h"
+ #include "services/test/echo/echo_service.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "content/test/sandbox_status_service.h"
+ #endif
+
+@@ -143,7 +143,7 @@ void ShellContentUtilityClient::ExposeInterfacesToBrow
+ binders->Add<mojom::PowerMonitorTest>(
+ base::BindRepeating(&PowerMonitorTestImpl::MakeSelfOwnedReceiver),
+ base::ThreadTaskRunnerHandle::Get());
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (register_sandbox_status_helper_) {
+ binders->Add<content::mojom::SandboxStatusService>(
+ base::BindRepeating(
diff --git a/www/ungoogled-chromium/files/patch-content_test_BUILD.gn b/www/ungoogled-chromium/files/patch-content_test_BUILD.gn
new file mode 100644
index 000000000000..567229eeb5a6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_test_BUILD.gn
@@ -0,0 +1,20 @@
+--- content/test/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ content/test/BUILD.gn
+@@ -2055,7 +2055,7 @@ static_library("run_all_unittests") {
+ ":test_support",
+ "//base/test:test_support",
+ ]
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ deps += [ "//content/common:set_process_title_linux" ]
+ }
+ }
+@@ -3025,7 +3025,7 @@ test("content_unittests") {
+ deps += [ "//third_party/boringssl" ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [ "../common/set_process_title_linux_unittest.cc" ]
+ deps += [ "//content/common:set_process_title_linux" ]
+ }
diff --git a/www/ungoogled-chromium/files/patch-content_utility_services.cc b/www/ungoogled-chromium/files/patch-content_utility_services.cc
new file mode 100644
index 000000000000..8a0057625c29
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_utility_services.cc
@@ -0,0 +1,47 @@
+--- content/utility/services.cc.orig 2022-10-01 07:40:07 UTC
++++ content/utility/services.cc
+@@ -63,7 +63,7 @@
+ extern sandbox::TargetServices* g_utility_target_services;
+ #endif // BUILDFLAG(IS_WIN)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "sandbox/linux/services/libc_interceptor.h"
+ #include "sandbox/policy/mojom/sandbox.mojom.h"
+ #include "sandbox/policy/sandbox_type.h"
+@@ -85,7 +85,7 @@ extern sandbox::TargetServices* g_utility_target_servi
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH) && (BUILDFLAG(USE_VAAPI) ||
+ // BUILDFLAG(USE_V4L2_CODEC))
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)) && \
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)) && \
+ (BUILDFLAG(USE_VAAPI) || BUILDFLAG(USE_V4L2_CODEC))
+ #include "media/mojo/services/stable_video_decoder_factory_service.h" // nogncheck
+ #endif // (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)) &&
+@@ -198,7 +198,7 @@ auto RunAudio(mojo::PendingReceiver<audio::mojom::Audi
+ << "task_policy_set TASK_QOS_POLICY";
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ auto* command_line = base::CommandLine::ForCurrentProcess();
+ if (sandbox::policy::SandboxTypeFromCommandLine(*command_line) ==
+ sandbox::mojom::Sandbox::kNoSandbox) {
+@@ -288,7 +288,7 @@ auto RunOOPArcVideoAcceleratorFactoryService(
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH) && (BUILDFLAG(USE_VAAPI) ||
+ // BUILDFLAG(USE_V4L2_CODEC))
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)) && \
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)) && \
+ (BUILDFLAG(USE_VAAPI) || BUILDFLAG(USE_V4L2_CODEC))
+ auto RunStableVideoDecoderFactoryService(
+ mojo::PendingReceiver<media::stable::mojom::StableVideoDecoderFactory>
+@@ -342,7 +342,7 @@ void RegisterMainThreadServices(mojo::ServiceFactory&
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH) && (BUILDFLAG(USE_VAAPI) ||
+ // BUILDFLAG(USE_V4L2_CODEC))
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)) && \
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)) && \
+ (BUILDFLAG(USE_VAAPI) || BUILDFLAG(USE_V4L2_CODEC))
+ services.Add(RunStableVideoDecoderFactoryService);
+ #endif // (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)) &&
diff --git a/www/ungoogled-chromium/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.cc b/www/ungoogled-chromium/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..d18e64119a7f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.cc
@@ -0,0 +1,37 @@
+--- content/utility/speech/speech_recognition_sandbox_hook_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ content/utility/speech/speech_recognition_sandbox_hook_linux.cc
+@@ -12,11 +12,14 @@
+ #include "sandbox/linux/syscall_broker/broker_command.h"
+ #include "sandbox/linux/syscall_broker/broker_file_permission.h"
+
++#if !defined(OS_BSD)
+ using sandbox::syscall_broker::BrokerFilePermission;
+ using sandbox::syscall_broker::MakeBrokerCommandSet;
++#endif
+
+ namespace speech {
+
++#if !defined(OS_BSD)
+ namespace {
+
+ // Gets the file permissions required by the Speech On-Device API (SODA).
+@@ -50,9 +53,11 @@ std::vector<BrokerFilePermission> GetSodaFilePermissio
+ }
+
+ } // namespace
++#endif
+
+ bool SpeechRecognitionPreSandboxHook(
+ sandbox::policy::SandboxLinux::Options options) {
++#if !defined(OS_BSD)
+ #if BUILDFLAG(ENABLE_SODA)
+ base::FilePath test_binary_path = GetSodaTestBinaryPath();
+ DVLOG(0) << "SODA test binary path: " << test_binary_path.value().c_str();
+@@ -77,6 +82,7 @@ bool SpeechRecognitionPreSandboxHook(
+ sandbox::policy::SandboxLinux::PreSandboxHook(),
+ options);
+ instance->EngageNamespaceSandboxIfPossible();
++#endif
+
+ return true;
+ }
diff --git a/www/ungoogled-chromium/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.h b/www/ungoogled-chromium/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.h
new file mode 100644
index 000000000000..7c25d4ed6d69
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.h
@@ -0,0 +1,14 @@
+--- content/utility/speech/speech_recognition_sandbox_hook_linux.h.orig 2022-10-01 07:40:07 UTC
++++ content/utility/speech/speech_recognition_sandbox_hook_linux.h
+@@ -5,7 +5,11 @@
+ #ifndef CONTENT_UTILITY_SPEECH_SPEECH_RECOGNITION_SANDBOX_HOOK_LINUX_H_
+ #define CONTENT_UTILITY_SPEECH_SPEECH_RECOGNITION_SANDBOX_HOOK_LINUX_H_
+
++#if defined(OS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#else
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+
+ namespace speech {
+
diff --git a/www/ungoogled-chromium/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc b/www/ungoogled-chromium/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
new file mode 100644
index 000000000000..fbf6aa5f98c6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
@@ -0,0 +1,29 @@
+--- content/utility/utility_blink_platform_with_sandbox_support_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ content/utility/utility_blink_platform_with_sandbox_support_impl.cc
+@@ -9,7 +9,7 @@
+
+ #if BUILDFLAG(IS_MAC)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #endif
+
+@@ -17,7 +17,7 @@ namespace content {
+
+ UtilityBlinkPlatformWithSandboxSupportImpl::
+ UtilityBlinkPlatformWithSandboxSupportImpl() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ mojo::PendingRemote<font_service::mojom::FontService> font_service;
+ UtilityThread::Get()->BindHostReceiver(
+ font_service.InitWithNewPipeAndPassReceiver());
+@@ -34,7 +34,7 @@ UtilityBlinkPlatformWithSandboxSupportImpl::
+
+ blink::WebSandboxSupport*
+ UtilityBlinkPlatformWithSandboxSupportImpl::GetSandboxSupport() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ return sandbox_support_.get();
+ #else
+ return nullptr;
diff --git a/www/ungoogled-chromium/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h b/www/ungoogled-chromium/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
new file mode 100644
index 000000000000..ed290fb75c47
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
@@ -0,0 +1,24 @@
+--- content/utility/utility_blink_platform_with_sandbox_support_impl.h.orig 2022-10-01 07:40:07 UTC
++++ content/utility/utility_blink_platform_with_sandbox_support_impl.h
+@@ -10,7 +10,7 @@
+ #include "build/build_config.h"
+ #include "third_party/blink/public/platform/platform.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h" // nogncheck
+ #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck
+ #endif
+@@ -38,10 +38,10 @@ class UtilityBlinkPlatformWithSandboxSupportImpl : pub
+ blink::WebSandboxSupport* GetSandboxSupport() override;
+
+ private:
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+ };
diff --git a/www/ungoogled-chromium/files/patch-content_utility_utility__main.cc b/www/ungoogled-chromium/files/patch-content_utility_utility__main.cc
new file mode 100644
index 000000000000..2d791399e149
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_utility_utility__main.cc
@@ -0,0 +1,78 @@
+--- content/utility/utility_main.cc.orig 2022-10-01 07:40:07 UTC
++++ content/utility/utility_main.cc
+@@ -31,17 +31,19 @@
+ #include "third_party/icu/source/common/unicode/unistr.h"
+ #include "third_party/icu/source/i18n/unicode/timezone.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "content/utility/speech/speech_recognition_sandbox_hook_linux.h"
+ #if BUILDFLAG(ENABLE_PRINTING)
+ #include "printing/sandbox/print_backend_sandbox_hook_linux.h"
+ #endif
++#if !BUILDFLAG(IS_BSD)
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+ #include "services/audio/audio_sandbox_hook_linux.h"
+ #include "services/network/network_sandbox_hook_linux.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ #include "gpu/config/gpu_info_collector.h"
+ #include "media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.h"
+
+@@ -50,6 +52,10 @@
+ #include "third_party/angle/src/gpu_info_util/SystemInfo.h" // nogncheck
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
+
++#if BUILDFLAG(IS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#endif
++
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ #include "ash/services/ime/ime_sandbox_hook.h"
+ #include "chromeos/ash/components/assistant/buildflags.h"
+@@ -129,7 +135,7 @@ int UtilityMain(MainFunctionParams parameters) {
+ }
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Initializes the sandbox before any threads are created.
+ // TODO(jorgelo): move this after GTK initialization when we enable a strict
+ // Seccomp-BPF policy.
+@@ -157,7 +163,7 @@ int UtilityMain(MainFunctionParams parameters) {
+ pre_sandbox_hook = base::BindOnce(&screen_ai::ScreenAIPreSandboxHook);
+ break;
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ case sandbox::mojom::Sandbox::kHardwareVideoDecoding:
+ pre_sandbox_hook =
+ base::BindOnce(&media::HardwareVideoDecodingPreSandboxHook);
+@@ -180,10 +186,11 @@ int UtilityMain(MainFunctionParams parameters) {
+ default:
+ break;
+ }
++#if !BUILDFLAG(IS_BSD)
+ if (!sandbox::policy::IsUnsandboxedSandboxType(sandbox_type) &&
+ (parameters.zygote_child || !pre_sandbox_hook.is_null())) {
+ sandbox::policy::SandboxLinux::Options sandbox_options;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ if (sandbox_type == sandbox::mojom::Sandbox::kHardwareVideoDecoding) {
+ // The kHardwareVideoDecoding sandbox needs to know the GPU type in order
+ // to select the right policy.
+@@ -196,6 +203,11 @@ int UtilityMain(MainFunctionParams parameters) {
+ sandbox::policy::Sandbox::Initialize(
+ sandbox_type, std::move(pre_sandbox_hook), sandbox_options);
+ }
++#else
++ sandbox::policy::Sandbox::Initialize(
++ sandbox_type, std::move(pre_sandbox_hook),
++ sandbox::policy::SandboxLinux::Options());
++#endif
+ #elif BUILDFLAG(IS_WIN)
+ g_utility_target_services = parameters.sandbox_info->target_services;
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-content_zygote_BUILD.gn b/www/ungoogled-chromium/files/patch-content_zygote_BUILD.gn
new file mode 100644
index 000000000000..8f58e8f649ca
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_zygote_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/zygote/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ content/zygote/BUILD.gn
+@@ -5,7 +5,7 @@
+ import("//build/config/nacl/config.gni")
+ import("//content/public/common/zygote/features.gni")
+
+-if (is_linux || is_chromeos) {
++if ((is_linux || is_chromeos) && !is_bsd) {
+ source_set("zygote") {
+ sources = [
+ "zygote_linux.cc",
diff --git a/www/ungoogled-chromium/files/patch-content_zygote_zygote__linux.cc b/www/ungoogled-chromium/files/patch-content_zygote_zygote__linux.cc
new file mode 100644
index 000000000000..785711fc88a1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_zygote_zygote__linux.cc
@@ -0,0 +1,15 @@
+--- content/zygote/zygote_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ content/zygote/zygote_linux.cc
+@@ -1,6 +1,7 @@
+ // Copyright (c) 2012 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.
++#if 0
+
+ #include "content/zygote/zygote_linux.h"
+
+@@ -653,3 +654,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick
+ }
+
+ } // namespace content
++#endif
diff --git a/www/ungoogled-chromium/files/patch-content_zygote_zygote__main__linux.cc b/www/ungoogled-chromium/files/patch-content_zygote_zygote__main__linux.cc
new file mode 100644
index 000000000000..c6e110086632
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-content_zygote_zygote__main__linux.cc
@@ -0,0 +1,64 @@
+--- content/zygote/zygote_main_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ content/zygote/zygote_main_linux.cc
+@@ -11,7 +11,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -41,7 +43,9 @@
+ #include "sandbox/linux/services/thread_helpers.h"
+ #include "sandbox/linux/suid/client/setuid_sandbox_client.h"
+ #include "sandbox/policy/linux/sandbox_debug_handling_linux.h"
++#if !defined(OS_BSD)
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+ #include "sandbox/policy/sandbox.h"
+ #include "sandbox/policy/switches.h"
+ #include "third_party/icu/source/i18n/unicode/timezone.h"
+@@ -50,6 +54,7 @@ namespace content {
+
+ namespace {
+
++#if !defined(OS_BSD)
+ void CloseFds(const std::vector<int>& fds) {
+ for (const auto& it : fds) {
+ PCHECK(0 == IGNORE_EINTR(close(it)));
+@@ -67,9 +72,11 @@ base::OnceClosure ClosureFromTwoClosures(base::OnceClo
+ },
+ std::move(one), std::move(two));
+ }
++#endif
+
+ } // namespace
+
++#if !defined(OS_BSD)
+ // This function triggers the static and lazy construction of objects that need
+ // to be created before imposing the sandbox.
+ static void ZygotePreSandboxInit() {
+@@ -174,9 +181,11 @@ static void EnterLayerOneSandbox(sandbox::policy::Sand
+ CHECK(!using_layer1_sandbox);
+ }
+ }
++#endif
+
+ bool ZygoteMain(
+ std::vector<std::unique_ptr<ZygoteForkDelegate>> fork_delegates) {
++#if !defined(OS_BSD)
+ sandbox::SetAmZygoteOrRenderer(true, GetSandboxFD());
+
+ auto* linux_sandbox = sandbox::policy::SandboxLinux::GetInstance();
+@@ -241,6 +250,9 @@ bool ZygoteMain(
+
+ // This function call can return multiple times, once per fork().
+ return zygote.ProcessRequests();
++#else
++ return false;
++#endif
+ }
+
+ } // namespace content
diff --git a/www/ungoogled-chromium/files/patch-device_bluetooth_bluetooth__adapter.cc b/www/ungoogled-chromium/files/patch-device_bluetooth_bluetooth__adapter.cc
new file mode 100644
index 000000000000..41c046cc1d8e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-device_bluetooth_bluetooth__adapter.cc
@@ -0,0 +1,11 @@
+--- device/bluetooth/bluetooth_adapter.cc.orig 2022-10-01 07:40:07 UTC
++++ device/bluetooth/bluetooth_adapter.cc
+@@ -32,7 +32,7 @@ BluetoothAdapter::ServiceOptions::ServiceOptions() = d
+ BluetoothAdapter::ServiceOptions::~ServiceOptions() = default;
+
+ #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_MAC) && \
+- !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_LINUX)
++ !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD)
+ // static
+ scoped_refptr<BluetoothAdapter> BluetoothAdapter::CreateAdapter() {
+ return nullptr;
diff --git a/www/ungoogled-chromium/files/patch-device_bluetooth_cast__bluetooth.gni b/www/ungoogled-chromium/files/patch-device_bluetooth_cast__bluetooth.gni
new file mode 100644
index 000000000000..9a157ebf79c6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-device_bluetooth_cast__bluetooth.gni
@@ -0,0 +1,9 @@
+--- device/bluetooth/cast_bluetooth.gni.orig 2022-10-01 07:40:07 UTC
++++ device/bluetooth/cast_bluetooth.gni
+@@ -2,5 +2,5 @@ import("//build/config/features.gni")
+
+ declare_args() {
+ force_cast_bluetooth = false
+- use_bluez = (is_linux && !is_castos && use_dbus) || is_chromeos
++ use_bluez = use_dbus && !is_bsd
+ }
diff --git a/www/ungoogled-chromium/files/patch-device_gamepad_gamepad__provider.cc b/www/ungoogled-chromium/files/patch-device_gamepad_gamepad__provider.cc
new file mode 100644
index 000000000000..a7b5eaf80aba
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-device_gamepad_gamepad__provider.cc
@@ -0,0 +1,11 @@
+--- device/gamepad/gamepad_provider.cc.orig 2022-10-01 07:40:07 UTC
++++ device/gamepad/gamepad_provider.cc
+@@ -216,7 +216,7 @@ void GamepadProvider::Initialize(std::unique_ptr<Gamep
+
+ if (!polling_thread_)
+ polling_thread_ = std::make_unique<base::Thread>("Gamepad polling thread");
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // On Linux, the data fetcher needs to watch file descriptors, so the message
+ // loop needs to be a libevent loop.
+ const base::MessagePumpType kMessageLoopType = base::MessagePumpType::IO;
diff --git a/www/ungoogled-chromium/files/patch-device_gamepad_hid__writer__linux.cc b/www/ungoogled-chromium/files/patch-device_gamepad_hid__writer__linux.cc
new file mode 100644
index 000000000000..b463568493a1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-device_gamepad_hid__writer__linux.cc
@@ -0,0 +1,11 @@
+--- device/gamepad/hid_writer_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ device/gamepad/hid_writer_linux.cc
+@@ -2,6 +2,8 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
++#include <unistd.h>
++
+ #include "device/gamepad/hid_writer_linux.h"
+
+ #include <unistd.h>
diff --git a/www/ungoogled-chromium/files/patch-extensions_browser_api_messaging_message__service.cc b/www/ungoogled-chromium/files/patch-extensions_browser_api_messaging_message__service.cc
new file mode 100644
index 000000000000..44b91f7c716a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_browser_api_messaging_message__service.cc
@@ -0,0 +1,20 @@
+--- extensions/browser/api/messaging/message_service.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/browser/api/messaging/message_service.cc
+@@ -74,7 +74,7 @@ namespace {
+ const char kReceivingEndDoesntExistError[] =
+ "Could not establish connection. Receiving end does not exist.";
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const char kMissingPermissionError[] =
+ "Access to native messaging requires nativeMessaging permission.";
+ const char kProhibitedByPoliciesError[] =
+@@ -437,7 +437,7 @@ void MessageService::OpenChannelToNativeApp(
+ return;
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ bool has_permission = extension->permissions_data()->HasAPIPermission(
+ mojom::APIPermissionID::kNativeMessaging);
+ if (!has_permission) {
diff --git a/www/ungoogled-chromium/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc b/www/ungoogled-chromium/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
new file mode 100644
index 000000000000..d8b7daca01a5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
@@ -0,0 +1,20 @@
+--- extensions/browser/api/networking_private/networking_private_delegate_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/browser/api/networking_private/networking_private_delegate_factory.cc
+@@ -14,7 +14,7 @@
+ #include "extensions/browser/api/networking_private/networking_private_chromeos.h"
+ #elif BUILDFLAG(IS_CHROMEOS_LACROS)
+ #include "extensions/browser/api/networking_private/networking_private_lacros.h"
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "extensions/browser/api/networking_private/networking_private_linux.h"
+ #elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
+ #include "components/wifi/wifi_service.h"
+@@ -66,7 +66,7 @@ KeyedService* NetworkingPrivateDelegateFactory::BuildS
+ delegate = new NetworkingPrivateChromeOS(browser_context);
+ #elif BUILDFLAG(IS_CHROMEOS_LACROS)
+ delegate = new NetworkingPrivateLacros(browser_context);
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ delegate = new NetworkingPrivateLinux();
+ #elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
+ std::unique_ptr<wifi::WiFiService> wifi_service(wifi::WiFiService::Create());
diff --git a/www/ungoogled-chromium/files/patch-extensions_browser_browser__context__keyed__service__factories.cc b/www/ungoogled-chromium/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..53370a020788
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
@@ -0,0 +1,11 @@
+--- extensions/browser/browser_context_keyed_service_factories.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/browser/browser_context_keyed_service_factories.cc
+@@ -89,7 +89,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()
+ IdleManagerFactory::GetInstance();
+ ManagementAPI::GetFactoryInstance();
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_MAC)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ NetworkingPrivateEventRouterFactory::GetInstance();
+ #endif
+ OffscreenDocumentManager::GetFactory();
diff --git a/www/ungoogled-chromium/files/patch-extensions_browser_extension__prefs.cc b/www/ungoogled-chromium/files/patch-extensions_browser_extension__prefs.cc
new file mode 100644
index 000000000000..3dc11bab2b91
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_browser_extension__prefs.cc
@@ -0,0 +1,11 @@
+--- extensions/browser/extension_prefs.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/browser/extension_prefs.cc
+@@ -2274,7 +2274,7 @@ void ExtensionPrefs::RegisterProfilePrefs(
+ registry->RegisterDictionaryPref(kInstallSignature);
+ registry->RegisterListPref(kExternalUninstalls);
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ registry->RegisterBooleanPref(pref_names::kChromeAppsEnabled, false);
+ #endif
+ registry->RegisterBooleanPref(pref_names::kU2fSecurityKeyApiEnabled, false);
diff --git a/www/ungoogled-chromium/files/patch-extensions_browser_pref__names.cc b/www/ungoogled-chromium/files/patch-extensions_browser_pref__names.cc
new file mode 100644
index 000000000000..2238fdcb5d48
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_browser_pref__names.cc
@@ -0,0 +1,11 @@
+--- extensions/browser/pref_names.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/browser/pref_names.cc
+@@ -48,7 +48,7 @@ const char kStorageGarbageCollect[] = "extensions.stor
+ const char kDeletedComponentExtensions[] =
+ "extensions.deleted_component_extensions";
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ extern const char kChromeAppsEnabled[] = "extensions.chrome_apps_enabled";
+ #endif
+ const char kU2fSecurityKeyApiEnabled[] =
diff --git a/www/ungoogled-chromium/files/patch-extensions_browser_pref__names.h b/www/ungoogled-chromium/files/patch-extensions_browser_pref__names.h
new file mode 100644
index 000000000000..adb1626fe1b2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_browser_pref__names.h
@@ -0,0 +1,11 @@
+--- extensions/browser/pref_names.h.orig 2022-10-01 07:40:07 UTC
++++ extensions/browser/pref_names.h
+@@ -98,7 +98,7 @@ extern const char kStorageGarbageCollect[];
+ extern const char kDeletedComponentExtensions[];
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // A preference for whether Chrome Apps should be allowed. The default depends
+ // on the ChromeAppsDeprecation feature flag, and this pref can extend support
+ // for Chrome Apps by enterprise policy.
diff --git a/www/ungoogled-chromium/files/patch-extensions_common_api___permission__features.json b/www/ungoogled-chromium/files/patch-extensions_common_api___permission__features.json
new file mode 100644
index 000000000000..ad0075daf116
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_common_api___permission__features.json
@@ -0,0 +1,29 @@
+--- extensions/common/api/_permission_features.json.orig 2022-10-01 07:40:07 UTC
++++ extensions/common/api/_permission_features.json
+@@ -134,7 +134,7 @@
+ {
+ "channel": "stable",
+ "extension_types": ["platform_app"],
+- "platforms": ["chromeos", "win", "mac", "linux"],
++ "platforms": ["chromeos", "win", "mac", "linux", "openbsd", "freebsd"],
+ "allowlist": [
+ "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/387169
+ "A3BC37E2148AC4E99BE4B16AF9D42DD1E592BBBE", // http://crbug.com/387169
+@@ -433,7 +433,7 @@
+ }, {
+ "channel": "stable",
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
+- "platforms": ["chromeos", "mac", "win", "linux", "fuchsia"],
++ "platforms": ["chromeos", "mac", "win", "linux", "fuchsia", "openbsd", "freebsd"],
+ "allowlist": [
+ "0DE0F05680A4A056BCEC864ED8DDA84296F82B40", // http://crbug.com/434651
+ "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/293683
+@@ -475,7 +475,7 @@
+ "networkingPrivate": {
+ "channel": "stable",
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
+- "platforms": ["chromeos", "lacros", "mac", "win", "linux", "fuchsia"],
++ "platforms": ["chromeos", "lacros", "mac", "win", "linux", "fuchsia", "openbsd", "freebsd"],
+ "allowlist": [
+ // DO NOT ADD ANY MORE ENTRIES HERE.
+ // networkingPrivate is being migrated to networking.onc.
diff --git a/www/ungoogled-chromium/files/patch-extensions_common_api_runtime.json b/www/ungoogled-chromium/files/patch-extensions_common_api_runtime.json
new file mode 100644
index 000000000000..25d2f7e49c70
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_common_api_runtime.json
@@ -0,0 +1,12 @@
+--- extensions/common/api/runtime.json.orig 2022-10-01 07:40:07 UTC
++++ extensions/common/api/runtime.json
+@@ -86,7 +86,8 @@
+ "cros",
+ "linux",
+ "openbsd",
+- "fuchsia"
++ "fuchsia",
++ "freebsd"
+ ]
+ },
+ {
diff --git a/www/ungoogled-chromium/files/patch-extensions_common_command.cc b/www/ungoogled-chromium/files/patch-extensions_common_command.cc
new file mode 100644
index 000000000000..e514f329d1e0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_common_command.cc
@@ -0,0 +1,11 @@
+--- extensions/common/command.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/common/command.cc
+@@ -288,7 +288,7 @@ std::string Command::CommandPlatform() {
+ return values::kKeybindingPlatformMac;
+ #elif BUILDFLAG(IS_CHROMEOS)
+ return values::kKeybindingPlatformChromeOs;
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return values::kKeybindingPlatformLinux;
+ #elif BUILDFLAG(IS_FUCHSIA)
+ // TODO(crbug.com/1312215): Change this once we decide what string should be
diff --git a/www/ungoogled-chromium/files/patch-extensions_common_features_feature.cc b/www/ungoogled-chromium/files/patch-extensions_common_features_feature.cc
new file mode 100644
index 000000000000..1eca00274bf2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_common_features_feature.cc
@@ -0,0 +1,11 @@
+--- extensions/common/features/feature.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/common/features/feature.cc
+@@ -34,6 +34,8 @@ Feature::Platform Feature::GetCurrentPlatform() {
+ return WIN_PLATFORM;
+ #elif BUILDFLAG(IS_FUCHSIA)
+ return FUCHSIA_PLATFORM;
++#elif defined(OS_BSD)
++ return LINUX_PLATFORM;
+ #else
+ return UNSPECIFIED_PLATFORM;
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-extensions_renderer_bindings_api__binding__util.cc b/www/ungoogled-chromium/files/patch-extensions_renderer_bindings_api__binding__util.cc
new file mode 100644
index 000000000000..342e8d24a463
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_renderer_bindings_api__binding__util.cc
@@ -0,0 +1,11 @@
+--- extensions/renderer/bindings/api_binding_util.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/renderer/bindings/api_binding_util.cc
+@@ -132,7 +132,7 @@ std::string GetPlatformString() {
+ return "lacros";
+ #elif BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ return "chromeos";
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return "linux";
+ #elif BUILDFLAG(IS_MAC)
+ return "mac";
diff --git a/www/ungoogled-chromium/files/patch-extensions_renderer_bindings_argument__spec.cc b/www/ungoogled-chromium/files/patch-extensions_renderer_bindings_argument__spec.cc
new file mode 100644
index 000000000000..a720745cb7c4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_renderer_bindings_argument__spec.cc
@@ -0,0 +1,11 @@
+--- extensions/renderer/bindings/argument_spec.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/renderer/bindings/argument_spec.cc
+@@ -16,6 +16,8 @@
+ #include "gin/data_object_builder.h"
+ #include "gin/dictionary.h"
+
++#include <cmath>
++
+ namespace extensions {
+
+ namespace {
diff --git a/www/ungoogled-chromium/files/patch-extensions_shell_app_shell__main__delegate.cc b/www/ungoogled-chromium/files/patch-extensions_shell_app_shell__main__delegate.cc
new file mode 100644
index 000000000000..3ca08f32f364
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_shell_app_shell__main__delegate.cc
@@ -0,0 +1,20 @@
+--- extensions/shell/app/shell_main_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/shell/app/shell_main_delegate.cc
+@@ -42,7 +42,7 @@
+
+ #if BUILDFLAG(IS_WIN)
+ #include "base/base_paths_win.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif BUILDFLAG(IS_MAC)
+ #include "base/base_paths_mac.h"
+@@ -61,7 +61,7 @@ base::FilePath GetDataPath() {
+ return cmd_line->GetSwitchValuePath(switches::kContentShellDataPath);
+
+ base::FilePath data_dir;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ data_dir = base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir);
diff --git a/www/ungoogled-chromium/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc b/www/ungoogled-chromium/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc
new file mode 100644
index 000000000000..20ba330753eb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc
@@ -0,0 +1,11 @@
+--- extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc
+@@ -45,7 +45,7 @@ void ShellRuntimeAPIDelegate::OpenURL(const GURL& unin
+ bool ShellRuntimeAPIDelegate::GetPlatformInfo(PlatformInfo* info) {
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ info->os = api::runtime::PLATFORM_OS_CROS;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ info->os = api::runtime::PLATFORM_OS_LINUX;
+ #endif
+ return true;
diff --git a/www/ungoogled-chromium/files/patch-extensions_shell_browser_shell__browser__main__parts.cc b/www/ungoogled-chromium/files/patch-extensions_shell_browser_shell__browser__main__parts.cc
new file mode 100644
index 000000000000..8c5f6d2852ee
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_shell_browser_shell__browser__main__parts.cc
@@ -0,0 +1,11 @@
+--- extensions/shell/browser/shell_browser_main_parts.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/shell/browser/shell_browser_main_parts.cc
+@@ -150,7 +150,7 @@ void ShellBrowserMainParts::PostCreateMainMessageLoop(
+ switches::kAppShellAllowRoaming)) {
+ network_controller_->SetCellularAllowRoaming(true);
+ }
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ // app_shell doesn't need GTK, so the fake input method context can work.
+ // See crbug.com/381852 and revision fb69f142.
+ // TODO(michaelpg): Verify this works for target environments.
diff --git a/www/ungoogled-chromium/files/patch-extensions_shell_browser_shell__extensions__api__client.cc b/www/ungoogled-chromium/files/patch-extensions_shell_browser_shell__extensions__api__client.cc
new file mode 100644
index 000000000000..ae42cf93b4b1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_shell_browser_shell__extensions__api__client.cc
@@ -0,0 +1,11 @@
+--- extensions/shell/browser/shell_extensions_api_client.cc.orig 2022-10-01 07:40:07 UTC
++++ extensions/shell/browser/shell_extensions_api_client.cc
+@@ -58,7 +58,7 @@ ShellExtensionsAPIClient::CreateDisplayInfoProvider()
+
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ FileSystemDelegate* ShellExtensionsAPIClient::GetFileSystemDelegate() {
+ if (!file_system_delegate_)
+ file_system_delegate_ = std::make_unique<ShellFileSystemDelegate>();
diff --git a/www/ungoogled-chromium/files/patch-extensions_shell_browser_shell__extensions__api__client.h b/www/ungoogled-chromium/files/patch-extensions_shell_browser_shell__extensions__api__client.h
new file mode 100644
index 000000000000..318f6cdb4f79
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-extensions_shell_browser_shell__extensions__api__client.h
@@ -0,0 +1,20 @@
+--- extensions/shell/browser/shell_extensions_api_client.h.orig 2022-10-01 07:40:07 UTC
++++ extensions/shell/browser/shell_extensions_api_client.h
+@@ -36,7 +36,7 @@ class ShellExtensionsAPIClient : public ExtensionsAPIC
+ const override;
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ FileSystemDelegate* GetFileSystemDelegate() override;
+ #endif
+ MessagingDelegate* GetMessagingDelegate() override;
+@@ -45,7 +45,7 @@ class ShellExtensionsAPIClient : public ExtensionsAPIC
+ private:
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ std::unique_ptr<FileSystemDelegate> file_system_delegate_;
+ #endif
+ std::unique_ptr<MessagingDelegate> messaging_delegate_;
diff --git a/www/ungoogled-chromium/files/patch-google__apis_gcm_engine_heartbeat__manager.cc b/www/ungoogled-chromium/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
new file mode 100644
index 000000000000..54569f1b517e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
@@ -0,0 +1,29 @@
+--- google_apis/gcm/engine/heartbeat_manager.cc.orig 2022-10-01 07:40:07 UTC
++++ google_apis/gcm/engine/heartbeat_manager.cc
+@@ -32,7 +32,7 @@ const int kMinClientHeartbeatIntervalMs = 1000 * 30;
+ // Minimum time spent sleeping before we force a new heartbeat.
+ const int kMinSuspendTimeMs = 1000 * 10; // 10 seconds.
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ // The period at which to check if the heartbeat time has passed. Used to
+ // protect against platforms where the timer is delayed by the system being
+ // suspended. Only needed on linux because the other OSes provide a standard
+@@ -192,7 +192,7 @@ void HeartbeatManager::RestartTimer() {
+ base::BindRepeating(&HeartbeatManager::OnHeartbeatTriggered,
+ weak_ptr_factory_.GetWeakPtr()));
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ // Windows, Mac, Android, iOS, and Chrome OS all provide a way to be notified
+ // when the system is suspending or resuming. The only one that does not is
+ // Linux so we need to poll to check for missed heartbeats.
+@@ -217,7 +217,7 @@ void HeartbeatManager::CheckForMissedHeartbeat() {
+ return;
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ // Otherwise check again later.
+ io_task_runner_->PostDelayedTask(
+ FROM_HERE,
diff --git a/www/ungoogled-chromium/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc b/www/ungoogled-chromium/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
new file mode 100644
index 000000000000..0f794ba3190d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
@@ -0,0 +1,20 @@
+--- gpu/command_buffer/common/gpu_memory_buffer_support.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/command_buffer/common/gpu_memory_buffer_support.cc
+@@ -134,7 +134,7 @@ uint32_t GetPlatformSpecificTextureTarget() {
+ #if BUILDFLAG(IS_MAC)
+ return macos_specific_texture_target;
+ #elif BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ return GL_TEXTURE_EXTERNAL_OES;
+ #elif BUILDFLAG(IS_FUCHSIA)
+ return GL_TEXTURE_2D;
+@@ -166,7 +166,7 @@ GPU_EXPORT bool NativeBufferNeedsPlatformSpecificTextu
+ gfx::BufferFormat format,
+ gfx::BufferPlane plane) {
+ #if defined(USE_OZONE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_WIN)
++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ // Always use GL_TEXTURE_2D as the target for RGB textures.
+ // https://crbug.com/916728
+ if (format == gfx::BufferFormat::R_8 || format == gfx::BufferFormat::RG_88 ||
diff --git a/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_angle__vulkan__image__backing__factory.cc b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_angle__vulkan__image__backing__factory.cc
new file mode 100644
index 000000000000..fdd94f93f5ae
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_angle__vulkan__image__backing__factory.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/service/shared_image/angle_vulkan_image_backing_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/command_buffer/service/shared_image/angle_vulkan_image_backing_factory.cc
+@@ -640,7 +640,7 @@ bool AngleVulkanImageBackingFactory::CanUseAngleVulkan
+ // TODO(penghuang): verify the scanout is the right usage for video playback.
+ // crbug.com/1280798
+ constexpr auto kSupportedUsages =
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ SHARED_IMAGE_USAGE_SCANOUT |
+ #endif
+ SHARED_IMAGE_USAGE_GLES2 | SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT |
diff --git a/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_external__vk__image__backing.cc b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_external__vk__image__backing.cc
new file mode 100644
index 000000000000..e35f689447a5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_external__vk__image__backing.cc
@@ -0,0 +1,20 @@
+--- gpu/command_buffer/service/shared_image/external_vk_image_backing.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/command_buffer/service/shared_image/external_vk_image_backing.cc
+@@ -31,7 +31,7 @@
+ #include "ui/gl/gl_version_info.h"
+ #include "ui/gl/scoped_binders.h"
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && BUILDFLAG(USE_DAWN)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && BUILDFLAG(USE_DAWN)
+ #include "gpu/command_buffer/service/shared_image/external_vk_image_dawn_representation.h"
+ #endif
+
+@@ -576,7 +576,7 @@ std::unique_ptr<DawnImageRepresentation> ExternalVkIma
+ MemoryTypeTracker* tracker,
+ WGPUDevice wgpuDevice,
+ WGPUBackendType backend_type) {
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && BUILDFLAG(USE_DAWN)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && BUILDFLAG(USE_DAWN)
+ auto wgpu_format = viz::ToWGPUFormat(format());
+
+ if (wgpu_format == WGPUTextureFormat_Undefined) {
diff --git a/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_gl__texture__image__backing.cc b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_gl__texture__image__backing.cc
new file mode 100644
index 000000000000..6866bfa11b88
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_gl__texture__image__backing.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/service/shared_image/gl_texture_image_backing.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/command_buffer/service/shared_image/gl_texture_image_backing.cc
+@@ -254,7 +254,7 @@ void GLTextureImageBacking::InitializeGLTexture(
+ }
+
+ void GLTextureImageBacking::CreateEGLImage() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE) || BUILDFLAG(IS_BSD)
+ SharedContextState* shared_context_state = factory()->GetSharedContextState();
+ ui::ScopedMakeCurrent smc(shared_context_state->context(),
+ shared_context_state->surface());
diff --git a/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_gl__texture__image__backing__factory.cc b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_gl__texture__image__backing__factory.cc
new file mode 100644
index 000000000000..ebafc5fff4cb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_gl__texture__image__backing__factory.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/service/shared_image/gl_texture_image_backing_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/command_buffer/service/shared_image/gl_texture_image_backing_factory.cc
+@@ -152,7 +152,7 @@ bool GLTextureImageBackingFactory::IsSupported(
+ // Linux and ChromeOS support WebGPU/Compat on GL. All other platforms
+ // do not support WebGPU on GL.
+ if (usage & SHARED_IMAGE_USAGE_WEBGPU) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE) || BUILDFLAG(IS_BSD)
+ if (use_webgpu_adapter_ != WebGPUAdapterName::kCompat) {
+ return false;
+ }
diff --git a/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_shared__image__factory.cc b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_shared__image__factory.cc
new file mode 100644
index 000000000000..7cd54080f1ba
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_shared__image__factory.cc
@@ -0,0 +1,29 @@
+--- gpu/command_buffer/service/shared_image/shared_image_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/command_buffer/service/shared_image/shared_image_factory.cc
+@@ -52,7 +52,7 @@
+ #include "ui/ozone/public/surface_factory_ozone.h"
+ #endif
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_WIN)) && \
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)) && \
+ BUILDFLAG(ENABLE_VULKAN)
+ #include "gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.h"
+ #include "gpu/command_buffer/service/shared_image/ozone_image_backing_factory.h"
+@@ -88,7 +88,7 @@ namespace gpu {
+
+ namespace {
+
+-#if defined(USE_OZONE) && BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)
++#if defined(USE_OZONE) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CASTOS)
+
+ bool ShouldUseExternalVulkanImageFactory() {
+ #if BUILDFLAG(ENABLE_VULKAN)
+@@ -398,7 +398,7 @@ SharedImageFactory::SharedImageFactory(
+ factories_.push_back(std::move(external_vk_image_factory));
+ }
+ #elif defined(USE_OZONE)
+-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CASTOS)
+ // Desktop Linux, not ChromeOS.
+ if (ShouldUseOzoneImageBackingFactory()) {
+ auto ozone_factory =
diff --git a/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_wrapped__sk__image__backing__factory.cc b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_wrapped__sk__image__backing__factory.cc
new file mode 100644
index 000000000000..f0185804efd3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_shared__image_wrapped__sk__image__backing__factory.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/service/shared_image/wrapped_sk_image_backing_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/command_buffer/service/shared_image/wrapped_sk_image_backing_factory.cc
+@@ -257,7 +257,7 @@ class WrappedSkImage : public ClearTrackingSharedImage
+ DCHECK_NE(format(), viz::ResourceFormat::ETC1);
+ auto mipmap = usage() & SHARED_IMAGE_USAGE_MIPMAP ? GrMipMapped::kYes
+ : GrMipMapped::kNo;
+-#if DCHECK_IS_ON() && !BUILDFLAG(IS_LINUX)
++#if DCHECK_IS_ON() && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD)
+ // Initializing to bright green makes it obvious if the pixels are not
+ // properly set before they are displayed (e.g. https://crbug.com/956555).
+ // We don't do this on release builds because there is a slight overhead.
diff --git a/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_webgpu__decoder__impl.cc b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_webgpu__decoder__impl.cc
new file mode 100644
index 000000000000..6d83eaf4a434
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_command__buffer_service_webgpu__decoder__impl.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/service/webgpu_decoder_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/command_buffer/service/webgpu_decoder_impl.cc
+@@ -1071,7 +1071,7 @@ void WebGPUDecoderImpl::RequestAdapterImpl(
+
+ if (gr_context_type_ != GrContextType::kVulkan &&
+ use_webgpu_adapter_ != WebGPUAdapterName::kCompat) {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ callback(WGPURequestAdapterStatus_Unavailable, nullptr,
+ "WebGPU on Linux requires command-line flag "
+ "--enable-features=Vulkan",
diff --git a/www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__gpu__memory__buffer__unittest.cc b/www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__gpu__memory__buffer__unittest.cc
new file mode 100644
index 000000000000..72d06ebd4686
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__gpu__memory__buffer__unittest.cc
@@ -0,0 +1,20 @@
+--- gpu/command_buffer/tests/gl_gpu_memory_buffer_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/command_buffer/tests/gl_gpu_memory_buffer_unittest.cc
+@@ -28,7 +28,7 @@
+ #include "ui/gl/gl_image.h"
+ #include "ui/gl/test/gl_image_test_support.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap.h"
+ #include "ui/gfx/linux/client_native_pixmap_factory_dmabuf.h"
+ #endif
+@@ -71,7 +71,7 @@ class GpuMemoryBufferTest : public testing::TestWithPa
+ GLManager gl_;
+ };
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ class GpuMemoryBufferTestEGL : public testing::Test,
+ public gpu::GpuCommandBufferTestEGL {
+ public:
diff --git a/www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__oes__egl__image__unittest.cc b/www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__oes__egl__image__unittest.cc
new file mode 100644
index 000000000000..c1f6a6c918a4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__oes__egl__image__unittest.cc
@@ -0,0 +1,20 @@
+--- gpu/command_buffer/tests/gl_oes_egl_image_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/command_buffer/tests/gl_oes_egl_image_unittest.cc
+@@ -14,7 +14,7 @@
+ #include "ui/gl/gl_image.h"
+ #include "ui/gl/init/gl_factory.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "ui/gl/gl_image_native_pixmap.h"
+ #endif
+
+@@ -43,7 +43,7 @@ class GpuOESEGLImageTest : public testing::Test,
+ bool egl_initialized_{false};
+ };
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // TODO(crbug.com/835072): re-enable this test on ASAN once bugs are fixed.
+ #if !defined(ADDRESS_SANITIZER)
+
diff --git a/www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__test__utils.cc b/www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__test__utils.cc
new file mode 100644
index 000000000000..361cda5662ad
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__test__utils.cc
@@ -0,0 +1,20 @@
+--- gpu/command_buffer/tests/gl_test_utils.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/command_buffer/tests/gl_test_utils.cc
+@@ -24,7 +24,7 @@
+ #include "ui/gl/gl_version_info.h"
+ #include "ui/gl/init/gl_factory.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "ui/gl/gl_image_native_pixmap.h"
+ #endif
+
+@@ -458,7 +458,7 @@ void GpuCommandBufferTestEGL::RestoreGLDefault() {
+ window_system_binding_info_ = gl::GLWindowSystemBindingInfo();
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ scoped_refptr<gl::GLImageNativePixmap>
+ GpuCommandBufferTestEGL::CreateGLImageNativePixmap(gfx::BufferFormat format,
+ gfx::Size size,
diff --git a/www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__test__utils.h b/www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__test__utils.h
new file mode 100644
index 000000000000..f09874012023
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_command__buffer_tests_gl__test__utils.h
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/tests/gl_test_utils.h.orig 2022-10-01 07:40:07 UTC
++++ gpu/command_buffer/tests/gl_test_utils.h
+@@ -122,7 +122,7 @@ class GpuCommandBufferTestEGL {
+ return gfx::HasExtension(gl_extensions_, extension);
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Create GLImageNativePixmap filled in with the given pixels.
+ scoped_refptr<gl::GLImageNativePixmap> CreateGLImageNativePixmap(
+ gfx::BufferFormat format,
diff --git a/www/ungoogled-chromium/files/patch-gpu_config_gpu__control__list.cc b/www/ungoogled-chromium/files/patch-gpu_config_gpu__control__list.cc
new file mode 100644
index 000000000000..e9e225701aa2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_config_gpu__control__list.cc
@@ -0,0 +1,20 @@
+--- gpu/config/gpu_control_list.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/config/gpu_control_list.cc
+@@ -302,7 +302,7 @@ bool GpuControlList::More::GLVersionInfoMismatch(
+ GpuControlList::GLType GpuControlList::More::GetDefaultGLType() {
+ #if BUILDFLAG(IS_CHROMEOS)
+ return kGLTypeGL;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_OPENBSD)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return kGLTypeGL;
+ #elif BUILDFLAG(IS_MAC)
+ return kGLTypeGL;
+@@ -844,7 +844,7 @@ GpuControlList::OsType GpuControlList::GetOsType() {
+ return kOsAndroid;
+ #elif BUILDFLAG(IS_FUCHSIA)
+ return kOsFuchsia;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_OPENBSD)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return kOsLinux;
+ #elif BUILDFLAG(IS_MAC)
+ return kOsMacosx;
diff --git a/www/ungoogled-chromium/files/patch-gpu_config_gpu__test__config.cc b/www/ungoogled-chromium/files/patch-gpu_config_gpu__test__config.cc
new file mode 100644
index 000000000000..5de6859f26b6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_config_gpu__test__config.cc
@@ -0,0 +1,11 @@
+--- gpu/config/gpu_test_config.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/config/gpu_test_config.cc
+@@ -29,7 +29,7 @@ GPUTestConfig::OS GetCurrentOS() {
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ return GPUTestConfig::kOsChromeOS;
+ #elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
+- BUILDFLAG(IS_OPENBSD)
++ BUILDFLAG(IS_BSD)
+ return GPUTestConfig::kOsLinux;
+ #elif BUILDFLAG(IS_WIN)
+ int32_t major_version = 0;
diff --git a/www/ungoogled-chromium/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc b/www/ungoogled-chromium/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
new file mode 100644
index 000000000000..c14602907a26
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
@@ -0,0 +1,20 @@
+--- gpu/ipc/common/gpu_memory_buffer_support.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/ipc/common/gpu_memory_buffer_support.cc
+@@ -21,7 +21,7 @@
+ #include "ui/ozone/public/ozone_platform.h"
+ #endif
+
+-#if defined(USE_OZONE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if defined(USE_OZONE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap.h"
+ #endif
+
+@@ -50,7 +50,7 @@ GpuMemoryBufferSupport::GetNativeGpuMemoryBufferType()
+ return gfx::IO_SURFACE_BUFFER;
+ #elif BUILDFLAG(IS_ANDROID)
+ return gfx::ANDROID_HARDWARE_BUFFER;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE) || BUILDFLAG(IS_BSD)
+ return gfx::NATIVE_PIXMAP;
+ #elif BUILDFLAG(IS_WIN)
+ return gfx::DXGI_SHARED_HANDLE;
diff --git a/www/ungoogled-chromium/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h b/www/ungoogled-chromium/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
new file mode 100644
index 000000000000..c96895d94c42
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
@@ -0,0 +1,11 @@
+--- gpu/ipc/common/gpu_memory_buffer_support.h.orig 2022-10-01 07:40:07 UTC
++++ gpu/ipc/common/gpu_memory_buffer_support.h
+@@ -18,7 +18,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gfx/gpu_memory_buffer.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE) || BUILDFLAG(IS_BSD)
+ namespace gfx {
+ class ClientNativePixmapFactory;
+ }
diff --git a/www/ungoogled-chromium/files/patch-gpu_ipc_service_gpu__init.cc b/www/ungoogled-chromium/files/patch-gpu_ipc_service_gpu__init.cc
new file mode 100644
index 000000000000..3be3d960faee
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_ipc_service_gpu__init.cc
@@ -0,0 +1,65 @@
+--- gpu/ipc/service/gpu_init.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/ipc/service/gpu_init.cc
+@@ -350,7 +350,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ enable_watchdog = false;
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ bool gpu_sandbox_start_early = gpu_preferences_.gpu_sandbox_start_early;
+ #else // !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
+ // For some reasons MacOSX's VideoToolbox might crash when called after
+@@ -400,7 +400,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ }
+
+ bool attempted_startsandbox = false;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // On Chrome OS ARM Mali, GPU driver userspace creates threads when
+ // initializing a GL context, so start the sandbox early.
+ // TODO(zmo): Need to collect OS version before this.
+@@ -449,7 +449,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+
+ if (gl_initialized && gl_use_swiftshader_ &&
+ !gl::IsSoftwareGLImplementation(gl::GetGLImplementationParts())) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly "
+ << "on Linux";
+ return false;
+@@ -485,7 +485,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ }
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // The ContentSandboxHelper is currently the only one implementation of
+ // GpuSandboxHelper and it has no dependency. Except on Linux where
+ // VaapiWrapper checks the GL implementation to determine which display
+@@ -545,7 +545,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ command_line, gpu_feature_info_,
+ gpu_preferences_.disable_software_rasterizer, false);
+ if (gl_use_swiftshader_) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly "
+ << "on Linux";
+ return false;
+@@ -673,7 +673,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+
+ InitializePlatformOverlaySettings(&gpu_info_, gpu_feature_info_);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Driver may create a compatibility profile context when collect graphics
+ // information on Linux platform. Try to collect graphics information
+ // based on core profile context after disabling platform extensions.
+@@ -909,7 +909,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
+
+ InitializePlatformOverlaySettings(&gpu_info_, gpu_feature_info_);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Driver may create a compatibility profile context when collect graphics
+ // information on Linux platform. Try to collect graphics information
+ // based on core profile context after disabling platform extensions.
diff --git a/www/ungoogled-chromium/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc b/www/ungoogled-chromium/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
new file mode 100644
index 000000000000..d8715492b63e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
@@ -0,0 +1,20 @@
+--- gpu/ipc/service/gpu_memory_buffer_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/ipc/service/gpu_memory_buffer_factory.cc
+@@ -12,7 +12,7 @@
+ #include "gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ #include "gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap.h"
+ #endif
+
+@@ -34,7 +34,7 @@ GpuMemoryBufferFactory::CreateNativeType(
+ return std::make_unique<GpuMemoryBufferFactoryIOSurface>();
+ #elif BUILDFLAG(IS_ANDROID)
+ return std::make_unique<GpuMemoryBufferFactoryAndroidHardwareBuffer>();
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ return std::make_unique<GpuMemoryBufferFactoryNativePixmap>(
+ vulkan_context_provider);
+ #elif BUILDFLAG(IS_WIN)
diff --git a/www/ungoogled-chromium/files/patch-gpu_ipc_service_x__util.h b/www/ungoogled-chromium/files/patch-gpu_ipc_service_x__util.h
new file mode 100644
index 000000000000..b8daae481dd3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_ipc_service_x__util.h
@@ -0,0 +1,16 @@
+--- gpu/ipc/service/x_util.h.orig 2022-10-01 07:40:07 UTC
++++ gpu/ipc/service/x_util.h
+@@ -11,11 +11,11 @@
+ #include "build/build_config.h"
+ #include "gpu/ipc/service/gpu_config.h"
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "ui/ozone/buildflags.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #if BUILDFLAG(OZONE_PLATFORM_X11)
+
+ namespace gpu {
diff --git a/www/ungoogled-chromium/files/patch-gpu_vulkan_generate__bindings.py b/www/ungoogled-chromium/files/patch-gpu_vulkan_generate__bindings.py
new file mode 100644
index 000000000000..dce43e760bc0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_vulkan_generate__bindings.py
@@ -0,0 +1,11 @@
+--- gpu/vulkan/generate_bindings.py.orig 2022-10-01 07:40:07 UTC
++++ gpu/vulkan/generate_bindings.py
+@@ -259,7 +259,7 @@ VULKAN_DEVICE_FUNCTIONS = [
+ ]
+ },
+ {
+- 'ifdef': 'BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)',
++ 'ifdef': 'BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)',
+ 'extension': 'VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME',
+ 'functions': [
+ 'vkGetImageDrmFormatModifierPropertiesEXT',
diff --git a/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__device__queue.cc b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__device__queue.cc
new file mode 100644
index 000000000000..ba514c7a052f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__device__queue.cc
@@ -0,0 +1,20 @@
+--- gpu/vulkan/vulkan_device_queue.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/vulkan/vulkan_device_queue.cc
+@@ -88,7 +88,7 @@ bool VulkanDeviceQueue::Initialize(
+
+ // In dual-CPU cases, we cannot detect the active GPU correctly on Linux,
+ // so don't select GPU device based on the |gpu_info|.
+-#if !BUILDFLAG(IS_LINUX)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD)
+ // If gpu_info is provided, the device should match it.
+ if (gpu_info && (device_properties.vendorID != gpu_info->gpu.vendor_id ||
+ device_properties.deviceID != gpu_info->gpu.device_id)) {
+@@ -232,7 +232,7 @@ bool VulkanDeviceQueue::Initialize(
+ enabled_device_features_2_ = {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2};
+
+ // Android, Fuchsia, and Linux(VaapiVideoDecoder) need YCbCr sampler support.
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (!physical_device_info.feature_sampler_ycbcr_conversion) {
+ LOG(ERROR) << "samplerYcbcrConversion is not supported.";
+ return false;
diff --git a/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__device__queue.h b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__device__queue.h
new file mode 100644
index 000000000000..b37a100c2cba
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__device__queue.h
@@ -0,0 +1,11 @@
+--- gpu/vulkan/vulkan_device_queue.h.orig 2022-10-01 07:40:07 UTC
++++ gpu/vulkan/vulkan_device_queue.h
+@@ -158,7 +158,7 @@ class COMPONENT_EXPORT(VULKAN) VulkanDeviceQueue {
+
+ bool allow_protected_memory_ = false;
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures
+ sampler_ycbcr_conversion_features_{
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES};
diff --git a/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__function__pointers.cc b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__function__pointers.cc
new file mode 100644
index 000000000000..14787b36d195
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__function__pointers.cc
@@ -0,0 +1,11 @@
+--- gpu/vulkan/vulkan_function_pointers.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/vulkan/vulkan_function_pointers.cc
+@@ -1151,7 +1151,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+ }
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (gfx::HasExtension(enabled_extensions,
+ VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME)) {
+ vkGetImageDrmFormatModifierPropertiesEXT =
diff --git a/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__function__pointers.h b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__function__pointers.h
new file mode 100644
index 000000000000..8c6f454b5d17
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__function__pointers.h
@@ -0,0 +1,27 @@
+--- gpu/vulkan/vulkan_function_pointers.h.orig 2022-10-01 07:40:07 UTC
++++ gpu/vulkan/vulkan_function_pointers.h
+@@ -305,7 +305,7 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers
+ VulkanFunction<PFN_vkGetSwapchainImagesKHR> vkGetSwapchainImagesKHR;
+ VulkanFunction<PFN_vkQueuePresentKHR> vkQueuePresentKHR;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ VulkanFunction<PFN_vkGetImageDrmFormatModifierPropertiesEXT>
+ vkGetImageDrmFormatModifierPropertiesEXT;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+@@ -1212,7 +1212,7 @@ ALWAYS_INLINE VkResult vkQueuePresentKHR(VkQueue queue
+ pPresentInfo);
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ ALWAYS_INLINE VkResult vkGetImageDrmFormatModifierPropertiesEXT(
+ VkDevice device,
+ VkImage image,
+@@ -1222,4 +1222,4 @@ ALWAYS_INLINE VkResult vkGetImageDrmFormatModifierProp
+ }
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+-#endif // GPU_VULKAN_VULKAN_FUNCTION_POINTERS_H_
+\ No newline at end of file
++#endif // GPU_VULKAN_VULKAN_FUNCTION_POINTERS_H_
diff --git a/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__image.cc b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__image.cc
new file mode 100644
index 000000000000..19532dcf0134
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__image.cc
@@ -0,0 +1,11 @@
+--- gpu/vulkan/vulkan_image.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/vulkan/vulkan_image.cc
+@@ -322,7 +322,7 @@ bool VulkanImage::InitializeWithExternalMemory(
+
+ // 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)
+ VkPhysicalDeviceImageDrmFormatModifierInfoEXT modifier_info = {
+ .sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
diff --git a/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__image.h b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__image.h
new file mode 100644
index 000000000000..b490cddde5de
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__image.h
@@ -0,0 +1,20 @@
+--- gpu/vulkan/vulkan_image.h.orig 2022-10-01 07:40:07 UTC
++++ gpu/vulkan/vulkan_image.h
+@@ -86,7 +86,7 @@ class COMPONENT_EXPORT(VULKAN) VulkanImage {
+ VkImageUsageFlags usage,
+ VkImageCreateFlags flags);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ static std::unique_ptr<VulkanImage> CreateWithExternalMemoryAndModifiers(
+ VulkanDeviceQueue* device_queue,
+ const gfx::Size& size,
+@@ -170,7 +170,7 @@ class COMPONENT_EXPORT(VULKAN) VulkanImage {
+ VkImageTiling image_tiling,
+ uint32_t queue_family_index);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ bool InitializeWithExternalMemoryAndModifiers(VulkanDeviceQueue* device_queue,
+ const gfx::Size& size,
+ VkFormat format,
diff --git a/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__util.cc b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__util.cc
new file mode 100644
index 000000000000..7c9f02556119
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-gpu_vulkan_vulkan__util.cc
@@ -0,0 +1,11 @@
+--- gpu/vulkan/vulkan_util.cc.orig 2022-10-01 07:40:07 UTC
++++ gpu/vulkan/vulkan_util.cc
+@@ -199,7 +199,7 @@ bool CheckVulkanCompabilities(const VulkanInfo& vulkan
+ }
+ }
+
+-#if BUILDFLAG(IS_LINUX) && !defined(OZONE_PLATFORM_IS_X11)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !defined(OZONE_PLATFORM_IS_X11)
+ // Vulkan is only supported with X11 on Linux for now.
+ return false;
+ #else
diff --git a/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__browser__main__parts.h b/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__browser__main__parts.h
new file mode 100644
index 000000000000..9346af086b11
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__browser__main__parts.h
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_browser_main_parts.h.orig 2022-10-01 07:40:07 UTC
++++ headless/lib/browser/headless_browser_main_parts.h
+@@ -48,7 +48,7 @@ class HEADLESS_EXPORT HeadlessBrowserMainParts
+ #if BUILDFLAG(IS_MAC)
+ void PreCreateMainMessageLoop() override;
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ void PostCreateMainMessageLoop() override;
+ #endif
+ void QuitMainMessageLoop();
diff --git a/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc b/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc
new file mode 100644
index 000000000000..b20330d3c578
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_browser_main_parts_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ headless/lib/browser/headless_browser_main_parts_linux.cc
+@@ -24,7 +24,7 @@ constexpr char kProductName[] = "HeadlessChrome";
+ #endif
+
+ void HeadlessBrowserMainParts::PostCreateMainMessageLoop() {
+-#if defined(USE_DBUS) && !BUILDFLAG(IS_CHROMEOS_ASH)
++#if defined(USE_DBUS) && !BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OS_BSD)
+ bluez::BluezDBusManager::Initialize(/*system_bus=*/nullptr);
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__content__browser__client.h b/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__content__browser__client.h
new file mode 100644
index 000000000000..a5593cb7d5cf
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__content__browser__client.h
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_content_browser_client.h.orig 2022-10-01 07:40:07 UTC
++++ headless/lib/browser/headless_content_browser_client.h
+@@ -47,7 +47,7 @@ class HeadlessContentBrowserClient : public content::C
+ override;
+ content::GeneratedCodeCacheSettings GetGeneratedCodeCacheSettings(
+ content::BrowserContext* context) override;
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
diff --git a/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__request__context__manager.cc b/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__request__context__manager.cc
new file mode 100644
index 000000000000..2b0c94ff81e6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__request__context__manager.cc
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_request_context_manager.cc.orig 2022-10-01 07:40:07 UTC
++++ headless/lib/browser/headless_request_context_manager.cc
+@@ -65,7 +65,7 @@ void SetCryptKeyOnce(const base::FilePath& user_data_p
+ return;
+ done_once = true;
+
+-#if (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)) && defined(HEADLESS_USE_PREFS)
++#if (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(HEADLESS_USE_PREFS)
+ // The OSCrypt keys are process bound, so if network service is out of
+ // process, send it the required key if it is available.
+ if (content::IsOutOfProcessNetworkService()
diff --git a/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__web__contents__impl.cc b/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__web__contents__impl.cc
new file mode 100644
index 000000000000..cec849376326
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-headless_lib_browser_headless__web__contents__impl.cc
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_web_contents_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ headless/lib/browser/headless_web_contents_impl.cc
+@@ -59,7 +59,7 @@ namespace headless {
+ namespace {
+
+ void UpdatePrefsFromSystemSettings(blink::RendererPreferences* prefs) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ content::UpdateFontRendererPreferencesFromSystemSettings(prefs);
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-headless_lib_headless__content__main__delegate.cc b/www/ungoogled-chromium/files/patch-headless_lib_headless__content__main__delegate.cc
new file mode 100644
index 000000000000..563bdf759e04
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-headless_lib_headless__content__main__delegate.cc
@@ -0,0 +1,11 @@
+--- headless/lib/headless_content_main_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ headless/lib/headless_content_main_delegate.cc
+@@ -337,7 +337,7 @@ void HeadlessContentMainDelegate::InitCrashReporter(
+ if (process_type != switches::kZygoteProcess) {
+ g_headless_crash_client.Pointer()->set_crash_dumps_dir(
+ options()->crash_dumps_dir);
+-#if !BUILDFLAG(IS_WIN)
++#if !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_BSD)
+ crash_reporter::InitializeCrashpad(process_type.empty(), process_type);
+ #endif // !BUILDFLAG(IS_WIN)
+ crash_keys::SetSwitchesFromCommandLine(command_line, nullptr);
diff --git a/www/ungoogled-chromium/files/patch-ipc_ipc__channel.h b/www/ungoogled-chromium/files/patch-ipc_ipc__channel.h
new file mode 100644
index 000000000000..3f3345661d32
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-ipc_ipc__channel.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel.h.orig 2022-10-01 07:40:07 UTC
++++ ipc/ipc_channel.h
+@@ -234,7 +234,7 @@ class COMPONENT_EXPORT(IPC) Channel : public Sender {
+ static std::string GenerateUniqueRandomChannelID();
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Sandboxed processes live in a PID namespace, so when sending the IPC hello
+ // message from client to server we need to send the PID from the global
+ // PID namespace.
diff --git a/www/ungoogled-chromium/files/patch-ipc_ipc__channel__common.cc b/www/ungoogled-chromium/files/patch-ipc_ipc__channel__common.cc
new file mode 100644
index 000000000000..de26aaa6deee
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-ipc_ipc__channel__common.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel_common.cc.orig 2022-10-01 07:40:07 UTC
++++ ipc/ipc_channel_common.cc
+@@ -11,7 +11,7 @@
+
+ namespace IPC {
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ namespace {
+ int g_global_pid = 0;
diff --git a/www/ungoogled-chromium/files/patch-ipc_ipc__channel__mojo.cc b/www/ungoogled-chromium/files/patch-ipc_ipc__channel__mojo.cc
new file mode 100644
index 000000000000..09890c364ad4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-ipc_ipc__channel__mojo.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel_mojo.cc.orig 2022-10-01 07:40:07 UTC
++++ ipc/ipc_channel_mojo.cc
+@@ -112,7 +112,7 @@ class ThreadSafeChannelProxy : public mojo::ThreadSafe
+ };
+
+ base::ProcessId GetSelfPID() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (int global_pid = Channel::GetGlobalPid())
+ return global_pid;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
diff --git a/www/ungoogled-chromium/files/patch-ipc_ipc__message__utils.cc b/www/ungoogled-chromium/files/patch-ipc_ipc__message__utils.cc
new file mode 100644
index 000000000000..19144413fa7e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-ipc_ipc__message__utils.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.cc.orig 2022-10-01 07:40:07 UTC
++++ ipc/ipc_message_utils.cc
+@@ -359,7 +359,7 @@ void ParamTraits<unsigned int>::Log(const param_type&
+ }
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_FUCHSIA) || \
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ void ParamTraits<long>::Log(const param_type& p, std::string* l) {
+ l->append(base::NumberToString(p));
diff --git a/www/ungoogled-chromium/files/patch-ipc_ipc__message__utils.h b/www/ungoogled-chromium/files/patch-ipc_ipc__message__utils.h
new file mode 100644
index 000000000000..919b73146aee
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-ipc_ipc__message__utils.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.h.orig 2022-10-01 07:40:07 UTC
++++ ipc/ipc_message_utils.h
+@@ -214,7 +214,7 @@ struct ParamTraits<unsigned int> {
+ // Since we want to support Android 32<>64 bit IPC, as long as we don't have
+ // these traits for 32 bit ARM then that'll catch any errors.
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_FUCHSIA) || \
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) || \
+ (BUILDFLAG(IS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ template <>
+ struct ParamTraits<long> {
diff --git a/www/ungoogled-chromium/files/patch-media_BUILD.gn b/www/ungoogled-chromium/files/patch-media_BUILD.gn
new file mode 100644
index 000000000000..2197524c067e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_BUILD.gn
@@ -0,0 +1,12 @@
+--- media/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ media/BUILD.gn
+@@ -84,6 +84,9 @@ config("media_config") {
+ defines += [ "DLOPEN_PULSEAUDIO" ]
+ }
+ }
++ if (use_sndio) {
++ defines += [ "USE_SNDIO" ]
++ }
+ if (use_cras) {
+ defines += [ "USE_CRAS" ]
+ }
diff --git a/www/ungoogled-chromium/files/patch-media_audio_BUILD.gn b/www/ungoogled-chromium/files/patch-media_audio_BUILD.gn
new file mode 100644
index 000000000000..528b644b19de
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_audio_BUILD.gn
@@ -0,0 +1,24 @@
+--- media/audio/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ media/audio/BUILD.gn
+@@ -248,9 +248,20 @@ source_set("audio") {
+ ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !use_sndio) {
+ sources += [ "linux/audio_manager_linux.cc" ]
+ }
++
++ if (use_sndio) {
++ libs += [ "sndio" ]
++ sources += [
++ "sndio/audio_manager_sndio.cc",
++ "sndio/sndio_input.cc",
++ "sndio/sndio_input.h",
++ "sndio/sndio_output.cc",
++ "sndio/sndio_output.h"
++ ]
++ }
+
+ if (use_alsa) {
+ libs += [ "asound" ]
diff --git a/www/ungoogled-chromium/files/patch-media_audio_alsa_audio__manager__alsa.cc b/www/ungoogled-chromium/files/patch-media_audio_alsa_audio__manager__alsa.cc
new file mode 100644
index 000000000000..bbc2e66715d1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_audio_alsa_audio__manager__alsa.cc
@@ -0,0 +1,54 @@
+--- media/audio/alsa/audio_manager_alsa.cc.orig 2022-10-01 07:40:07 UTC
++++ media/audio/alsa/audio_manager_alsa.cc
+@@ -88,7 +88,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType
+ int card = -1;
+
+ // Loop through the sound cards to get ALSA device hints.
++#if !BUILDFLAG(IS_BSD)
+ while (!wrapper_->CardNext(&card) && card >= 0) {
++#endif
+ void** hints = NULL;
+ int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
+ if (!error) {
+@@ -100,7 +102,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType
+ DLOG(WARNING) << "GetAlsaAudioDevices: unable to get device hints: "
+ << wrapper_->StrError(error);
+ }
++#if !BUILDFLAG(IS_BSD)
+ }
++#endif
+ }
+
+ void AudioManagerAlsa::GetAlsaDevicesInfo(AudioManagerAlsa::StreamType type,
+@@ -183,7 +187,11 @@ bool AudioManagerAlsa::IsAlsaDeviceAvailable(
+ // goes through software conversion if needed (e.g. incompatible
+ // sample rate).
+ // TODO(joi): Should we prefer "hw" instead?
++#if BUILDFLAG(IS_BSD)
++ static const char kDeviceTypeDesired[] = "plug";
++#else
+ static const char kDeviceTypeDesired[] = "plughw";
++#endif
+ return strncmp(kDeviceTypeDesired, device_name,
+ std::size(kDeviceTypeDesired) - 1) == 0;
+ }
+@@ -205,7 +213,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
+ // Loop through the sound cards.
+ // Don't use snd_device_name_hint(-1,..) since there is an access violation
+ // inside this ALSA API with libasound.so.2.0.0.
++#if !BUILDFLAG(IS_BSD)
+ while (!wrapper_->CardNext(&card) && (card >= 0) && !has_device) {
++#endif
+ int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
+ if (!error) {
+ for (void** hint_iter = hints; *hint_iter != NULL; hint_iter++) {
+@@ -229,7 +239,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
+ DLOG(WARNING) << "HasAnyAudioDevice: unable to get device hints: "
+ << wrapper_->StrError(error);
+ }
++#if !BUILDFLAG(IS_BSD)
+ }
++#endif
+
+ return has_device;
+ }
diff --git a/www/ungoogled-chromium/files/patch-media_audio_audio__features.cc b/www/ungoogled-chromium/files/patch-media_audio_audio__features.cc
new file mode 100644
index 000000000000..9d62b7f67023
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_audio_audio__features.cc
@@ -0,0 +1,11 @@
+--- media/audio/audio_features.cc.orig 2022-10-01 07:40:07 UTC
++++ media/audio/audio_features.cc
+@@ -14,7 +14,7 @@ namespace features {
+ const base::Feature kAudioServiceOutOfProcessKillAtHang{
+ "AudioServiceOutOfProcessKillAtHang",
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/www/ungoogled-chromium/files/patch-media_audio_audio__input__device.cc b/www/ungoogled-chromium/files/patch-media_audio_audio__input__device.cc
new file mode 100644
index 000000000000..2bf8edebea82
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_audio_audio__input__device.cc
@@ -0,0 +1,11 @@
+--- media/audio/audio_input_device.cc.orig 2022-10-01 07:40:07 UTC
++++ media/audio/audio_input_device.cc
+@@ -259,7 +259,7 @@ void AudioInputDevice::OnStreamCreated(
+ // here. See comments in AliveChecker and PowerObserverHelper for details and
+ // todos.
+ if (detect_dead_stream_ == DeadStreamDetection::kEnabled) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const bool stop_at_first_alive_notification = true;
+ const bool pause_check_during_suspend = false;
+ #else
diff --git a/www/ungoogled-chromium/files/patch-media_audio_audio__output__proxy__unittest.cc b/www/ungoogled-chromium/files/patch-media_audio_audio__output__proxy__unittest.cc
new file mode 100644
index 000000000000..0a1b717f6950
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_audio_audio__output__proxy__unittest.cc
@@ -0,0 +1,14 @@
+--- media/audio/audio_output_proxy_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ media/audio/audio_output_proxy_unittest.cc
+@@ -412,7 +412,11 @@ class AudioOutputProxyTest : public testing::Test {
+ // |stream| is closed at this point. Start() should reopen it again.
+ EXPECT_CALL(manager(), MakeAudioOutputStream(_, _, _))
+ .Times(2)
++#if BUILDFLAG(IS_BSD)
++ .WillRepeatedly(Return(static_cast<AudioOutputStream*>(NULL)));
++#else
+ .WillRepeatedly(Return(reinterpret_cast<AudioOutputStream*>(NULL)));
++#endif
+
+ EXPECT_CALL(callback_, OnError(_)).Times(2);
+
diff --git a/www/ungoogled-chromium/files/patch-media_audio_sndio_audio__manager__sndio.cc b/www/ungoogled-chromium/files/patch-media_audio_sndio_audio__manager__sndio.cc
new file mode 100644
index 000000000000..a04dd2aff736
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_audio_sndio_audio__manager__sndio.cc
@@ -0,0 +1,184 @@
+--- media/audio/sndio/audio_manager_sndio.cc.orig 2022-10-01 07:40:07 UTC
++++ media/audio/sndio/audio_manager_sndio.cc
+@@ -0,0 +1,181 @@
++// Copyright (c) 2012 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 "base/command_line.h"
++#include "base/metrics/histogram_macros.h"
++#include "base/memory/ptr_util.h"
++
++#include "media/audio/sndio/audio_manager_sndio.h"
++
++#include "media/audio/audio_device_description.h"
++#include "media/audio/audio_output_dispatcher.h"
++#if defined(USE_SNDIO)
++#include "media/audio/sndio/sndio_input.h"
++#include "media/audio/sndio/sndio_output.h"
++#endif
++#include "media/audio/fake_audio_manager.h"
++#include "media/base/limits.h"
++#include "media/base/media_switches.h"
++
++namespace media {
++
++enum SndioAudioIO {
++ kPulse,
++ kSndio,
++ kAudioIOMax = kSndio
++};
++
++#if defined(USE_SNDIO)
++// Maximum number of output streams that can be open simultaneously.
++static const int kMaxOutputStreams = 50;
++
++// Default sample rate for input and output streams.
++static const int kDefaultSampleRate = 48000;
++
++void AddDefaultDevice(AudioDeviceNames* device_names) {
++ DCHECK(device_names->empty());
++ device_names->push_front(AudioDeviceName::CreateDefault());
++}
++
++bool AudioManagerSndio::HasAudioOutputDevices() {
++ return true;
++}
++
++bool AudioManagerSndio::HasAudioInputDevices() {
++ return true;
++}
++
++void AudioManagerSndio::GetAudioInputDeviceNames(
++ AudioDeviceNames* device_names) {
++ DCHECK(device_names->empty());
++ AddDefaultDevice(device_names);
++}
++
++void AudioManagerSndio::GetAudioOutputDeviceNames(
++ AudioDeviceNames* device_names) {
++ AddDefaultDevice(device_names);
++}
++
++#if defined(USE_SNDIO)
++const char* AudioManagerSndio::GetName() {
++ return "SNDIO";
++}
++#endif
++
++AudioParameters AudioManagerSndio::GetInputStreamParameters(
++ const std::string& device_id) {
++ static const int kDefaultInputBufferSize = 1024;
++
++ int user_buffer_size = GetUserBufferSize();
++ int buffer_size = user_buffer_size ?
++ user_buffer_size : kDefaultInputBufferSize;
++
++ return AudioParameters(
++ AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
++ kDefaultSampleRate, buffer_size);
++}
++
++AudioManagerSndio::AudioManagerSndio(std::unique_ptr<AudioThread> audio_thread,
++ AudioLogFactory* audio_log_factory)
++ : AudioManagerBase(std::move(audio_thread),
++ audio_log_factory) {
++ DLOG(WARNING) << "AudioManagerSndio";
++ SetMaxOutputStreamsAllowed(kMaxOutputStreams);
++}
++
++AudioManagerSndio::~AudioManagerSndio() = default;
++
++AudioOutputStream* AudioManagerSndio::MakeLinearOutputStream(
++ const AudioParameters& params,
++ const LogCallback& log_callback) {
++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format());
++ return MakeOutputStream(params);
++}
++
++AudioOutputStream* AudioManagerSndio::MakeLowLatencyOutputStream(
++ const AudioParameters& params,
++ const std::string& device_id,
++ const LogCallback& log_callback) {
++ DLOG_IF(ERROR, !device_id.empty()) << "Not implemented!";
++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format());
++ return MakeOutputStream(params);
++}
++
++AudioInputStream* AudioManagerSndio::MakeLinearInputStream(
++ const AudioParameters& params,
++ const std::string& device_id,
++ const LogCallback& log_callback) {
++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format());
++ return MakeInputStream(params);
++}
++
++AudioInputStream* AudioManagerSndio::MakeLowLatencyInputStream(
++ const AudioParameters& params,
++ const std::string& device_id,
++ const LogCallback& log_callback) {
++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format());
++ return MakeInputStream(params);
++}
++
++AudioParameters AudioManagerSndio::GetPreferredOutputStreamParameters(
++ const std::string& output_device_id,
++ const AudioParameters& input_params) {
++ // TODO(tommi): Support |output_device_id|.
++ DLOG_IF(ERROR, !output_device_id.empty()) << "Not implemented!";
++ static const int kDefaultOutputBufferSize = 2048;
++
++ ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO;
++ int sample_rate = kDefaultSampleRate;
++ int buffer_size = kDefaultOutputBufferSize;
++ if (input_params.IsValid()) {
++ sample_rate = input_params.sample_rate();
++ channel_layout = input_params.channel_layout();
++ buffer_size = std::min(buffer_size, input_params.frames_per_buffer());
++ }
++
++ int user_buffer_size = GetUserBufferSize();
++ if (user_buffer_size)
++ buffer_size = user_buffer_size;
++
++ return AudioParameters(
++ AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout,
++ sample_rate, buffer_size);
++}
++
++AudioInputStream* AudioManagerSndio::MakeInputStream(
++ const AudioParameters& params) {
++ DLOG(WARNING) << "MakeInputStream";
++ return new SndioAudioInputStream(this,
++ AudioDeviceDescription::kDefaultDeviceId, params);
++}
++
++AudioOutputStream* AudioManagerSndio::MakeOutputStream(
++ const AudioParameters& params) {
++ DLOG(WARNING) << "MakeOutputStream";
++ return new SndioAudioOutputStream(params, this);
++}
++#endif
++
++std::unique_ptr<media::AudioManager> CreateAudioManager(
++ std::unique_ptr<AudioThread> audio_thread,
++ AudioLogFactory* audio_log_factory) {
++ DLOG(WARNING) << "CreateAudioManager";
++ // For testing allow audio output to be disabled.
++ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
++ switches::kDisableAudioOutput)) {
++ return std::make_unique<FakeAudioManager>(std::move(audio_thread),
++ audio_log_factory);
++ }
++#if defined(USE_SNDIO)
++ UMA_HISTOGRAM_ENUMERATION("Media.SndioAudioIO", kSndio, kAudioIOMax + 1);
++ return std::make_unique<AudioManagerSndio>(std::move(audio_thread),
++ audio_log_factory);
++#else
++ return std::make_unique<FakeAudioManager>(std::move(audio_thread),
++ audio_log_factory);
++#endif
++
++}
++
++} // namespace media
diff --git a/www/ungoogled-chromium/files/patch-media_audio_sndio_audio__manager__sndio.h b/www/ungoogled-chromium/files/patch-media_audio_sndio_audio__manager__sndio.h
new file mode 100644
index 000000000000..e791d42538e1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_audio_sndio_audio__manager__sndio.h
@@ -0,0 +1,69 @@
+--- media/audio/sndio/audio_manager_sndio.h.orig 2022-10-01 07:40:07 UTC
++++ media/audio/sndio/audio_manager_sndio.h
+@@ -0,0 +1,66 @@
++// Copyright (c) 2012 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.
++
++#ifndef MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_
++#define MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_
++
++#include <set>
++
++#include "base/compiler_specific.h"
++#include "base/memory/ref_counted.h"
++#include "base/threading/thread.h"
++#include "media/audio/audio_manager_base.h"
++
++namespace media {
++
++class MEDIA_EXPORT AudioManagerSndio : public AudioManagerBase {
++ public:
++ AudioManagerSndio(std::unique_ptr<AudioThread> audio_thread,
++ AudioLogFactory* audio_log_factory);
++
++ AudioManagerSndio(const AudioManagerSndio&) = delete;
++ AudioManagerSndio& operator=(const AudioManagerSndio&) = delete;
++
++ ~AudioManagerSndio() override;
++
++ // Implementation of AudioManager.
++ bool HasAudioOutputDevices() override;
++ bool HasAudioInputDevices() override;
++ void GetAudioInputDeviceNames(AudioDeviceNames* device_names) override;
++ void GetAudioOutputDeviceNames(AudioDeviceNames* device_names) override;
++ AudioParameters GetInputStreamParameters(
++ const std::string& device_id) override;
++ const char* GetName() override;
++
++ // Implementation of AudioManagerBase.
++ AudioOutputStream* MakeLinearOutputStream(
++ const AudioParameters& params,
++ const LogCallback& log_callback) override;
++ AudioOutputStream* MakeLowLatencyOutputStream(
++ const AudioParameters& params,
++ const std::string& device_id,
++ const LogCallback& log_callback) override;
++ AudioInputStream* MakeLinearInputStream(
++ const AudioParameters& params,
++ const std::string& device_id,
++ const LogCallback& log_callback) override;
++ AudioInputStream* MakeLowLatencyInputStream(
++ const AudioParameters& params,
++ const std::string& device_id,
++ const LogCallback& log_callback) override;
++
++ protected:
++ AudioParameters GetPreferredOutputStreamParameters(
++ const std::string& output_device_id,
++ const AudioParameters& input_params) override;
++
++ private:
++ // Called by MakeLinearOutputStream and MakeLowLatencyOutputStream.
++ AudioOutputStream* MakeOutputStream(const AudioParameters& params);
++ AudioInputStream* MakeInputStream(const AudioParameters& params);
++};
++
++} // namespace media
++
++#endif // MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_
diff --git a/www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__input.cc b/www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__input.cc
new file mode 100644
index 000000000000..822a33bf14fb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__input.cc
@@ -0,0 +1,204 @@
+--- media/audio/sndio/sndio_input.cc.orig 2022-10-01 07:40:07 UTC
++++ media/audio/sndio/sndio_input.cc
+@@ -0,0 +1,201 @@
++// Copyright 2013 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 "base/bind.h"
++#include "base/logging.h"
++#include "media/base/audio_timestamp_helper.h"
++#include "media/audio/sndio/audio_manager_sndio.h"
++#include "media/audio/audio_manager.h"
++#include "media/audio/sndio/sndio_input.h"
++
++namespace media {
++
++static const SampleFormat kSampleFormat = kSampleFormatS16;
++
++void SndioAudioInputStream::OnMoveCallback(void *arg, int delta)
++{
++ SndioAudioInputStream* self = static_cast<SndioAudioInputStream*>(arg);
++
++ self->hw_delay += delta;
++}
++
++void *SndioAudioInputStream::ThreadEntry(void *arg) {
++ SndioAudioInputStream* self = static_cast<SndioAudioInputStream*>(arg);
++
++ self->ThreadLoop();
++ return NULL;
++}
++
++SndioAudioInputStream::SndioAudioInputStream(AudioManagerBase* manager,
++ const std::string& device_name,
++ const AudioParameters& params)
++ : manager(manager),
++ params(params),
++ audio_bus(AudioBus::Create(params)),
++ state(kClosed) {
++}
++
++SndioAudioInputStream::~SndioAudioInputStream() {
++ if (state != kClosed)
++ Close();
++}
++
++AudioInputStream::OpenOutcome SndioAudioInputStream::Open() {
++ struct sio_par par;
++ int sig;
++
++ if (state != kClosed)
++ return OpenOutcome::kFailed;
++
++ if (params.format() != AudioParameters::AUDIO_PCM_LINEAR &&
++ params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) {
++ LOG(WARNING) << "Unsupported audio format.";
++ return OpenOutcome::kFailed;
++ }
++
++ sio_initpar(&par);
++ par.rate = params.sample_rate();
++ par.rchan = params.channels();
++ par.bits = SampleFormatToBitsPerChannel(kSampleFormat);
++ par.bps = par.bits / 8;
++ par.sig = sig = par.bits != 8 ? 1 : 0;
++ par.le = SIO_LE_NATIVE;
++ par.appbufsz = params.frames_per_buffer();
++
++ hdl = sio_open(SIO_DEVANY, SIO_REC, 0);
++
++ if (hdl == NULL) {
++ LOG(ERROR) << "Couldn't open audio device.";
++ return OpenOutcome::kFailed;
++ }
++
++ if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) {
++ LOG(ERROR) << "Couldn't set audio parameters.";
++ goto bad_close;
++ }
++
++ if (par.rate != (unsigned int)params.sample_rate() ||
++ par.rchan != (unsigned int)params.channels() ||
++ par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) ||
++ par.sig != (unsigned int)sig ||
++ (par.bps > 1 && par.le != SIO_LE_NATIVE) ||
++ (par.bits != par.bps * 8)) {
++ LOG(ERROR) << "Unsupported audio parameters.";
++ goto bad_close;
++ }
++ state = kStopped;
++ buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)];
++ sio_onmove(hdl, &OnMoveCallback, this);
++ return OpenOutcome::kSuccess;
++bad_close:
++ sio_close(hdl);
++ return OpenOutcome::kFailed;
++}
++
++void SndioAudioInputStream::Start(AudioInputCallback* cb) {
++
++ StartAgc();
++
++ state = kRunning;
++ hw_delay = 0;
++ callback = cb;
++ sio_start(hdl);
++ if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) {
++ LOG(ERROR) << "Failed to create real-time thread for recording.";
++ sio_stop(hdl);
++ state = kStopped;
++ }
++}
++
++void SndioAudioInputStream::Stop() {
++
++ if (state == kStopped)
++ return;
++
++ state = kStopWait;
++ pthread_join(thread, NULL);
++ sio_stop(hdl);
++ state = kStopped;
++
++ StopAgc();
++}
++
++void SndioAudioInputStream::Close() {
++
++ if (state == kClosed)
++ goto release;
++
++ if (state == kRunning)
++ Stop();
++
++ state = kClosed;
++ delete [] buffer;
++ sio_close(hdl);
++
++release:
++ manager->ReleaseInputStream(this);
++}
++
++double SndioAudioInputStream::GetMaxVolume() {
++ // Not supported
++ return 0.0;
++}
++
++void SndioAudioInputStream::SetVolume(double volume) {
++ // Not supported. Do nothing.
++}
++
++double SndioAudioInputStream::GetVolume() {
++ // Not supported.
++ return 0.0;
++}
++
++bool SndioAudioInputStream::IsMuted() {
++ // Not supported.
++ return false;
++}
++
++void SndioAudioInputStream::SetOutputDeviceForAec(
++ const std::string& output_device_id) {
++ // Not supported.
++}
++
++void SndioAudioInputStream::ThreadLoop(void) {
++ size_t todo, n;
++ char *data;
++ unsigned int nframes;
++ double normalized_volume = 0.0;
++
++ nframes = audio_bus->frames();
++
++ while (state == kRunning && !sio_eof(hdl)) {
++
++ GetAgcVolume(&normalized_volume);
++
++ // read one block
++ todo = nframes * params.GetBytesPerFrame(kSampleFormat);
++ data = buffer;
++ while (todo > 0) {
++ n = sio_read(hdl, data, todo);
++ if (n == 0)
++ return; // unrecoverable I/O error
++ todo -= n;
++ data += n;
++ }
++ hw_delay -= nframes;
++
++ // convert frames count to TimeDelta
++ const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay,
++ params.sample_rate());
++
++ // push into bus
++ audio_bus->FromInterleaved<SignedInt16SampleTypeTraits>(reinterpret_cast<int16_t*>(buffer), nframes);
++
++
++ // invoke callback
++ callback->OnData(audio_bus.get(), base::TimeTicks::Now() - delay, 1.);
++ }
++}
++
++} // namespace media
diff --git a/www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__input.h b/www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__input.h
new file mode 100644
index 000000000000..d189809f658a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__input.h
@@ -0,0 +1,94 @@
+--- media/audio/sndio/sndio_input.h.orig 2022-10-01 07:40:07 UTC
++++ media/audio/sndio/sndio_input.h
+@@ -0,0 +1,91 @@
++// Copyright 2013 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.
++
++#ifndef MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_
++#define MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_
++
++#include <stdint.h>
++#include <string>
++#include <sndio.h>
++
++#include "base/compiler_specific.h"
++#include "base/memory/weak_ptr.h"
++#include "base/time/time.h"
++#include "media/audio/agc_audio_stream.h"
++#include "media/audio/audio_io.h"
++#include "media/audio/audio_device_description.h"
++#include "media/base/audio_parameters.h"
++
++namespace media {
++
++class AudioManagerBase;
++
++// Implementation of AudioOutputStream using sndio(7)
++class SndioAudioInputStream : public AgcAudioStream<AudioInputStream> {
++ public:
++ // Pass this to the constructor if you want to attempt auto-selection
++ // of the audio recording device.
++ static const char kAutoSelectDevice[];
++
++ // Create a PCM Output stream for the SNDIO device identified by
++ // |device_name|. If unsure of what to use for |device_name|, use
++ // |kAutoSelectDevice|.
++ SndioAudioInputStream(AudioManagerBase* audio_manager,
++ const std::string& device_name,
++ const AudioParameters& params);
++
++ SndioAudioInputStream(const SndioAudioInputStream&) = delete;
++ SndioAudioInputStream& operator=(const SndioAudioInputStream&) = delete;
++
++ ~SndioAudioInputStream() override;
++
++ // Implementation of AudioInputStream.
++ OpenOutcome Open() override;
++ void Start(AudioInputCallback* callback) override;
++ void Stop() override;
++ void Close() override;
++ double GetMaxVolume() override;
++ void SetVolume(double volume) override;
++ double GetVolume() override;
++ bool IsMuted() override;
++ void SetOutputDeviceForAec(const std::string& output_device_id) override;
++
++ private:
++
++ enum StreamState {
++ kClosed, // Not opened yet
++ kStopped, // Device opened, but not started yet
++ kRunning, // Started, device playing
++ kStopWait // Stopping, waiting for the real-time thread to exit
++ };
++
++ // C-style call-backs
++ static void OnMoveCallback(void *arg, int delta);
++ static void* ThreadEntry(void *arg);
++
++ // Continuously moves data from the device to the consumer
++ void ThreadLoop();
++ // Our creator, the audio manager needs to be notified when we close.
++ AudioManagerBase* manager;
++ // Parameters of the source
++ AudioParameters params;
++ // We store data here for consumer
++ std::unique_ptr<AudioBus> audio_bus;
++ // Call-back that consumes recorded data
++ AudioInputCallback* callback; // Valid during a recording session.
++ // Handle of the audio device
++ struct sio_hdl* hdl;
++ // Current state of the stream
++ enum StreamState state;
++ // High priority thread running ThreadLoop()
++ pthread_t thread;
++ // Number of frames buffered in the hardware
++ int hw_delay;
++ // Temporary buffer where data is stored sndio-compatible format
++ char* buffer;
++};
++
++} // namespace media
++
++#endif // MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_
diff --git a/www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__output.cc b/www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__output.cc
new file mode 100644
index 000000000000..82b9f21bee63
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__output.cc
@@ -0,0 +1,190 @@
+--- media/audio/sndio/sndio_output.cc.orig 2022-10-01 07:40:07 UTC
++++ media/audio/sndio/sndio_output.cc
+@@ -0,0 +1,187 @@
++// Copyright (c) 2012 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 "base/logging.h"
++#include "base/time/time.h"
++#include "base/time/default_tick_clock.h"
++#include "media/audio/audio_manager_base.h"
++#include "media/base/audio_timestamp_helper.h"
++#include "media/audio/sndio/sndio_output.h"
++
++namespace media {
++
++static const SampleFormat kSampleFormat = kSampleFormatS16;
++
++void SndioAudioOutputStream::OnMoveCallback(void *arg, int delta) {
++ SndioAudioOutputStream* self = static_cast<SndioAudioOutputStream*>(arg);
++
++ self->hw_delay -= delta;
++}
++
++void SndioAudioOutputStream::OnVolCallback(void *arg, unsigned int vol) {
++ SndioAudioOutputStream* self = static_cast<SndioAudioOutputStream*>(arg);
++
++ self->vol = vol;
++}
++
++void *SndioAudioOutputStream::ThreadEntry(void *arg) {
++ SndioAudioOutputStream* self = static_cast<SndioAudioOutputStream*>(arg);
++
++ self->ThreadLoop();
++ return NULL;
++}
++
++SndioAudioOutputStream::SndioAudioOutputStream(const AudioParameters& params,
++ AudioManagerBase* manager)
++ : manager(manager),
++ params(params),
++ audio_bus(AudioBus::Create(params)),
++ state(kClosed),
++ mutex(PTHREAD_MUTEX_INITIALIZER) {
++}
++
++SndioAudioOutputStream::~SndioAudioOutputStream() {
++ if (state != kClosed)
++ Close();
++}
++
++bool SndioAudioOutputStream::Open() {
++ if (params.format() != AudioParameters::AUDIO_PCM_LINEAR &&
++ params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) {
++ LOG(WARNING) << "Unsupported audio format.";
++ return false;
++ }
++ state = kStopped;
++ volpending = 0;
++ vol = SIO_MAXVOL;
++ buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)];
++ return true;
++}
++
++void SndioAudioOutputStream::Close() {
++ if (state == kClosed)
++ goto release;
++ if (state == kRunning)
++ Stop();
++ state = kClosed;
++ delete [] buffer;
++release:
++ manager->ReleaseOutputStream(this); // Calls the destructor
++}
++
++void SndioAudioOutputStream::Start(AudioSourceCallback* callback) {
++ struct sio_par par;
++ int sig;
++
++ sio_initpar(&par);
++ par.rate = params.sample_rate();
++ par.pchan = params.channels();
++ par.bits = SampleFormatToBitsPerChannel(kSampleFormat);
++ par.bps = par.bits / 8;
++ par.sig = sig = par.bits != 8 ? 1 : 0;
++ par.le = SIO_LE_NATIVE;
++ par.appbufsz = params.frames_per_buffer();
++
++ hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0);
++ if (hdl == NULL) {
++ LOG(ERROR) << "Couldn't open audio device.";
++ return;
++ }
++ if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) {
++ LOG(ERROR) << "Couldn't set audio parameters.";
++ sio_close(hdl);
++ return;
++ }
++ if (par.rate != (unsigned int)params.sample_rate() ||
++ par.pchan != (unsigned int)params.channels() ||
++ par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) ||
++ par.sig != (unsigned int)sig ||
++ (par.bps > 1 && par.le != SIO_LE_NATIVE) ||
++ (par.bits != par.bps * 8)) {
++ LOG(ERROR) << "Unsupported audio parameters.";
++ sio_close(hdl);
++ return;
++ }
++
++ sio_onmove(hdl, &OnMoveCallback, this);
++ sio_onvol(hdl, &OnVolCallback, this);
++
++ state = kRunning;
++ hw_delay = 0;
++ source = callback;
++ sio_start(hdl);
++
++ if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) {
++ LOG(ERROR) << "Failed to create real-time thread.";
++ sio_stop(hdl);
++ sio_close(hdl);
++ state = kStopped;
++ }
++}
++
++void SndioAudioOutputStream::Stop() {
++ if (state == kStopped)
++ return;
++ state = kStopWait;
++ pthread_join(thread, NULL);
++ sio_stop(hdl);
++ sio_close(hdl);
++ state = kStopped;
++}
++
++void SndioAudioOutputStream::SetVolume(double v) {
++ pthread_mutex_lock(&mutex);
++ vol = v * SIO_MAXVOL;
++ volpending = 1;
++ pthread_mutex_unlock(&mutex);
++}
++
++void SndioAudioOutputStream::GetVolume(double* v) {
++ pthread_mutex_lock(&mutex);
++ *v = vol * (1. / SIO_MAXVOL);
++ pthread_mutex_unlock(&mutex);
++}
++
++// This stream is always used with sub second buffer sizes, where it's
++// sufficient to simply always flush upon Start().
++void SndioAudioOutputStream::Flush() {}
++
++void SndioAudioOutputStream::ThreadLoop(void) {
++ int avail, count, result;
++
++ while (state == kRunning) {
++ // Update volume if needed
++ pthread_mutex_lock(&mutex);
++ if (volpending) {
++ volpending = 0;
++ sio_setvol(hdl, vol);
++ }
++ pthread_mutex_unlock(&mutex);
++
++ // Get data to play
++ const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay,
++ params.sample_rate());
++ count = source->OnMoreData(delay, base::TimeTicks::Now(), 0, audio_bus.get());
++ audio_bus->ToInterleaved<SignedInt16SampleTypeTraits>(count, reinterpret_cast<int16_t*>(buffer));
++ if (count == 0) {
++ // We have to submit something to the device
++ count = audio_bus->frames();
++ memset(buffer, 0, count * params.GetBytesPerFrame(kSampleFormat));
++ LOG(WARNING) << "No data to play, running empty cycle.";
++ }
++
++ // Submit data to the device
++ avail = count * params.GetBytesPerFrame(kSampleFormat);
++ result = sio_write(hdl, buffer, avail);
++ if (result == 0) {
++ LOG(WARNING) << "Audio device disconnected.";
++ break;
++ }
++
++ // Update hardware pointer
++ hw_delay += count;
++ }
++}
++
++} // namespace media
diff --git a/www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__output.h b/www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__output.h
new file mode 100644
index 000000000000..1d3e2ef0c1b6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_audio_sndio_sndio__output.h
@@ -0,0 +1,91 @@
+--- media/audio/sndio/sndio_output.h.orig 2022-10-01 07:40:07 UTC
++++ media/audio/sndio/sndio_output.h
+@@ -0,0 +1,88 @@
++// Copyright (c) 2012 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.
++
++#ifndef MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_
++#define MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_
++
++#include <pthread.h>
++#include <sndio.h>
++
++#include "base/time/tick_clock.h"
++#include "base/time/time.h"
++#include "media/audio/audio_io.h"
++
++namespace media {
++
++class AudioManagerBase;
++
++// Implementation of AudioOutputStream using sndio(7)
++class SndioAudioOutputStream : public AudioOutputStream {
++ public:
++ // The manager is creating this object
++ SndioAudioOutputStream(const AudioParameters& params,
++ AudioManagerBase* manager);
++
++ SndioAudioOutputStream(const SndioAudioOutputStream&) = delete;
++ SndioAudioOutputStream& operator=(const SndioAudioOutputStream&) = delete;
++
++ virtual ~SndioAudioOutputStream();
++
++ // Implementation of AudioOutputStream.
++ bool Open() override;
++ void Close() override;
++ void Start(AudioSourceCallback* callback) override;
++ void Stop() override;
++ void SetVolume(double volume) override;
++ void GetVolume(double* volume) override;
++ void Flush() override;
++
++ friend void sndio_onmove(void *arg, int delta);
++ friend void sndio_onvol(void *arg, unsigned int vol);
++ friend void *sndio_threadstart(void *arg);
++
++ private:
++ enum StreamState {
++ kClosed, // Not opened yet
++ kStopped, // Device opened, but not started yet
++ kRunning, // Started, device playing
++ kStopWait // Stopping, waiting for the real-time thread to exit
++ };
++
++ // C-style call-backs
++ static void OnMoveCallback(void *arg, int delta);
++ static void OnVolCallback(void *arg, unsigned int vol);
++ static void* ThreadEntry(void *arg);
++
++ // Continuously moves data from the producer to the device
++ void ThreadLoop(void);
++
++ // Our creator, the audio manager needs to be notified when we close.
++ AudioManagerBase* manager;
++ // Parameters of the source
++ AudioParameters params;
++ // Source stores data here
++ std::unique_ptr<AudioBus> audio_bus;
++ // Call-back that produces data to play
++ AudioSourceCallback* source;
++ // Handle of the audio device
++ struct sio_hdl* hdl;
++ // Current state of the stream
++ enum StreamState state;
++ // High priority thread running ThreadLoop()
++ pthread_t thread;
++ // Protects vol, volpending and hw_delay
++ pthread_mutex_t mutex;
++ // Current volume in the 0..SIO_MAXVOL range
++ int vol;
++ // Set to 1 if volumes must be refreshed in the realtime thread
++ int volpending;
++ // Number of frames buffered in the hardware
++ int hw_delay;
++ // Temporary buffer where data is stored sndio-compatible format
++ char* buffer;
++};
++
++} // namespace media
++
++#endif // MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_
diff --git a/www/ungoogled-chromium/files/patch-media_base_audio__latency.cc b/www/ungoogled-chromium/files/patch-media_base_audio__latency.cc
new file mode 100644
index 000000000000..11d93f5df2b6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_base_audio__latency.cc
@@ -0,0 +1,11 @@
+--- media/base/audio_latency.cc.orig 2022-10-01 07:40:07 UTC
++++ media/base/audio_latency.cc
+@@ -137,7 +137,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in
+ }
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // On Linux, MacOS and Fuchsia, the low level IO implementations on the
+ // browser side supports all buffer size the clients want. We use the native
+ // peer connection buffer size (10ms) to achieve best possible performance.
diff --git a/www/ungoogled-chromium/files/patch-media_base_media__switches.cc b/www/ungoogled-chromium/files/patch-media_base_media__switches.cc
new file mode 100644
index 000000000000..eec014be40ab
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_base_media__switches.cc
@@ -0,0 +1,47 @@
+--- media/base/media_switches.cc.orig 2022-10-01 07:40:07 UTC
++++ media/base/media_switches.cc
+@@ -10,7 +10,7 @@
+ #include "components/system_media_controls/linux/buildflags/buildflags.h"
+ #include "media/media_buildflags.h"
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "base/cpu.h"
+ #endif
+
+@@ -452,7 +452,7 @@ const base::Feature kGav1VideoDecoder{"Gav1VideoDecode
+ // Show toolbar button that opens dialog for controlling media sessions.
+ const base::Feature kGlobalMediaControls {
+ "GlobalMediaControls",
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
+@@ -490,7 +490,7 @@ constexpr base::FeatureParam<kCrosGlobalMediaControlsP
+ const base::Feature kGlobalMediaControlsPictureInPicture {
+ "GlobalMediaControlsPictureInPicture",
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
+@@ -527,7 +527,7 @@ const base::Feature kUseR16Texture{"use-r16-texture",
+ const base::Feature kUnifiedAutoplay{"UnifiedAutoplay",
+ base::FEATURE_ENABLED_BY_DEFAULT};
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Enable vaapi video decoding on linux. This is already enabled by default on
+ // chromeos, but needs an experiment on linux.
+ const base::Feature kVaapiVideoDecodeLinux{"VaapiVideoDecoder",
+@@ -942,7 +942,7 @@ const base::Feature MEDIA_EXPORT kDeprecateLowUsageCod
+ "DeprecateLowUsageCodecs", base::FEATURE_ENABLED_BY_DEFAULT};
+ #endif // BUILDFLAG(IS_CHROMEOS)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Spawn utility processes to perform hardware decode acceleration instead of
+ // using the GPU process.
+ const base::Feature MEDIA_EXPORT kUseOutOfProcessVideoDecoding{
diff --git a/www/ungoogled-chromium/files/patch-media_base_media__switches.h b/www/ungoogled-chromium/files/patch-media_base_media__switches.h
new file mode 100644
index 000000000000..0d3bd8fd467a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_base_media__switches.h
@@ -0,0 +1,20 @@
+--- media/base/media_switches.h.orig 2022-10-01 07:40:07 UTC
++++ media/base/media_switches.h
+@@ -203,7 +203,7 @@ MEDIA_EXPORT extern const base::Feature kUseDecoderStr
+ MEDIA_EXPORT extern const base::Feature kUseFakeDeviceForMediaStream;
+ MEDIA_EXPORT extern const base::Feature kUseMediaHistoryStore;
+ MEDIA_EXPORT extern const base::Feature kUseR16Texture;
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ MEDIA_EXPORT extern const base::Feature kVaapiVideoDecodeLinux;
+ MEDIA_EXPORT extern const base::Feature kVaapiVideoEncodeLinux;
+ MEDIA_EXPORT extern const base::Feature kVaapiIgnoreDriverChecks;
+@@ -310,7 +310,7 @@ MEDIA_EXPORT extern const base::FeatureParam<
+ MEDIA_EXPORT extern const base::Feature kDeprecateLowUsageCodecs;
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ MEDIA_EXPORT extern const base::Feature kUseOutOfProcessVideoDecoding;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
diff --git a/www/ungoogled-chromium/files/patch-media_base_scopedfd__helper.h b/www/ungoogled-chromium/files/patch-media_base_scopedfd__helper.h
new file mode 100644
index 000000000000..633401055c54
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_base_scopedfd__helper.h
@@ -0,0 +1,11 @@
+--- media/base/scopedfd_helper.h.orig 2022-10-01 07:40:07 UTC
++++ media/base/scopedfd_helper.h
+@@ -15,7 +15,7 @@ namespace media {
+ // but since the only current user is V4L2 we are limiting the scope to OS_LINUX
+ // so the binary size does not inflate on non-using systems. Feel free to adapt
+ // this and BUILD.gn as our needs evolve.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ // Return a new vector containing duplicates of |fds|, or PCHECKs in case of an
+ // error.
diff --git a/www/ungoogled-chromium/files/patch-media_base_supported__types.cc b/www/ungoogled-chromium/files/patch-media_base_supported__types.cc
new file mode 100644
index 000000000000..c8dc5f428bbe
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_base_supported__types.cc
@@ -0,0 +1,11 @@
+--- media/base/supported_types.cc.orig 2022-10-01 07:40:07 UTC
++++ media/base/supported_types.cc
+@@ -205,7 +205,7 @@ bool IsHevcProfileSupported(const VideoType& type) {
+ return false;
+
+ #if BUILDFLAG(ENABLE_PLATFORM_HEVC)
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #if BUILDFLAG(IS_CHROMEOS_LACROS)
+ // TODO(b/171813538): For Lacros, the supplemental profile cache will be
+ // asking lacros-gpu, but we will be doing decoding in ash-gpu. Until the
diff --git a/www/ungoogled-chromium/files/patch-media_base_user__input__monitor__unittest.cc b/www/ungoogled-chromium/files/patch-media_base_user__input__monitor__unittest.cc
new file mode 100644
index 000000000000..9e518c8c822a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_base_user__input__monitor__unittest.cc
@@ -0,0 +1,29 @@
+--- media/base/user_input_monitor_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ media/base/user_input_monitor_unittest.cc
+@@ -13,7 +13,7 @@
+ #include "build/build_config.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/files/file_descriptor_watcher_posix.h"
+ #endif
+
+@@ -49,7 +49,7 @@ class UserInputMonitorTest : public testing::Test {
+ } // namespace
+
+ TEST_F(UserInputMonitorTest, CreatePlatformSpecific) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ base::test::TaskEnvironment task_environment(
+ base::test::TaskEnvironment::MainThreadType::IO);
+ #else
+@@ -71,7 +71,7 @@ TEST_F(UserInputMonitorTest, CreatePlatformSpecific) {
+ }
+
+ TEST_F(UserInputMonitorTest, CreatePlatformSpecificWithMapping) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ base::test::TaskEnvironment task_environment(
+ base::test::TaskEnvironment::MainThreadType::IO);
+ #else
diff --git a/www/ungoogled-chromium/files/patch-media_base_vector__math.cc b/www/ungoogled-chromium/files/patch-media_base_vector__math.cc
new file mode 100644
index 000000000000..6e3b63569ca8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_base_vector__math.cc
@@ -0,0 +1,11 @@
+--- media/base/vector_math.cc.orig 2022-10-01 07:40:07 UTC
++++ media/base/vector_math.cc
+@@ -18,7 +18,7 @@
+ // better, which is anywhere clang is used.
+ // TODO(pcc): Linux currently uses ThinLTO which has broken auto-vectorization
+ // in clang, so use our intrinsic version for now. http://crbug.com/738085
+-#if !defined(__clang__) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if !defined(__clang__) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #define FMAC_FUNC FMAC_SSE
+ #define FMUL_FUNC FMUL_SSE
+ #else
diff --git a/www/ungoogled-chromium/files/patch-media_base_video__frame.cc b/www/ungoogled-chromium/files/patch-media_base_video__frame.cc
new file mode 100644
index 000000000000..630ee032012a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_base_video__frame.cc
@@ -0,0 +1,74 @@
+--- media/base/video_frame.cc.orig 2022-10-01 07:40:07 UTC
++++ media/base/video_frame.cc
+@@ -72,7 +72,7 @@ std::string VideoFrame::StorageTypeToString(
+ return "OWNED_MEMORY";
+ case VideoFrame::STORAGE_SHMEM:
+ return "SHMEM";
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ case VideoFrame::STORAGE_DMABUFS:
+ return "DMABUFS";
+ #endif
+@@ -89,7 +89,7 @@ std::string VideoFrame::StorageTypeToString(
+ // static
+ bool VideoFrame::IsStorageTypeMappable(VideoFrame::StorageType storage_type) {
+ return
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // This is not strictly needed but makes explicit that, at VideoFrame
+ // level, DmaBufs are not mappable from userspace.
+ storage_type != VideoFrame::STORAGE_DMABUFS &&
+@@ -285,7 +285,7 @@ static absl::optional<VideoFrameLayout> GetDefaultLayo
+ return VideoFrameLayout::CreateWithPlanes(format, coded_size, planes);
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // This class allows us to embed a vector<ScopedFD> into a scoped_refptr, and
+ // thus to have several VideoFrames share the same set of DMABUF FDs.
+ class VideoFrame::DmabufHolder
+@@ -624,7 +624,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalGpuM
+ for (size_t i = 0; i < num_planes; ++i)
+ planes[i].stride = gpu_memory_buffer->stride(i);
+ uint64_t modifier = gfx::NativePixmapHandle::kNoModifier;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (gpu_memory_buffer->GetType() == gfx::NATIVE_PIXMAP) {
+ const auto gmb_handle = gpu_memory_buffer->CloneHandle();
+ if (gmb_handle.is_null() ||
+@@ -670,7 +670,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalGpuM
+ return frame;
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // static
+ scoped_refptr<VideoFrame> VideoFrame::WrapExternalDmabufs(
+ const VideoFrameLayout& layout,
+@@ -894,7 +894,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame(
+ }
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ DCHECK(frame->dmabuf_fds_);
+ // If there are any |dmabuf_fds_| plugged in, we should refer them too.
+ wrapping_frame->dmabuf_fds_ = frame->dmabuf_fds_;
+@@ -1265,7 +1265,7 @@ const gpu::MailboxHolder& VideoFrame::mailbox_holder(
+ : mailbox_holders_[texture_index];
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const std::vector<base::ScopedFD>& VideoFrame::DmabufFds() const {
+ DCHECK_EQ(storage_type_, STORAGE_DMABUFS);
+
+@@ -1377,7 +1377,7 @@ VideoFrame::VideoFrame(const VideoFrameLayout& layout,
+ storage_type_(storage_type),
+ visible_rect_(Intersection(visible_rect, gfx::Rect(layout.coded_size()))),
+ natural_size_(natural_size),
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ dmabuf_fds_(base::MakeRefCounted<DmabufHolder>()),
+ #endif
+ timestamp_(timestamp),
diff --git a/www/ungoogled-chromium/files/patch-media_base_video__frame.h b/www/ungoogled-chromium/files/patch-media_base_video__frame.h
new file mode 100644
index 000000000000..847562ecf04e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_base_video__frame.h
@@ -0,0 +1,47 @@
+--- media/base/video_frame.h.orig 2022-10-01 07:40:07 UTC
++++ media/base/video_frame.h
+@@ -41,7 +41,7 @@
+ #include "base/mac/scoped_cftyperef.h"
+ #endif // BUILDFLAG(IS_MAC)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/files/scoped_file.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+@@ -82,7 +82,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ STORAGE_UNOWNED_MEMORY = 2, // External, non owned data pointers.
+ STORAGE_OWNED_MEMORY = 3, // VideoFrame has allocated its own data buffer.
+ STORAGE_SHMEM = 4, // Backed by unsafe (writable) shared memory.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // TODO(mcasas): Consider turning this type into STORAGE_NATIVE
+ // based on the idea of using this same enum value for both DMA
+ // buffers on Linux and CVPixelBuffers on Mac (which currently use
+@@ -280,7 +280,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ ReleaseMailboxAndGpuMemoryBufferCB mailbox_holder_and_gmb_release_cb,
+ base::TimeDelta timestamp);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Wraps provided dmabufs
+ // (https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html) with a
+ // VideoFrame. The frame will take ownership of |dmabuf_fds|, and will
+@@ -539,7 +539,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ // mailbox, the caller must wait for the included sync point.
+ const gpu::MailboxHolder& mailbox_holder(size_t texture_index) const;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Returns a vector containing the backing DmaBufs for this frame. The number
+ // of returned DmaBufs will be equal or less than the number of planes of
+ // the frame. If there are less, this means that the last FD contains the
+@@ -743,7 +743,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ // GPU memory buffer, if this frame is STORAGE_GPU_MEMORY_BUFFER.
+ std::unique_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer_;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ class DmabufHolder;
+
+ // Dmabufs for the frame, used when storage is STORAGE_DMABUFS. Size is either
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_create__video__capture__device__factory.cc b/www/ungoogled-chromium/files/patch-media_capture_video_create__video__capture__device__factory.cc
new file mode 100644
index 000000000000..1778eb19c43d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_create__video__capture__device__factory.cc
@@ -0,0 +1,20 @@
+--- media/capture/video/create_video_capture_device_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/create_video_capture_device_factory.cc
+@@ -12,7 +12,7 @@
+ #include "media/capture/video/fake_video_capture_device_factory.h"
+ #include "media/capture/video/file_video_capture_device_factory.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ #include "media/capture/video/linux/video_capture_device_factory_linux.h"
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ #include "media/capture/video/chromeos/public/cros_features.h"
+@@ -55,7 +55,7 @@ CreateFakeVideoCaptureDeviceFactory() {
+ std::unique_ptr<VideoCaptureDeviceFactory>
+ CreatePlatformSpecificVideoCaptureDeviceFactory(
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ return std::make_unique<VideoCaptureDeviceFactoryLinux>(ui_task_runner);
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ if (base::SysInfo::IsRunningOnChromeOS())
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_fake__video__capture__device__factory.cc b/www/ungoogled-chromium/files/patch-media_capture_video_fake__video__capture__device__factory.cc
new file mode 100644
index 000000000000..4552924cc552
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_fake__video__capture__device__factory.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/fake_video_capture_device_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/fake_video_capture_device_factory.cc
+@@ -213,7 +213,7 @@ void FakeVideoCaptureDeviceFactory::GetDevicesInfo(
+ int entry_index = 0;
+ for (const auto& entry : devices_config_) {
+ VideoCaptureApi api =
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE;
+ #elif BUILDFLAG(IS_MAC)
+ VideoCaptureApi::MACOSX_AVFOUNDATION;
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_file__video__capture__device__factory.cc b/www/ungoogled-chromium/files/patch-media_capture_video_file__video__capture__device__factory.cc
new file mode 100644
index 000000000000..1b6e19d3017b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_file__video__capture__device__factory.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/file_video_capture_device_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/file_video_capture_device_factory.cc
+@@ -52,7 +52,7 @@ void FileVideoCaptureDeviceFactory::GetDevicesInfo(
+ VideoCaptureApi::WIN_DIRECT_SHOW;
+ #elif BUILDFLAG(IS_MAC)
+ VideoCaptureApi::MACOSX_AVFOUNDATION;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE;
+ #else
+ VideoCaptureApi::UNKNOWN;
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_linux_fake__v4l2__impl.cc b/www/ungoogled-chromium/files/patch-media_capture_video_linux_fake__v4l2__impl.cc
new file mode 100644
index 000000000000..612e10030678
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_linux_fake__v4l2__impl.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/linux/fake_v4l2_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/linux/fake_v4l2_impl.cc
+@@ -427,7 +427,7 @@ int FakeV4L2Impl::close(int fd) {
+ return kSuccessReturnValue;
+ }
+
+-int FakeV4L2Impl::ioctl(int fd, int request, void* argp) {
++int FakeV4L2Impl::ioctl(int fd, unsigned long request, void* argp) {
+ base::AutoLock lock(lock_);
+ auto device_iter = opened_devices_.find(fd);
+ if (device_iter == opened_devices_.end())
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_linux_fake__v4l2__impl.h b/www/ungoogled-chromium/files/patch-media_capture_video_linux_fake__v4l2__impl.h
new file mode 100644
index 000000000000..ceecd98420c6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_linux_fake__v4l2__impl.h
@@ -0,0 +1,25 @@
+--- media/capture/video/linux/fake_v4l2_impl.h.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/linux/fake_v4l2_impl.h
+@@ -8,7 +8,13 @@
+ #include <map>
+ #include <string>
+
++#include "build/build_config.h"
++#if BUILDFLAG(IS_OPENBSD)
++#include <sys/videoio.h>
++typedef __uint32_t __u32;
++#else
+ #include <linux/videodev2.h>
++#endif
+
+ #include "base/synchronization/lock.h"
+ #include "media/capture/capture_export.h"
+@@ -36,7 +42,7 @@ class CAPTURE_EXPORT FakeV4L2Impl : public V4L2Capture
+ // Implementation of V4L2CaptureDevice interface:
+ int open(const char* device_name, int flags) override;
+ int close(int fd) override;
+- int ioctl(int fd, int request, void* argp) override;
++ int ioctl(int fd, unsigned long request, void* argp) override;
+ void* mmap(void* start,
+ size_t length,
+ int prot,
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc b/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
new file mode 100644
index 000000000000..643bd20411ec
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
@@ -0,0 +1,44 @@
+--- media/capture/video/linux/v4l2_capture_delegate.cc.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/linux/v4l2_capture_delegate.cc
+@@ -4,8 +4,10 @@
+
+ #include "media/capture/video/linux/v4l2_capture_delegate.h"
+
++#if !defined(OS_BSD)
+ #include <linux/version.h>
+ #include <linux/videodev2.h>
++#endif
+ #include <poll.h>
+ #include <sys/fcntl.h>
+ #include <sys/ioctl.h>
+@@ -27,10 +29,10 @@
+
+ using media::mojom::MeteringMode;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
++// #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
+ // 16 bit depth, Realsense F200.
+ #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
+-#endif
++// #endif
+
+ // TODO(aleksandar.stojiljkovic): Wrap this with kernel version check once the
+ // format is introduced to kernel.
+@@ -666,7 +668,7 @@ base::WeakPtr<V4L2CaptureDelegate> V4L2CaptureDelegate
+
+ V4L2CaptureDelegate::~V4L2CaptureDelegate() = default;
+
+-bool V4L2CaptureDelegate::RunIoctl(int request, void* argp) {
++bool V4L2CaptureDelegate::RunIoctl(unsigned int request, void* argp) {
+ int num_retries = 0;
+ for (; DoIoctl(request, argp) < 0 && num_retries < kMaxIOCtrlRetries;
+ ++num_retries) {
+@@ -676,7 +678,7 @@ bool V4L2CaptureDelegate::RunIoctl(int request, void*
+ return num_retries != kMaxIOCtrlRetries;
+ }
+
+-int V4L2CaptureDelegate::DoIoctl(int request, void* argp) {
++int V4L2CaptureDelegate::DoIoctl(unsigned int request, void* argp) {
+ return HANDLE_EINTR(v4l2_->ioctl(device_fd_.get(), request, argp));
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__delegate.h b/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__delegate.h
new file mode 100644
index 000000000000..15511e7ed520
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__delegate.h
@@ -0,0 +1,15 @@
+--- media/capture/video/linux/v4l2_capture_delegate.h.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/linux/v4l2_capture_delegate.h
+@@ -86,10 +86,10 @@ class CAPTURE_EXPORT V4L2CaptureDelegate final {
+ // device file descriptor or (re)starting streaming, can fail but works after
+ // retrying (https://crbug.com/670262). Returns false if the |request| ioctl
+ // fails too many times.
+- bool RunIoctl(int request, void* argp);
++ bool RunIoctl(unsigned int request, void* argp);
+
+ // Simple wrapper to do HANDLE_EINTR(v4l2_->ioctl(device_fd_.get(), ...)).
+- int DoIoctl(int request, void* argp);
++ int DoIoctl(unsigned int request, void* argp);
+
+ // Creates a mojom::RangePtr with the (min, max, current, step) values of the
+ // control associated with |control_id|. Returns an empty Range otherwise.
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__device.h b/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__device.h
new file mode 100644
index 000000000000..25e677decf6d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__device.h
@@ -0,0 +1,11 @@
+--- media/capture/video/linux/v4l2_capture_device.h.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/linux/v4l2_capture_device.h
+@@ -21,7 +21,7 @@ class CAPTURE_EXPORT V4L2CaptureDevice
+ public:
+ virtual int open(const char* device_name, int flags) = 0;
+ virtual int close(int fd) = 0;
+- virtual int ioctl(int fd, int request, void* argp) = 0;
++ virtual int ioctl(int fd, unsigned long request, void* argp) = 0;
+ virtual void* mmap(void* start,
+ size_t length,
+ int prot,
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__device__impl.cc b/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__device__impl.cc
new file mode 100644
index 000000000000..b7e15a350e26
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__device__impl.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/linux/v4l2_capture_device_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/linux/v4l2_capture_device_impl.cc
+@@ -22,7 +22,7 @@ int V4L2CaptureDeviceImpl::close(int fd) {
+ return ::close(fd);
+ }
+
+-int V4L2CaptureDeviceImpl::ioctl(int fd, int request, void* argp) {
++int V4L2CaptureDeviceImpl::ioctl(int fd, unsigned long request, void* argp) {
+ return ::ioctl(fd, request, argp);
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__device__impl.h b/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__device__impl.h
new file mode 100644
index 000000000000..8b028b20fb0a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_linux_v4l2__capture__device__impl.h
@@ -0,0 +1,11 @@
+--- media/capture/video/linux/v4l2_capture_device_impl.h.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/linux/v4l2_capture_device_impl.h
+@@ -19,7 +19,7 @@ class CAPTURE_EXPORT V4L2CaptureDeviceImpl : public V4
+ public:
+ int open(const char* device_name, int flags) override;
+ int close(int fd) override;
+- int ioctl(int fd, int request, void* argp) override;
++ int ioctl(int fd, unsigned long request, void* argp) override;
+ void* mmap(void* start,
+ size_t length,
+ int prot,
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc b/www/ungoogled-chromium/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc
new file mode 100644
index 000000000000..418b2b53c41a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc
@@ -0,0 +1,45 @@
+--- media/capture/video/linux/video_capture_device_factory_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/linux/video_capture_device_factory_linux.cc
+@@ -72,6 +72,9 @@ class DevVideoFilePathsDeviceProvider
+ : public VideoCaptureDeviceFactoryLinux::DeviceProvider {
+ public:
+ void GetDeviceIds(std::vector<std::string>* target_container) override {
++#if defined(OS_OPENBSD)
++ target_container->emplace_back("/dev/video");
++#else
+ const base::FilePath path("/dev/");
+ base::FileEnumerator enumerator(path, false, base::FileEnumerator::FILES,
+ "video*");
+@@ -79,9 +82,13 @@ class DevVideoFilePathsDeviceProvider
+ const base::FileEnumerator::FileInfo info = enumerator.GetInfo();
+ target_container->emplace_back(path.value() + info.GetName().value());
+ }
++#endif
+ }
+
+ std::string GetDeviceModelId(const std::string& device_id) override {
++#if defined(OS_OPENBSD)
++ return std::string();
++#endif
+ const std::string file_name = ExtractFileNameFromDeviceId(device_id);
+ std::string usb_id;
+ const std::string vid_path =
+@@ -99,6 +106,9 @@ class DevVideoFilePathsDeviceProvider
+ }
+
+ std::string GetDeviceDisplayName(const std::string& device_id) override {
++#if defined(OS_OPENBSD)
++ return std::string();
++#endif
+ const std::string file_name = ExtractFileNameFromDeviceId(device_id);
+ const std::string interface_path =
+ base::StringPrintf(kInterfacePathTemplate, file_name.c_str());
+@@ -213,7 +223,7 @@ void VideoCaptureDeviceFactoryLinux::GetDevicesInfo(
+ std::move(callback).Run(std::move(devices_info));
+ }
+
+-int VideoCaptureDeviceFactoryLinux::DoIoctl(int fd, int request, void* argp) {
++int VideoCaptureDeviceFactoryLinux::DoIoctl(int fd, unsigned int request, void* argp) {
+ return HANDLE_EINTR(v4l2_->ioctl(fd, request, argp));
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_linux_video__capture__device__factory__linux.h b/www/ungoogled-chromium/files/patch-media_capture_video_linux_video__capture__device__factory__linux.h
new file mode 100644
index 000000000000..b89c7e3b8e8c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_linux_video__capture__device__factory__linux.h
@@ -0,0 +1,11 @@
+--- media/capture/video/linux/video_capture_device_factory_linux.h.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/linux/video_capture_device_factory_linux.h
+@@ -52,7 +52,7 @@ class CAPTURE_EXPORT VideoCaptureDeviceFactoryLinux
+
+ private:
+ // Simple wrapper to do HANDLE_EINTR(v4l2_->ioctl(fd, ...)).
+- int DoIoctl(int fd, int request, void* argp);
++ int DoIoctl(int fd, unsigned int request, void* argp);
+
+ VideoCaptureControlSupport GetControlSupport(int fd);
+ bool GetControlSupport(int fd, int control_id);
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc b/www/ungoogled-chromium/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc
new file mode 100644
index 000000000000..06bb6a22520a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/video_capture_buffer_pool_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/video_capture_buffer_pool_impl.cc
+@@ -74,7 +74,7 @@ VideoCaptureBufferPoolImpl::CreateSharedMemoryViaRawFi
+ int buffer_id) {
+ // This requires platforms where base::SharedMemoryHandle is backed by a
+ // file descriptor.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ base::AutoLock lock(lock_);
+
+ VideoCaptureBufferTracker* tracker = GetTracker(buffer_id);
diff --git a/www/ungoogled-chromium/files/patch-media_capture_video_video__capture__device__client.cc b/www/ungoogled-chromium/files/patch-media_capture_video_video__capture__device__client.cc
new file mode 100644
index 000000000000..fa4114a1c35a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_capture_video_video__capture__device__client.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/video_capture_device_client.cc.orig 2022-10-01 07:40:07 UTC
++++ media/capture/video/video_capture_device_client.cc
+@@ -317,7 +317,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData(
+ // see http://linuxtv.org/downloads/v4l-dvb-apis/packed-rgb.html.
+ // Windows RGB24 defines blue at lowest byte,
+ // see https://msdn.m1cr050ft.qjz9zk/en-us/library/windows/desktop/dd407253
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ fourcc_format = libyuv::FOURCC_RAW;
+ #elif BUILDFLAG(IS_WIN)
+ fourcc_format = libyuv::FOURCC_24BG;
diff --git a/www/ungoogled-chromium/files/patch-media_cdm_cdm__paths__unittest.cc b/www/ungoogled-chromium/files/patch-media_cdm_cdm__paths__unittest.cc
new file mode 100644
index 000000000000..b27e9566658e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_cdm_cdm__paths__unittest.cc
@@ -0,0 +1,11 @@
+--- media/cdm/cdm_paths_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ media/cdm/cdm_paths_unittest.cc
+@@ -27,7 +27,7 @@ const char kComponentPlatform[] =
+ "win";
+ #elif BUILDFLAG(IS_CHROMEOS)
+ "cros";
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ "linux";
+ #else
+ #error unsupported platform
diff --git a/www/ungoogled-chromium/files/patch-media_gpu_buffer__validation.cc b/www/ungoogled-chromium/files/patch-media_gpu_buffer__validation.cc
new file mode 100644
index 000000000000..19eacc9fd1bd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_gpu_buffer__validation.cc
@@ -0,0 +1,29 @@
+--- media/gpu/buffer_validation.cc.orig 2022-10-01 07:40:07 UTC
++++ media/gpu/buffer_validation.cc
+@@ -15,7 +15,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gfx/gpu_memory_buffer.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include <sys/types.h>
+ #include <unistd.h>
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+@@ -23,7 +23,7 @@
+ namespace media {
+
+ bool GetFileSize(const int fd, size_t* size) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (fd < 0) {
+ VLOG(1) << "Invalid file descriptor";
+ return false;
+@@ -73,7 +73,7 @@ bool VerifyGpuMemoryBufferHandle(
+ VLOG(1) << "Unsupported: " << pixel_format;
+ return false;
+ }
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const size_t num_planes = media::VideoFrame::NumPlanes(pixel_format);
+ if (num_planes != gmb_handle.native_pixmap_handle.planes.size() ||
+ num_planes == 0) {
diff --git a/www/ungoogled-chromium/files/patch-media_gpu_chromeos_video__decoder__pipeline.cc b/www/ungoogled-chromium/files/patch-media_gpu_chromeos_video__decoder__pipeline.cc
new file mode 100644
index 000000000000..d9abc650f2df
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_gpu_chromeos_video__decoder__pipeline.cc
@@ -0,0 +1,20 @@
+--- media/gpu/chromeos/video_decoder_pipeline.cc.orig 2022-10-01 07:40:07 UTC
++++ media/gpu/chromeos/video_decoder_pipeline.cc
+@@ -747,7 +747,7 @@ VideoDecoderPipeline::PickDecoderOutputFormat(
+ }
+ }
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Linux should always use a custom allocator (to allocate buffers using
+ // libva) and a PlatformVideoFramePool.
+ CHECK(allocator.has_value());
+@@ -769,7 +769,7 @@ VideoDecoderPipeline::PickDecoderOutputFormat(
+ #error "Unsupported platform"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // viable_candidate should always be set unless using L1 protected content,
+ // which isn't an option on linux.
+ CHECK(viable_candidate);
diff --git a/www/ungoogled-chromium/files/patch-media_gpu_gpu__video__encode__accelerator__factory.cc b/www/ungoogled-chromium/files/patch-media_gpu_gpu__video__encode__accelerator__factory.cc
new file mode 100644
index 000000000000..ce63ff8b9c55
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_gpu_gpu__video__encode__accelerator__factory.cc
@@ -0,0 +1,11 @@
+--- media/gpu/gpu_video_encode_accelerator_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ media/gpu/gpu_video_encode_accelerator_factory.cc
+@@ -111,7 +111,7 @@ std::vector<VEAFactoryFunction> GetVEAFactoryFunctions
+ return vea_factory_functions;
+
+ #if BUILDFLAG(USE_VAAPI)
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (base::FeatureList::IsEnabled(kVaapiVideoEncodeLinux))
+ vea_factory_functions.push_back(base::BindRepeating(&CreateVaapiVEA));
+ #else
diff --git a/www/ungoogled-chromium/files/patch-media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.cc b/www/ungoogled-chromium/files/patch-media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..e7aa8ed39206
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.cc
@@ -0,0 +1,26 @@
+--- media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.cc
+@@ -14,12 +14,15 @@
+ #include "media/gpu/vaapi/vaapi_wrapper.h"
+ #endif
+
++#if !BUILDFLAG(IS_BSD)
+ using sandbox::syscall_broker::BrokerFilePermission;
++#endif
+
+ namespace media {
+
+ bool HardwareVideoDecodingPreSandboxHook(
+ sandbox::policy::SandboxLinux::Options options) {
++#if !BUILDFLAG(IS_BSD)
+ sandbox::syscall_broker::BrokerCommandSet command_set;
+ std::vector<BrokerFilePermission> permissions;
+
+@@ -121,6 +124,7 @@ bool HardwareVideoDecodingPreSandboxHook(
+ dlopen("/usr/lib/libv4l2.so", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE);
+ #endif // defined(__aarch64__)
+ #endif // BUILDFLAG(USE_VAAPI)
++#endif
+
+ return true;
+ }
diff --git a/www/ungoogled-chromium/files/patch-media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.h b/www/ungoogled-chromium/files/patch-media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.h
new file mode 100644
index 000000000000..6e96950da798
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.h
@@ -0,0 +1,16 @@
+--- media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.h.orig 2022-10-01 07:40:07 UTC
++++ media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.h
+@@ -5,7 +5,13 @@
+ #ifndef MEDIA_GPU_SANDBOX_HARDWARE_VIDEO_DECODING_SANDBOX_HOOK_LINUX_H_
+ #define MEDIA_GPU_SANDBOX_HARDWARE_VIDEO_DECODING_SANDBOX_HOOK_LINUX_H_
+
++#include "build/build_config.h"
++
++#if BUILDFLAG(IS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#else
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+
+ namespace media {
+
diff --git a/www/ungoogled-chromium/files/patch-media_gpu_vaapi_vaapi__video__decoder.cc b/www/ungoogled-chromium/files/patch-media_gpu_vaapi_vaapi__video__decoder.cc
new file mode 100644
index 000000000000..68a87a544666
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_gpu_vaapi_vaapi__video__decoder.cc
@@ -0,0 +1,11 @@
+--- media/gpu/vaapi/vaapi_video_decoder.cc.orig 2022-10-01 07:40:07 UTC
++++ media/gpu/vaapi/vaapi_video_decoder.cc
+@@ -767,7 +767,7 @@ void VaapiVideoDecoder::ApplyResolutionChangeWithScree
+ const gfx::Size decoder_natural_size =
+ aspect_ratio_.GetNaturalSize(decoder_visible_rect);
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ absl::optional<DmabufVideoFramePool::CreateFrameCB> allocator =
+ base::BindRepeating(&AllocateCustomFrameProxy, weak_this_);
+ std::vector<ImageProcessor::PixelLayoutCandidate> candidates = {
diff --git a/www/ungoogled-chromium/files/patch-media_gpu_vaapi_vaapi__wrapper.cc b/www/ungoogled-chromium/files/patch-media_gpu_vaapi_vaapi__wrapper.cc
new file mode 100644
index 000000000000..6232b51e2d2b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_gpu_vaapi_vaapi__wrapper.cc
@@ -0,0 +1,11 @@
+--- media/gpu/vaapi/vaapi_wrapper.cc.orig 2022-10-01 07:40:07 UTC
++++ media/gpu/vaapi/vaapi_wrapper.cc
+@@ -742,7 +742,7 @@ VADisplayState::VADisplayState()
+ bool VADisplayState::Initialize() {
+ base::AutoLock auto_lock(va_lock_);
+
+-#if defined(USE_OZONE) && BUILDFLAG(IS_LINUX)
++#if defined(USE_OZONE) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD))
+ // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
+ // Linux. See comment in OzonePlatform::PlatformProperties::supports_vaapi
+ // for more details. This will also require revisiting everything that's
diff --git a/www/ungoogled-chromium/files/patch-media_media__options.gni b/www/ungoogled-chromium/files/patch-media_media__options.gni
new file mode 100644
index 000000000000..4fb276121820
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_media__options.gni
@@ -0,0 +1,30 @@
+--- media/media_options.gni.orig 2022-10-01 07:40:07 UTC
++++ media/media_options.gni
+@@ -165,12 +165,15 @@ declare_args() {
+ # Enables runtime selection of ALSA library for audio.
+ use_alsa = false
+
++ # Enable runtime selection of sndio(7)
++ use_sndio = false
++
+ # Alsa should be used on all non-Android, non-Mac POSIX systems - with the
+ # exception of CastOS desktop builds.
+ #
+ # TODO(crbug.com/1336055): Remove legacy target_cpu hack used for targeting
+ # desktop Chromecast builds.
+- if (is_posix && !is_android && !is_mac &&
++ if (is_posix && !is_android && !is_mac && !is_bsd &&
+ (!is_castos || (target_cpu == "x86" || target_cpu == "x64") ||
+ is_cast_audio_only)) {
+ use_alsa = true
+@@ -186,6 +189,10 @@ declare_args() {
+ if (!use_cras && !is_castos && !is_asan && !is_tsan) {
+ use_pulseaudio = true
+ }
++ }
++ if (is_openbsd) {
++ use_sndio = true
++ use_pulseaudio = false
+ }
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.cc b/www/ungoogled-chromium/files/patch-media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.cc
new file mode 100644
index 000000000000..5013db739200
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.cc
@@ -0,0 +1,29 @@
+--- media/mojo/mojom/stable/stable_video_decoder_types_mojom_traits.cc.orig 2022-10-01 07:40:07 UTC
++++ media/mojo/mojom/stable/stable_video_decoder_types_mojom_traits.cc
+@@ -42,7 +42,7 @@ media::stable::mojom::VideoFrameDataPtr MakeVideoFrame
+ gfx::GpuMemoryBufferHandle gpu_memory_buffer_handle =
+ input->GetGpuMemoryBuffer()->CloneHandle();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ CHECK_EQ(gpu_memory_buffer_handle.type, gfx::NATIVE_PIXMAP);
+ CHECK(!gpu_memory_buffer_handle.native_pixmap_handle.planes.empty());
+ #else
+@@ -749,7 +749,7 @@ const gfx::GpuMemoryBufferId& StructTraits<
+ return input.id;
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // static
+ gfx::NativePixmapHandle StructTraits<
+ media::stable::mojom::NativeGpuMemoryBufferHandleDataView,
+@@ -770,7 +770,7 @@ bool StructTraits<media::stable::mojom::NativeGpuMemor
+
+ output->type = gfx::NATIVE_PIXMAP;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (!data.ReadPlatformHandle(&output->native_pixmap_handle))
+ return false;
+ return true;
diff --git a/www/ungoogled-chromium/files/patch-media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.h b/www/ungoogled-chromium/files/patch-media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.h
new file mode 100644
index 000000000000..45d6aaba4cf5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.h
@@ -0,0 +1,11 @@
+--- media/mojo/mojom/stable/stable_video_decoder_types_mojom_traits.h.orig 2022-10-01 07:40:07 UTC
++++ media/mojo/mojom/stable/stable_video_decoder_types_mojom_traits.h
+@@ -695,7 +695,7 @@ struct StructTraits<media::stable::mojom::NativeGpuMem
+ static const gfx::GpuMemoryBufferId& id(
+ const gfx::GpuMemoryBufferHandle& input);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ static gfx::NativePixmapHandle platform_handle(
+ gfx::GpuMemoryBufferHandle& input);
+ #else
diff --git a/www/ungoogled-chromium/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc b/www/ungoogled-chromium/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc
new file mode 100644
index 000000000000..e6f9c09e78c9
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc
@@ -0,0 +1,11 @@
+--- media/mojo/mojom/video_frame_mojom_traits.cc.orig 2022-10-01 07:40:07 UTC
++++ media/mojo/mojom/video_frame_mojom_traits.cc
+@@ -23,7 +23,7 @@
+ #include "ui/gfx/mojom/color_space_mojom_traits.h"
+ #include "ui/gfx/mojom/hdr_metadata_mojom_traits.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/posix/eintr_wrapper.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
diff --git a/www/ungoogled-chromium/files/patch-media_video_fake__gpu__memory__buffer.cc b/www/ungoogled-chromium/files/patch-media_video_fake__gpu__memory__buffer.cc
new file mode 100644
index 000000000000..0520a8fd4ee9
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_video_fake__gpu__memory__buffer.cc
@@ -0,0 +1,38 @@
+--- media/video/fake_gpu_memory_buffer.cc.orig 2022-10-01 07:40:07 UTC
++++ media/video/fake_gpu_memory_buffer.cc
+@@ -9,7 +9,7 @@
+ #include "media/base/format_utils.h"
+ #include "media/base/video_frame.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+@@ -47,7 +47,7 @@ class FakeGpuMemoryBufferImpl : public gpu::GpuMemoryB
+
+ } // namespace
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ base::ScopedFD GetDummyFD() {
+ base::ScopedFD fd(open("/dev/zero", O_RDWR));
+ DCHECK(fd.is_valid());
+@@ -77,7 +77,7 @@ FakeGpuMemoryBuffer::FakeGpuMemoryBuffer(const gfx::Si
+ static base::AtomicSequenceNumber buffer_id_generator;
+ handle_.id = gfx::GpuMemoryBufferId(buffer_id_generator.GetNext());
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ for (size_t i = 0; i < VideoFrame::NumPlanes(video_pixel_format_); i++) {
+ const gfx::Size plane_size_in_bytes =
+ VideoFrame::PlaneSize(video_pixel_format_, i, size_);
+@@ -134,7 +134,7 @@ gfx::GpuMemoryBufferHandle FakeGpuMemoryBuffer::CloneH
+ gfx::GpuMemoryBufferHandle handle;
+ handle.type = gfx::NATIVE_PIXMAP;
+ handle.id = handle_.id;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ handle.native_pixmap_handle =
+ gfx::CloneHandleForIPC(handle_.native_pixmap_handle);
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc b/www/ungoogled-chromium/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
new file mode 100644
index 000000000000..46f25b2a92bb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
@@ -0,0 +1,29 @@
+--- media/video/gpu_memory_buffer_video_frame_pool.cc.orig 2022-10-01 07:40:07 UTC
++++ media/video/gpu_memory_buffer_video_frame_pool.cc
+@@ -797,7 +797,7 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHa
+ }
+
+ bool is_software_backed_video_frame = !video_frame->HasTextures();
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ is_software_backed_video_frame &= !video_frame->HasDmaBufs();
+ #endif
+
+@@ -1223,7 +1223,7 @@ scoped_refptr<VideoFrame> GpuMemoryBufferVideoFramePoo
+ frame_resources->plane_resources[gpu_memory_buffer_plane]
+ .gpu_memory_buffer.get();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ is_webgpu_compatible &= (gpu_memory_buffer != nullptr);
+ if (is_webgpu_compatible) {
+ is_webgpu_compatible &=
+@@ -1243,7 +1243,7 @@ scoped_refptr<VideoFrame> GpuMemoryBufferVideoFramePoo
+ gpu::SHARED_IMAGE_USAGE_GLES2 | gpu::SHARED_IMAGE_USAGE_RASTER |
+ gpu::SHARED_IMAGE_USAGE_DISPLAY | gpu::SHARED_IMAGE_USAGE_SCANOUT;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // TODO(crbug.com/1241537): Always add the flag once the
+ // OzoneImageBacking is by default turned on.
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
diff --git a/www/ungoogled-chromium/files/patch-media_video_video__encode__accelerator__adapter.cc b/www/ungoogled-chromium/files/patch-media_video_video__encode__accelerator__adapter.cc
new file mode 100644
index 000000000000..0f2657e190b7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_video_video__encode__accelerator__adapter.cc
@@ -0,0 +1,20 @@
+--- media/video/video_encode_accelerator_adapter.cc.orig 2022-10-01 07:40:07 UTC
++++ media/video/video_encode_accelerator_adapter.cc
+@@ -129,7 +129,7 @@ VideoEncodeAccelerator::Config SetUpVeaConfig(
+ if (is_rgb)
+ config.input_format = PIXEL_FORMAT_I420;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (storage_type == VideoFrame::STORAGE_DMABUFS ||
+ storage_type == VideoFrame::STORAGE_GPU_MEMORY_BUFFER) {
+ if (is_rgb)
+@@ -298,7 +298,7 @@ void VideoEncodeAcceleratorAdapter::InitializeInternal
+ SetUpVeaConfig(profile_, options_, format, first_frame->storage_type(),
+ supported_rc_modes_);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Linux/ChromeOS require a special configuration to use dmabuf storage.
+ // We need to keep sending frames the same way the first frame was sent.
+ // Other platforms will happily mix GpuMemoryBuffer storage with regular
diff --git a/www/ungoogled-chromium/files/patch-media_video_video__encode__accelerator__adapter__test.cc b/www/ungoogled-chromium/files/patch-media_video_video__encode__accelerator__adapter__test.cc
new file mode 100644
index 000000000000..846fb2da92d2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_video_video__encode__accelerator__adapter__test.cc
@@ -0,0 +1,11 @@
+--- media/video/video_encode_accelerator_adapter_test.cc.orig 2022-10-01 07:40:07 UTC
++++ media/video/video_encode_accelerator_adapter_test.cc
+@@ -395,7 +395,7 @@ TEST_P(VideoEncodeAcceleratorAdapterTest, TwoFramesRes
+
+ vea()->SetEncodingCallback(base::BindLambdaForTesting(
+ [&](BitstreamBuffer&, bool keyframe, scoped_refptr<VideoFrame> frame) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ EXPECT_EQ(frame->format(),
+ IsYuvPlanar(pixel_format) ? pixel_format : PIXEL_FORMAT_I420);
+ #else
diff --git a/www/ungoogled-chromium/files/patch-media_webrtc_audio__processor.cc b/www/ungoogled-chromium/files/patch-media_webrtc_audio__processor.cc
new file mode 100644
index 000000000000..0f9e916a3155
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_webrtc_audio__processor.cc
@@ -0,0 +1,11 @@
+--- media/webrtc/audio_processor.cc.orig 2022-10-01 07:40:07 UTC
++++ media/webrtc/audio_processor.cc
+@@ -473,7 +473,7 @@ absl::optional<double> AudioProcessor::ProcessData(
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
+ DCHECK_LE(volume, 1.0);
+ #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || \
+- BUILDFLAG(IS_OPENBSD)
++ BUILDFLAG(IS_BSD)
+ // We have a special situation on Linux where the microphone volume can be
+ // "higher than maximum". The input volume slider in the sound preference
+ // allows the user to set a scaling that is higher than 100%. It means that
diff --git a/www/ungoogled-chromium/files/patch-media_webrtc_helpers__unittests.cc b/www/ungoogled-chromium/files/patch-media_webrtc_helpers__unittests.cc
new file mode 100644
index 000000000000..ac532ae66749
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_webrtc_helpers__unittests.cc
@@ -0,0 +1,20 @@
+--- media/webrtc/helpers_unittests.cc.orig 2022-10-01 07:40:07 UTC
++++ media/webrtc/helpers_unittests.cc
+@@ -36,7 +36,7 @@ TEST(CreateWebRtcAudioProcessingModuleTest, CheckDefau
+ EXPECT_FALSE(config.pre_amplifier.enabled);
+ EXPECT_TRUE(config.echo_canceller.enabled);
+ EXPECT_TRUE(config.gain_controller1.enabled);
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ EXPECT_TRUE(config.gain_controller2.enabled);
+ #else
+ EXPECT_FALSE(config.gain_controller2.enabled);
+@@ -98,7 +98,7 @@ TEST(CreateWebRtcAudioProcessingModuleTest, CheckDefau
+
+ // Check that either AGC1 digital or AGC2 digital is used based on the
+ // platforms where the Hybrid AGC is enabled by default.
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ EXPECT_FALSE(agc1_analog_config.enable_digital_adaptive);
+ EXPECT_TRUE(config.gain_controller2.enabled);
+ EXPECT_TRUE(config.gain_controller2.adaptive_digital.enabled);
diff --git a/www/ungoogled-chromium/files/patch-media_webrtc_webrtc__features.cc b/www/ungoogled-chromium/files/patch-media_webrtc_webrtc__features.cc
new file mode 100644
index 000000000000..20ccb593cb42
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-media_webrtc_webrtc__features.cc
@@ -0,0 +1,20 @@
+--- media/webrtc/webrtc_features.cc.orig 2022-10-01 07:40:07 UTC
++++ media/webrtc/webrtc_features.cc
+@@ -9,7 +9,7 @@
+
+ namespace features {
+ namespace {
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ constexpr base::FeatureState kWebRtcHybridAgcState =
+ base::FEATURE_ENABLED_BY_DEFAULT;
+ #else
+@@ -19,7 +19,7 @@ constexpr base::FeatureState kWebRtcHybridAgcState =
+ } // namespace
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS)
++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ constexpr base::FeatureState kWebRtcAnalogAgcClippingControlState =
+ base::FEATURE_ENABLED_BY_DEFAULT;
+ #else
diff --git a/www/ungoogled-chromium/files/patch-mojo_core_BUILD.gn b/www/ungoogled-chromium/files/patch-mojo_core_BUILD.gn
new file mode 100644
index 000000000000..ae1916f3f4e2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-mojo_core_BUILD.gn
@@ -0,0 +1,11 @@
+--- mojo/core/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ mojo/core/BUILD.gn
+@@ -146,7 +146,7 @@ template("core_impl_source_set") {
+ ]
+ }
+
+- if ((is_linux || is_chromeos || is_android) && !is_nacl) {
++ if ((is_linux || is_chromeos || is_android) && !is_nacl && !is_bsd) {
+ sources += [
+ "channel_linux.cc",
+ "channel_linux.h",
diff --git a/www/ungoogled-chromium/files/patch-mojo_core_channel.cc b/www/ungoogled-chromium/files/patch-mojo_core_channel.cc
new file mode 100644
index 000000000000..696121b5f147
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-mojo_core_channel.cc
@@ -0,0 +1,14 @@
+--- mojo/core/channel.cc.orig 2022-10-01 07:40:07 UTC
++++ mojo/core/channel.cc
+@@ -71,7 +71,11 @@ const size_t kMaxUnusedReadBufferCapacity = 4096;
+ // Fuchsia: The zx_channel_write() API supports up to 64 handles.
+ const size_t kMaxAttachedHandles = 64;
+
++#if defined(__i386__) && defined(OS_FREEBSD)
++const size_t kChannelMessageAlignment = 4;
++#else
+ static_assert(alignof(std::max_align_t) >= kChannelMessageAlignment, "");
++#endif
+ Channel::AlignedBuffer MakeAlignedBuffer(size_t size) {
+ // Generic allocators (such as malloc) return a pointer that is suitably
+ // aligned for storing any type of object with a fundamental alignment
diff --git a/www/ungoogled-chromium/files/patch-mojo_core_embedder_features.h b/www/ungoogled-chromium/files/patch-mojo_core_embedder_features.h
new file mode 100644
index 000000000000..914a9f7c4f7c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-mojo_core_embedder_features.h
@@ -0,0 +1,11 @@
+--- mojo/core/embedder/features.h.orig 2022-10-01 07:40:07 UTC
++++ mojo/core/embedder/features.h
+@@ -14,7 +14,7 @@ namespace mojo {
+ namespace core {
+
+ #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_MAC)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ COMPONENT_EXPORT(MOJO_CORE_EMBEDDER_FEATURES)
+ extern const base::Feature kMojoLinuxChannelSharedMem;
+
diff --git a/www/ungoogled-chromium/files/patch-mojo_public_c_system_thunks.cc b/www/ungoogled-chromium/files/patch-mojo_public_c_system_thunks.cc
new file mode 100644
index 000000000000..2287a8ddb7cd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-mojo_public_c_system_thunks.cc
@@ -0,0 +1,38 @@
+--- mojo/public/c/system/thunks.cc.orig 2022-10-01 07:40:07 UTC
++++ mojo/public/c/system/thunks.cc
+@@ -24,7 +24,7 @@
+ #include "mojo/public/c/system/message_pipe.h"
+
+ #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ #include "base/environment.h"
+ #include "base/files/file_path.h"
+ #include "base/scoped_native_library.h"
+@@ -73,7 +73,7 @@ class CoreLibraryInitializer {
+
+ MojoResult LoadLibrary(base::FilePath library_path) {
+ #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ if (library_ && library_->is_valid())
+ return MOJO_RESULT_OK;
+
+@@ -87,7 +87,7 @@ class CoreLibraryInitializer {
+
+ if (library_path.empty()) {
+ // Default to looking for the library in the current working directory.
+-#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const base::FilePath::CharType kDefaultLibraryPathValue[] =
+ FILE_PATH_LITERAL("./libmojo_core.so");
+ #elif BUILDFLAG(IS_FUCHSIA)
+@@ -143,7 +143,7 @@ class CoreLibraryInitializer {
+
+ private:
+ #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ absl::optional<base::ScopedNativeLibrary> library_;
+ #endif
+ };
diff --git a/www/ungoogled-chromium/files/patch-mojo_public_tools_bindings_mojom.gni b/www/ungoogled-chromium/files/patch-mojo_public_tools_bindings_mojom.gni
new file mode 100644
index 000000000000..38128df65aa7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-mojo_public_tools_bindings_mojom.gni
@@ -0,0 +1,19 @@
+--- mojo/public/tools/bindings/mojom.gni.orig 2022-10-01 07:40:07 UTC
++++ mojo/public/tools/bindings/mojom.gni
+@@ -694,6 +694,16 @@ template("mojom") {
+ enabled_features += [ "is_win" ]
+ }
+
++ if (is_openbsd) {
++ enabled_features += [ "is_openbsd" ]
++ enabled_features += [ "is_bsd" ]
++ }
++
++ if (is_freebsd) {
++ enabled_features += [ "is_freebsd" ]
++ enabled_features += [ "is_bsd" ]
++ }
++
+ action(parser_target_name) {
+ script = mojom_parser_script
+ inputs = mojom_parser_sources + [ build_metadata_filename ]
diff --git a/www/ungoogled-chromium/files/patch-net_BUILD.gn b/www/ungoogled-chromium/files/patch-net_BUILD.gn
new file mode 100644
index 000000000000..4d59bd27c5a3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_BUILD.gn
@@ -0,0 +1,83 @@
+--- net/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ net/BUILD.gn
+@@ -104,7 +104,7 @@ net_configs = [
+ "//build/config/compiler:wexit_time_destructors",
+ ]
+
+-if (is_linux || is_chromeos) {
++if ((is_linux || is_chromeos) && !is_bsd) {
+ net_configs += [ "//build/config/linux:libresolv" ]
+ }
+
+@@ -1200,6 +1200,15 @@ component("net") {
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "base/address_tracker_linux.cc",
++ "base/address_tracker_linux.h",
++ "base/network_change_notifier_linux.cc",
++ "base/network_interfaces_linux.cc",
++ ]
++ }
++
+ if (is_mac) {
+ sources += [
+ "base/network_notification_thread_mac.cc",
+@@ -1332,7 +1341,7 @@ component("net") {
+ }
+ }
+
+- if (is_android || is_chromeos) {
++ if (is_android || is_chromeos || is_bsd) {
+ sources += [
+ "base/network_change_notifier_posix.cc",
+ "base/network_change_notifier_posix.h",
+@@ -1365,7 +1374,7 @@ component("net") {
+ }
+
+ # Use getifaddrs() on POSIX platforms, except Linux.
+- if (is_posix && !is_linux && !is_chromeos) {
++ if ((is_posix && !is_linux && !is_chromeos) || is_bsd) {
+ sources += [
+ "base/network_interfaces_getifaddrs.cc",
+ "base/network_interfaces_getifaddrs.h",
+@@ -4370,7 +4379,7 @@ test("net_unittests") {
+ ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [
+ "base/address_tracker_linux_unittest.cc",
+ "base/network_interfaces_linux_unittest.cc",
+@@ -4445,6 +4454,10 @@ test("net_unittests") {
+ "//url:buildflags",
+ ]
+
++ if (is_bsd) {
++ deps += [ "//sandbox/policy" ]
++ }
++
+ if (enable_websockets) {
+ deps += [ "//net/server:tests" ]
+ }
+@@ -4512,7 +4525,7 @@ test("net_unittests") {
+ ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [ "tools/quic/quic_simple_server_test.cc" ]
+ }
+
+@@ -4653,7 +4666,7 @@ test("net_unittests") {
+ }
+
+ # Use getifaddrs() on POSIX platforms, except Linux.
+- if (is_posix && !is_linux && !is_chromeos) {
++ if (is_posix && !is_linux && !is_chromeos && !is_bsd) {
+ sources += [ "base/network_interfaces_getifaddrs_unittest.cc" ]
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-net_base_network__change__notifier.cc b/www/ungoogled-chromium/files/patch-net_base_network__change__notifier.cc
new file mode 100644
index 000000000000..4424611e2e48
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_base_network__change__notifier.cc
@@ -0,0 +1,21 @@
+--- net/base/network_change_notifier.cc.orig 2022-10-01 07:40:07 UTC
++++ net/base/network_change_notifier.cc
+@@ -37,7 +37,7 @@
+ #include "net/base/network_change_notifier_linux.h"
+ #elif BUILDFLAG(IS_APPLE)
+ #include "net/base/network_change_notifier_mac.h"
+-#elif BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#elif BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ #include "net/base/network_change_notifier_posix.h"
+ #elif BUILDFLAG(IS_FUCHSIA)
+ #include "net/base/network_change_notifier_fuchsia.h"
+@@ -326,6 +326,9 @@ std::unique_ptr<NetworkChangeNotifier> NetworkChangeNo
+ #elif BUILDFLAG(IS_FUCHSIA)
+ return std::make_unique<NetworkChangeNotifierFuchsia>(
+ /*require_wlan=*/false);
++#elif BUILDFLAG(IS_BSD)
++ return std::make_unique<MockNetworkChangeNotifier>(
++ /*dns_config_notifier*/nullptr);
+ #else
+ NOTIMPLEMENTED();
+ return nullptr;
diff --git a/www/ungoogled-chromium/files/patch-net_base_network__change__notifier__posix.cc b/www/ungoogled-chromium/files/patch-net_base_network__change__notifier__posix.cc
new file mode 100644
index 000000000000..6ed45e6e4b07
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_base_network__change__notifier__posix.cc
@@ -0,0 +1,11 @@
+--- net/base/network_change_notifier_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ net/base/network_change_notifier_posix.cc
+@@ -92,7 +92,7 @@ void NetworkChangeNotifierPosix::GetCurrentMaxBandwidt
+ NetworkChangeNotifier::NetworkChangeCalculatorParams
+ NetworkChangeNotifierPosix::NetworkChangeCalculatorParamsPosix() {
+ NetworkChangeCalculatorParams params;
+-#if BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Delay values arrived at by simple experimentation and adjusted so as to
+ // produce a single signal when switching between network connections.
+ params.ip_address_offline_delay_ = base::Milliseconds(4000);
diff --git a/www/ungoogled-chromium/files/patch-net_base_network__interfaces__posix.h b/www/ungoogled-chromium/files/patch-net_base_network__interfaces__posix.h
new file mode 100644
index 000000000000..221f4cdb2dcb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_base_network__interfaces__posix.h
@@ -0,0 +1,11 @@
+--- net/base/network_interfaces_posix.h.orig 2022-10-01 07:40:07 UTC
++++ net/base/network_interfaces_posix.h
+@@ -8,6 +8,8 @@
+ // This file provides some basic functionality shared between
+ // network_interfaces_linux.cc and network_interfaces_getifaddrs.cc.
+
++#include <sys/socket.h>
++
+ #include <string>
+
+ struct sockaddr;
diff --git a/www/ungoogled-chromium/files/patch-net_base_sockaddr__util__posix.cc b/www/ungoogled-chromium/files/patch-net_base_sockaddr__util__posix.cc
new file mode 100644
index 000000000000..653a82d33d4c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_base_sockaddr__util__posix.cc
@@ -0,0 +1,12 @@
+--- net/base/sockaddr_util_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ net/base/sockaddr_util_posix.cc
+@@ -41,7 +41,8 @@ bool FillUnixAddress(const std::string& socket_path,
+ return true;
+ }
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
++ // XXX ?
+ // Convert the path given into abstract socket name. It must start with
+ // the '\0' character, so we are adding it. |addr_len| must specify the
+ // length of the structure exactly, as potentially the socket name may
diff --git a/www/ungoogled-chromium/files/patch-net_base_sockaddr__util__posix__unittest.cc b/www/ungoogled-chromium/files/patch-net_base_sockaddr__util__posix__unittest.cc
new file mode 100644
index 000000000000..abcd79468ba3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_base_sockaddr__util__posix__unittest.cc
@@ -0,0 +1,12 @@
+--- net/base/sockaddr_util_posix_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ net/base/sockaddr_util_posix_unittest.cc
+@@ -83,7 +83,8 @@ TEST(FillUnixAddressTest, AbstractLinuxAddress) {
+ size_t path_max = MaxPathLength(&storage);
+ std::string path(path_max, '0');
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
++ // XXX?
+ EXPECT_TRUE(FillUnixAddress(path, /*use_abstract_namespace=*/true, &storage));
+
+ EXPECT_EQ(path.size() + 1U + offsetof(struct sockaddr_un, sun_path),
diff --git a/www/ungoogled-chromium/files/patch-net_cert_cert__verifier.cc b/www/ungoogled-chromium/files/patch-net_cert_cert__verifier.cc
new file mode 100644
index 000000000000..134b44902034
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_cert_cert__verifier.cc
@@ -0,0 +1,11 @@
+--- net/cert/cert_verifier.cc.orig 2022-10-01 07:40:07 UTC
++++ net/cert/cert_verifier.cc
+@@ -78,7 +78,7 @@ bool CertVerifier::RequestParams::operator<(
+ std::unique_ptr<CertVerifier> CertVerifier::CreateDefaultWithoutCaching(
+ scoped_refptr<CertNetFetcher> cert_net_fetcher) {
+ scoped_refptr<CertVerifyProc> verify_proc;
+-#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ verify_proc =
+ CertVerifyProc::CreateBuiltinVerifyProc(std::move(cert_net_fetcher));
+ #elif BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
diff --git a/www/ungoogled-chromium/files/patch-net_cert_cert__verify__proc.cc b/www/ungoogled-chromium/files/patch-net_cert_cert__verify__proc.cc
new file mode 100644
index 000000000000..297f74106bdf
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_cert_cert__verify__proc.cc
@@ -0,0 +1,11 @@
+--- net/cert/cert_verify_proc.cc.orig 2022-10-01 07:40:07 UTC
++++ net/cert/cert_verify_proc.cc
+@@ -510,7 +510,7 @@ base::Value CertVerifyParams(X509Certificate* cert,
+
+ } // namespace
+
+-#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
++#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD))
+ // static
+ scoped_refptr<CertVerifyProc> CertVerifyProc::CreateSystemVerifyProc(
+ scoped_refptr<CertNetFetcher> cert_net_fetcher) {
diff --git a/www/ungoogled-chromium/files/patch-net_cert_cert__verify__proc.h b/www/ungoogled-chromium/files/patch-net_cert_cert__verify__proc.h
new file mode 100644
index 000000000000..7fabe13ad015
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_cert_cert__verify__proc.h
@@ -0,0 +1,11 @@
+--- net/cert/cert_verify_proc.h.orig 2022-10-01 07:40:07 UTC
++++ net/cert/cert_verify_proc.h
+@@ -80,7 +80,7 @@ class NET_EXPORT CertVerifyProc
+ kMaxValue = kOther
+ };
+
+-#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
++#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD))
+ // Creates and returns a CertVerifyProc that uses the system verifier.
+ // |cert_net_fetcher| may not be used, depending on the implementation.
+ static scoped_refptr<CertVerifyProc> CreateSystemVerifyProc(
diff --git a/www/ungoogled-chromium/files/patch-net_cert_cert__verify__proc__unittest.cc b/www/ungoogled-chromium/files/patch-net_cert_cert__verify__proc__unittest.cc
new file mode 100644
index 000000000000..d461a5e0cd58
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_cert_cert__verify__proc__unittest.cc
@@ -0,0 +1,11 @@
+--- net/cert/cert_verify_proc_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ net/cert/cert_verify_proc_unittest.cc
+@@ -239,7 +239,7 @@ const std::vector<CertVerifyProcType> kAllCertVerifier
+ #if BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED)
+ CERT_VERIFY_PROC_BUILTIN_CHROME_ROOTS
+ #endif
+-#elif BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ CERT_VERIFY_PROC_BUILTIN
+ #else
+ #error Unsupported platform
diff --git a/www/ungoogled-chromium/files/patch-net_cert_test__root__certs__unittest.cc b/www/ungoogled-chromium/files/patch-net_cert_test__root__certs__unittest.cc
new file mode 100644
index 000000000000..07df54067687
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_cert_test__root__certs__unittest.cc
@@ -0,0 +1,11 @@
+--- net/cert/test_root_certs_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ net/cert/test_root_certs_unittest.cc
+@@ -33,7 +33,7 @@ const char kRootCertificateFile[] = "root_ca_cert.pem"
+ const char kGoodCertificateFile[] = "ok_cert.pem";
+
+ scoped_refptr<CertVerifyProc> CreateCertVerifyProc() {
+-#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return CertVerifyProc::CreateBuiltinVerifyProc(/*cert_net_fetcher=*/nullptr);
+ #elif BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
+ if (base::FeatureList::IsEnabled(features::kCertVerifierBuiltinFeature)) {
diff --git a/www/ungoogled-chromium/files/patch-net_disk__cache_blockfile_disk__format.h b/www/ungoogled-chromium/files/patch-net_disk__cache_blockfile_disk__format.h
new file mode 100644
index 000000000000..99fe4a962729
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_disk__cache_blockfile_disk__format.h
@@ -0,0 +1,12 @@
+--- net/disk_cache/blockfile/disk_format.h.orig 2022-10-01 07:40:07 UTC
++++ net/disk_cache/blockfile/disk_format.h
+@@ -153,7 +153,9 @@ struct RankingsNode {
+ };
+ #pragma pack(pop)
+
++#if !defined(OS_BSD)
+ static_assert(sizeof(RankingsNode) == 36, "bad RankingsNode");
++#endif
+
+ } // namespace disk_cache
+
diff --git a/www/ungoogled-chromium/files/patch-net_disk__cache_simple_simple__file__tracker.cc b/www/ungoogled-chromium/files/patch-net_disk__cache_simple_simple__file__tracker.cc
new file mode 100644
index 000000000000..eed8d4e3619a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_disk__cache_simple_simple__file__tracker.cc
@@ -0,0 +1,20 @@
+--- net/disk_cache/simple/simple_file_tracker.cc.orig 2022-10-01 07:40:07 UTC
++++ net/disk_cache/simple/simple_file_tracker.cc
+@@ -29,7 +29,17 @@ void RecordFileDescripterLimiterOp(FileDescriptorLimit
+ } // namespace
+
+ SimpleFileTracker::SimpleFileTracker(int file_limit)
++#if defined(OS_OPENBSD)
++{
++ // cap the file descriptor limit at 85% of the size of the
++ // file descriptor table and also substract the amount of
++ // currently used file descriptors as this should give us
++ // enough reserve to avoid hitting the limit
++ file_limit_ = (getdtablesize() * 0.85) - getdtablecount();
++}
++#else
+ : file_limit_(file_limit) {}
++#endif
+
+ SimpleFileTracker::~SimpleFileTracker() {
+ DCHECK(lru_.empty());
diff --git a/www/ungoogled-chromium/files/patch-net_dns_BUILD.gn b/www/ungoogled-chromium/files/patch-net_dns_BUILD.gn
new file mode 100644
index 000000000000..d7d076e2632e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_dns_BUILD.gn
@@ -0,0 +1,31 @@
+--- net/dns/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ net/dns/BUILD.gn
+@@ -113,7 +113,7 @@ source_set("dns") {
+ "dns_config_service_android.cc",
+ "dns_config_service_android.h",
+ ]
+- } else if (is_linux) {
++ } else if (is_linux && !is_bsd) {
+ sources += [
+ "dns_config_service_linux.cc",
+ "dns_config_service_linux.h",
+@@ -154,6 +154,7 @@ source_set("dns") {
+ ":host_resolver_manager",
+ ":mdns_client",
+ "//net:net_public_deps",
++ "//printing/buildflags",
+ ]
+
+ allow_circular_includes_from = [
+@@ -416,9 +417,9 @@ source_set("tests") {
+
+ if (is_android) {
+ sources += [ "dns_config_service_android_unittest.cc" ]
+- } else if (is_linux) {
++ } else if (is_linux && !is_bsd) {
+ sources += [ "dns_config_service_linux_unittest.cc" ]
+- } else if (is_posix) {
++ } else if (is_posix && !is_bsd) {
+ sources += [ "dns_config_service_posix_unittest.cc" ]
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-net_dns_address__sorter__posix.cc b/www/ungoogled-chromium/files/patch-net_dns_address__sorter__posix.cc
new file mode 100644
index 000000000000..9b3d626f289c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_dns_address__sorter__posix.cc
@@ -0,0 +1,10 @@
+--- net/dns/address_sorter_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ net/dns/address_sorter_posix.cc
+@@ -18,6 +18,7 @@
+ #include <ifaddrs.h>
+ #include <net/if.h>
+ #include <netinet/in_var.h>
++#include <netinet6/in6_var.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-net_dns_dns__config__service__posix.cc b/www/ungoogled-chromium/files/patch-net_dns_dns__config__service__posix.cc
new file mode 100644
index 000000000000..61a45117ff31
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_dns_dns__config__service__posix.cc
@@ -0,0 +1,26 @@
+--- net/dns/dns_config_service_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ net/dns/dns_config_service_posix.cc
+@@ -34,6 +34,11 @@
+ #include "net/dns/dns_config_watcher_mac.h"
+ #endif
+
++#if BUILDFLAG(IS_BSD)
++#include "base/command_line.h"
++#include "sandbox/policy/switches.h"
++#endif
++
+ namespace net {
+
+ namespace internal {
+@@ -130,6 +135,11 @@ class DnsConfigServicePosix::Watcher : public DnsConfi
+
+ bool Watch() override {
+ CheckOnCorrectSequence();
++
++// pledge + unveil
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ if (!command_line->HasSwitch(sandbox::policy::switches::kNoSandbox))
++ return false;
+
+ bool success = true;
+ if (!config_watcher_.Watch(base::BindRepeating(&Watcher::OnConfigChanged,
diff --git a/www/ungoogled-chromium/files/patch-net_dns_dns__reloader.cc b/www/ungoogled-chromium/files/patch-net_dns_dns__reloader.cc
new file mode 100644
index 000000000000..2334b6920d52
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_dns_dns__reloader.cc
@@ -0,0 +1,18 @@
+--- net/dns/dns_reloader.cc.orig 2022-10-01 07:40:07 UTC
++++ net/dns/dns_reloader.cc
+@@ -6,7 +6,7 @@
+
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) && \
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) && \
+ !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA)
+
+ #include <resolv.h>
+@@ -113,5 +113,5 @@ void DnsReloaderMaybeReload() {
+
+ } // namespace net
+
+-#endif // BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD)
++#endif // BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) &&
+ // && !BUILDFLAG(IS_ANDROID)
diff --git a/www/ungoogled-chromium/files/patch-net_dns_dns__reloader.h b/www/ungoogled-chromium/files/patch-net_dns_dns__reloader.h
new file mode 100644
index 000000000000..3fc028a40732
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_dns_dns__reloader.h
@@ -0,0 +1,11 @@
+--- net/dns/dns_reloader.h.orig 2022-10-01 07:40:07 UTC
++++ net/dns/dns_reloader.h
+@@ -7,7 +7,7 @@
+
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD)
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD)
+ namespace net {
+
+ // Call on the network thread before calling DnsReloaderMaybeReload() anywhere.
diff --git a/www/ungoogled-chromium/files/patch-net_dns_dns__util.cc b/www/ungoogled-chromium/files/patch-net_dns_dns__util.cc
new file mode 100644
index 000000000000..c92d3512138d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_dns_dns__util.cc
@@ -0,0 +1,11 @@
+--- net/dns/dns_util.cc.orig 2022-10-01 07:40:07 UTC
++++ net/dns/dns_util.cc
+@@ -28,6 +28,8 @@
+ #include "net/third_party/uri_template/uri_template.h"
+ #include "third_party/abseil-cpp/absl/types/optional.h"
+
++#include <sys/socket.h>
++
+ #if BUILDFLAG(IS_POSIX)
+ #include <netinet/in.h>
+ #include <net/if.h>
diff --git a/www/ungoogled-chromium/files/patch-net_dns_host__resolver__manager.cc b/www/ungoogled-chromium/files/patch-net_dns_host__resolver__manager.cc
new file mode 100644
index 000000000000..629a4d57d353
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_dns_host__resolver__manager.cc
@@ -0,0 +1,11 @@
+--- net/dns/host_resolver_manager.cc.orig 2022-10-01 07:40:07 UTC
++++ net/dns/host_resolver_manager.cc
+@@ -3121,7 +3121,7 @@ HostResolverManager::HostResolverManager(
+ }
+ if (system_dns_config_notifier_)
+ system_dns_config_notifier_->AddObserver(this);
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) && \
++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) && \
+ !BUILDFLAG(IS_ANDROID)
+ EnsureDnsReloaderInit();
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-net_dns_host__resolver__proc.cc b/www/ungoogled-chromium/files/patch-net_dns_host__resolver__proc.cc
new file mode 100644
index 000000000000..90bce0f51678
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_dns_host__resolver__proc.cc
@@ -0,0 +1,22 @@
+--- net/dns/host_resolver_proc.cc.orig 2022-10-01 07:40:07 UTC
++++ net/dns/host_resolver_proc.cc
+@@ -19,10 +19,6 @@
+ #include "net/dns/dns_util.h"
+ #include "net/dns/host_resolver.h"
+
+-#if BUILDFLAG(IS_OPENBSD)
+-#define AI_ADDRCONFIG 0
+-#endif
+-
+ namespace net {
+
+ HostResolverProc* HostResolverProc::default_proc_ = nullptr;
+@@ -193,7 +189,7 @@ int SystemHostResolverCall(const std::string& host,
+ base::BlockingType::WILL_BLOCK);
+
+ #if BUILDFLAG(IS_POSIX) && \
+- !(BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_ANDROID))
++ !(BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) || BUILDFLAG(IS_ANDROID))
+ DnsReloaderMaybeReload();
+ #endif
+ auto [ai, err, os_error] = AddressInfo::Get(host, hints, nullptr, network);
diff --git a/www/ungoogled-chromium/files/patch-net_dns_public_BUILD.gn b/www/ungoogled-chromium/files/patch-net_dns_public_BUILD.gn
new file mode 100644
index 000000000000..070062524d8d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_dns_public_BUILD.gn
@@ -0,0 +1,11 @@
+--- net/dns/public/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ net/dns/public/BUILD.gn
+@@ -74,7 +74,7 @@ source_set("tests") {
+ "doh_provider_entry_unittest.cc",
+ ]
+
+- if (is_posix && !is_android) {
++ if (is_posix && !is_android && !is_bsd) {
+ sources += [ "resolv_reader_unittest.cc" ]
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-net_dns_public_resolv__reader.h b/www/ungoogled-chromium/files/patch-net_dns_public_resolv__reader.h
new file mode 100644
index 000000000000..d0d3fa635c54
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_dns_public_resolv__reader.h
@@ -0,0 +1,10 @@
+--- net/dns/public/resolv_reader.h.orig 2022-10-01 07:40:07 UTC
++++ net/dns/public/resolv_reader.h
+@@ -5,6 +5,7 @@
+ #ifndef NET_DNS_PUBLIC_RESOLV_READER_H_
+ #define NET_DNS_PUBLIC_RESOLV_READER_H_
+
++#include <netinet/in.h>
+ #include <resolv.h>
+
+ #include <memory>
diff --git a/www/ungoogled-chromium/files/patch-net_dns_public_scoped__res__state.h b/www/ungoogled-chromium/files/patch-net_dns_public_scoped__res__state.h
new file mode 100644
index 000000000000..ec7cb74a5095
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_dns_public_scoped__res__state.h
@@ -0,0 +1,10 @@
+--- net/dns/public/scoped_res_state.h.orig 2022-10-01 07:40:07 UTC
++++ net/dns/public/scoped_res_state.h
+@@ -5,6 +5,7 @@
+ #ifndef NET_DNS_PUBLIC_SCOPED_RES_STATE_H_
+ #define NET_DNS_PUBLIC_SCOPED_RES_STATE_H_
+
++#include <netinet/in.h>
+ #include <resolv.h>
+
+ #include "build/build_config.h"
diff --git a/www/ungoogled-chromium/files/patch-net_http_http__auth__gssapi__posix.cc b/www/ungoogled-chromium/files/patch-net_http_http__auth__gssapi__posix.cc
new file mode 100644
index 000000000000..b459a051430f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_http_http__auth__gssapi__posix.cc
@@ -0,0 +1,14 @@
+--- net/http/http_auth_gssapi_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ net/http/http_auth_gssapi_posix.cc
+@@ -368,8 +368,9 @@ base::NativeLibrary GSSAPISharedLibrary::LoadSharedLib
+ static const char* const kDefaultLibraryNames[] = {
+ #if BUILDFLAG(IS_APPLE)
+ "/System/Library/Frameworks/GSS.framework/GSS"
+-#elif BUILDFLAG(IS_OPENBSD)
+- "libgssapi.so" // Heimdal - OpenBSD
++#elif BUILDFLAG(IS_BSD)
++ "libgssapi_krb5.so.2", // MIT Kerberos - FreeBSD
++ "libgssapi.so" // Heimdal - OpenBSD, FreeBSD
+ #else
+ "libgssapi_krb5.so.2", // MIT Kerberos - FC, Suse10, Debian
+ "libgssapi.so.4", // Heimdal - Suse10, MDK
diff --git a/www/ungoogled-chromium/files/patch-net_http_http__auth__gssapi__posix.h b/www/ungoogled-chromium/files/patch-net_http_http__auth__gssapi__posix.h
new file mode 100644
index 000000000000..d4518d883aef
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_http_http__auth__gssapi__posix.h
@@ -0,0 +1,12 @@
+--- net/http/http_auth_gssapi_posix.h.orig 2022-10-01 07:40:07 UTC
++++ net/http/http_auth_gssapi_posix.h
+@@ -21,6 +21,9 @@
+ #if BUILDFLAG(IS_APPLE)
+ #include <GSS/gssapi.h>
+ #elif BUILDFLAG(IS_FREEBSD)
++#ifndef GSS_C_DELEG_POLICY_FLAG
++#define GSS_C_DELEG_POLICY_FLAG 32768
++#endif
+ #include <gssapi/gssapi.h>
+ #else
+ #include <gssapi.h>
diff --git a/www/ungoogled-chromium/files/patch-net_http_http__network__session.cc b/www/ungoogled-chromium/files/patch-net_http_http__network__session.cc
new file mode 100644
index 000000000000..ec5c2ad8e51c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_http_http__network__session.cc
@@ -0,0 +1,12 @@
+--- net/http/http_network_session.cc.orig 2022-10-01 07:40:07 UTC
++++ net/http/http_network_session.cc
+@@ -20,7 +20,9 @@
+ #include "build/build_config.h"
+ #include "net/base/features.h"
+ #include "net/dns/host_resolver.h"
++#if defined(USE_KERBEROS)
+ #include "net/http/http_auth_handler_factory.h"
++#endif
+ #include "net/http/http_response_body_drainer.h"
+ #include "net/http/http_stream_factory.h"
+ #include "net/http/url_security_manager.h"
diff --git a/www/ungoogled-chromium/files/patch-net_proxy__resolution_proxy__config__service.cc b/www/ungoogled-chromium/files/patch-net_proxy__resolution_proxy__config__service.cc
new file mode 100644
index 000000000000..35e72db926fb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_proxy__resolution_proxy__config__service.cc
@@ -0,0 +1,35 @@
+--- net/proxy_resolution/proxy_config_service.cc.orig 2022-10-01 07:40:07 UTC
++++ net/proxy_resolution/proxy_config_service.cc
+@@ -18,20 +18,20 @@
+ #include "net/proxy_resolution/proxy_config_service_ios.h"
+ #elif BUILDFLAG(IS_MAC)
+ #include "net/proxy_resolution/proxy_config_service_mac.h"
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "net/proxy_resolution/proxy_config_service_linux.h"
+ #elif BUILDFLAG(IS_ANDROID)
+ #include "net/proxy_resolution/proxy_config_service_android.h"
+ #endif
+
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "net/traffic_annotation/network_traffic_annotation.h"
+ #endif
+
+ namespace net {
+
+ namespace {
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ constexpr net::NetworkTrafficAnnotationTag kSystemProxyConfigTrafficAnnotation =
+ net::DefineNetworkTrafficAnnotation("proxy_config_system", R"(
+ semantics {
+@@ -108,7 +108,7 @@ ProxyConfigService::CreateSystemProxyConfigService(
+ << "profile_io_data.cc::CreateProxyConfigService and this should "
+ << "be used only for examples.";
+ return std::make_unique<UnsetProxyConfigService>();
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ std::unique_ptr<ProxyConfigServiceLinux> linux_config_service(
+ std::make_unique<ProxyConfigServiceLinux>());
+
diff --git a/www/ungoogled-chromium/files/patch-net_proxy__resolution_proxy__config__service__linux.cc b/www/ungoogled-chromium/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
new file mode 100644
index 000000000000..3b8f24e8bb2b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
@@ -0,0 +1,40 @@
+--- net/proxy_resolution/proxy_config_service_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ net/proxy_resolution/proxy_config_service_linux.cc
+@@ -6,7 +6,9 @@
+
+ #include <errno.h>
+ #include <limits.h>
++#if !defined(OS_BSD)
+ #include <sys/inotify.h>
++#endif
+ #include <unistd.h>
+
+ #include <map>
+@@ -502,6 +504,7 @@ bool SettingGetterImplGSettings::CheckVersion(
+ }
+ #endif // defined(USE_GIO)
+
++#if !defined(OS_BSD)
+ // Converts |value| from a decimal string to an int. If there was a failure
+ // parsing, returns |default_value|.
+ int StringToIntOrDefault(base::StringPiece value, int default_value) {
+@@ -1030,6 +1033,7 @@ class SettingGetterImplKDE : public ProxyConfigService
+ // events on.
+ scoped_refptr<base::SequencedTaskRunner> file_task_runner_;
+ };
++#endif
+
+ } // namespace
+
+@@ -1246,9 +1250,11 @@ ProxyConfigServiceLinux::Delegate::Delegate(
+ case base::nix::DESKTOP_ENVIRONMENT_KDE3:
+ case base::nix::DESKTOP_ENVIRONMENT_KDE4:
+ case base::nix::DESKTOP_ENVIRONMENT_KDE5:
++#if !defined(OS_BSD)
+ setting_getter_ =
+ std::make_unique<SettingGetterImplKDE>(env_var_getter_.get());
+ break;
++#endif
+ case base::nix::DESKTOP_ENVIRONMENT_XFCE:
+ case base::nix::DESKTOP_ENVIRONMENT_OTHER:
+ break;
diff --git a/www/ungoogled-chromium/files/patch-net_socket_socket__posix.cc b/www/ungoogled-chromium/files/patch-net_socket_socket__posix.cc
new file mode 100644
index 000000000000..65c20f177574
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_socket_socket__posix.cc
@@ -0,0 +1,11 @@
+--- net/socket/socket_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ net/socket/socket_posix.cc
+@@ -516,7 +516,7 @@ void SocketPosix::ReadCompleted() {
+ }
+
+ int SocketPosix::DoWrite(IOBuffer* buf, int buf_len) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ // Disable SIGPIPE for this write. Although Chromium globally disables
+ // SIGPIPE, the net stack may be used in other consumers which do not do
+ // this. MSG_NOSIGNAL is a Linux-only API. On OS X, this is a setsockopt on
diff --git a/www/ungoogled-chromium/files/patch-net_socket_socks5__client__socket.cc b/www/ungoogled-chromium/files/patch-net_socket_socks5__client__socket.cc
new file mode 100644
index 000000000000..587025991c66
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_socket_socks5__client__socket.cc
@@ -0,0 +1,12 @@
+--- net/socket/socks5_client_socket.cc.orig 2022-10-01 07:40:07 UTC
++++ net/socket/socks5_client_socket.cc
+@@ -19,6 +19,9 @@
+ #include "net/log/net_log_event_type.h"
+ #include "net/traffic_annotation/network_traffic_annotation.h"
+
++#include <sys/types.h>
++#include <netinet/in.h>
++
+ namespace net {
+
+ const unsigned int SOCKS5ClientSocket::kGreetReadHeaderSize = 2;
diff --git a/www/ungoogled-chromium/files/patch-net_socket_tcp__socket__posix.cc b/www/ungoogled-chromium/files/patch-net_socket_tcp__socket__posix.cc
new file mode 100644
index 000000000000..cf2bc7df9488
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_socket_tcp__socket__posix.cc
@@ -0,0 +1,20 @@
+--- net/socket/tcp_socket_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ net/socket/tcp_socket_posix.cc
+@@ -100,6 +100,17 @@ bool SetTCPKeepAlive(int fd, bool enable, int delay) {
+ PLOG(ERROR) << "Failed to set TCP_KEEPALIVE on fd: " << fd;
+ return false;
+ }
++#elif BUILDFLAG(IS_FREEBSD)
++ // Set seconds until first TCP keep alive.
++ if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &delay, sizeof(delay))) {
++ PLOG(ERROR) << "Failed to set TCP_KEEPIDLE on fd: " << fd;
++ return false;
++ }
++ // Set seconds between TCP keep alives.
++ if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &delay, sizeof(delay))) {
++ PLOG(ERROR) << "Failed to set TCP_KEEPINTVL on fd: " << fd;
++ return false;
++ }
+ #endif
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-net_socket_udp__socket__posix.cc b/www/ungoogled-chromium/files/patch-net_socket_udp__socket__posix.cc
new file mode 100644
index 000000000000..e70aa7e87625
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_socket_udp__socket__posix.cc
@@ -0,0 +1,29 @@
+--- net/socket/udp_socket_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ net/socket/udp_socket_posix.cc
+@@ -559,7 +559,7 @@ int UDPSocketPosix::SetDoNotFragment() {
+ }
+
+ void UDPSocketPosix::SetMsgConfirm(bool confirm) {
+-#if !BUILDFLAG(IS_APPLE)
++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD)
+ if (confirm) {
+ sendto_flags_ |= MSG_CONFIRM;
+ } else {
+@@ -580,7 +580,7 @@ int UDPSocketPosix::SetBroadcast(bool broadcast) {
+ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+ int value = broadcast ? 1 : 0;
+ int rv;
+-#if BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ // SO_REUSEPORT on OSX permits multiple processes to each receive
+ // UDP multicast or broadcast datagrams destined for the bound
+ // port.
+@@ -893,7 +893,7 @@ int UDPSocketPosix::DoBind(const IPEndPoint& address)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ if (last_error == EINVAL)
+ return ERR_ADDRESS_IN_USE;
+-#elif BUILDFLAG(IS_APPLE)
++#elif BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ if (last_error == EADDRNOTAVAIL)
+ return ERR_ADDRESS_IN_USE;
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-net_socket_udp__socket__unittest.cc b/www/ungoogled-chromium/files/patch-net_socket_udp__socket__unittest.cc
new file mode 100644
index 000000000000..bc48d5b169bc
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_socket_udp__socket__unittest.cc
@@ -0,0 +1,47 @@
+--- net/socket/udp_socket_unittest.cc.orig 2022-10-01 07:40:07 UTC
++++ net/socket/udp_socket_unittest.cc
+@@ -328,7 +328,7 @@ TEST_F(UDPSocketTest, PartialRecv) {
+ EXPECT_EQ(second_packet, received);
+ }
+
+-#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ // - MacOS: requires root permissions on OSX 10.7+.
+ // - Android: devices attached to testbots don't have default network, so
+ // broadcasting to 255.255.255.255 returns error -109 (Address not reachable).
+@@ -588,7 +588,7 @@ TEST_F(UDPSocketTest, ClientSetDoNotFragment) {
+ EXPECT_THAT(rv, IsOk());
+
+ rv = client.SetDoNotFragment();
+-#if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // TODO(crbug.com/945590): IP_MTU_DISCOVER is not implemented on Fuchsia.
+ EXPECT_THAT(rv, IsError(ERR_NOT_IMPLEMENTED));
+ #elif BUILDFLAG(IS_MAC)
+@@ -616,7 +616,7 @@ TEST_F(UDPSocketTest, ServerSetDoNotFragment) {
+ EXPECT_THAT(rv, IsOk());
+
+ rv = server.SetDoNotFragment();
+-#if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // TODO(crbug.com/945590): IP_MTU_DISCOVER is not implemented on Fuchsia.
+ EXPECT_THAT(rv, IsError(ERR_NOT_IMPLEMENTED));
+ #elif BUILDFLAG(IS_MAC)
+@@ -681,7 +681,7 @@ TEST_F(UDPSocketTest, JoinMulticastGroup) {
+
+ // TODO(https://crbug.com/947115): failing on device on iOS 12.2.
+ // TODO(https://crbug.com/1227554): flaky on Mac 11.
+-#if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ #define MAYBE_SharedMulticastAddress DISABLED_SharedMulticastAddress
+ #else
+ #define MAYBE_SharedMulticastAddress SharedMulticastAddress
+@@ -735,7 +735,7 @@ TEST_F(UDPSocketTest, MAYBE_SharedMulticastAddress) {
+ NetLogSource());
+ ASSERT_THAT(client_socket.Connect(send_address), IsOk());
+
+-#if !BUILDFLAG(IS_CHROMEOS_ASH)
++#if !BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_BSD)
+ // Send a message via the multicast group. That message is expected be be
+ // received by both receving sockets.
+ //
diff --git a/www/ungoogled-chromium/files/patch-net_third__party_quiche_BUILD.gn b/www/ungoogled-chromium/files/patch-net_third__party_quiche_BUILD.gn
new file mode 100644
index 000000000000..1c9880c17931
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_third__party_quiche_BUILD.gn
@@ -0,0 +1,11 @@
+--- net/third_party/quiche/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ net/third_party/quiche/BUILD.gn
+@@ -28,7 +28,7 @@ import("//build/config/chromeos/ui_mode.gni")
+ import("//testing/libfuzzer/fuzzer_test.gni")
+ import("//third_party/protobuf/proto_library.gni")
+
+-build_epoll_based_tools = is_linux || is_chromeos
++build_epoll_based_tools = (is_linux && !is_bsd) || is_chromeos
+
+ config("quiche_internal_config") {
+ cflags = []
diff --git a/www/ungoogled-chromium/files/patch-net_tools_cert__verify__tool_cert__verify__comparision__tool.cc b/www/ungoogled-chromium/files/patch-net_tools_cert__verify__tool_cert__verify__comparision__tool.cc
new file mode 100644
index 000000000000..b723e3281491
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_tools_cert__verify__tool_cert__verify__comparision__tool.cc
@@ -0,0 +1,29 @@
+--- net/tools/cert_verify_tool/cert_verify_comparision_tool.cc.orig 2022-10-01 07:40:07 UTC
++++ net/tools/cert_verify_tool/cert_verify_comparision_tool.cc
+@@ -35,7 +35,7 @@
+ #include "net/url_request/url_request_context_builder.h"
+ #include "net/url_request/url_request_context_getter.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "net/proxy_resolution/proxy_config.h"
+ #include "net/proxy_resolution/proxy_config_service_fixed.h"
+ #endif
+@@ -55,7 +55,7 @@ void SetUpOnNetworkThread(
+ base::WaitableEvent* initialization_complete_event) {
+ net::URLRequestContextBuilder url_request_context_builder;
+ url_request_context_builder.set_user_agent(GetUserAgent());
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ //
+@@ -127,7 +127,7 @@ class CertVerifyImpl {
+ std::unique_ptr<CertVerifyImpl> CreateCertVerifyImplFromName(
+ base::StringPiece impl_name,
+ scoped_refptr<net::CertNetFetcher> cert_net_fetcher) {
+-#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
++#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD))
+ if (impl_name == "platform") {
+ return std::make_unique<CertVerifyImpl>(
+ "CertVerifyProc (system)", net::CertVerifyProc::CreateSystemVerifyProc(
diff --git a/www/ungoogled-chromium/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc b/www/ungoogled-chromium/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
new file mode 100644
index 000000000000..bd72cca81866
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
@@ -0,0 +1,38 @@
+--- net/tools/cert_verify_tool/cert_verify_tool.cc.orig 2022-10-01 07:40:07 UTC
++++ net/tools/cert_verify_tool/cert_verify_tool.cc
+@@ -30,7 +30,7 @@
+ #include "net/url_request/url_request_context_builder.h"
+ #include "net/url_request/url_request_context_getter.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "net/proxy_resolution/proxy_config.h"
+ #include "net/proxy_resolution/proxy_config_service_fixed.h"
+ #endif
+@@ -60,7 +60,7 @@ void SetUpOnNetworkThread(
+ base::WaitableEvent* initialization_complete_event) {
+ net::URLRequestContextBuilder url_request_context_builder;
+ url_request_context_builder.set_user_agent(GetUserAgent());
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ //
+@@ -217,7 +217,7 @@ std::unique_ptr<CertVerifyImpl> CreateCertVerifyImplFr
+ base::StringPiece impl_name,
+ scoped_refptr<net::CertNetFetcher> cert_net_fetcher,
+ RootStoreType root_store_type) {
+-#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
++#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) || BUILDFLAG(IS_BSD)
+ if (impl_name == "platform") {
+ if (root_store_type != RootStoreType::kSystem) {
+ std::cerr << "WARNING: platform verifier not supported with "
+@@ -474,7 +474,7 @@ int main(int argc, char** argv) {
+ std::string impls_str = command_line.GetSwitchValueASCII("impls");
+ if (impls_str.empty()) {
+ // Default value.
+-#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
++#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) || BUILDFLAG(IS_BSD)
+ impls_str = "platform,";
+ #endif
+ impls_str += "builtin,pathbuilder";
diff --git a/www/ungoogled-chromium/files/patch-net_traffic__annotation_network__traffic__annotation.h b/www/ungoogled-chromium/files/patch-net_traffic__annotation_network__traffic__annotation.h
new file mode 100644
index 000000000000..dbd3a0044657
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_traffic__annotation_network__traffic__annotation.h
@@ -0,0 +1,20 @@
+--- net/traffic_annotation/network_traffic_annotation.h.orig 2022-10-01 07:40:07 UTC
++++ net/traffic_annotation/network_traffic_annotation.h
+@@ -373,7 +373,7 @@ struct MutablePartialNetworkTrafficAnnotationTag {
+ } // namespace net
+
+ // Placeholder for unannotated usages.
+-#if !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
++#if !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD)
+ #define TRAFFIC_ANNOTATION_WITHOUT_PROTO(ANNOTATION_ID) \
+ net::DefineNetworkTrafficAnnotation(ANNOTATION_ID, "No proto yet.")
+ #endif
+@@ -387,7 +387,7 @@ struct MutablePartialNetworkTrafficAnnotationTag {
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+ #if !BUILDFLAG(IS_WIN) && \
+- !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD))
+
+ #define NO_TRAFFIC_ANNOTATION_YET \
+ net::DefineNetworkTrafficAnnotation("undefined", "Nothing here yet.")
diff --git a/www/ungoogled-chromium/files/patch-net_url__request_url__request__context.cc b/www/ungoogled-chromium/files/patch-net_url__request_url__request__context.cc
new file mode 100644
index 000000000000..ba2e992225b6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_url__request_url__request__context.cc
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context.cc.orig 2022-10-01 07:40:07 UTC
++++ net/url_request/url_request_context.cc
+@@ -64,7 +64,7 @@ const HttpNetworkSessionContext* URLRequestContext::Ge
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+ #if !BUILDFLAG(IS_WIN) && \
+- !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD))
+ std::unique_ptr<URLRequest> URLRequestContext::CreateRequest(
+ const GURL& url,
+ RequestPriority priority,
diff --git a/www/ungoogled-chromium/files/patch-net_url__request_url__request__context.h b/www/ungoogled-chromium/files/patch-net_url__request_url__request__context.h
new file mode 100644
index 000000000000..061226158cf7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_url__request_url__request__context.h
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context.h.orig 2022-10-01 07:40:07 UTC
++++ net/url_request/url_request_context.h
+@@ -89,7 +89,7 @@ class NET_EXPORT URLRequestContext {
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+ #if !BUILDFLAG(IS_WIN) && \
+- !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD))
+ // This function should not be used in Chromium, please use the version with
+ // NetworkTrafficAnnotationTag in the future.
+ //
diff --git a/www/ungoogled-chromium/files/patch-net_url__request_url__request__context__builder.cc b/www/ungoogled-chromium/files/patch-net_url__request_url__request__context__builder.cc
new file mode 100644
index 000000000000..d4ba926d5403
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-net_url__request_url__request__context__builder.cc
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context_builder.cc.orig 2022-10-01 07:40:07 UTC
++++ net/url_request/url_request_context_builder.cc
+@@ -504,7 +504,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
+ }
+
+ if (!proxy_resolution_service_) {
+-#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_BSD)
+ // TODO(willchan): Switch to using this code when
+ // ProxyConfigService::CreateSystemProxyConfigService()'s
+ // signature doesn't suck.
diff --git a/www/ungoogled-chromium/files/patch-pdf_pdfium_pdfium__engine.cc b/www/ungoogled-chromium/files/patch-pdf_pdfium_pdfium__engine.cc
new file mode 100644
index 000000000000..ca0a259933d2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-pdf_pdfium_pdfium__engine.cc
@@ -0,0 +1,20 @@
+--- pdf/pdfium/pdfium_engine.cc.orig 2022-10-01 07:40:07 UTC
++++ pdf/pdfium/pdfium_engine.cc
+@@ -81,7 +81,7 @@
+ #include "gin/public/cppgc.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "pdf/pdfium/pdfium_font_linux.h"
+ #endif
+
+@@ -516,7 +516,7 @@ void InitializeSDK(bool enable_v8, FontMappingMode fon
+
+ FPDF_InitLibraryWithConfig(&config);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ g_font_mapping_mode = font_mapping_mode;
+ InitializeLinuxFontMapper();
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-printing_mojom_printing__context__mojom__traits.cc b/www/ungoogled-chromium/files/patch-printing_mojom_printing__context__mojom__traits.cc
new file mode 100644
index 000000000000..eacfd02e8777
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-printing_mojom_printing__context__mojom__traits.cc
@@ -0,0 +1,20 @@
+--- printing/mojom/printing_context_mojom_traits.cc.orig 2022-10-01 07:40:07 UTC
++++ printing/mojom/printing_context_mojom_traits.cc
+@@ -15,7 +15,7 @@
+ #include "ui/gfx/geometry/mojom/geometry_mojom_traits.h"
+ #include "ui/gfx/geometry/size.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "mojo/public/mojom/base/values.mojom.h"
+ #endif
+
+@@ -147,7 +147,7 @@ bool StructTraits<
+ }
+
+ out->set_pages_per_sheet(data.pages_per_sheet());
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ DCHECK(out->advanced_settings().empty());
+ if (!data.ReadAdvancedSettings(&out->advanced_settings()))
+ return false;
diff --git a/www/ungoogled-chromium/files/patch-printing_mojom_printing__context__mojom__traits.h b/www/ungoogled-chromium/files/patch-printing_mojom_printing__context__mojom__traits.h
new file mode 100644
index 000000000000..578bf9da5441
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-printing_mojom_printing__context__mojom__traits.h
@@ -0,0 +1,11 @@
+--- printing/mojom/printing_context_mojom_traits.h.orig 2022-10-01 07:40:07 UTC
++++ printing/mojom/printing_context_mojom_traits.h
+@@ -158,7 +158,7 @@ struct StructTraits<printing::mojom::PrintSettingsData
+ return s.pages_per_sheet();
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ static const printing::PrintSettings::AdvancedSettings& advanced_settings(
+ const printing::PrintSettings& s) {
+ return s.advanced_settings();
diff --git a/www/ungoogled-chromium/files/patch-printing_print__settings.cc b/www/ungoogled-chromium/files/patch-printing_print__settings.cc
new file mode 100644
index 000000000000..0860bec70e7e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-printing_print__settings.cc
@@ -0,0 +1,20 @@
+--- printing/print_settings.cc.orig 2022-10-01 07:40:07 UTC
++++ printing/print_settings.cc
+@@ -272,7 +272,7 @@ PrintSettings& PrintSettings::operator=(const PrintSet
+ #endif
+ is_modifiable_ = settings.is_modifiable_;
+ pages_per_sheet_ = settings.pages_per_sheet_;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ for (const auto& item : settings.advanced_settings_)
+ advanced_settings_.emplace(item.first, item.second.Clone());
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+@@ -312,7 +312,7 @@ void PrintSettings::Clear() {
+ #endif
+ is_modifiable_ = true;
+ pages_per_sheet_ = 1;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ advanced_settings_.clear();
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS)
diff --git a/www/ungoogled-chromium/files/patch-printing_print__settings.h b/www/ungoogled-chromium/files/patch-printing_print__settings.h
new file mode 100644
index 000000000000..042c0dac744c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-printing_print__settings.h
@@ -0,0 +1,38 @@
+--- printing/print_settings.h.orig 2022-10-01 07:40:07 UTC
++++ printing/print_settings.h
+@@ -18,7 +18,7 @@
+ #include "ui/gfx/geometry/rect.h"
+ #include "ui/gfx/geometry/size.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include <map>
+
+ #include "base/values.h"
+@@ -66,7 +66,7 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings {
+ }
+ };
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ using AdvancedSettings = std::map<std::string, base::Value>;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+@@ -221,7 +221,7 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings {
+ pages_per_sheet_ = pages_per_sheet;
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ AdvancedSettings& advanced_settings() { return advanced_settings_; }
+ const AdvancedSettings& advanced_settings() const {
+ return advanced_settings_;
+@@ -322,7 +322,7 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings {
+ // Number of pages per sheet.
+ int pages_per_sheet_;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Advanced settings.
+ AdvancedSettings advanced_settings_;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
diff --git a/www/ungoogled-chromium/files/patch-printing_print__settings__conversion.cc b/www/ungoogled-chromium/files/patch-printing_print__settings__conversion.cc
new file mode 100644
index 000000000000..1fbd5c300c88
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-printing_print__settings__conversion.cc
@@ -0,0 +1,11 @@
+--- printing/print_settings_conversion.cc.orig 2022-10-01 07:40:07 UTC
++++ printing/print_settings_conversion.cc
+@@ -256,7 +256,7 @@ std::unique_ptr<PrintSettings> PrintSettingsFromJobSet
+ settings->set_is_modifiable(is_modifiable.value());
+ }
+
+-#if BUILDFLAG(IS_CHROMEOS) || (BUILDFLAG(IS_LINUX) && defined(USE_CUPS))
++#if BUILDFLAG(IS_CHROMEOS) || ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(USE_CUPS))
+ const base::Value::Dict* advanced_settings =
+ job_settings.FindDict(kSettingAdvancedSettings);
+ if (advanced_settings) {
diff --git a/www/ungoogled-chromium/files/patch-printing_printing__context__linux.cc b/www/ungoogled-chromium/files/patch-printing_printing__context__linux.cc
new file mode 100644
index 000000000000..81c423b276ef
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-printing_printing__context__linux.cc
@@ -0,0 +1,38 @@
+--- printing/printing_context_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ printing/printing_context_linux.cc
+@@ -19,7 +19,7 @@
+ #include "printing/units.h"
+
+ // Avoid using LinuxUi on Fuchsia.
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "ui/linux/linux_ui.h"
+ #endif
+
+@@ -68,7 +68,7 @@ mojom::ResultCode PrintingContextLinux::UseDefaultSett
+
+ ResetSettings();
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (!ui::LinuxUi::instance())
+ return mojom::ResultCode::kSuccess;
+
+@@ -81,7 +81,7 @@ mojom::ResultCode PrintingContextLinux::UseDefaultSett
+ }
+
+ gfx::Size PrintingContextLinux::GetPdfPaperSizeDeviceUnits() {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (ui::LinuxUi::instance())
+ return ui::LinuxUi::instance()->GetPdfPaperSize(this);
+ #endif
+@@ -94,7 +94,7 @@ mojom::ResultCode PrintingContextLinux::UpdatePrinterS
+ DCHECK(!printer_settings.show_system_dialog);
+ DCHECK(!in_print_job_);
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (!ui::LinuxUi::instance())
+ return mojom::ResultCode::kSuccess;
+
diff --git a/www/ungoogled-chromium/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.cc b/www/ungoogled-chromium/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..07d819277329
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.cc
@@ -0,0 +1,51 @@
+--- printing/sandbox/print_backend_sandbox_hook_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ printing/sandbox/print_backend_sandbox_hook_linux.cc
+@@ -9,21 +9,28 @@
+ #include "base/files/file_util.h"
+ #include "base/path_service.h"
+ #include "build/build_config.h"
++#if !BUILDFLAG(IS_BSD)
+ #include "sandbox/linux/syscall_broker/broker_command.h"
+ #include "sandbox/linux/syscall_broker/broker_file_permission.h"
+ #include "sandbox/policy/export.h"
+ #include "sandbox/policy/linux/sandbox_linux.h"
+ #include "services/network/network_sandbox_hook_linux.h"
++#else
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#endif
+
+ #if BUILDFLAG(IS_CHROMEOS) && defined(USE_CUPS)
+ #include "printing/backend/cups_connection_pool.h"
+ #endif
+
++#if !BUILDFLAG(IS_BSD)
+ using sandbox::syscall_broker::BrokerFilePermission;
+ using sandbox::syscall_broker::MakeBrokerCommandSet;
++#endif
+
+ namespace printing {
+
++#if !BUILDFLAG(IS_BSD)
+ namespace {
+
+ sandbox::syscall_broker::BrokerCommandSet GetPrintBackendBrokerCommandSet() {
+@@ -84,9 +91,11 @@ std::vector<BrokerFilePermission> GetPrintBackendFileP
+ }
+
+ } // namespace
++#endif
+
+ bool PrintBackendPreSandboxHook(
+ sandbox::policy::SandboxLinux::Options options) {
++#if !BUILDFLAG(IS_BSD)
+ #if BUILDFLAG(IS_CHROMEOS) && defined(USE_CUPS)
+ // Create the socket connections to the CUPS server before engaging the
+ // sandbox, since new connections cannot be made after that.
+@@ -100,6 +109,7 @@ bool PrintBackendPreSandboxHook(
+ sandbox::policy::SandboxLinux::PreSandboxHook(), options);
+
+ instance->EngageNamespaceSandboxIfPossible();
++#endif
+ return true;
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.h b/www/ungoogled-chromium/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.h
new file mode 100644
index 000000000000..03de177e84ce
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.h
@@ -0,0 +1,16 @@
+--- printing/sandbox/print_backend_sandbox_hook_linux.h.orig 2022-10-01 07:40:07 UTC
++++ printing/sandbox/print_backend_sandbox_hook_linux.h
+@@ -5,8 +5,13 @@
+ #ifndef PRINTING_SANDBOX_PRINT_BACKEND_SANDBOX_HOOK_LINUX_H_
+ #define PRINTING_SANDBOX_PRINT_BACKEND_SANDBOX_HOOK_LINUX_H_
+
++#include "build/build_config.h"
+ #include "base/component_export.h"
++#if defined(OS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#else
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+
+ namespace printing {
+
diff --git a/www/ungoogled-chromium/files/patch-remoting_base_chromoting__event.cc b/www/ungoogled-chromium/files/patch-remoting_base_chromoting__event.cc
new file mode 100644
index 000000000000..0eae8455223d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_base_chromoting__event.cc
@@ -0,0 +1,11 @@
+--- remoting/base/chromoting_event.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/base/chromoting_event.cc
+@@ -190,7 +190,7 @@ void ChromotingEvent::AddSystemInfo() {
+ SetString(kCpuKey, base::SysInfo::OperatingSystemArchitecture());
+ SetString(kOsVersionKey, base::SysInfo::OperatingSystemVersion());
+ SetString(kWebAppVersionKey, STRINGIZE(VERSION));
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ Os os = Os::CHROMOTING_LINUX;
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ Os os = Os::CHROMOTING_CHROMEOS;
diff --git a/www/ungoogled-chromium/files/patch-remoting_base_host__settings.cc b/www/ungoogled-chromium/files/patch-remoting_base_host__settings.cc
new file mode 100644
index 000000000000..7681af175886
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_base_host__settings.cc
@@ -0,0 +1,20 @@
+--- remoting/base/host_settings.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/base/host_settings.cc
+@@ -7,7 +7,7 @@
+ #include "base/no_destructor.h"
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_APPLE) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS))
++#if BUILDFLAG(IS_APPLE) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)) || BUILDFLAG(IS_BSD)
+ #include "remoting/base/file_host_settings.h"
+ #endif // BUILDFLAG(IS_LINUX)
+
+@@ -44,7 +44,7 @@ HostSettings::~HostSettings() = default;
+
+ // static
+ HostSettings* HostSettings::GetInstance() {
+-#if BUILDFLAG(IS_APPLE) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS))
++#if BUILDFLAG(IS_APPLE) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)) || BUILDFLAG(IS_BSD)
+ static base::NoDestructor<FileHostSettings> instance(
+ FileHostSettings::GetSettingsFilePath());
+ #elif BUILDFLAG(IS_WIN)
diff --git a/www/ungoogled-chromium/files/patch-remoting_client_display_sys__opengl.h b/www/ungoogled-chromium/files/patch-remoting_client_display_sys__opengl.h
new file mode 100644
index 000000000000..db155e6dd562
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_client_display_sys__opengl.h
@@ -0,0 +1,11 @@
+--- remoting/client/display/sys_opengl.h.orig 2022-10-01 07:40:07 UTC
++++ remoting/client/display/sys_opengl.h
+@@ -9,7 +9,7 @@
+
+ #if BUILDFLAG(IS_IOS)
+ #include <OpenGLES/ES3/gl.h>
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #define GL_GLEXT_PROTOTYPES
+ #include <GL/gl.h>
+ #include <GL/glext.h>
diff --git a/www/ungoogled-chromium/files/patch-remoting_codec_webrtc__video__encoder__vpx.cc b/www/ungoogled-chromium/files/patch-remoting_codec_webrtc__video__encoder__vpx.cc
new file mode 100644
index 000000000000..a7153cd06e6a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_codec_webrtc__video__encoder__vpx.cc
@@ -0,0 +1,11 @@
+--- remoting/codec/webrtc_video_encoder_vpx.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/codec/webrtc_video_encoder_vpx.cc
+@@ -89,7 +89,7 @@ void SetVp8CodecParameters(vpx_codec_enc_cfg_t* config
+ const webrtc::DesktopSize& size) {
+ SetCommonCodecParameters(config, size);
+
+-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (BUILDFLAG(IS_BSD) || BUILDFLAG(IS_LINUX)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ // On Linux, using too many threads for VP8 encoding has been linked to high
+ // CPU usage on machines that are under stress. See http://crbug.com/1151148.
+ // 5/3/2022 update: Perf testing has shown that doubling the number of threads
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_base_switches.cc b/www/ungoogled-chromium/files/patch-remoting_host_base_switches.cc
new file mode 100644
index 000000000000..a52bcb1fb305
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_base_switches.cc
@@ -0,0 +1,18 @@
+--- remoting/host/base/switches.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/base/switches.cc
+@@ -23,13 +23,13 @@ const char kProcessTypeEvaluateCapability[] = "evaluat
+ const char kProcessTypeFileChooser[] = "file_chooser";
+ const char kProcessTypeUrlForwarderConfigurator[] =
+ "url_forwarder_configurator";
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const char kProcessTypeXSessionChooser[] = "xsession_chooser";
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+ const char kEvaluateCapabilitySwitchName[] = "evaluate-type";
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const char kEnableUtempter[] = "enable-utempter";
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_base_switches.h b/www/ungoogled-chromium/files/patch-remoting_host_base_switches.h
new file mode 100644
index 000000000000..e126c3b2a17d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_base_switches.h
@@ -0,0 +1,18 @@
+--- remoting/host/base/switches.h.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/base/switches.h
+@@ -35,13 +35,13 @@ extern const char kProcessTypeRdpDesktopSession[];
+ extern const char kProcessTypeEvaluateCapability[];
+ extern const char kProcessTypeFileChooser[];
+ extern const char kProcessTypeUrlForwarderConfigurator[];
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ extern const char kProcessTypeXSessionChooser[];
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+ extern const char kEvaluateCapabilitySwitchName[];
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Used to record client sessions to utmp/wtmp.
+ extern const char kEnableUtempter[];
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_chromoting__host.cc b/www/ungoogled-chromium/files/patch-remoting_host_chromoting__host.cc
new file mode 100644
index 000000000000..181a090e04c0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_chromoting__host.cc
@@ -0,0 +1,11 @@
+--- remoting/host/chromoting_host.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/chromoting_host.cc
+@@ -124,7 +124,7 @@ void ChromotingHost::StartChromotingHostServices() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(!ipc_server_);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ ipc_server_ = std::make_unique<MojoIpcServer<mojom::ChromotingHostServices>>(
+ GetChromotingHostServicesServerName(), this);
+ ipc_server_->StartServer();
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_chromoting__host__context.cc b/www/ungoogled-chromium/files/patch-remoting_host_chromoting__host__context.cc
new file mode 100644
index 000000000000..38b1e2aaaa4c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_chromoting__host__context.cc
@@ -0,0 +1,11 @@
+--- remoting/host/chromoting_host_context.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/chromoting_host_context.cc
+@@ -143,7 +143,7 @@ std::unique_ptr<ChromotingHostContext> ChromotingHostC
+ // on a UI thread.
+ scoped_refptr<AutoThreadTaskRunner> input_task_runner =
+ AutoThread::CreateWithType("ChromotingInputThread", ui_task_runner,
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ base::MessagePumpType::UI);
+ #else
+ base::MessagePumpType::IO);
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_chromoting__host__services__client.cc b/www/ungoogled-chromium/files/patch-remoting_host_chromoting__host__services__client.cc
new file mode 100644
index 000000000000..30c1b445534e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_chromoting__host__services__client.cc
@@ -0,0 +1,20 @@
+--- remoting/host/chromoting_host_services_client.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/chromoting_host_services_client.cc
+@@ -28,7 +28,7 @@ bool g_initialized = false;
+
+ } // namespace
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+
+ // static
+ constexpr char
+@@ -112,7 +112,7 @@ bool ChromotingHostServicesClient::EnsureSessionServic
+ if (session_services_remote_.is_bound()) {
+ return true;
+ }
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (!environment_->HasVar(kChromeRemoteDesktopSessionEnvVar)) {
+ LOG(WARNING) << "Current desktop environment is not remotable.";
+ return false;
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_evaluate__capability.cc b/www/ungoogled-chromium/files/patch-remoting_host_evaluate__capability.cc
new file mode 100644
index 000000000000..e0d37f59af6b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_evaluate__capability.cc
@@ -0,0 +1,11 @@
+--- remoting/host/evaluate_capability.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/evaluate_capability.cc
+@@ -55,7 +55,7 @@ base::FilePath BuildHostBinaryPath() {
+ }
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (path.BaseName().value() ==
+ FILE_PATH_LITERAL("chrome-remote-desktop-host")) {
+ return path;
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_heartbeat__sender.cc b/www/ungoogled-chromium/files/patch-remoting_host_heartbeat__sender.cc
new file mode 100644
index 000000000000..5ae9c6090a4a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_heartbeat__sender.cc
@@ -0,0 +1,11 @@
+--- remoting/host/heartbeat_sender.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/heartbeat_sender.cc
+@@ -111,7 +111,7 @@ const net::BackoffEntry::Policy kBackoffPolicy = {
+ std::string GetHostname() {
+ // TODO(crbug.com/1052397): Revisit the macro expression 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)
+ return net::GetHostName();
+ #elif BUILDFLAG(IS_WIN)
+ wchar_t buffer[MAX_PATH] = {0};
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_host__attributes.cc b/www/ungoogled-chromium/files/patch-remoting_host_host__attributes.cc
new file mode 100644
index 000000000000..1b4827a751e3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_host__attributes.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_attributes.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/host_attributes.cc
+@@ -121,7 +121,7 @@ std::string GetHostAttributes() {
+ media::InitializeMediaFoundation()) {
+ result.push_back("HWEncoder");
+ }
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ result.push_back("HWEncoder");
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_host__details.cc b/www/ungoogled-chromium/files/patch-remoting_host_host__details.cc
new file mode 100644
index 000000000000..00ea1af50301
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_host__details.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_details.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/host_details.cc
+@@ -23,7 +23,7 @@ std::string GetHostOperatingSystemName() {
+ return "Mac";
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ return "ChromeOS";
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ return "Linux";
+ #elif BUILDFLAG(IS_ANDROID)
+ return "Android";
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_host__main.cc b/www/ungoogled-chromium/files/patch-remoting_host_host__main.cc
new file mode 100644
index 000000000000..aa5a8a33a660
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_host__main.cc
@@ -0,0 +1,29 @@
+--- remoting/host/host_main.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/host_main.cc
+@@ -50,7 +50,7 @@ int FileChooserMain();
+ int RdpDesktopSessionMain();
+ int UrlForwarderConfiguratorMain();
+ #endif // BUILDFLAG(IS_WIN)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ int XSessionChooserMain();
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+@@ -63,7 +63,7 @@ const char kUsageMessage[] =
+ "\n"
+ "Options:\n"
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ " --audio-pipe-name=<pipe> - Sets the pipe name to capture audio on "
+ "Linux.\n"
+ #endif // BUILDFLAG(IS_LINUX)
+@@ -155,7 +155,7 @@ MainRoutineFn SelectMainRoutine(const std::string& pro
+ } else if (process_type == kProcessTypeUrlForwarderConfigurator) {
+ main_routine = &UrlForwarderConfiguratorMain;
+ #endif // BUILDFLAG(IS_WIN)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ } else if (process_type == kProcessTypeXSessionChooser) {
+ main_routine = &XSessionChooserMain;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_ipc__constants.cc b/www/ungoogled-chromium/files/patch-remoting_host_ipc__constants.cc
new file mode 100644
index 000000000000..9912403bb806
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_ipc__constants.cc
@@ -0,0 +1,11 @@
+--- remoting/host/ipc_constants.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/ipc_constants.cc
+@@ -16,7 +16,7 @@ namespace remoting {
+
+ namespace {
+
+-#if !defined(NDEBUG) && BUILDFLAG(IS_LINUX)
++#if !defined(NDEBUG) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD))
+ // Use a different IPC name for Linux debug builds so that we can run the host
+ // directly from out/Debug without interfering with the production host that
+ // might also be running.
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc b/www/ungoogled-chromium/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
new file mode 100644
index 000000000000..6c11f711c375
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
@@ -0,0 +1,47 @@
+--- remoting/host/it2me/it2me_native_messaging_host_main.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/it2me/it2me_native_messaging_host_main.cc
+@@ -30,7 +30,7 @@
+ #include "remoting/host/resources.h"
+ #include "remoting/host/usage_stats_consent.h"
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(REMOTING_USE_X11)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(REMOTING_USE_X11)
+ #include <gtk/gtk.h>
+
+ #include "base/linux_util.h"
+@@ -77,7 +77,7 @@ bool CurrentProcessHasUiAccess() {
+ // Creates a It2MeNativeMessagingHost instance, attaches it to stdin/stdout and
+ // runs the task executor until It2MeNativeMessagingHost signals shutdown.
+ int It2MeNativeMessagingHostMain(int argc, char** argv) {
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(REMOTING_USE_X11)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(REMOTING_USE_X11)
+ // Initialize Xlib for multi-threaded use, allowing non-Chromium code to
+ // use X11 safely (such as the WebRTC capturer, GTK ...)
+ x11::InitXlib();
+@@ -123,7 +123,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+
+ remoting::LoadResources("");
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(REMOTING_USE_X11)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(REMOTING_USE_X11)
+ // Required for any calls into GTK functions, such as the Disconnect and
+ // Continue windows. Calling with nullptr arguments because we don't have
+ // any command line arguments for gtk to consume.
+@@ -257,7 +257,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+ PolicyWatcher::CreateWithTaskRunner(context->file_task_runner(),
+ context->management_service());
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(REMOTING_USE_X11)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(REMOTING_USE_X11)
+ // Create an X11EventSource on all UI threads, so the global X11 connection
+ // (x11::Connection::Get()) can dispatch X events.
+ auto event_source =
+@@ -280,7 +280,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+ // Run the loop until channel is alive.
+ run_loop.Run();
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(REMOTING_USE_X11)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(REMOTING_USE_X11)
+ input_task_runner->PostTask(FROM_HERE, base::BindOnce([]() {
+ delete ui::X11EventSource::GetInstance();
+ }));
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_me2me__desktop__environment.cc b/www/ungoogled-chromium/files/patch-remoting_host_me2me__desktop__environment.cc
new file mode 100644
index 000000000000..3f04f48c117e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_me2me__desktop__environment.cc
@@ -0,0 +1,11 @@
+--- remoting/host/me2me_desktop_environment.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/me2me_desktop_environment.cc
+@@ -148,7 +148,7 @@ bool Me2MeDesktopEnvironment::InitializeSecurity(
+
+ // Otherwise, if the session is shared with the local user start monitoring
+ // the local input and create the in-session UI.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ bool want_user_interface = false;
+ #elif BUILDFLAG(IS_APPLE)
+ // Don't try to display any UI on top of the system's login screen as this
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_policy__watcher.cc b/www/ungoogled-chromium/files/patch-remoting_host_policy__watcher.cc
new file mode 100644
index 000000000000..444199d1aafd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_policy__watcher.cc
@@ -0,0 +1,11 @@
+--- remoting/host/policy_watcher.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/policy_watcher.cc
+@@ -184,7 +184,7 @@ std::unique_ptr<base::DictionaryValue> PolicyWatcher::
+ result->SetStringKey(key::kRemoteAccessHostUdpPortRange, "");
+ result->SetIntKey(key::kRemoteAccessHostClipboardSizeBytes, -1);
+ result->SetBoolKey(key::kRemoteAccessHostAllowRemoteSupportConnections, true);
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ result->SetBoolKey(key::kRemoteAccessHostMatchUsername, false);
+ #endif
+ #if !BUILDFLAG(IS_CHROMEOS)
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_remote__open__url_remote__open__url__client.cc b/www/ungoogled-chromium/files/patch-remoting_host_remote__open__url_remote__open__url__client.cc
new file mode 100644
index 000000000000..13cea3ffc8f0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_remote__open__url_remote__open__url__client.cc
@@ -0,0 +1,20 @@
+--- remoting/host/remote_open_url/remote_open_url_client.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/remote_open_url/remote_open_url_client.cc
+@@ -18,7 +18,7 @@
+ #include "remoting/host/mojom/chromoting_host_services.mojom.h"
+ #include "remoting/host/mojom/remote_url_opener.mojom.h"
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "remoting/host/remote_open_url/remote_open_url_client_delegate_linux.h"
+ #elif BUILDFLAG(IS_WIN)
+ #include "remoting/host/remote_open_url/remote_open_url_client_delegate_win.h"
+@@ -31,7 +31,7 @@ namespace {
+ constexpr base::TimeDelta kRequestTimeout = base::Seconds(5);
+
+ std::unique_ptr<RemoteOpenUrlClient::Delegate> CreateDelegate() {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return std::make_unique<RemoteOpenUrlClientDelegateLinux>();
+ #elif BUILDFLAG(IS_WIN)
+ return std::make_unique<RemoteOpenUrlClientDelegateWin>();
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_remote__open__url_remote__open__url__util.cc b/www/ungoogled-chromium/files/patch-remoting_host_remote__open__url_remote__open__url__util.cc
new file mode 100644
index 000000000000..01aebce6c895
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_remote__open__url_remote__open__url__util.cc
@@ -0,0 +1,11 @@
+--- remoting/host/remote_open_url/remote_open_url_util.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/remote_open_url/remote_open_url_util.cc
+@@ -30,7 +30,7 @@ const wchar_t kRegisteredApplicationsKeyName[] =
+ #endif // defined (OS_WIN)
+
+ bool IsRemoteOpenUrlSupported() {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ return true;
+ #elif BUILDFLAG(IS_WIN)
+ // The modern default apps settings dialog is only available to Windows 8+.
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_remote__open__url_url__forwarder__configurator.cc b/www/ungoogled-chromium/files/patch-remoting_host_remote__open__url_url__forwarder__configurator.cc
new file mode 100644
index 000000000000..384fb7e01b42
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_remote__open__url_url__forwarder__configurator.cc
@@ -0,0 +1,11 @@
+--- remoting/host/remote_open_url/url_forwarder_configurator.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/remote_open_url/url_forwarder_configurator.cc
+@@ -12,7 +12,7 @@ UrlForwarderConfigurator::UrlForwarderConfigurator() =
+
+ UrlForwarderConfigurator::~UrlForwarderConfigurator() = default;
+
+-#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_WIN)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_BSD)
+
+ // static
+ std::unique_ptr<UrlForwarderConfigurator> UrlForwarderConfigurator::Create() {
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_remoting__me2me__host.cc b/www/ungoogled-chromium/files/patch-remoting_host_remoting__me2me__host.cc
new file mode 100644
index 000000000000..42d041687a9c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_remoting__me2me__host.cc
@@ -0,0 +1,144 @@
+--- remoting/host/remoting_me2me_host.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/remoting_me2me_host.cc
+@@ -125,7 +125,7 @@
+ #include "remoting/host/mac/permission_utils.h"
+ #endif // BUILDFLAG(IS_APPLE)
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(REMOTING_USE_X11)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(REMOTING_USE_X11)
+ #include <gtk/gtk.h>
+
+ #include "ui/events/platform/x11/x11_event_source.h"
+@@ -133,13 +133,13 @@
+ #endif // (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) &&
+ // defined(REMOTING_USE_X11)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/linux_util.h"
+ #include "remoting/host/audio_capturer_linux.h"
+ #include "remoting/host/linux/certificate_watcher.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "remoting/host/host_utmp_logger.h"
+ #endif
+
+@@ -177,7 +177,7 @@ const char kApplicationName[] = "chromoting";
+ const char kStdinConfigPath[] = "-";
+ #endif // !defined(REMOTING_MULTI_PROCESS)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // The command line switch used to pass name of the pipe to capture audio on
+ // linux.
+ const char kAudioPipeSwitchName[] = "audio-pipe-name";
+@@ -385,7 +385,7 @@ class HostProcess : public ConfigWatcher::Delegate,
+
+ std::unique_ptr<ChromotingHostContext> context_;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Watch for certificate changes and kill the host when changes occur
+ std::unique_ptr<CertificateWatcher> cert_watcher_;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+@@ -451,7 +451,7 @@ class HostProcess : public ConfigWatcher::Delegate,
+
+ std::unique_ptr<HostStatusLogger> host_status_logger_;
+ std::unique_ptr<HostEventLogger> host_event_logger_;
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ std::unique_ptr<HostUTMPLogger> host_utmp_logger_;
+ #endif
+ std::unique_ptr<HostPowerSaveBlocker> power_save_blocker_;
+@@ -759,7 +759,7 @@ void HostProcess::StartOnNetworkThread() {
+ void HostProcess::ShutdownOnNetworkThread() {
+ DCHECK(context_->network_task_runner()->BelongsToCurrentThread());
+ config_watcher_.reset();
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ cert_watcher_.reset();
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+ }
+@@ -818,7 +818,7 @@ void HostProcess::CreateAuthenticatorFactory() {
+ DCHECK(third_party_auth_config_.token_url.is_valid());
+ DCHECK(third_party_auth_config_.token_validation_url.is_valid());
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (!cert_watcher_) {
+ cert_watcher_ = std::make_unique<CertificateWatcher>(
+ base::BindRepeating(&HostProcess::ShutdownHost,
+@@ -937,7 +937,7 @@ void HostProcess::StartOnUiThread() {
+ base::BindRepeating(&HostProcess::OnPolicyUpdate, base::Unretained(this)),
+ base::BindRepeating(&HostProcess::OnPolicyError, base::Unretained(this)));
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // If an audio pipe is specific on the command-line then initialize
+ // AudioCapturerLinux to capture from it.
+ base::FilePath audio_pipe_name = base::CommandLine::ForCurrentProcess()->
+@@ -1008,7 +1008,7 @@ void HostProcess::ShutdownOnUiThread() {
+ // It is now safe for the HostProcess to be deleted.
+ self_ = nullptr;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Cause the global AudioPipeReader to be freed, otherwise the audio
+ // thread will remain in-use and prevent the process from exiting.
+ // TODO(wez): DesktopEnvironmentFactory should own the pipe reader.
+@@ -1016,7 +1016,7 @@ void HostProcess::ShutdownOnUiThread() {
+ AudioCapturerLinux::InitializePipeReader(nullptr, base::FilePath());
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(REMOTING_USE_X11)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(REMOTING_USE_X11)
+ context_->input_task_runner()->PostTask(
+ FROM_HERE,
+ base::BindOnce([]() { delete ui::X11EventSource::GetInstance(); }));
+@@ -1343,7 +1343,7 @@ bool HostProcess::OnUsernamePolicyUpdate(base::Diction
+ // Returns false: never restart the host after this policy update.
+ DCHECK(context_->network_task_runner()->BelongsToCurrentThread());
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ absl::optional<bool> host_username_match_required =
+ policies->FindBoolKey(policy::key::kRemoteAccessHostMatchUsername);
+ if (!host_username_match_required.has_value())
+@@ -1727,7 +1727,7 @@ void HostProcess::StartHost() {
+ // The feature is enabled for all Googlers using a supported platform.
+ desktop_environment_options_.set_enable_remote_open_url(is_googler_);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ desktop_environment_options_.set_enable_remote_webauthn(is_googler_);
+ #endif
+
+@@ -1760,7 +1760,7 @@ void HostProcess::StartHost() {
+ host_status_logger_ = std::make_unique<HostStatusLogger>(
+ host_->status_monitor(), log_to_server_.get());
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
+ if (cmd_line->HasSwitch(kEnableUtempter))
+ host_utmp_logger_ =
+@@ -1929,7 +1929,7 @@ int HostProcessMain() {
+ HOST_LOG << "Starting host process: version " << STRINGIZE(VERSION);
+ const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #if defined(REMOTING_USE_X11)
+ // Initialize Xlib for multi-threaded use, allowing non-Chromium code to
+ // use X11 safely (such as the WebRTC capturer, GTK ...)
+@@ -1975,7 +1975,7 @@ int HostProcessMain() {
+ std::unique_ptr<net::NetworkChangeNotifier> network_change_notifier(
+ net::NetworkChangeNotifier::CreateIfNeeded());
+
+-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(REMOTING_USE_X11)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(REMOTING_USE_X11)
+ // Create an X11EventSource on all UI threads, so the global X11 connection
+ // (x11::Connection::Get()) can dispatch X events.
+ auto event_source =
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_setup_start__host__main.cc b/www/ungoogled-chromium/files/patch-remoting_host_setup_start__host__main.cc
new file mode 100644
index 000000000000..f1b8dfa649f0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_setup_start__host__main.cc
@@ -0,0 +1,29 @@
+--- remoting/host/setup/start_host_main.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/setup/start_host_main.cc
+@@ -31,7 +31,7 @@
+ #include <unistd.h>
+ #endif // BUILDFLAG(IS_POSIX)
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "remoting/host/setup/daemon_controller_delegate_linux.h"
+ #include "remoting/host/setup/start_host_as_root.h"
+ #endif // BUILDFLAG(IS_LINUX)
+@@ -125,7 +125,7 @@ void OnDone(HostStarter::Result result) {
+ } // namespace
+
+ int StartHostMain(int argc, char** argv) {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // Minimize the amount of code that runs as root on Posix systems.
+ if (getuid() == 0) {
+ return remoting::StartHostAsRoot(argc, argv);
+@@ -162,7 +162,7 @@ int StartHostMain(int argc, char** argv) {
+ // for the account which generated |code|.
+ std::string host_owner = command_line->GetSwitchValueASCII("host-owner");
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ if (command_line->HasSwitch("no-start")) {
+ // On Linux, registering the host with systemd and starting it is the only
+ // reason start_host requires root. The --no-start options skips that final
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_webauthn_remote__webauthn__caller__security__utils.cc b/www/ungoogled-chromium/files/patch-remoting_host_webauthn_remote__webauthn__caller__security__utils.cc
new file mode 100644
index 000000000000..4311118c7d38
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_webauthn_remote__webauthn__caller__security__utils.cc
@@ -0,0 +1,29 @@
+--- remoting/host/webauthn/remote_webauthn_caller_security_utils.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/webauthn/remote_webauthn_caller_security_utils.cc
+@@ -9,7 +9,7 @@
+ #include "base/strings/utf_string_conversions.h"
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ #include "base/containers/fixed_flat_set.h"
+ #include "base/files/file_path.h"
+ #include "base/process/process_handle.h"
+@@ -37,7 +37,7 @@ namespace {
+
+ // No static variables needed for debug builds.
+
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+
+ constexpr auto kAllowedCallerPrograms =
+ base::MakeFixedFlatSet<base::FilePath::StringPieceType>({
+@@ -76,7 +76,7 @@ bool IsLaunchedByTrustedProcess() {
+ #if !defined(NDEBUG)
+ // Just return true on debug builds for the convenience of development.
+ return true;
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ base::ProcessId parent_pid =
+ base::GetParentProcessId(base::GetCurrentProcessHandle());
+ // Note that on Linux the process image may no longer exist in its original
diff --git a/www/ungoogled-chromium/files/patch-remoting_host_webauthn_remote__webauthn__extension__notifier.cc b/www/ungoogled-chromium/files/patch-remoting_host_webauthn_remote__webauthn__extension__notifier.cc
new file mode 100644
index 000000000000..99a7b4b8d471
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_host_webauthn_remote__webauthn__extension__notifier.cc
@@ -0,0 +1,28 @@
+--- remoting/host/webauthn/remote_webauthn_extension_notifier.cc.orig 2022-10-01 07:40:07 UTC
++++ remoting/host/webauthn/remote_webauthn_extension_notifier.cc
+@@ -23,7 +23,7 @@
+ #include "base/threading/sequenced_task_runner_handle.h"
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "base/environment.h"
+ #include "base/nix/xdg_util.h"
+ #include "base/strings/string_util.h"
+@@ -68,14 +68,14 @@ static constexpr char kExtensionWakeupFileContent[] =
+ // Caller should check if the directory exists before writing files to it. A
+ // directory only exists if the corresponding Chrome version is installed.
+ std::vector<base::FilePath> GetRemoteStateChangeDirPaths() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
+ constexpr base::FilePath::CharType kStateChangeDirName[] =
+ FILE_PATH_LITERAL("WebAuthenticationProxyRemoteSessionStateChange");
+ #endif
+
+ std::vector<base::FilePath> dirs;
+
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // See: chrome/common/chrome_paths_linux.cc
+ auto env = base::Environment::Create();
+ base::FilePath base_path;
diff --git a/www/ungoogled-chromium/files/patch-remoting_resources_remoting__strings.grd b/www/ungoogled-chromium/files/patch-remoting_resources_remoting__strings.grd
new file mode 100644
index 000000000000..d10d1b5f9bf2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-remoting_resources_remoting__strings.grd
@@ -0,0 +1,20 @@
+--- remoting/resources/remoting_strings.grd.orig 2022-10-01 07:40:07 UTC
++++ remoting/resources/remoting_strings.grd
+@@ -955,7 +955,7 @@ If '<ph name="SERVICE_SCRIPT_NAME">$3<ex>org.chromium.
+ <message name="IDS_URL_FORWARDER_INCORRECTLY_CONFIGURED" desc="Message shown when the Chrome Remote Desktop URL forwarder is incorrectly configured.">
+ <ph name="URL_FORWARDER_NAME">%s<ex>Chrome Remote Desktop URL Forwarder</ex></ph> is not configured correctly. Please choose a different default web browser and then enable URL forwarding again.
+ </message>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_SESSION_DIALOG_MESSAGE" desc="The message to show at the top of the session-selection dialog.">
+ Select a session to launch within your Chrome Remote Desktop environment. (Note that some session types may not support running within Chrome Remote Desktop and on the local console simultaneously.)
+ </message>
+@@ -971,7 +971,7 @@ If '<ph name="SERVICE_SCRIPT_NAME">$3<ex>org.chromium.
+ <message name="IDS_SESSION_DIALOG_DEFAULT_SESSION_COMMENT" desc="The comment for the entry to launch the default session.">
+ Launch the default XSession
+ </message>
+- </if> <!-- is_linux -->
++ </if> <!-- is_posix -->
+ </messages>
+ </release>
+ </grit>
diff --git a/www/ungoogled-chromium/files/patch-sandbox_BUILD.gn b/www/ungoogled-chromium/files/patch-sandbox_BUILD.gn
new file mode 100644
index 000000000000..fd26bf977f32
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_BUILD.gn
@@ -0,0 +1,11 @@
+--- sandbox/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ sandbox/BUILD.gn
+@@ -49,7 +49,7 @@ group("sandbox") {
+ "//sandbox/mac:system_services",
+ "//sandbox/mac/mojom",
+ ]
+- } else if (is_linux || is_chromeos || is_android) {
++ } else if ((is_linux && !is_bsd) || is_chromeos || is_android) {
+ public_deps = [ "//sandbox/linux:sandbox" ]
+ }
+ }
diff --git a/www/ungoogled-chromium/files/patch-sandbox_features.gni b/www/ungoogled-chromium/files/patch-sandbox_features.gni
new file mode 100644
index 000000000000..53d932f45b4b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_features.gni
@@ -0,0 +1,11 @@
+--- sandbox/features.gni.orig 2022-10-01 07:40:07 UTC
++++ sandbox/features.gni
+@@ -6,7 +6,7 @@
+ # currently.
+ # Do not disable seccomp_bpf anywhere without talking to
+ # security@ch40m1um.qjz9zk!
+-use_seccomp_bpf = (is_linux || is_chromeos || is_android) &&
++use_seccomp_bpf = !is_bsd && (is_linux || is_chromeos || is_android) &&
+ (current_cpu == "x86" || current_cpu == "x64" ||
+ current_cpu == "arm" || current_cpu == "arm64" ||
+ current_cpu == "mipsel" || current_cpu == "mips64el")
diff --git a/www/ungoogled-chromium/files/patch-sandbox_linux_BUILD.gn b/www/ungoogled-chromium/files/patch-sandbox_linux_BUILD.gn
new file mode 100644
index 000000000000..05b308efe749
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_linux_BUILD.gn
@@ -0,0 +1,58 @@
+--- sandbox/linux/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ sandbox/linux/BUILD.gn
+@@ -12,12 +12,12 @@ if (is_android) {
+ }
+
+ declare_args() {
+- compile_suid_client = is_linux || is_chromeos
++ compile_suid_client = (is_linux || is_chromeos) && !is_bsd
+
+- compile_credentials = is_linux || is_chromeos
++ compile_credentials = (is_linux || is_chromeos) && !is_bsd
+
+ # On Android, use plain GTest.
+- use_base_test_suite = is_linux || is_chromeos
++ use_base_test_suite = (is_linux || is_chromeos) && !is_bsd
+ }
+
+ # We have two principal targets: sandbox and sandbox_linux_unittests
+@@ -373,6 +373,39 @@ component("sandbox_services") {
+ sources += [
+ "services/libc_interceptor.cc",
+ "services/libc_interceptor.h",
++ ]
++ }
++
++ if (is_bsd) {
++ sources -= [
++ "services/scoped_process.cc",
++ "services/scoped_process.h",
++ "services/syscall_wrappers.cc",
++ "services/syscall_wrappers.h",
++ "services/yama.cc",
++ "services/yama.h",
++ "syscall_broker/broker_channel.cc",
++ "syscall_broker/broker_channel.h",
++ "syscall_broker/broker_client.cc",
++ "syscall_broker/broker_client.h",
++ "syscall_broker/broker_command.cc",
++ "syscall_broker/broker_command.h",
++ "syscall_broker/broker_file_permission.cc",
++ "syscall_broker/broker_file_permission.h",
++ "syscall_broker/broker_host.cc",
++ "syscall_broker/broker_host.h",
++ "syscall_broker/broker_permission_list.cc",
++ "syscall_broker/broker_permission_list.h",
++ "syscall_broker/broker_process.cc",
++ "syscall_broker/broker_process.h",
++ "syscall_broker/broker_sandbox_config.cc",
++ "syscall_broker/broker_sandbox_config.h",
++ "syscall_broker/broker_simple_message.cc",
++ "syscall_broker/broker_simple_message.h",
++ "syscall_broker/remote_syscall_arg_handler.cc",
++ "syscall_broker/remote_syscall_arg_handler.h",
++ "syscall_broker/syscall_dispatcher.cc",
++ "syscall_broker/syscall_dispatcher.h",
+ ]
+ }
+ }
diff --git a/www/ungoogled-chromium/files/patch-sandbox_linux_services_init__process__reaper.cc b/www/ungoogled-chromium/files/patch-sandbox_linux_services_init__process__reaper.cc
new file mode 100644
index 000000000000..faaf2bee3de1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_linux_services_init__process__reaper.cc
@@ -0,0 +1,15 @@
+--- sandbox/linux/services/init_process_reaper.cc.orig 2022-10-01 07:40:07 UTC
++++ sandbox/linux/services/init_process_reaper.cc
+@@ -2,6 +2,7 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
++#if 0
+ #include "sandbox/linux/services/init_process_reaper.h"
+
+ #include <signal.h>
+@@ -100,3 +101,4 @@ bool CreateInitProcessReaper(base::OnceClosure post_fo
+ }
+
+ } // namespace sandbox.
++#endif
diff --git a/www/ungoogled-chromium/files/patch-sandbox_linux_services_libc__interceptor.cc b/www/ungoogled-chromium/files/patch-sandbox_linux_services_libc__interceptor.cc
new file mode 100644
index 000000000000..b1c2495cb562
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_linux_services_libc__interceptor.cc
@@ -0,0 +1,21 @@
+--- sandbox/linux/services/libc_interceptor.cc.orig 2022-10-01 07:40:07 UTC
++++ sandbox/linux/services/libc_interceptor.cc
+@@ -11,7 +11,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <time.h>
+@@ -94,7 +96,7 @@ bool ReadTimeStruct(base::PickleIterator* iter,
+ } else {
+ base::AutoLock lock(g_timezones_lock.Get());
+ auto ret_pair = g_timezones.Get().insert(timezone);
+- output->tm_zone = ret_pair.first->c_str();
++ output->tm_zone = (char *)ret_pair.first->c_str();
+ }
+
+ return true;
diff --git a/www/ungoogled-chromium/files/patch-sandbox_policy_BUILD.gn b/www/ungoogled-chromium/files/patch-sandbox_policy_BUILD.gn
new file mode 100644
index 000000000000..8a22985b5044
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_policy_BUILD.gn
@@ -0,0 +1,39 @@
+--- sandbox/policy/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ sandbox/policy/BUILD.gn
+@@ -36,7 +36,7 @@ component("policy") {
+ "//sandbox/policy/mojom",
+ ]
+ public_deps = [ "//sandbox:common" ]
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [
+ "linux/bpf_audio_policy_linux.cc",
+ "linux/bpf_audio_policy_linux.h",
+@@ -95,6 +95,27 @@ component("policy") {
+ "//sandbox/linux:sandbox_services",
+ "//sandbox/linux:seccomp_bpf",
+ "//sandbox/linux:suid_sandbox_client",
++ ]
++ }
++ if (is_openbsd) {
++ sources += [
++ "openbsd/sandbox_openbsd.cc",
++ "openbsd/sandbox_openbsd.h",
++ ]
++ deps += [
++ "//sandbox:sandbox_buildflags",
++ "//ui/gfx/x",
++ ]
++ libs = [ "util" ]
++ }
++ if (is_freebsd) {
++ sources += [
++ "freebsd/sandbox_freebsd.cc",
++ "freebsd/sandbox_freebsd.h",
++ ]
++ deps += [
++ "//sandbox:sandbox_buildflags",
++ "//ui/gfx/x",
+ ]
+ }
+ if (is_chromeos_ash) {
diff --git a/www/ungoogled-chromium/files/patch-sandbox_policy_features.cc b/www/ungoogled-chromium/files/patch-sandbox_policy_features.cc
new file mode 100644
index 000000000000..89c2f4d1739a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_policy_features.cc
@@ -0,0 +1,14 @@
+--- sandbox/policy/features.cc.orig 2022-10-01 07:40:07 UTC
++++ sandbox/policy/features.cc
+@@ -14,7 +14,11 @@ namespace sandbox::policy::features {
+ // Enables network service sandbox.
+ // (Only causes an effect when feature kNetworkService is enabled.)
+ const base::Feature kNetworkServiceSandbox{"NetworkServiceSandbox",
++#if BUILDFLAG(IS_BSD)
++ base::FEATURE_ENABLED_BY_DEFAULT};
++#else
+ base::FEATURE_DISABLED_BY_DEFAULT};
++#endif
+ #endif // !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_FUCHSIA)
+
+ #if BUILDFLAG(IS_WIN)
diff --git a/www/ungoogled-chromium/files/patch-sandbox_policy_freebsd_sandbox__freebsd.cc b/www/ungoogled-chromium/files/patch-sandbox_policy_freebsd_sandbox__freebsd.cc
new file mode 100644
index 000000000000..d5daea12234a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_policy_freebsd_sandbox__freebsd.cc
@@ -0,0 +1,256 @@
+--- sandbox/policy/freebsd/sandbox_freebsd.cc.orig 2022-10-01 07:40:07 UTC
++++ sandbox/policy/freebsd/sandbox_freebsd.cc
+@@ -0,0 +1,253 @@
++// Copyright (c) 2012 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 "sandbox/policy/openbsd/sandbox_openbsd.h"
++
++#include <dirent.h>
++#include <fcntl.h>
++#include <stdint.h>
++#include <sys/resource.h>
++#include <sys/stat.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#include <unistd.h>
++
++#include <limits>
++#include <memory>
++#include <string>
++#include <vector>
++
++#include "base/bind.h"
++#include "base/callback_helpers.h"
++#include "base/command_line.h"
++#include "base/debug/stack_trace.h"
++#include "base/feature_list.h"
++#include "base/files/file_path.h"
++#include "base/files/file_util.h"
++#include "base/files/scoped_file.h"
++#include "base/logging.h"
++#include "base/memory/singleton.h"
++#include "base/path_service.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/strings/string_number_conversions.h"
++#include "base/system/sys_info.h"
++#include "base/threading/thread.h"
++#include "base/time/time.h"
++#include "build/build_config.h"
++#include "sandbox/constants.h"
++#include "sandbox/linux/services/credentials.h"
++#include "sandbox/linux/services/namespace_sandbox.h"
++#include "sandbox/linux/services/proc_util.h"
++#include "sandbox/linux/services/resource_limits.h"
++#include "sandbox/linux/services/thread_helpers.h"
++#include "sandbox/linux/syscall_broker/broker_command.h"
++#include "sandbox/linux/syscall_broker/broker_process.h"
++#include "sandbox/policy/sandbox.h"
++#include "sandbox/policy/sandbox_type.h"
++#include "sandbox/policy/mojom/sandbox.mojom.h"
++#include "sandbox/policy/switches.h"
++#include "sandbox/sandbox_buildflags.h"
++
++#if BUILDFLAG(USING_SANITIZER)
++#include <sanitizer/common_interface_defs.h>
++#endif
++
++#if defined(USE_NSS_CERTS)
++#include "crypto/nss_util.h"
++#endif
++
++#include "ui/gfx/x/connection.h"
++#include "ui/gfx/font_util.h"
++
++#include <X11/Xlib.h>
++
++#define MAXTOKENS 3
++
++#define _UNVEIL_MAIN "/etc/ungoogled-chromium/unveil.main";
++#define _UNVEIL_RENDERER "/etc/ungoogled-chromium/unveil.renderer";
++#define _UNVEIL_GPU "/etc/ungoogled-chromium/unveil.gpu";
++#define _UNVEIL_PLUGIN "/etc/ungoogled-chromium/unveil.plugin";
++#define _UNVEIL_UTILITY "/etc/ungoogled-chromium/unveil.utility";
++#define _UNVEIL_UTILITY_NETWORK "/etc/ungoogled-chromium/unveil.utility_network";
++#define _UNVEIL_UTILITY_AUDIO "/etc/ungoogled-chromium/unveil.utility_audio";
++#define _UNVEIL_UTILITY_VIDEO "/etc/ungoogled-chromium/unveil.utility_video";
++
++namespace sandbox {
++namespace policy {
++
++SandboxLinux::SandboxLinux()
++ : sandbox_status_flags_(kInvalid),
++ pre_initialized_(false),
++ initialize_sandbox_ran_(false),
++ broker_process_(nullptr) {
++}
++
++SandboxLinux::~SandboxLinux() {
++ if (pre_initialized_) {
++ CHECK(initialize_sandbox_ran_);
++ }
++}
++
++SandboxLinux* SandboxLinux::GetInstance() {
++ SandboxLinux* instance = base::Singleton<SandboxLinux>::get();
++ CHECK(instance);
++ return instance;
++}
++
++void SandboxLinux::StopThread(base::Thread* thread) {
++ DCHECK(thread);
++ thread->Stop();
++}
++
++void SandboxLinux::PreinitializeSandbox(sandbox::mojom::Sandbox sandbox_type) {
++ CHECK(!pre_initialized_);
++#if BUILDFLAG(USING_SANITIZER)
++ // Sanitizers need to open some resources before the sandbox is enabled.
++ // This should not fork, not launch threads, not open a directory.
++ __sanitizer_sandbox_on_notify(sanitizer_args());
++ sanitizer_args_.reset();
++#endif
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ const std::string process_type =
++ command_line->GetSwitchValueASCII(switches::kProcessType);
++
++ base::SysInfo::AmountOfPhysicalMemory();
++ base::SysInfo::NumberOfProcessors();
++
++#if defined(USE_NSS_CERTS)
++ // The main process has to initialize the ~/.pki dir which won't work
++ // after unveil(2).
++ if (process_type.empty())
++ crypto::EnsureNSSInit();
++#endif
++
++ // cache the XErrorDB by forcing a read on it
++ {
++ auto* connection = x11::Connection::Get();
++ auto* display = connection->GetXlibDisplay().display();
++
++ char buf[1];
++ XGetErrorDatabaseText(display, "XProtoError", "0", "", buf, std::size(buf));
++ }
++
++ if (process_type.empty()) {
++ base::FilePath cache_directory, local_directory;
++
++ base::PathService::Get(base::DIR_CACHE, &cache_directory);
++ base::PathService::Get(base::DIR_HOME, &local_directory);
++
++ cache_directory = cache_directory.AppendASCII("ungoogled-chromium");
++ local_directory = local_directory.AppendASCII(".local").AppendASCII("share").AppendASCII("applications");
++
++ if (!base::CreateDirectory(cache_directory)) {
++ LOG(ERROR) << "Failed to create " << cache_directory.value() << " directory.";
++ }
++
++ if (!base::CreateDirectory(local_directory)) {
++ LOG(ERROR) << "Failed to create " << local_directory.value() << " directory.";
++ }
++ }
++
++ if (process_type == switches::kRendererProcess)
++ gfx::InitializeFonts();
++
++ pre_initialized_ = true;
++}
++
++bool SandboxLinux::InitializeSandbox(sandbox::mojom::Sandbox sandbox_type,
++ SandboxLinux::PreSandboxHook hook,
++ const Options& options) {
++ DCHECK(!initialize_sandbox_ran_);
++ initialize_sandbox_ran_ = true;
++
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ const std::string process_type =
++ command_line->GetSwitchValueASCII(switches::kProcessType);
++
++ if (command_line->HasSwitch(switches::kNoSandbox))
++ return true;
++
++ VLOG(1) << "SandboxLinux::InitializeSandbox: process_type="
++ << process_type << " sandbox_type=" << GetSandboxTypeInEnglish(sandbox_type);
++
++ // Only one thread is running, pre-initialize if not already done.
++ if (!pre_initialized_)
++ PreinitializeSandbox(sandbox_type);
++
++ // Attempt to limit the future size of the address space of the process.
++ int error = 0;
++ const bool limited_as = LimitAddressSpace(&error);
++ if (error) {
++ // Restore errno. Internally to |LimitAddressSpace|, the errno due to
++ // setrlimit may be lost.
++ errno = error;
++ PCHECK(limited_as);
++ }
++
++ return true;
++}
++
++bool SandboxLinux::LimitAddressSpace(int* error) {
++#if !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) && \
++ !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER)
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ if (SandboxTypeFromCommandLine(*command_line) == sandbox::mojom::Sandbox::kNoSandbox) {
++ return false;
++ }
++
++ // Unfortunately, it does not appear possible to set RLIMIT_AS such that it
++ // will both (a) be high enough to support V8's and WebAssembly's address
++ // space requirements while also (b) being low enough to mitigate exploits
++ // using integer overflows that require large allocations, heap spray, or
++ // other memory-hungry attack modes.
++
++ *error = sandbox::ResourceLimits::Lower(
++ RLIMIT_DATA, static_cast<rlim_t>(sandbox::kDataSizeLimit));
++
++ // Cache the resource limit before turning on the sandbox.
++ base::SysInfo::AmountOfVirtualMemory();
++ base::SysInfo::MaxSharedMemorySize();
++
++ return *error == 0;
++#else
++ base::SysInfo::AmountOfVirtualMemory();
++ return false;
++#endif // !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) &&
++ // !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER)
++}
++
++// static
++std::string SandboxLinux::GetSandboxTypeInEnglish(sandbox::mojom::Sandbox sandbox_type) {
++ switch (sandbox_type) {
++ case sandbox::mojom::Sandbox::kNoSandbox:
++ return "Unsandboxed";
++ case sandbox::mojom::Sandbox::kRenderer:
++ return "Renderer";
++ case sandbox::mojom::Sandbox::kUtility:
++ return "Utility";
++ case sandbox::mojom::Sandbox::kGpu:
++ return "GPU";
++ case sandbox::mojom::Sandbox::kPpapi:
++ return "PPAPI";
++ case sandbox::mojom::Sandbox::kNetwork:
++ return "Network";
++ case sandbox::mojom::Sandbox::kCdm:
++ return "CDM";
++ case sandbox::mojom::Sandbox::kPrintCompositor:
++ return "Print Compositor";
++ case sandbox::mojom::Sandbox::kAudio:
++ return "Audio";
++ case sandbox::mojom::Sandbox::kSpeechRecognition:
++ return "Speech Recognition";
++ case sandbox::mojom::Sandbox::kService:
++ return "Service";
++ case sandbox::mojom::Sandbox::kVideoCapture:
++ return "Video Capture";
++ default:
++ return "Unknown";
++ }
++}
++
++} // namespace policy
++} // namespace sandbox
diff --git a/www/ungoogled-chromium/files/patch-sandbox_policy_freebsd_sandbox__freebsd.h b/www/ungoogled-chromium/files/patch-sandbox_policy_freebsd_sandbox__freebsd.h
new file mode 100644
index 000000000000..499927a3dd2f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_policy_freebsd_sandbox__freebsd.h
@@ -0,0 +1,281 @@
+--- sandbox/policy/freebsd/sandbox_freebsd.h.orig 2022-10-01 07:40:07 UTC
++++ sandbox/policy/freebsd/sandbox_freebsd.h
+@@ -0,0 +1,278 @@
++// Copyright (c) 2012 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.
++#ifndef SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_
++#define SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_
++
++#include <memory>
++#include <string>
++#include <vector>
++
++#include "base/logging.h"
++#include "base/posix/global_descriptors.h"
++#include "sandbox/policy/export.h"
++#include "sandbox/policy/linux/sandbox_seccomp_bpf_linux.h"
++#include "sandbox/policy/mojom/sandbox.mojom.h"
++#include "sandbox/policy/sanitizer_buildflags.h"
++
++#if BUILDFLAG(USING_SANITIZER)
++#include <sanitizer/common_interface_defs.h>
++#endif
++
++namespace base {
++template <typename T>
++struct DefaultSingletonTraits;
++class Thread;
++} // namespace base
++
++namespace sandbox {
++namespace syscall_broker {
++class BrokerProcess;
++} // namespace syscall_broker
++} // namespace sandbox
++
++namespace sandbox {
++namespace policy {
++
++// A singleton class to represent and change our sandboxing state for the
++// three main Linux sandboxes.
++// The sandboxing model allows using two layers of sandboxing. The first layer
++// can be implemented either with unprivileged namespaces or with the setuid
++// sandbox. This class provides a way to engage the namespace sandbox, but does
++// not deal with the legacy setuid sandbox directly.
++// The second layer is mainly based on seccomp-bpf and is engaged with
++// InitializeSandbox(). InitializeSandbox() is also responsible for "sealing"
++// the first layer of sandboxing. That is, InitializeSandbox must always be
++// called to have any meaningful sandboxing at all.
++class SANDBOX_POLICY_EXPORT SandboxLinux {
++ public:
++ // This is a list of sandbox IPC methods which the renderer may send to the
++ // sandbox host. See
++ // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_sandbox_ipc.md
++ // This isn't the full list, values < 32 are reserved for methods called from
++ // Skia, and values < 64 are reserved for libc_interceptor.cc.
++ enum LinuxSandboxIPCMethods {
++ DEPRECATED_METHOD_GET_FALLBACK_FONT_FOR_CHAR = 64,
++ DEPRECATED_METHOD_GET_CHILD_WITH_INODE,
++ DEPRECATED_METHOD_GET_STYLE_FOR_STRIKE,
++ METHOD_MAKE_SHARED_MEMORY_SEGMENT,
++ DEPRECATED_METHOD_MATCH_WITH_FALLBACK,
++ };
++
++ // These form a bitmask which describes the conditions of the Linux sandbox.
++ // Note: this doesn't strictly give you the current status, it states
++ // what will be enabled when the relevant processes are initialized.
++ enum Status {
++ // SUID sandbox active.
++ kSUID = 1 << 0,
++
++ // Sandbox is using a new PID namespace.
++ kPIDNS = 1 << 1,
++
++ // Sandbox is using a new network namespace.
++ kNetNS = 1 << 2,
++
++ // seccomp-bpf sandbox active.
++ kSeccompBPF = 1 << 3,
++
++ // The Yama LSM module is present and enforcing.
++ kYama = 1 << 4,
++
++ // seccomp-bpf sandbox is active and the kernel supports TSYNC.
++ kSeccompTSYNC = 1 << 5,
++
++ // User namespace sandbox active.
++ kUserNS = 1 << 6,
++
++ // A flag that denotes an invalid sandbox status.
++ kInvalid = 1 << 31,
++ };
++
++ // SandboxLinux Options are a superset of SandboxSecompBPF Options.
++ struct Options : public SandboxSeccompBPF::Options {
++ // When running with a zygote, the namespace sandbox will have already
++ // been engaged prior to initializing SandboxLinux itself, and need not
++ // be done so again. Set to true to indicate that there isn't a zygote
++ // for this process and the step is to be performed here explicitly.
++ bool engage_namespace_sandbox = false;
++
++ // Allow starting the sandbox with multiple threads already running. This
++ // will enable TSYNC for seccomp-BPF, which syncs the seccomp-BPF policy
++ // across all running threads.
++ bool allow_threads_during_sandbox_init = false;
++
++ // Enables the CHECK for open directories. The open directory check is only
++ // useful for the chroot jail (from the semantic layer of the sandbox), and
++ // can safely be disabled if we are only enabling the seccomp-BPF layer.
++ bool check_for_open_directories = true;
++ };
++
++ // Callers can provide this hook to run code right before the policy
++ // is passed to the BPF compiler and the sandbox is engaged. If
++ // pre_sandbox_hook() returns true, the sandbox will be engaged
++ // afterwards, otherwise the process is terminated.
++ using PreSandboxHook = base::OnceCallback<bool(Options)>;
++
++ // Get our singleton instance.
++ static SandboxLinux* GetInstance();
++
++ SandboxLinux(const SandboxLinux&) = delete;
++ SandboxLinux& operator=(const SandboxLinux&) = delete;
++
++ bool SetPledge(const char *pstring, const char *ppath);
++ bool SetUnveil(const std::string process_type, sandbox::mojom::Sandbox sandbox_type);
++
++ // Do some initialization that can only be done before any of the sandboxes
++ // are enabled. If using the setuid sandbox, this should be called manually
++ // before the setuid sandbox is engaged.
++ // Security: When this runs, it is imperative that either InitializeSandbox()
++ // runs as well or that all file descriptors returned in
++ // GetFileDescriptorsToClose() get closed.
++ // Otherwise file descriptors that bypass the security of the setuid sandbox
++ // would be kept open. One must be particularly careful if a process performs
++ // a fork().
++ void PreinitializeSandbox(sandbox::mojom::Sandbox sandbox_type);
++
++ // Check that the current process is the init process of a new PID
++ // namespace and then proceed to drop access to the file system by using
++ // a new unprivileged namespace. This is a layer-1 sandbox.
++ // In order for this sandbox to be effective, it must be "sealed" by calling
++ // InitializeSandbox().
++ void EngageNamespaceSandbox(bool from_zygote);
++
++ // Return a list of file descriptors to close if PreinitializeSandbox() ran
++ // but InitializeSandbox() won't. Avoid using.
++ // TODO(jln): get rid of this hack.
++ std::vector<int> GetFileDescriptorsToClose();
++
++ // Seal an eventual layer-1 sandbox and initialize the layer-2 sandbox with
++ // an adequate policy depending on the process type and command line
++ // arguments.
++ // Currently the layer-2 sandbox is composed of seccomp-bpf and address space
++ // limitations.
++ // This function should only be called without any thread running.
++ bool InitializeSandbox(sandbox::mojom::Sandbox sandbox_type,
++ PreSandboxHook hook,
++ const Options& options);
++
++ // Stop |thread| in a way that can be trusted by the sandbox.
++ void StopThread(base::Thread* thread);
++
++ // Returns the status of the renderer, worker and ppapi sandbox. Can only
++ // be queried after going through PreinitializeSandbox(). This is a bitmask
++ // and uses the constants defined in "enum Status" above. Since the
++ // status needs to be provided before the sandboxes are actually started,
++ // this returns what will actually happen once InitializeSandbox()
++ // is called from inside these processes.
++ int GetStatus();
++
++ static std::string GetSandboxTypeInEnglish(sandbox::mojom::Sandbox sandbox_type);
++
++ // Returns true if the current process is single-threaded or if the number
++ // of threads cannot be determined.
++ bool IsSingleThreaded() const;
++
++ // Returns true if we started Seccomp BPF.
++ bool seccomp_bpf_started() const;
++
++ // Check the policy and eventually start the seccomp-bpf sandbox. This should
++ // never be called with threads started. If we detect that threads have
++ // started we will crash.
++ bool StartSeccompBPF(sandbox::mojom::Sandbox sandbox_type,
++ PreSandboxHook hook,
++ const Options& options);
++
++ // Limit the address space of the current process (and its children) to make
++ // some vulnerabilities harder to exploit. Writes the errno due to setrlimit
++ // (including 0 if no error) into |error|.
++ bool LimitAddressSpace(int* error);
++
++ // Returns a file descriptor to proc. The file descriptor is no longer valid
++ // after the sandbox has been sealed.
++ int proc_fd() const {
++ DCHECK_NE(-1, proc_fd_);
++ return proc_fd_;
++ }
++
++#if BUILDFLAG(USING_SANITIZER)
++ __sanitizer_sandbox_arguments* sanitizer_args() const {
++ return sanitizer_args_.get();
++ };
++#endif
++
++ // A BrokerProcess is a helper that is started before the sandbox is engaged,
++ // typically from a pre-sandbox hook, that will serve requests to access
++ // files over an IPC channel. The client of this runs from a SIGSYS handler
++ // triggered by the seccomp-bpf sandbox.
++ // |client_sandbox_policy| is the policy being run by the client, and is
++ // used to derive the equivalent broker-side policy.
++ // |broker_side_hook| is an alternate pre-sandbox hook to be run before the
++ // broker itself gets sandboxed, to which the broker side policy and
++ // |options| are passed.
++ // Crashes the process if the broker can not be started since continuation
++ // is impossible (and presumably unsafe).
++ // This should never be destroyed, as after the sandbox is started it is
++ // vital to the process.
++#if 0
++ void StartBrokerProcess(
++ const sandbox::syscall_broker::BrokerCommandSet& allowed_command_set,
++ std::vector<sandbox::syscall_broker::BrokerFilePermission> permissions,
++ PreSandboxHook broker_side_hook,
++ const Options& options);
++
++ sandbox::syscall_broker::BrokerProcess* broker_process() const {
++ return broker_process_;
++ }
++#endif
++
++ private:
++ friend struct base::DefaultSingletonTraits<SandboxLinux>;
++
++ SandboxLinux();
++ ~SandboxLinux();
++
++ // We must have been pre_initialized_ before using these.
++ bool seccomp_bpf_supported() const;
++ bool seccomp_bpf_with_tsync_supported() const;
++
++ // Returns true if it can be determined that the current process has open
++ // directories that are not managed by the SandboxLinux class. This would
++ // be a vulnerability as it would allow to bypass the setuid sandbox.
++ bool HasOpenDirectories() const;
++
++ // The last part of the initialization is to make sure any temporary "hole"
++ // in the sandbox is closed. For now, this consists of closing proc_fd_.
++ void SealSandbox();
++
++ // GetStatus() makes promises as to how the sandbox will behave. This
++ // checks that no promises have been broken.
++ void CheckForBrokenPromises(sandbox::mojom::Sandbox sandbox_type);
++
++ // Stop |thread| and make sure it does not appear in /proc/self/tasks/
++ // anymore.
++ void StopThreadAndEnsureNotCounted(base::Thread* thread) const;
++
++ // A file descriptor to /proc. It's dangerous to have it around as it could
++ // allow for sandbox bypasses. It needs to be closed before we consider
++ // ourselves sandboxed.
++ int proc_fd_;
++
++ bool seccomp_bpf_started_;
++ // The value returned by GetStatus(). Gets computed once and then cached.
++ int sandbox_status_flags_;
++ // Did PreinitializeSandbox() run?
++ bool pre_initialized_;
++ bool seccomp_bpf_supported_; // Accurate if pre_initialized_.
++ bool seccomp_bpf_with_tsync_supported_; // Accurate if pre_initialized_.
++ bool yama_is_enforcing_; // Accurate if pre_initialized_.
++ bool initialize_sandbox_ran_; // InitializeSandbox() was called.
++#if BUILDFLAG(USING_SANITIZER)
++ std::unique_ptr<__sanitizer_sandbox_arguments> sanitizer_args_;
++#endif
++ sandbox::syscall_broker::BrokerProcess* broker_process_; // Leaked as global.
++};
++
++} // namespace policy
++} // namespace sandbox
++
++#endif // SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_
diff --git a/www/ungoogled-chromium/files/patch-sandbox_policy_mojom_sandbox.mojom b/www/ungoogled-chromium/files/patch-sandbox_policy_mojom_sandbox.mojom
new file mode 100644
index 000000000000..555d3741a197
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_policy_mojom_sandbox.mojom
@@ -0,0 +1,15 @@
+--- sandbox/policy/mojom/sandbox.mojom.orig 2022-10-01 07:40:07 UTC
++++ sandbox/policy/mojom/sandbox.mojom
+@@ -72,6 +72,12 @@ enum Sandbox {
+ [EnableIf=is_fuchsia]
+ kVideoCapture,
+
++ [EnableIf=is_openbsd]
++ kVideoCapture,
++
++ [EnableIf=is_freebsd]
++ kVideoCapture,
++
+ // Allows access to file contents and Windows APIs for parsing icons from PE
+ // files.
+ [EnableIf=is_win]
diff --git a/www/ungoogled-chromium/files/patch-sandbox_policy_openbsd_sandbox__openbsd.cc b/www/ungoogled-chromium/files/patch-sandbox_policy_openbsd_sandbox__openbsd.cc
new file mode 100644
index 000000000000..9861f34c7f73
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_policy_openbsd_sandbox__openbsd.cc
@@ -0,0 +1,416 @@
+--- sandbox/policy/openbsd/sandbox_openbsd.cc.orig 2022-10-01 07:40:07 UTC
++++ sandbox/policy/openbsd/sandbox_openbsd.cc
+@@ -0,0 +1,413 @@
++// Copyright (c) 2012 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 "sandbox/policy/openbsd/sandbox_openbsd.h"
++
++#include <dirent.h>
++#include <fcntl.h>
++#include <stdint.h>
++#include <sys/resource.h>
++#include <sys/stat.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#include <unistd.h>
++#include <util.h>
++
++#include <limits>
++#include <memory>
++#include <string>
++#include <vector>
++
++#include "base/bind.h"
++#include "base/callback_helpers.h"
++#include "base/command_line.h"
++#include "base/debug/stack_trace.h"
++#include "base/feature_list.h"
++#include "base/files/file_path.h"
++#include "base/files/file_util.h"
++#include "base/files/scoped_file.h"
++#include "base/logging.h"
++#include "base/memory/singleton.h"
++#include "base/path_service.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/strings/string_number_conversions.h"
++#include "base/system/sys_info.h"
++#include "base/threading/thread.h"
++#include "base/time/time.h"
++#include "build/build_config.h"
++#include "sandbox/constants.h"
++#include "sandbox/linux/services/credentials.h"
++#include "sandbox/linux/services/namespace_sandbox.h"
++#include "sandbox/linux/services/proc_util.h"
++#include "sandbox/linux/services/resource_limits.h"
++#include "sandbox/linux/services/thread_helpers.h"
++#include "sandbox/linux/syscall_broker/broker_command.h"
++#include "sandbox/linux/syscall_broker/broker_process.h"
++#include "sandbox/policy/sandbox.h"
++#include "sandbox/policy/sandbox_type.h"
++#include "sandbox/policy/mojom/sandbox.mojom.h"
++#include "sandbox/policy/switches.h"
++#include "sandbox/sandbox_buildflags.h"
++
++#if BUILDFLAG(USING_SANITIZER)
++#include <sanitizer/common_interface_defs.h>
++#endif
++
++#if defined(USE_NSS_CERTS)
++#include "crypto/nss_util.h"
++#endif
++
++#include "third_party/boringssl/src/include/openssl/crypto.h"
++
++#include "ui/gfx/x/connection.h"
++#include "ui/gfx/font_util.h"
++
++#include <X11/Xlib.h>
++
++#define MAXTOKENS 3
++
++#define _UNVEIL_MAIN "/etc/ungoogled-chromium/unveil.main";
++#define _UNVEIL_RENDERER "/etc/ungoogled-chromium/unveil.renderer";
++#define _UNVEIL_GPU "/etc/ungoogled-chromium/unveil.gpu";
++#define _UNVEIL_PLUGIN "/etc/ungoogled-chromium/unveil.plugin";
++#define _UNVEIL_UTILITY "/etc/ungoogled-chromium/unveil.utility";
++#define _UNVEIL_UTILITY_NETWORK "/etc/ungoogled-chromium/unveil.utility_network";
++#define _UNVEIL_UTILITY_AUDIO "/etc/ungoogled-chromium/unveil.utility_audio";
++#define _UNVEIL_UTILITY_VIDEO "/etc/ungoogled-chromium/unveil.utility_video";
++
++namespace sandbox {
++namespace policy {
++
++SandboxLinux::SandboxLinux()
++ : unveil_initialized_(false),
++ sandbox_status_flags_(kInvalid),
++ pre_initialized_(false),
++ initialize_sandbox_ran_(false),
++ broker_process_(nullptr) {
++}
++
++SandboxLinux::~SandboxLinux() {
++ if (pre_initialized_) {
++ CHECK(initialize_sandbox_ran_);
++ }
++}
++
++SandboxLinux* SandboxLinux::GetInstance() {
++ SandboxLinux* instance = base::Singleton<SandboxLinux>::get();
++ CHECK(instance);
++ return instance;
++}
++
++void SandboxLinux::StopThread(base::Thread* thread) {
++ DCHECK(thread);
++ thread->Stop();
++}
++
++void SandboxLinux::PreinitializeSandbox(sandbox::mojom::Sandbox sandbox_type) {
++ CHECK(!pre_initialized_);
++#if BUILDFLAG(USING_SANITIZER)
++ // Sanitizers need to open some resources before the sandbox is enabled.
++ // This should not fork, not launch threads, not open a directory.
++ __sanitizer_sandbox_on_notify(sanitizer_args());
++ sanitizer_args_.reset();
++#endif
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ const std::string process_type =
++ command_line->GetSwitchValueASCII(switches::kProcessType);
++
++ base::SysInfo::AmountOfPhysicalMemory();
++ base::SysInfo::NumberOfProcessors();
++ base::SysInfo::CPUModelName();
++
++#if defined(USE_NSS_CERTS)
++ // The main process has to initialize the ~/.pki dir which won't work
++ // after unveil(2).
++ if (process_type.empty())
++ crypto::EnsureNSSInit();
++#endif
++
++ if (process_type.empty())
++ CRYPTO_pre_sandbox_init();
++
++ // cache the XErrorDB by forcing a read on it
++ {
++ auto* connection = x11::Connection::Get();
++ auto* display = connection->GetXlibDisplay().display();
++
++ char buf[1];
++ XGetErrorDatabaseText(display, "XProtoError", "0", "", buf, std::size(buf));
++ }
++
++ if (process_type.empty()) {
++ base::FilePath cache_directory, local_directory;
++
++ base::PathService::Get(base::DIR_CACHE, &cache_directory);
++ base::PathService::Get(base::DIR_HOME, &local_directory);
++
++ cache_directory = cache_directory.AppendASCII("ungoogled-chromium");
++ local_directory = local_directory.AppendASCII(".local").AppendASCII("share").AppendASCII("applications");
++
++ if (!base::CreateDirectory(cache_directory)) {
++ LOG(ERROR) << "Failed to create " << cache_directory.value() << " directory.";
++ }
++
++ if (!base::CreateDirectory(local_directory)) {
++ LOG(ERROR) << "Failed to create " << local_directory.value() << " directory.";
++ }
++ }
++
++ if (process_type == switches::kRendererProcess)
++ gfx::InitializeFonts();
++
++ if (!command_line->HasSwitch(switches::kDisableUnveil))
++ SetUnveil(process_type, sandbox_type);
++
++ pre_initialized_ = true;
++}
++
++bool SandboxLinux::SetPledge(const char *pstring, const char *ppath) {
++ FILE *fp;
++ char *s = NULL;
++ size_t len = 0;
++ ssize_t read;
++
++ if (pstring != NULL) {
++ if (pledge(pstring, NULL) == -1)
++ goto err;
++ } else if (ppath != NULL) {
++ fp = fopen(ppath, "r");
++ if (fp != NULL) {
++ while ((read = getline(&s, &len, fp)) != -1 ) {
++ if (s[strlen(s)-1] == '\n')
++ s[strlen(s)-1] = '\0';
++ if (pledge(s, NULL) == -1)
++ goto err;
++ }
++ fclose(fp);
++ } else {
++ LOG(ERROR) << "fopen() failed, errno: " << errno;
++ return false;
++ }
++ }
++ return true;
++err:
++ LOG(ERROR) << "pledge() failed, errno: " << errno;
++ return false;
++}
++
++bool SandboxLinux::SetUnveil(const std::string process_type, sandbox::mojom::Sandbox sandbox_type) {
++ FILE *fp;
++ char *s = NULL, *cp = NULL, *home = NULL, **ap, *tokens[MAXTOKENS];
++ char path[PATH_MAX];
++ const char *ufile;
++ size_t len = 0, lineno = 0;
++
++ if (process_type.empty()) {
++ ufile = _UNVEIL_MAIN;
++ } else if (process_type == switches::kRendererProcess) {
++ ufile = _UNVEIL_RENDERER;
++ } else if (process_type == switches::kGpuProcess) {
++ ufile = _UNVEIL_GPU;
++ } else if (process_type == switches::kPpapiPluginProcess) {
++ ufile = _UNVEIL_PLUGIN;
++ } else if (process_type == switches::kUtilityProcess) {
++ if (sandbox_type == sandbox::mojom::Sandbox::kNetwork) {
++ ufile = _UNVEIL_UTILITY_NETWORK;
++ } else if (sandbox_type == sandbox::mojom::Sandbox::kAudio) {
++ ufile = _UNVEIL_UTILITY_AUDIO;
++ } else if (sandbox_type == sandbox::mojom::Sandbox::kVideoCapture) {
++ ufile = _UNVEIL_UTILITY_VIDEO;
++ } else {
++ ufile = _UNVEIL_UTILITY;
++ }
++ }
++
++ fp = fopen(ufile, "r");
++ if (fp != NULL) {
++ while (!feof(fp)) {
++ if ((s = fparseln(fp, &len, &lineno, NULL,
++ FPARSELN_UNESCCOMM | FPARSELN_UNESCCONT)) == NULL) {
++ if (ferror(fp)) {
++ LOG(ERROR) << "ferror(), errno: " << errno;
++ _exit(1);
++ } else {
++ continue;
++ }
++ }
++ cp = s;
++ cp += strspn(cp, " \t\n"); /* eat whitespace */
++ if (cp[0] == '\0')
++ continue;
++
++ for (ap = tokens; ap < &tokens[MAXTOKENS - 1] &&
++ (*ap = strsep(&cp, " \t")) != NULL;) {
++ if (**ap != '\0')
++ ap++;
++ }
++ *ap = NULL;
++
++ if (tokens[1] == NULL) {
++ LOG(ERROR) << ufile << ": line " << lineno << ": must supply value to " << s;
++ _exit(1);
++ }
++
++ if (tokens[0][0] == '~') {
++ if ((home = getenv("HOME")) == NULL || *home == '\0') {
++ LOG(ERROR) << "failed to get home";
++ _exit(1);
++ }
++ memmove(tokens[0], tokens[0] + 1, strlen(tokens[0]));
++ strncpy(path, home, sizeof(path) - 1);
++ path[sizeof(path) - 1] = '\0';
++ strncat(path, tokens[0], sizeof(path) - 1 - strlen(path));
++ } else {
++ strncpy(path, tokens[0], sizeof(path) - 1);
++ path[sizeof(path) - 1] = '\0';
++ }
++
++ if (unveil(path, tokens[1]) == -1) {
++ LOG(ERROR) << "failed unveiling " << path << " with permissions " << tokens[1];
++ _exit(1);
++ } else {
++ VLOG(1) << "unveiling " << path << " with permissions " << tokens[1];
++ }
++ }
++ fclose(fp);
++ } else {
++ LOG(ERROR) << "failed to open " << ufile << " errno: " << errno;
++ _exit(1);
++ }
++
++ unveil_initialized_ = true;
++
++ return true;
++}
++
++bool SandboxLinux::unveil_initialized() const {
++ return unveil_initialized_;
++}
++
++bool SandboxLinux::InitializeSandbox(sandbox::mojom::Sandbox sandbox_type,
++ SandboxLinux::PreSandboxHook hook,
++ const Options& options) {
++ DCHECK(!initialize_sandbox_ran_);
++ initialize_sandbox_ran_ = true;
++
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ const std::string process_type =
++ command_line->GetSwitchValueASCII(switches::kProcessType);
++
++ if (command_line->HasSwitch(switches::kNoSandbox))
++ return true;
++
++ VLOG(1) << "SandboxLinux::InitializeSandbox: process_type="
++ << process_type << " sandbox_type=" << GetSandboxTypeInEnglish(sandbox_type);
++
++ // Only one thread is running, pre-initialize if not already done.
++ if (!pre_initialized_)
++ PreinitializeSandbox(sandbox_type);
++
++ // Attempt to limit the future size of the address space of the process.
++ int error = 0;
++ const bool limited_as = LimitAddressSpace(&error);
++ if (error) {
++ // Restore errno. Internally to |LimitAddressSpace|, the errno due to
++ // setrlimit may be lost.
++ errno = error;
++ PCHECK(limited_as);
++ }
++
++ if (process_type.empty()) {
++ // XXX use a file for listing pledges of the main process for now
++ // XXX not having the file is not a fatal error
++ SetPledge(NULL, "/etc/ungoogled-chromium/pledge.main");
++ } else if (process_type == switches::kRendererProcess) {
++ // prot_exec needed by v8
++ // flock needed by sqlite3 locking
++ SetPledge("stdio rpath flock prot_exec recvfd sendfd ps", NULL);
++ } else if (process_type == switches::kGpuProcess) {
++ SetPledge("stdio rpath cpath wpath getpw drm prot_exec recvfd sendfd tmppath", NULL);
++ } else if (process_type == switches::kPpapiPluginProcess) {
++ // prot_exec needed by v8
++ SetPledge("stdio rpath prot_exec recvfd sendfd", NULL);
++ } else if (process_type == switches::kUtilityProcess) {
++ if (sandbox_type == sandbox::mojom::Sandbox::kAudio)
++ SetPledge(NULL, "/etc/ungoogled-chromium/pledge.utility_audio");
++ else if (sandbox_type == sandbox::mojom::Sandbox::kNetwork)
++ SetPledge(NULL, "/etc/ungoogled-chromium/pledge.utility_network");
++ else if (sandbox_type == sandbox::mojom::Sandbox::kVideoCapture)
++ SetPledge(NULL, "/etc/ungoogled-chromium/pledge.utility_video");
++ else
++ SetPledge("stdio rpath cpath wpath fattr flock sendfd recvfd prot_exec", NULL);
++ } else {
++ LOG(ERROR) << "non-pledge()'d process: " << process_type;
++ return false;
++ }
++
++ return true;
++}
++
++bool SandboxLinux::LimitAddressSpace(int* error) {
++#if !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) && \
++ !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER)
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ if (SandboxTypeFromCommandLine(*command_line) == sandbox::mojom::Sandbox::kNoSandbox) {
++ return false;
++ }
++
++ // Unfortunately, it does not appear possible to set RLIMIT_AS such that it
++ // will both (a) be high enough to support V8's and WebAssembly's address
++ // space requirements while also (b) being low enough to mitigate exploits
++ // using integer overflows that require large allocations, heap spray, or
++ // other memory-hungry attack modes.
++
++ *error = sandbox::ResourceLimits::Lower(
++ RLIMIT_DATA, static_cast<rlim_t>(sandbox::kDataSizeLimit));
++
++ // Cache the resource limit before turning on the sandbox.
++ base::SysInfo::AmountOfVirtualMemory();
++ base::SysInfo::MaxSharedMemorySize();
++
++ return *error == 0;
++#else
++ base::SysInfo::AmountOfVirtualMemory();
++ return false;
++#endif // !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) &&
++ // !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER)
++}
++
++// static
++std::string SandboxLinux::GetSandboxTypeInEnglish(sandbox::mojom::Sandbox sandbox_type) {
++ switch (sandbox_type) {
++ case sandbox::mojom::Sandbox::kNoSandbox:
++ return "Unsandboxed";
++ case sandbox::mojom::Sandbox::kRenderer:
++ return "Renderer";
++ case sandbox::mojom::Sandbox::kUtility:
++ return "Utility";
++ case sandbox::mojom::Sandbox::kGpu:
++ return "GPU";
++ case sandbox::mojom::Sandbox::kPpapi:
++ return "PPAPI";
++ case sandbox::mojom::Sandbox::kNetwork:
++ return "Network";
++ case sandbox::mojom::Sandbox::kCdm:
++ return "CDM";
++ case sandbox::mojom::Sandbox::kPrintCompositor:
++ return "Print Compositor";
++ case sandbox::mojom::Sandbox::kAudio:
++ return "Audio";
++ case sandbox::mojom::Sandbox::kSpeechRecognition:
++ return "Speech Recognition";
++ case sandbox::mojom::Sandbox::kService:
++ return "Service";
++ case sandbox::mojom::Sandbox::kVideoCapture:
++ return "Video Capture";
++ default:
++ return "Unknown";
++ }
++}
++
++} // namespace policy
++} // namespace sandbox
diff --git a/www/ungoogled-chromium/files/patch-sandbox_policy_openbsd_sandbox__openbsd.h b/www/ungoogled-chromium/files/patch-sandbox_policy_openbsd_sandbox__openbsd.h
new file mode 100644
index 000000000000..d167f3f73eec
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_policy_openbsd_sandbox__openbsd.h
@@ -0,0 +1,285 @@
+--- sandbox/policy/openbsd/sandbox_openbsd.h.orig 2022-10-01 07:40:07 UTC
++++ sandbox/policy/openbsd/sandbox_openbsd.h
+@@ -0,0 +1,282 @@
++// Copyright (c) 2012 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.
++#ifndef SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_
++#define SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_
++
++#include <memory>
++#include <string>
++#include <vector>
++
++#include "base/logging.h"
++#include "base/posix/global_descriptors.h"
++#include "sandbox/policy/export.h"
++#include "sandbox/policy/linux/sandbox_seccomp_bpf_linux.h"
++#include "sandbox/policy/mojom/sandbox.mojom.h"
++#include "sandbox/policy/sanitizer_buildflags.h"
++
++#if BUILDFLAG(USING_SANITIZER)
++#include <sanitizer/common_interface_defs.h>
++#endif
++
++namespace base {
++template <typename T>
++struct DefaultSingletonTraits;
++class Thread;
++} // namespace base
++
++namespace sandbox {
++namespace syscall_broker {
++class BrokerProcess;
++} // namespace syscall_broker
++} // namespace sandbox
++
++namespace sandbox {
++namespace policy {
++
++// A singleton class to represent and change our sandboxing state for the
++// three main Linux sandboxes.
++// The sandboxing model allows using two layers of sandboxing. The first layer
++// can be implemented either with unprivileged namespaces or with the setuid
++// sandbox. This class provides a way to engage the namespace sandbox, but does
++// not deal with the legacy setuid sandbox directly.
++// The second layer is mainly based on seccomp-bpf and is engaged with
++// InitializeSandbox(). InitializeSandbox() is also responsible for "sealing"
++// the first layer of sandboxing. That is, InitializeSandbox must always be
++// called to have any meaningful sandboxing at all.
++class SANDBOX_POLICY_EXPORT SandboxLinux {
++ public:
++ // This is a list of sandbox IPC methods which the renderer may send to the
++ // sandbox host. See
++ // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_sandbox_ipc.md
++ // This isn't the full list, values < 32 are reserved for methods called from
++ // Skia, and values < 64 are reserved for libc_interceptor.cc.
++ enum LinuxSandboxIPCMethods {
++ DEPRECATED_METHOD_GET_FALLBACK_FONT_FOR_CHAR = 64,
++ DEPRECATED_METHOD_GET_CHILD_WITH_INODE,
++ DEPRECATED_METHOD_GET_STYLE_FOR_STRIKE,
++ METHOD_MAKE_SHARED_MEMORY_SEGMENT,
++ DEPRECATED_METHOD_MATCH_WITH_FALLBACK,
++ };
++
++ // These form a bitmask which describes the conditions of the Linux sandbox.
++ // Note: this doesn't strictly give you the current status, it states
++ // what will be enabled when the relevant processes are initialized.
++ enum Status {
++ // SUID sandbox active.
++ kSUID = 1 << 0,
++
++ // Sandbox is using a new PID namespace.
++ kPIDNS = 1 << 1,
++
++ // Sandbox is using a new network namespace.
++ kNetNS = 1 << 2,
++
++ // seccomp-bpf sandbox active.
++ kSeccompBPF = 1 << 3,
++
++ // The Yama LSM module is present and enforcing.
++ kYama = 1 << 4,
++
++ // seccomp-bpf sandbox is active and the kernel supports TSYNC.
++ kSeccompTSYNC = 1 << 5,
++
++ // User namespace sandbox active.
++ kUserNS = 1 << 6,
++
++ // A flag that denotes an invalid sandbox status.
++ kInvalid = 1 << 31,
++ };
++
++ // SandboxLinux Options are a superset of SandboxSecompBPF Options.
++ struct Options : public SandboxSeccompBPF::Options {
++ // When running with a zygote, the namespace sandbox will have already
++ // been engaged prior to initializing SandboxLinux itself, and need not
++ // be done so again. Set to true to indicate that there isn't a zygote
++ // for this process and the step is to be performed here explicitly.
++ bool engage_namespace_sandbox = false;
++
++ // Allow starting the sandbox with multiple threads already running. This
++ // will enable TSYNC for seccomp-BPF, which syncs the seccomp-BPF policy
++ // across all running threads.
++ bool allow_threads_during_sandbox_init = false;
++
++ // Enables the CHECK for open directories. The open directory check is only
++ // useful for the chroot jail (from the semantic layer of the sandbox), and
++ // can safely be disabled if we are only enabling the seccomp-BPF layer.
++ bool check_for_open_directories = true;
++ };
++
++ // Callers can provide this hook to run code right before the policy
++ // is passed to the BPF compiler and the sandbox is engaged. If
++ // pre_sandbox_hook() returns true, the sandbox will be engaged
++ // afterwards, otherwise the process is terminated.
++ using PreSandboxHook = base::OnceCallback<bool(Options)>;
++
++ // Get our singleton instance.
++ static SandboxLinux* GetInstance();
++
++ SandboxLinux(const SandboxLinux&) = delete;
++ SandboxLinux& operator=(const SandboxLinux&) = delete;
++
++ bool SetPledge(const char *pstring, const char *ppath);
++ bool SetUnveil(const std::string process_type, sandbox::mojom::Sandbox sandbox_type);
++
++ // Do some initialization that can only be done before any of the sandboxes
++ // are enabled. If using the setuid sandbox, this should be called manually
++ // before the setuid sandbox is engaged.
++ // Security: When this runs, it is imperative that either InitializeSandbox()
++ // runs as well or that all file descriptors returned in
++ // GetFileDescriptorsToClose() get closed.
++ // Otherwise file descriptors that bypass the security of the setuid sandbox
++ // would be kept open. One must be particularly careful if a process performs
++ // a fork().
++ void PreinitializeSandbox(sandbox::mojom::Sandbox sandbox_type);
++
++ // Check that the current process is the init process of a new PID
++ // namespace and then proceed to drop access to the file system by using
++ // a new unprivileged namespace. This is a layer-1 sandbox.
++ // In order for this sandbox to be effective, it must be "sealed" by calling
++ // InitializeSandbox().
++ void EngageNamespaceSandbox(bool from_zygote);
++
++ // Return a list of file descriptors to close if PreinitializeSandbox() ran
++ // but InitializeSandbox() won't. Avoid using.
++ // TODO(jln): get rid of this hack.
++ std::vector<int> GetFileDescriptorsToClose();
++
++ // Seal an eventual layer-1 sandbox and initialize the layer-2 sandbox with
++ // an adequate policy depending on the process type and command line
++ // arguments.
++ // Currently the layer-2 sandbox is composed of seccomp-bpf and address space
++ // limitations.
++ // This function should only be called without any thread running.
++ bool InitializeSandbox(sandbox::mojom::Sandbox sandbox_type,
++ PreSandboxHook hook,
++ const Options& options);
++
++ // Stop |thread| in a way that can be trusted by the sandbox.
++ void StopThread(base::Thread* thread);
++
++ // Returns the status of the renderer, worker and ppapi sandbox. Can only
++ // be queried after going through PreinitializeSandbox(). This is a bitmask
++ // and uses the constants defined in "enum Status" above. Since the
++ // status needs to be provided before the sandboxes are actually started,
++ // this returns what will actually happen once InitializeSandbox()
++ // is called from inside these processes.
++ int GetStatus();
++
++ static std::string GetSandboxTypeInEnglish(sandbox::mojom::Sandbox sandbox_type);
++
++ // Returns true if the current process is single-threaded or if the number
++ // of threads cannot be determined.
++ bool IsSingleThreaded() const;
++
++ // Returns true if we started Seccomp BPF.
++ bool seccomp_bpf_started() const;
++
++ // Returns true if unveil(2) is used.
++ bool unveil_initialized() const;
++
++ // Check the policy and eventually start the seccomp-bpf sandbox. This should
++ // never be called with threads started. If we detect that threads have
++ // started we will crash.
++ bool StartSeccompBPF(sandbox::mojom::Sandbox sandbox_type,
++ PreSandboxHook hook,
++ const Options& options);
++
++ // Limit the address space of the current process (and its children) to make
++ // some vulnerabilities harder to exploit. Writes the errno due to setrlimit
++ // (including 0 if no error) into |error|.
++ bool LimitAddressSpace(int* error);
++
++ // Returns a file descriptor to proc. The file descriptor is no longer valid
++ // after the sandbox has been sealed.
++ int proc_fd() const {
++ DCHECK_NE(-1, proc_fd_);
++ return proc_fd_;
++ }
++
++#if BUILDFLAG(USING_SANITIZER)
++ __sanitizer_sandbox_arguments* sanitizer_args() const {
++ return sanitizer_args_.get();
++ };
++#endif
++
++ // A BrokerProcess is a helper that is started before the sandbox is engaged,
++ // typically from a pre-sandbox hook, that will serve requests to access
++ // files over an IPC channel. The client of this runs from a SIGSYS handler
++ // triggered by the seccomp-bpf sandbox.
++ // |client_sandbox_policy| is the policy being run by the client, and is
++ // used to derive the equivalent broker-side policy.
++ // |broker_side_hook| is an alternate pre-sandbox hook to be run before the
++ // broker itself gets sandboxed, to which the broker side policy and
++ // |options| are passed.
++ // Crashes the process if the broker can not be started since continuation
++ // is impossible (and presumably unsafe).
++ // This should never be destroyed, as after the sandbox is started it is
++ // vital to the process.
++#if 0
++ void StartBrokerProcess(
++ const sandbox::syscall_broker::BrokerCommandSet& allowed_command_set,
++ std::vector<sandbox::syscall_broker::BrokerFilePermission> permissions,
++ PreSandboxHook broker_side_hook,
++ const Options& options);
++
++ sandbox::syscall_broker::BrokerProcess* broker_process() const {
++ return broker_process_;
++ }
++#endif
++
++ private:
++ friend struct base::DefaultSingletonTraits<SandboxLinux>;
++
++ SandboxLinux();
++ ~SandboxLinux();
++
++ // We must have been pre_initialized_ before using these.
++ bool seccomp_bpf_supported() const;
++ bool seccomp_bpf_with_tsync_supported() const;
++
++ // Returns true if it can be determined that the current process has open
++ // directories that are not managed by the SandboxLinux class. This would
++ // be a vulnerability as it would allow to bypass the setuid sandbox.
++ bool HasOpenDirectories() const;
++
++ // The last part of the initialization is to make sure any temporary "hole"
++ // in the sandbox is closed. For now, this consists of closing proc_fd_.
++ void SealSandbox();
++
++ // GetStatus() makes promises as to how the sandbox will behave. This
++ // checks that no promises have been broken.
++ void CheckForBrokenPromises(sandbox::mojom::Sandbox sandbox_type);
++
++ // Stop |thread| and make sure it does not appear in /proc/self/tasks/
++ // anymore.
++ void StopThreadAndEnsureNotCounted(base::Thread* thread) const;
++
++ // A file descriptor to /proc. It's dangerous to have it around as it could
++ // allow for sandbox bypasses. It needs to be closed before we consider
++ // ourselves sandboxed.
++ int proc_fd_;
++
++ bool seccomp_bpf_started_;
++ bool unveil_initialized_;
++ // The value returned by GetStatus(). Gets computed once and then cached.
++ int sandbox_status_flags_;
++ // Did PreinitializeSandbox() run?
++ bool pre_initialized_;
++ bool seccomp_bpf_supported_; // Accurate if pre_initialized_.
++ bool seccomp_bpf_with_tsync_supported_; // Accurate if pre_initialized_.
++ bool yama_is_enforcing_; // Accurate if pre_initialized_.
++ bool initialize_sandbox_ran_; // InitializeSandbox() was called.
++#if BUILDFLAG(USING_SANITIZER)
++ std::unique_ptr<__sanitizer_sandbox_arguments> sanitizer_args_;
++#endif
++ sandbox::syscall_broker::BrokerProcess* broker_process_; // Leaked as global.
++};
++
++} // namespace policy
++} // namespace sandbox
++
++#endif // SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_
diff --git a/www/ungoogled-chromium/files/patch-sandbox_policy_sandbox.cc b/www/ungoogled-chromium/files/patch-sandbox_policy_sandbox.cc
new file mode 100644
index 000000000000..85211cbee8d2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_policy_sandbox.cc
@@ -0,0 +1,22 @@
+--- sandbox/policy/sandbox.cc.orig 2022-10-01 07:40:07 UTC
++++ sandbox/policy/sandbox.cc
+@@ -17,6 +17,10 @@
+ #include "sandbox/policy/linux/sandbox_linux.h"
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
++#if BUILDFLAG(IS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#endif // BUILDFLAG(IS_BSD)
++
+ #if BUILDFLAG(IS_MAC)
+ #include "sandbox/mac/seatbelt.h"
+ #endif // BUILDFLAG(IS_MAC)
+@@ -30,7 +34,7 @@
+ namespace sandbox {
+ namespace policy {
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ bool Sandbox::Initialize(sandbox::mojom::Sandbox sandbox_type,
+ SandboxLinux::PreSandboxHook hook,
+ const SandboxLinux::Options& options) {
diff --git a/www/ungoogled-chromium/files/patch-sandbox_policy_sandbox.h b/www/ungoogled-chromium/files/patch-sandbox_policy_sandbox.h
new file mode 100644
index 000000000000..c07461683129
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_policy_sandbox.h
@@ -0,0 +1,22 @@
+--- sandbox/policy/sandbox.h.orig 2022-10-01 07:40:07 UTC
++++ sandbox/policy/sandbox.h
+@@ -12,6 +12,10 @@
+ #include "sandbox/policy/linux/sandbox_linux.h"
+ #endif
+
++#if BUILDFLAG(IS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#endif
++
+ namespace sandbox {
+ namespace mojom {
+ enum class Sandbox;
+@@ -32,7 +36,7 @@ namespace policy {
+
+ class SANDBOX_POLICY_EXPORT Sandbox {
+ public:
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ static bool Initialize(sandbox::mojom::Sandbox sandbox_type,
+ SandboxLinux::PreSandboxHook hook,
+ const SandboxLinux::Options& options);
diff --git a/www/ungoogled-chromium/files/patch-sandbox_policy_sandbox__type.cc b/www/ungoogled-chromium/files/patch-sandbox_policy_sandbox__type.cc
new file mode 100644
index 000000000000..1ad9d3b800d3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_policy_sandbox__type.cc
@@ -0,0 +1,70 @@
+--- sandbox/policy/sandbox_type.cc.orig 2022-10-01 07:40:07 UTC
++++ sandbox/policy/sandbox_type.cc
+@@ -39,7 +39,7 @@ bool IsUnsandboxedSandboxType(Sandbox sandbox_type) {
+ #endif
+ case Sandbox::kAudio:
+ return false;
+-#if BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ case Sandbox::kVideoCapture:
+ return false;
+ #endif
+@@ -62,7 +62,7 @@ bool IsUnsandboxedSandboxType(Sandbox sandbox_type) {
+ case Sandbox::kMirroring:
+ case Sandbox::kNaClLoader:
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ case Sandbox::kHardwareVideoDecoding:
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -127,7 +127,7 @@ void SetCommandLineFlagsForSandboxType(base::CommandLi
+ #endif
+ case Sandbox::kPrintCompositor:
+ case Sandbox::kAudio:
+-#if BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ case Sandbox::kVideoCapture:
+ #endif
+ #if BUILDFLAG(IS_WIN)
+@@ -138,7 +138,7 @@ void SetCommandLineFlagsForSandboxType(base::CommandLi
+ case Sandbox::kMediaFoundationCdm:
+ case Sandbox::kWindowsSystemProxyResolver:
+ #endif // BUILDFLAG(IS_WIN)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ case Sandbox::kHardwareVideoDecoding:
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -257,7 +257,7 @@ std::string StringFromUtilitySandboxType(Sandbox sandb
+ return switches::kUtilitySandbox;
+ case Sandbox::kAudio:
+ return switches::kAudioSandbox;
+-#if BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ case Sandbox::kVideoCapture:
+ return switches::kVideoCaptureSandbox;
+ #endif
+@@ -287,7 +287,7 @@ std::string StringFromUtilitySandboxType(Sandbox sandb
+ case Sandbox::kMirroring:
+ return switches::kMirroringSandbox;
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ case Sandbox::kHardwareVideoDecoding:
+ return switches::kHardwareVideoDecodingSandbox;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -375,11 +375,11 @@ sandbox::mojom::Sandbox UtilitySandboxTypeFromString(
+ if (sandbox_string == switches::kScreenAISandbox)
+ return Sandbox::kScreenAI;
+ #endif
+-#if BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ if (sandbox_string == switches::kVideoCaptureSandbox)
+ return Sandbox::kVideoCapture;
+ #endif
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ if (sandbox_string == switches::kHardwareVideoDecodingSandbox)
+ return Sandbox::kHardwareVideoDecoding;
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/www/ungoogled-chromium/files/patch-sandbox_policy_switches.cc b/www/ungoogled-chromium/files/patch-sandbox_policy_switches.cc
new file mode 100644
index 000000000000..9b83c3f0c315
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_policy_switches.cc
@@ -0,0 +1,22 @@
+--- sandbox/policy/switches.cc.orig 2022-10-01 07:40:07 UTC
++++ sandbox/policy/switches.cc
+@@ -54,7 +54,7 @@ const char kWindowsSystemProxyResolverSandbox[] = "pro
+ const char kMirroringSandbox[] = "mirroring";
+ #endif // BUILDFLAG(IS_MAC)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ const char kHardwareVideoDecodingSandbox[] = "hardware_video_decoding";
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
+
+@@ -101,7 +101,9 @@ const char kGpuSandboxFailuresFatal[] = "gpu-sandbox-f
+ // Meant to be used as a browser-level switch for testing purposes only.
+ const char kNoSandbox[] = "no-sandbox";
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++const char kDisableUnveil[] = "disable-unveil";
++
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Instructs the zygote to launch without a sandbox. Processes forked from this
+ // type of zygote will apply their own custom sandboxes later.
+ const char kNoZygoteSandbox[] = "no-zygote-sandbox";
diff --git a/www/ungoogled-chromium/files/patch-sandbox_policy_switches.h b/www/ungoogled-chromium/files/patch-sandbox_policy_switches.h
new file mode 100644
index 000000000000..7535e4a67390
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-sandbox_policy_switches.h
@@ -0,0 +1,21 @@
+--- sandbox/policy/switches.h.orig 2022-10-01 07:40:07 UTC
++++ sandbox/policy/switches.h
+@@ -56,7 +56,7 @@ SANDBOX_POLICY_EXPORT extern const char kWindowsSystem
+ SANDBOX_POLICY_EXPORT extern const char kMirroringSandbox[];
+ #endif // BUILDFLAG(IS_MAC)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)
+ SANDBOX_POLICY_EXPORT extern const char kHardwareVideoDecodingSandbox[];
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
+
+@@ -78,7 +78,8 @@ SANDBOX_POLICY_EXPORT extern const char kDisableSetuid
+ SANDBOX_POLICY_EXPORT extern const char kGpuSandboxAllowSysVShm[];
+ SANDBOX_POLICY_EXPORT extern const char kGpuSandboxFailuresFatal[];
+ SANDBOX_POLICY_EXPORT extern const char kNoSandbox[];
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++SANDBOX_POLICY_EXPORT extern const char kDisableUnveil[];
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ SANDBOX_POLICY_EXPORT extern const char kNoZygoteSandbox[];
+ #endif
+ #if BUILDFLAG(IS_WIN)
diff --git a/www/ungoogled-chromium/files/patch-services_audio_audio__sandbox__hook__linux.cc b/www/ungoogled-chromium/files/patch-services_audio_audio__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..9b0dbc7bf4fe
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_audio_audio__sandbox__hook__linux.cc
@@ -0,0 +1,31 @@
+--- services/audio/audio_sandbox_hook_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ services/audio/audio_sandbox_hook_linux.cc
+@@ -143,6 +143,7 @@ void AddPulseAudioFilePermissions(
+ }
+ #endif
+
++#if !defined(OS_BSD)
+ std::vector<BrokerFilePermission> GetAudioFilePermissions() {
+ std::vector<BrokerFilePermission> permissions{
+ BrokerFilePermission::ReadOnly("/dev/urandom"),
+@@ -171,10 +172,12 @@ void LoadAudioLibraries() {
+ }
+ }
+ }
++#endif
+
+ } // namespace
+
+ bool AudioPreSandboxHook(sandbox::policy::SandboxLinux::Options options) {
++#if !defined(OS_BSD)
+ LoadAudioLibraries();
+ auto* instance = sandbox::policy::SandboxLinux::GetInstance();
+ instance->StartBrokerProcess(MakeBrokerCommandSet({
+@@ -194,6 +197,7 @@ bool AudioPreSandboxHook(sandbox::policy::SandboxLinux
+ // TODO(https://crbug.com/850878) enable namespace sandbox. Currently, if
+ // enabled, connect() on pulse native socket fails with ENOENT (called from
+ // pa_context_connect).
++#endif
+
+ return true;
+ }
diff --git a/www/ungoogled-chromium/files/patch-services_audio_audio__sandbox__hook__linux.h b/www/ungoogled-chromium/files/patch-services_audio_audio__sandbox__hook__linux.h
new file mode 100644
index 000000000000..2ec0dba49476
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_audio_audio__sandbox__hook__linux.h
@@ -0,0 +1,14 @@
+--- services/audio/audio_sandbox_hook_linux.h.orig 2022-10-01 07:40:07 UTC
++++ services/audio/audio_sandbox_hook_linux.h
+@@ -5,7 +5,11 @@
+ #ifndef SERVICES_AUDIO_AUDIO_SANDBOX_HOOK_LINUX_H_
+ #define SERVICES_AUDIO_AUDIO_SANDBOX_HOOK_LINUX_H_
+
++#if defined(OS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#else
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+
+ namespace audio {
+
diff --git a/www/ungoogled-chromium/files/patch-services_cert__verifier_cert__verifier__creation.cc b/www/ungoogled-chromium/files/patch-services_cert__verifier_cert__verifier__creation.cc
new file mode 100644
index 000000000000..55c6a696991f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_cert__verifier_cert__verifier__creation.cc
@@ -0,0 +1,28 @@
+--- services/cert_verifier/cert_verifier_creation.cc.orig 2022-10-01 07:40:07 UTC
++++ services/cert_verifier/cert_verifier_creation.cc
+@@ -12,7 +12,7 @@
+ #include "net/cert_net/cert_net_fetcher_url_request.h"
+ #include "net/net_buildflags.h"
+
+-#if BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED) || \
++#if BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED) || BUILDFLAG(IS_BSD) || \
+ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+ #include "net/cert/cert_verify_proc_builtin.h"
+ #include "net/cert/internal/system_trust_store.h"
+@@ -119,7 +119,7 @@ class OldDefaultCertVerifyProcFactory : public net::Ce
+ user_slot_restriction_ ? crypto::ScopedPK11Slot(PK11_ReferenceSlot(
+ user_slot_restriction_.get()))
+ : nullptr));
+-#elif BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ verify_proc = net::CreateCertVerifyProcBuiltin(
+ std::move(cert_net_fetcher), net::CreateSslSystemTrustStore());
+ #else
+@@ -294,6 +294,7 @@ bool IsUsingChromeRootStore(
+ bool IsUsingCertNetFetcher() {
+ #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || \
+ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || \
++ BUILDFLAG(IS_BSD) || \
+ BUILDFLAG(TRIAL_COMPARISON_CERT_VERIFIER_SUPPORTED) || \
+ BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED) || \
+ BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED)
diff --git a/www/ungoogled-chromium/files/patch-services_device_compute__pressure_cpu__probe.cc b/www/ungoogled-chromium/files/patch-services_device_compute__pressure_cpu__probe.cc
new file mode 100644
index 000000000000..bb3daf60b92f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_compute__pressure_cpu__probe.cc
@@ -0,0 +1,10 @@
+--- services/device/compute_pressure/cpu_probe.cc.orig 2022-10-01 07:40:07 UTC
++++ services/device/compute_pressure/cpu_probe.cc
+@@ -63,6 +63,7 @@ std::unique_ptr<CpuProbe> CpuProbe::Create() {
+ #elif BUILDFLAG(IS_MAC)
+ return CpuProbeMac::Create();
+ #else
++ NOTIMPLEMENTED();
+ return std::make_unique<NullCpuProbe>();
+ #endif // BUILDFLAG(IS_ANDROID)
+ }
diff --git a/www/ungoogled-chromium/files/patch-services_device_geolocation_location__arbitrator.cc b/www/ungoogled-chromium/files/patch-services_device_geolocation_location__arbitrator.cc
new file mode 100644
index 000000000000..5e388fd6e4a5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_geolocation_location__arbitrator.cc
@@ -0,0 +1,11 @@
+--- services/device/geolocation/location_arbitrator.cc.orig 2022-10-01 07:40:07 UTC
++++ services/device/geolocation/location_arbitrator.cc
+@@ -161,7 +161,7 @@ LocationArbitrator::NewNetworkLocationProvider(
+
+ std::unique_ptr<LocationProvider>
+ LocationArbitrator::NewSystemLocationProvider() {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ return nullptr;
+ #else
+ return device::NewSystemLocationProvider(main_task_runner_,
diff --git a/www/ungoogled-chromium/files/patch-services_device_hid_BUILD.gn b/www/ungoogled-chromium/files/patch-services_device_hid_BUILD.gn
new file mode 100644
index 000000000000..ef81273b3312
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_hid_BUILD.gn
@@ -0,0 +1,28 @@
+--- services/device/hid/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ services/device/hid/BUILD.gn
+@@ -35,6 +35,25 @@ source_set("hid") {
+ "//services/device/public/mojom",
+ ]
+
++ if (is_openbsd) {
++ sources += [
++ "hid_connection_fido.cc",
++ "hid_connection_fido.h",
++ "hid_service_fido.cc",
++ "hid_service_fido.h",
++ ]
++ libs = ["fido2", "cbor", "usbhid", "crypto", "util"]
++ }
++
++ if (is_freebsd) {
++ sources += [
++ "hid_connection_freebsd.cc",
++ "hid_connection_freebsd.h",
++ "hid_service_freebsd.cc",
++ "hid_service_freebsd.h",
++ ]
++ }
++
+ if ((is_linux || is_chromeos) && use_udev) {
+ sources += [
+ "hid_connection_linux.cc",
diff --git a/www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__fido.cc b/www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__fido.cc
new file mode 100644
index 000000000000..3460c713b2de
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__fido.cc
@@ -0,0 +1,200 @@
+--- services/device/hid/hid_connection_fido.cc.orig 2022-10-01 07:40:07 UTC
++++ services/device/hid/hid_connection_fido.cc
+@@ -0,0 +1,197 @@
++// Copyright (c) 2020 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 "services/device/hid/hid_connection_fido.h"
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/location.h"
++#include "base/numerics/safe_math.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/task/single_thread_task_runner.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_restrictions.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_service.h"
++
++namespace device {
++
++class HidConnectionFido::BlockingTaskHelper {
++public:
++ BlockingTaskHelper(base::ScopedFD fd,
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::WeakPtr<HidConnectionFido> connection)
++ : fd_(std::move(fd)),
++ // Report buffers must always have room for the report ID.
++ report_buffer_size_(device_info->max_input_report_size() + 1),
++ has_report_id_(device_info->has_report_id()), connection_(connection),
++ origin_task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++ }
++
++ BlockingTaskHelper(const BlockingTaskHelper&) = delete;
++ BlockingTaskHelper& operator=(const BlockingTaskHelper&) = delete;
++
++ ~BlockingTaskHelper() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
++
++ // Starts the FileDescriptorWatcher that reads input events from the device.
++ // Must be called on a thread that has a base::MessageLoopForIO.
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::internal::AssertBlockingAllowed();
++
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ fd_.get(), base::BindRepeating(&BlockingTaskHelper::OnFileCanReadWithoutBlocking,
++ base::Unretained(this)));
++ }
++
++ void Write(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++
++ auto data = buffer->front();
++ size_t size = buffer->size();
++ // if report id is 0, it shouldn't be included
++ if (data[0] == 0) {
++ data++;
++ size--;
++ }
++
++ ssize_t result = HANDLE_EINTR(write(fd_.get(), data, size));
++ bool success = static_cast<size_t>(result) == size;
++ if (!success) {
++ HID_LOG(EVENT) << "HID write failed: " << result << " != " << size;
++ }
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), success));
++ }
++
++ void GetFeatureReport(uint8_t report_id,
++ scoped_refptr<base::RefCountedBytes> buffer,
++ ReadCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ HID_PLOG(EVENT) << "GendFeatureReport not implemented on OpenBSD";
++ origin_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(std::move(callback), false, nullptr, 0));
++ }
++
++ void SendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ HID_PLOG(EVENT) << "SendFeatureReport not implemented on OpenBSD";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false));
++ }
++
++private:
++ void OnFileCanReadWithoutBlocking() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ scoped_refptr<base::RefCountedBytes> buffer(
++ new base::RefCountedBytes(report_buffer_size_));
++ unsigned char *data = buffer->front();
++ size_t length = report_buffer_size_;
++ if (!has_report_id_) {
++ // OpenBSD will not prefix the buffer with a report ID if report IDs are
++ // not used by the device. Prefix the buffer with 0.
++ *data++ = 0;
++ length--;
++ }
++
++ ssize_t bytes_read = HANDLE_EINTR(read(fd_.get(), data, length));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_PLOG(EVENT) << "Read failed";
++ // This assumes that the error is unrecoverable and disables reading
++ // from the device until it has been re-opened.
++ // TODO(reillyg): Investigate starting and stopping the file descriptor
++ // watcher in response to pending read requests so that per-request
++ // errors can be returned to the client.
++ file_watcher_.reset();
++ }
++ return;
++ }
++ if (!has_report_id_) {
++ // Behave as if the byte prefixed above as the the report ID was read.
++ bytes_read++;
++ }
++
++ origin_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&HidConnectionFido::ProcessInputReport,
++ connection_, buffer, bytes_read));
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++ base::ScopedFD fd_;
++ const size_t report_buffer_size_;
++ const bool has_report_id_;
++ base::WeakPtr<HidConnectionFido> connection_;
++ const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++};
++
++HidConnectionFido::HidConnectionFido(
++ scoped_refptr<HidDeviceInfo> device_info, base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
++ bool allow_protected_reports, bool allow_fido_reports)
++ : HidConnection(device_info, allow_protected_reports, allow_fido_reports),
++ blocking_task_runner_(std::move(blocking_task_runner)),
++ weak_factory_(this),
++ helper_(std::make_unique<BlockingTaskHelper>(
++ std::move(fd), device_info, weak_factory_.GetWeakPtr())) {
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::Start,
++ base::Unretained(helper_.get())));
++}
++
++HidConnectionFido::~HidConnectionFido() = default;
++
++void HidConnectionFido::PlatformClose() {
++ // By closing the device on the blocking task runner 1) the requirement that
++ // base::ScopedFD is destroyed on a thread where I/O is allowed is satisfied
++ // and 2) any tasks posted to this task runner that refer to this file will
++ // complete before it is closed.
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++void HidConnectionFido::PlatformWrite(
++ scoped_refptr<base::RefCountedBytes> buffer, WriteCallback callback) {
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::Write,
++ base::Unretained(helper_.get()), buffer,
++ std::move(callback)));
++}
++
++void HidConnectionFido::PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) {
++ // The first byte of the destination buffer is the report ID being requested
++ // and is overwritten by the feature report.
++ DCHECK_GT(device_info()->max_feature_report_size(), 0u);
++ scoped_refptr<base::RefCountedBytes> buffer(
++ new base::RefCountedBytes(device_info()->max_feature_report_size() + 1));
++ if (report_id != 0)
++ buffer->data()[0] = report_id;
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::GetFeatureReport,
++ base::Unretained(helper_.get()), report_id,
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFido::PlatformSendFeatureReport(
++ scoped_refptr<base::RefCountedBytes> buffer, WriteCallback callback) {
++ base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
++ base::BlockingType::MAY_BLOCK);
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::SendFeatureReport,
++ base::Unretained(helper_.get()), buffer,
++ std::move(callback)));
++}
++
++} // namespace device
diff --git a/www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__fido.h b/www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__fido.h
new file mode 100644
index 000000000000..a08e125d7268
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__fido.h
@@ -0,0 +1,60 @@
+--- services/device/hid/hid_connection_fido.h.orig 2022-10-01 07:40:07 UTC
++++ services/device/hid/hid_connection_fido.h
+@@ -0,0 +1,57 @@
++// Copyright (c) 2020 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.
++
++#ifndef SERVICE_DEVICE_HID_HID_CONNECTION_FIDO_H_
++#define SERVICE_DEVICE_HID_HID_CONNECTION_FIDO_H_
++
++#include "base/files/scoped_file.h"
++#include "base/memory/ptr_util.h"
++#include "base/memory/ref_counted_memory.h"
++#include "base/memory/weak_ptr.h"
++#include "base/sequence_checker.h"
++#include "services/device/hid/hid_connection.h"
++
++namespace device {
++
++class HidConnectionFido : public HidConnection {
++public:
++ HidConnectionFido(
++ scoped_refptr<HidDeviceInfo> device_info, base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
++ bool allow_protected_reports, bool allow_fido_reports);
++
++private:
++ friend class base::RefCountedThreadSafe<HidConnectionFido>;
++ class BlockingTaskHelper;
++
++ HidConnectionFido(const HidConnectionFido&) = delete;
++ HidConnectionFido& operator=(const HidConnectionFido&) = delete;
++
++ ~HidConnectionFido() override;
++
++ // HidConnection implementation.
++ void PlatformClose() override;
++ void PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++ void PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) override;
++ void PlatformSendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ base::WeakPtrFactory<HidConnectionFido> weak_factory_;
++
++ // |helper_| lives on the sequence to which |blocking_task_runner_| posts
++ // tasks so all calls must be posted there including this object's
++ // destruction.
++ std::unique_ptr<BlockingTaskHelper> helper_;
++};
++
++} // namespace device
++
++#endif // SERVICE_DEVICE_HID_HID_CONNECTION_FIDO_H_
diff --git a/www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__freebsd.cc b/www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__freebsd.cc
new file mode 100644
index 000000000000..34bd508c3fa2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__freebsd.cc
@@ -0,0 +1,245 @@
+--- services/device/hid/hid_connection_freebsd.cc.orig 2022-10-01 07:40:07 UTC
++++ services/device/hid/hid_connection_freebsd.cc
+@@ -0,0 +1,242 @@
++// Copyright (c) 2014 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 "services/device/hid/hid_connection_freebsd.h"
++
++#include <dev/usb/usbhid.h>
++#include <dev/usb/usb_ioctl.h>
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/location.h"
++#include "base/numerics/safe_math.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/strings/stringprintf.h"
++#include "base/task/single_thread_task_runner.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_restrictions.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_service.h"
++
++namespace device {
++
++class HidConnectionFreeBSD::BlockingTaskRunnerHelper {
++ public:
++ BlockingTaskRunnerHelper(base::ScopedFD fd,
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::WeakPtr<HidConnectionFreeBSD> connection)
++ : fd_(std::move(fd)),
++ connection_(connection),
++ origin_task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++ // Report buffers must always have room for the report ID.
++ report_buffer_size_ = device_info->max_input_report_size() + 1;
++ has_report_id_ = device_info->has_report_id();
++ }
++
++ BlockingTaskRunnerHelper(const BlockingTaskRunnerHelper&) = delete;
++ BlockingTaskRunnerHelper& operator=(const BlockingTaskRunnerHelper&) = delete;
++
++ ~BlockingTaskRunnerHelper() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
++
++ // Starts the FileDescriptorWatcher that reads input events from the device.
++ // Must be called on a thread that has a base::MessageLoopForIO.
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::internal::AssertBlockingAllowed();
++
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ fd_.get(), base::BindRepeating(&BlockingTaskRunnerHelper::OnFileCanReadWithoutBlocking,
++ base::Unretained(this)));
++ }
++
++ void Write(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++
++ auto data = buffer->front();
++ size_t size = buffer->size();
++ // if report id is 0, it shouldn't be included
++ if (data[0] == 0) {
++ data++;
++ size--;
++ }
++
++ ssize_t result = HANDLE_EINTR(write(fd_.get(), data, size));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Write failed";
++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), false));
++ } else {
++ if (static_cast<size_t>(result) != size)
++ HID_LOG(EVENT) << "Incomplete HID write: " << result << " != " << size;
++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), true));
++ }
++ }
++
++ void GetFeatureReport(uint8_t report_id,
++ scoped_refptr<base::RefCountedBytes> buffer,
++ ReadCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_report_type = UHID_FEATURE_REPORT;
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ int result = HANDLE_EINTR(
++ ioctl(fd_.get(), USB_GET_REPORT, &ugd));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Failed to get feature report";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false, nullptr, 0));
++ } else if (result == 0) {
++ HID_LOG(EVENT) << "Get feature result too short.";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false, nullptr, 0));
++ } else {
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), true, buffer, result));
++ }
++ }
++
++ void SendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_report_type = UHID_FEATURE_REPORT;
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ // FreeBSD does not require report id if it's not used
++ if (buffer->front()[0] == 0) {
++ ugd.ugd_data = buffer->front() + 1;
++ ugd.ugd_maxlen = buffer->size() - 1;
++ } else {
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ }
++ int result = HANDLE_EINTR(
++ ioctl(fd_.get(), USB_SET_REPORT, &ugd));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Failed to send feature report";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false));
++ } else {
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), true));
++ }
++ }
++
++ private:
++ void OnFileCanReadWithoutBlocking() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ scoped_refptr<base::RefCountedBytes> buffer(new base::RefCountedBytes(report_buffer_size_));
++ unsigned char* data = buffer->front();
++ size_t length = report_buffer_size_;
++ if (!has_report_id_) {
++ // FreeBSD will not prefix the buffer with a report ID if report IDs are not
++ // used by the device. Prefix the buffer with 0.
++ *data++ = 0;
++ length--;
++ }
++
++ ssize_t bytes_read = HANDLE_EINTR(read(fd_.get(), data, length));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_PLOG(EVENT) << "Read failed";
++ // This assumes that the error is unrecoverable and disables reading
++ // from the device until it has been re-opened.
++ // TODO(reillyg): Investigate starting and stopping the file descriptor
++ // watcher in response to pending read requests so that per-request
++ // errors can be returned to the client.
++ file_watcher_.reset();
++ }
++ return;
++ }
++ if (!has_report_id_) {
++ // Behave as if the byte prefixed above as the the report ID was read.
++ bytes_read++;
++ }
++
++ origin_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&HidConnectionFreeBSD::ProcessInputReport,
++ connection_, buffer, bytes_read));
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++ base::ScopedFD fd_;
++ size_t report_buffer_size_;
++ bool has_report_id_;
++ base::WeakPtr<HidConnectionFreeBSD> connection_;
++ const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++};
++
++HidConnectionFreeBSD::HidConnectionFreeBSD(
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
++ bool allow_protected_reports,
++ bool allow_fido_reports)
++ : HidConnection(device_info, allow_protected_reports, allow_fido_reports),
++ helper_(nullptr, base::OnTaskRunnerDeleter(blocking_task_runner)),
++ blocking_task_runner_(std::move(blocking_task_runner)) {
++ helper_.reset(new BlockingTaskRunnerHelper(std::move(fd), device_info,
++ weak_factory_.GetWeakPtr()));
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskRunnerHelper::Start,
++ base::Unretained(helper_.get())));
++}
++
++HidConnectionFreeBSD::~HidConnectionFreeBSD() {}
++
++void HidConnectionFreeBSD::PlatformClose() {
++ // By closing the device on the blocking task runner 1) the requirement that
++ // base::ScopedFD is destroyed on a thread where I/O is allowed is satisfied
++ // and 2) any tasks posted to this task runner that refer to this file will
++ // complete before it is closed.
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++void HidConnectionFreeBSD::PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskRunnerHelper::Write, base::Unretained(helper_.get()),
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFreeBSD::PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) {
++ // The first byte of the destination buffer is the report ID being requested
++ // and is overwritten by the feature report.
++ DCHECK_GT(device_info()->max_feature_report_size(), 0u);
++ scoped_refptr<base::RefCountedBytes> buffer(
++ new base::RefCountedBytes(device_info()->max_feature_report_size() + 1));
++ if (report_id != 0)
++ buffer->data()[0] = report_id;
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskRunnerHelper::GetFeatureReport,
++ base::Unretained(helper_.get()), report_id,
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFreeBSD::PlatformSendFeatureReport(
++ scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskRunnerHelper::SendFeatureReport,
++ base::Unretained(helper_.get()), buffer, std::move(callback)));
++}
++
++} // namespace device
diff --git a/www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__freebsd.h b/www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__freebsd.h
new file mode 100644
index 000000000000..8e176b23dfea
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_hid_hid__connection__freebsd.h
@@ -0,0 +1,70 @@
+--- services/device/hid/hid_connection_freebsd.h.orig 2022-10-01 07:40:07 UTC
++++ services/device/hid/hid_connection_freebsd.h
+@@ -0,0 +1,67 @@
++// Copyright (c) 2014 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.
++
++#ifndef DEVICE_HID_HID_CONNECTION_FREEBSD_H_
++#define DEVICE_HID_HID_CONNECTION_FREEBSD_H_
++
++#include <stddef.h>
++#include <stdint.h>
++
++#include "base/files/scoped_file.h"
++#include "base/memory/weak_ptr.h"
++#include "base/memory/ref_counted_memory.h"
++#include "base/task/sequenced_task_runner.h"
++#include "services/device/hid/hid_connection.h"
++
++namespace base {
++class SequencedTaskRunner;
++}
++
++namespace net {
++class IOBuffer;
++}
++
++namespace device {
++
++class HidConnectionFreeBSD : public HidConnection {
++ public:
++ HidConnectionFreeBSD(
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
++ bool allow_protected_reports,
++ bool allow_fido_reports);
++
++ private:
++ friend class base::RefCountedThreadSafe<HidConnectionFreeBSD>;
++ class BlockingTaskRunnerHelper;
++
++ HidConnectionFreeBSD(const HidConnectionFreeBSD&) = delete;
++ HidConnectionFreeBSD& operator=(const HidConnectionFreeBSD&) = delete;
++
++ ~HidConnectionFreeBSD() override;
++
++ // HidConnection implementation.
++ void PlatformClose() override;
++ void PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++ void PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) override;
++ void PlatformSendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++
++ // |helper_| lives on the sequence to which |blocking_task_runner_| posts
++ // tasks so all calls must be posted there including this object's
++ // destruction.
++ std::unique_ptr<BlockingTaskRunnerHelper, base::OnTaskRunnerDeleter> helper_;
++
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++
++ base::WeakPtrFactory<HidConnectionFreeBSD> weak_factory_{this};
++};
++
++} // namespace device
++
++#endif // DEVICE_HID_HID_CONNECTION_FREEBSD_H_
diff --git a/www/ungoogled-chromium/files/patch-services_device_hid_hid__service.cc b/www/ungoogled-chromium/files/patch-services_device_hid_hid__service.cc
new file mode 100644
index 000000000000..25c4f14996c9
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_hid_hid__service.cc
@@ -0,0 +1,24 @@
+--- services/device/hid/hid_service.cc.orig 2022-10-01 07:40:07 UTC
++++ services/device/hid/hid_service.cc
+@@ -19,6 +19,10 @@
+
+ #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(USE_UDEV)
+ #include "services/device/hid/hid_service_linux.h"
++#elif BUILDFLAG(IS_OPENBSD)
++#include "services/device/hid/hid_service_fido.h"
++#elif BUILDFLAG(IS_FREEBSD)
++#include "services/device/hid/hid_service_freebsd.h"
+ #elif BUILDFLAG(IS_MAC)
+ #include "services/device/hid/hid_service_mac.h"
+ #elif BUILDFLAG(IS_WIN)
+@@ -62,6 +66,10 @@ constexpr base::TaskTraits HidService::kBlockingTaskTr
+ std::unique_ptr<HidService> HidService::Create() {
+ #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(USE_UDEV)
+ return base::WrapUnique(new HidServiceLinux());
++#elif BUILDFLAG(IS_OPENBSD)
++ return base::WrapUnique(new HidServiceFido());
++#elif BUILDFLAG(IS_FREEBSD)
++ return base::WrapUnique(new HidServiceFreeBSD());
+ #elif BUILDFLAG(IS_MAC)
+ return base::WrapUnique(new HidServiceMac());
+ #elif BUILDFLAG(IS_WIN)
diff --git a/www/ungoogled-chromium/files/patch-services_device_hid_hid__service__fido.cc b/www/ungoogled-chromium/files/patch-services_device_hid_hid__service__fido.cc
new file mode 100644
index 000000000000..bbfc438e6f1a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_hid_hid__service__fido.cc
@@ -0,0 +1,330 @@
+--- services/device/hid/hid_service_fido.cc.orig 2022-10-01 07:40:07 UTC
++++ services/device/hid/hid_service_fido.cc
+@@ -0,0 +1,327 @@
++// Copyright 2020 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 "services/device/hid/hid_service_fido.h"
++
++#include <fcntl.h>
++#include <poll.h>
++#include <stdint.h>
++#include <sys/socket.h>
++#include <sys/un.h>
++#include <unistd.h>
++
++// TODO: remove once the missing guard in fido.h is fixed upstream.
++extern "C" {
++#include <fido.h>
++}
++
++#include <set>
++#include <string>
++#include <vector>
++
++#include "base/bind.h"
++#include "base/files/file.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/files/file_enumerator.h"
++#include "base/location.h"
++#include "base/logging.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/task/single_thread_task_runner.h"
++#include "base/task/thread_pool.h"
++#include "base/stl_util.h"
++#include "base/strings/pattern.h"
++#include "base/strings/string_split.h"
++#include "base/strings/string_util.h"
++#include "base/strings/stringprintf.h"
++#include "base/strings/sys_string_conversions.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_connection_fido.h"
++
++namespace device {
++
++namespace {
++
++struct ConnectParams {
++ ConnectParams(scoped_refptr<HidDeviceInfo> device_info,
++ HidService::ConnectCallback callback)
++ : device_info(std::move(device_info)), callback(std::move(callback)),
++ task_runner(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner(base::ThreadPool::CreateSequencedTaskRunner(
++ HidService::kBlockingTaskTraits)) {}
++ ~ConnectParams() {}
++
++ scoped_refptr<HidDeviceInfo> device_info;
++ HidService::ConnectCallback callback;
++ scoped_refptr<base::SequencedTaskRunner> task_runner;
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner;
++ base::ScopedFD fd;
++ bool allow_protected_reports;
++ bool allow_fido_reports;
++};
++
++void CreateConnection(std::unique_ptr<ConnectParams> params) {
++ DCHECK(params->fd.is_valid());
++ std::move(params->callback).Run(base::MakeRefCounted<HidConnectionFido>(
++ std::move(params->device_info), std::move(params->fd),
++ std::move(params->blocking_task_runner), params->allow_protected_reports,
++ params->allow_fido_reports));
++}
++
++void FinishOpen(std::unique_ptr<ConnectParams> params) {
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ task_runner->PostTask(FROM_HERE,
++ base::BindOnce(&CreateConnection, std::move(params)));
++}
++
++bool terrible_ping_kludge(int fd, const std::string &path) {
++ u_char data[256];
++ int i, n;
++ struct pollfd pfd;
++
++ for (i = 0; i < 4; i++) {
++ memset(data, 0, sizeof(data));
++ /* broadcast channel ID */
++ data[1] = 0xff;
++ data[2] = 0xff;
++ data[3] = 0xff;
++ data[4] = 0xff;
++ /* Ping command */
++ data[5] = 0x81;
++ /* One byte ping only, Vasili */
++ data[6] = 0;
++ data[7] = 1;
++ HID_LOG(EVENT) << "send ping " << i << " " << path;
++ if (write(fd, data, 64) == -1) {
++ HID_PLOG(ERROR) << "write " << path;
++ return false;
++ }
++ HID_LOG(EVENT) << "wait reply " << path;
++ memset(&pfd, 0, sizeof(pfd));
++ pfd.fd = fd;
++ pfd.events = POLLIN;
++ if ((n = poll(&pfd, 1, 100)) == -1) {
++ HID_PLOG(EVENT) << "poll " << path;
++ return false;
++ } else if (n == 0) {
++ HID_LOG(EVENT) << "timed out " << path;
++ continue;
++ }
++ if (read(fd, data, 64) == -1) {
++ HID_PLOG(ERROR) << "read " << path;
++ return false;
++ }
++ /*
++ * Ping isn't always supported on the broadcast channel,
++ * so we might get an error, but we don't care - we're
++ * synched now.
++ */
++ HID_LOG(EVENT) << "got reply " << path;
++ return true;
++ }
++ HID_LOG(ERROR) << "no response " << path;
++ return false;
++}
++
++void OpenOnBlockingThread(std::unique_ptr<ConnectParams> params) {
++ base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
++ base::BlockingType::MAY_BLOCK);
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ const auto &device_node = params->device_info->device_node();
++ base::FilePath device_path(device_node);
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ base::File device_file(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(EVENT) << "Failed to open '" << device_node << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ task_runner->PostTask(FROM_HERE, base::BindOnce(std::move(params->callback), nullptr));
++ return;
++ }
++ if (!terrible_ping_kludge(device_file.GetPlatformFile(), device_node)) {
++ HID_LOG(EVENT) << "Failed to ping " << device_node;
++ task_runner->PostTask(FROM_HERE, base::BindOnce(std::move(params->callback), nullptr));
++ return;
++ }
++ params->fd.reset(device_file.TakePlatformFile());
++ FinishOpen(std::move(params));
++}
++
++// HID report descriptor for U2F interface. Copied from:
++// https://chromium.googlesource.com/chromiumos/platform2/+/c6c7e4e54fce11932fedaa3ea10236bf75d85a2b%5E%21/u2fd/u2fhid.cc
++// Apparently Chromium wants to see these bytes, but OpenBSD fido(4)
++// devices prohibit USB_GET_REPORT_DESC ioctl that could be used to
++// get the bytes from the USB device.
++constexpr uint8_t kU2fReportDesc[] = {
++ 0x06, 0xD0, 0xF1, /* Usage Page (FIDO Alliance), FIDO_USAGE_PAGE */
++ 0x09, 0x01, /* Usage (U2F HID Auth. Device) FIDO_USAGE_U2FHID */
++ 0xA1, 0x01, /* Collection (Application), HID_APPLICATION */
++ 0x09, 0x20, /* Usage (Input Report Data), FIDO_USAGE_DATA_IN */
++ 0x15, 0x00, /* Logical Minimum (0) */
++ 0x26, 0xFF, 0x00, /* Logical Maximum (255) */
++ 0x75, 0x08, /* Report Size (8) */
++ 0x95, 0x40, /* Report Count (64), HID_INPUT_REPORT_BYTES */
++ 0x81, 0x02, /* Input (Data, Var, Abs), Usage */
++ 0x09, 0x21, /* Usage (Output Report Data), FIDO_USAGE_DATA_OUT */
++ 0x15, 0x00, /* Logical Minimum (0) */
++ 0x26, 0xFF, 0x00, /* Logical Maximum (255) */
++ 0x75, 0x08, /* Report Size (8) */
++ 0x95, 0x40, /* Report Count (64), HID_OUTPUT_REPORT_BYTES */
++ 0x91, 0x02, /* Output (Data, Var, Abs), Usage */
++ 0xC0 /* End Collection */
++};
++
++} // namespace
++
++class HidServiceFido::BlockingTaskHelper {
++public:
++ BlockingTaskHelper(base::WeakPtr<HidServiceFido> service)
++ : service_(std::move(service)),
++ task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++ }
++
++ BlockingTaskHelper(const BlockingTaskHelper&) = delete;
++ BlockingTaskHelper& operator=(const BlockingTaskHelper&) = delete;
++
++ ~BlockingTaskHelper() = default;
++
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++
++ fido_dev_info_t *devlist = NULL;
++ fido_dev_t *dev = NULL;
++ size_t devlist_len = 0, i;
++ const char *path;
++ int r;
++ const int MAX_FIDO_DEVICES = 256;
++
++ if ((devlist = fido_dev_info_new(MAX_FIDO_DEVICES)) == NULL) {
++ HID_LOG(ERROR) << "fido_dev_info_new failed";
++ goto out;
++ }
++ if ((r = fido_dev_info_manifest(devlist, MAX_FIDO_DEVICES, &devlist_len)) !=
++ FIDO_OK) {
++ HID_LOG(ERROR) << "fido_dev_info_manifest: " << fido_strerr(r);
++ goto out;
++ }
++
++ HID_LOG(EVENT) << "fido_dev_info_manifest found " << devlist_len
++ << " device(s)";
++
++ for (i = 0; i < devlist_len; i++) {
++ const fido_dev_info_t *di = fido_dev_info_ptr(devlist, i);
++ if (di == NULL) {
++ HID_LOG(ERROR) << "fido_dev_info_ptr " << i << " failed";
++ continue;
++ }
++ if ((path = fido_dev_info_path(di)) == NULL) {
++ HID_LOG(ERROR) << "fido_dev_info_path " << i << " failed";
++ continue;
++ }
++ HID_LOG(EVENT) << "trying device " << i << ": " << path;
++ if ((dev = fido_dev_new()) == NULL) {
++ HID_LOG(ERROR) << "fido_dev_new failed";
++ continue;
++ }
++ if ((r = fido_dev_open(dev, path)) != FIDO_OK) {
++ HID_LOG(ERROR) << "fido_dev_open failed " << path;
++ fido_dev_free(&dev);
++ continue;
++ }
++ OnDeviceAdded(di);
++ fido_dev_close(dev);
++ fido_dev_free(&dev);
++ }
++
++ out:
++ if (devlist != NULL)
++ fido_dev_info_free(&devlist, MAX_FIDO_DEVICES);
++
++ task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&HidServiceFido::FirstEnumerationComplete, service_));
++ }
++
++ void OnDeviceAdded(const fido_dev_info_t *di) {
++ auto null_as_empty = [](const char *r) -> std::string {
++ return (r != nullptr) ? r : "";
++ };
++ std::string device_node(null_as_empty(fido_dev_info_path(di)));
++ std::vector<uint8_t> report_descriptor(
++ kU2fReportDesc, kU2fReportDesc + sizeof(kU2fReportDesc));
++ scoped_refptr<HidDeviceInfo> device_info(new HidDeviceInfo(
++ device_node, /*physical_device_id=*/"", fido_dev_info_vendor(di),
++ fido_dev_info_product(di), null_as_empty(fido_dev_info_product_string(di)),
++ null_as_empty(fido_dev_info_manufacturer_string(di)),
++ device::mojom::HidBusType::kHIDBusTypeUSB, report_descriptor,
++ device_node));
++
++ task_runner_->PostTask(FROM_HERE, base::BindOnce(&HidServiceFido::AddDevice,
++ service_, device_info));
++ }
++
++ void OnDeviceRemoved(std::string device_node) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ task_runner_->PostTask(FROM_HERE, base::BindOnce(&HidServiceFido::RemoveDevice,
++ service_, device_node));
++ }
++
++private:
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ // This weak pointer is only valid when checked on this task runner.
++ base::WeakPtr<HidServiceFido> service_;
++ scoped_refptr<base::SequencedTaskRunner> task_runner_;
++};
++
++HidServiceFido::HidServiceFido()
++ : task_runner_(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner_(
++ base::ThreadPool::CreateSequencedTaskRunner(kBlockingTaskTraits)),
++ weak_factory_(this), helper_(std::make_unique<BlockingTaskHelper>(
++ weak_factory_.GetWeakPtr())) {
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::Start, base::Unretained(helper_.get())));
++}
++
++HidServiceFido::~HidServiceFido() {
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++base::WeakPtr<HidService> HidServiceFido::GetWeakPtr() {
++ return weak_factory_.GetWeakPtr();
++}
++
++void HidServiceFido::Connect(const std::string &device_guid,
++ bool allow_protected_reports,
++ bool allow_fido_reports,
++ ConnectCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const auto &map_entry = devices().find(device_guid);
++ if (map_entry == devices().end()) {
++ base::ThreadTaskRunnerHandle::Get()->PostTask(
++ FROM_HERE, base::BindOnce(std::move(callback), nullptr));
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info = map_entry->second;
++
++ auto params = std::make_unique<ConnectParams>(device_info, std::move(callback));
++
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
++ params->blocking_task_runner;
++ blocking_task_runner->PostTask(
++ FROM_HERE, base::BindOnce(&OpenOnBlockingThread, std::move(params)));
++}
++
++} // namespace device
diff --git a/www/ungoogled-chromium/files/patch-services_device_hid_hid__service__fido.h b/www/ungoogled-chromium/files/patch-services_device_hid_hid__service__fido.h
new file mode 100644
index 000000000000..b0a47cd8a36e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_hid_hid__service__fido.h
@@ -0,0 +1,46 @@
+--- services/device/hid/hid_service_fido.h.orig 2022-10-01 07:40:07 UTC
++++ services/device/hid/hid_service_fido.h
+@@ -0,0 +1,43 @@
++// Copyright 2020 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.
++
++#ifndef SERVICE_DEVICE_HID_HID_SERVICE_FIDO_H_
++#define SERVICE_DEVICE_HID_HID_SERVICE_FIDO_H_
++
++#include <string>
++
++#include "base/memory/ref_counted.h"
++#include "base/memory/weak_ptr.h"
++#include "services/device/hid/hid_service.h"
++
++namespace device {
++
++class HidServiceFido : public HidService {
++public:
++ HidServiceFido();
++
++ HidServiceFido(const HidServiceFido&) = delete;
++ HidServiceFido& operator=(const HidServiceFido&) = delete;
++
++ ~HidServiceFido() override;
++
++ void Connect(const std::string &device_guid,
++ bool allow_protected_reports,
++ bool allow_fido_reports,
++ ConnectCallback connect) override;
++ base::WeakPtr<HidService> GetWeakPtr() override;
++
++private:
++ class BlockingTaskHelper;
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ base::WeakPtrFactory<HidServiceFido> weak_factory_;
++ // |helper_| lives on the sequence |blocking_task_runner_| posts to and holds
++ // a weak reference back to the service that owns it.
++ std::unique_ptr<BlockingTaskHelper> helper_;
++};
++
++} // namespace device
++
++#endif // SERVICE_DEVICE_HID_HID_SERVICE_FIDO_H_
diff --git a/www/ungoogled-chromium/files/patch-services_device_hid_hid__service__freebsd.cc b/www/ungoogled-chromium/files/patch-services_device_hid_hid__service__freebsd.cc
new file mode 100644
index 000000000000..3172c0ea3b58
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_hid_hid__service__freebsd.cc
@@ -0,0 +1,400 @@
+--- services/device/hid/hid_service_freebsd.cc.orig 2022-10-01 07:40:07 UTC
++++ services/device/hid/hid_service_freebsd.cc
+@@ -0,0 +1,397 @@
++// Copyright 2014 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 "services/device/hid/hid_service_freebsd.h"
++
++#include <dev/usb/usb_ioctl.h>
++#include <stdint.h>
++#include <sys/socket.h>
++#include <sys/un.h>
++
++#include <set>
++#include <string>
++#include <vector>
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/files/file_enumerator.h"
++#include "base/files/file_util.h"
++#include "base/files/file.h"
++#include "base/location.h"
++#include "base/logging.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/stl_util.h"
++#include "base/strings/pattern.h"
++#include "base/strings/stringprintf.h"
++#include "base/strings/sys_string_conversions.h"
++#include "base/strings/string_util.h"
++#include "base/strings/string_split.h"
++#include "base/task/single_thread_task_runner.h"
++#include "base/task/thread_pool.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "base/threading/thread_restrictions.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_connection_freebsd.h"
++
++const int kMaxPermissionChecks = 5;
++
++namespace device {
++
++struct HidServiceFreeBSD::ConnectParams {
++ ConnectParams(scoped_refptr<HidDeviceInfo> device_info,
++ bool allow_protected_reports,
++ bool allow_fido_reports,
++ ConnectCallback callback)
++ : device_info(std::move(device_info)),
++ allow_protected_reports(allow_protected_reports),
++ allow_fido_reports(allow_fido_reports),
++ callback(std::move(callback)),
++ task_runner(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner(
++ base::ThreadPool::CreateSequencedTaskRunner(kBlockingTaskTraits)) {}
++ ~ConnectParams() {}
++
++ scoped_refptr<HidDeviceInfo> device_info;
++ bool allow_protected_reports;
++ bool allow_fido_reports;
++ ConnectCallback callback;
++ scoped_refptr<base::SequencedTaskRunner> task_runner;
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner;
++ base::ScopedFD fd;
++};
++
++class HidServiceFreeBSD::BlockingTaskRunnerHelper {
++ public:
++ BlockingTaskRunnerHelper(base::WeakPtr<HidServiceFreeBSD> service)
++ : service_(std::move(service)),
++ task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++
++ timer_.reset(new base::RepeatingTimer());
++ devd_buffer_ = new net::IOBufferWithSize(1024);
++ }
++
++ BlockingTaskRunnerHelper(const BlockingTaskRunnerHelper&) = delete;
++ BlockingTaskRunnerHelper& operator=(const BlockingTaskRunnerHelper&) = delete;
++
++ ~BlockingTaskRunnerHelper() {
++ }
++
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const base::FilePath kDevRoot("/dev");
++ const std::string kUHIDPattern("/dev/uhid*");
++
++ base::FileEnumerator enumerator(kDevRoot, false, base::FileEnumerator::FILES);
++ do {
++ const base::FilePath next_device_path(enumerator.Next());
++ const std::string next_device = next_device_path.value();
++ if (next_device.empty())
++ break;
++
++ if (base::MatchPattern(next_device, kUHIDPattern))
++ OnDeviceAdded(next_device.substr(5));
++ } while (true);
++
++ SetupDevdMonitor();
++
++ task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&HidServiceFreeBSD::FirstEnumerationComplete, service_));
++ }
++
++ bool HaveReadWritePermissions(std::string device_id) {
++ std::string device_node = "/dev/" + device_id;
++ base::internal::AssertBlockingAllowed();
++
++ base::FilePath device_path(device_node);
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid())
++ return false;
++
++ return true;
++ }
++
++ void OnDeviceAdded(std::string device_id) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ std::string device_node = "/dev/" + device_id;
++ uint16_t vendor_id = 0xffff;
++ uint16_t product_id = 0xffff;
++ std::string product_name = "";
++ std::string serial_number = "";
++
++ std::vector<uint8_t> report_descriptor;
++
++ base::internal::AssertBlockingAllowed();
++
++ base::FilePath device_path(device_node);
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(ERROR) << "Failed to open '" << device_node
++ << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ return;
++ }
++
++ base::ScopedFD fd;
++ fd.reset(device_file.TakePlatformFile());
++
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_data = NULL;
++ ugd.ugd_maxlen = 0xffff;
++ int result = HANDLE_EINTR(
++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd));
++
++ if (result < 0) {
++ HID_LOG(ERROR) << "Failed to get report descriptor size";
++ return;
++ }
++
++ report_descriptor.resize(ugd.ugd_actlen);
++
++ ugd.ugd_data = report_descriptor.data();
++ ugd.ugd_maxlen = ugd.ugd_actlen;
++ result = HANDLE_EINTR(
++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd));
++
++ if (result < 0) {
++ HID_LOG(ERROR) << "Failed to get report descriptor";
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info(new HidDeviceInfo(
++ device_id,
++ /*physical_device_id*/"",
++ vendor_id,
++ product_id,
++ product_name,
++ serial_number,
++ device::mojom::HidBusType::kHIDBusTypeUSB,
++ report_descriptor,
++ device_node));
++
++ task_runner_->PostTask(FROM_HERE, base::BindOnce(&HidServiceFreeBSD::AddDevice,
++ service_, device_info));
++ }
++
++ void OnDeviceRemoved(std::string device_id) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&HidServiceFreeBSD::RemoveDevice, service_,
++ device_id));
++ }
++
++ private:
++
++ void CheckPendingPermissionChange() {
++ base::internal::AssertBlockingAllowed();
++ std::map<std::string, int>::iterator it;
++ for (it = permissions_checks_attempts_.begin(); it != permissions_checks_attempts_.end();) {
++ std::string device_name = it->first;
++ bool keep = true;
++ if (HaveReadWritePermissions(device_name)) {
++ OnDeviceAdded(device_name);
++ keep = false;
++ }
++ else if (it->second-- <= 0) {
++ HID_LOG(ERROR) << "Still don't have write permissions to '" << device_name
++ << "' after " << kMaxPermissionChecks << " attempts";
++ keep = false;
++ }
++
++ if (keep)
++ ++it;
++ else
++ permissions_checks_attempts_.erase(it++);
++ }
++
++ if (permissions_checks_attempts_.empty())
++ timer_->Stop();
++ }
++
++ void SetupDevdMonitor() {
++ base::internal::AssertBlockingAllowed();
++
++ int devd_fd = socket(AF_UNIX, SOCK_SEQPACKET, 0);
++ if (devd_fd < 0)
++ return;
++
++ struct sockaddr_un sa;
++
++ sa.sun_family = AF_UNIX;
++ strlcpy(sa.sun_path, "/var/run/devd.seqpacket.pipe", sizeof(sa.sun_path));
++ if (connect(devd_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
++ close(devd_fd);
++ return;
++ }
++
++ devd_fd_.reset(devd_fd);
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ devd_fd_.get(), base::BindRepeating(&BlockingTaskRunnerHelper::OnDevdMessageCanBeRead,
++ base::Unretained(this)));
++ }
++
++ void OnDevdMessageCanBeRead() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ ssize_t bytes_read = HANDLE_EINTR(recv(devd_fd_.get(), devd_buffer_->data(),
++ devd_buffer_->size() - 1, MSG_WAITALL));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_LOG(ERROR) << "Read failed";
++ file_watcher_.reset();
++ }
++ return;
++ }
++
++ devd_buffer_->data()[bytes_read] = 0;
++ char *data = devd_buffer_->data();
++ // It may take some time for devd to change permissions
++ // on /dev/uhidX node. So do not fail immediately if
++ // open fail. Retry each second for kMaxPermissionChecks
++ // times before giving up entirely
++ if (base::StartsWith(data, "+uhid", base::CompareCase::SENSITIVE)) {
++ std::vector<std::string> parts = base::SplitString(
++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
++ if (!parts.empty()) {
++ std::string device_name = parts[0].substr(1); // skip '+'
++ if (HaveReadWritePermissions(device_name))
++ OnDeviceAdded(parts[0].substr(1));
++ else {
++ // Do not re-add to checks
++ if (permissions_checks_attempts_.find(device_name) == permissions_checks_attempts_.end()) {
++ permissions_checks_attempts_.insert(std::pair<std::string, int>(device_name, kMaxPermissionChecks));
++ timer_->Start(FROM_HERE, base::Seconds(1),
++ this, &BlockingTaskRunnerHelper::CheckPendingPermissionChange);
++ }
++ }
++ }
++ }
++
++ if (base::StartsWith(data, "-uhid", base::CompareCase::SENSITIVE)) {
++ std::vector<std::string> parts = base::SplitString(
++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
++ if (!parts.empty()) {
++ std::string device_name = parts[0].substr(1); // skip '-'
++ auto it = permissions_checks_attempts_.find(device_name);
++ if (it != permissions_checks_attempts_.end()) {
++ permissions_checks_attempts_.erase(it);
++ if (permissions_checks_attempts_.empty())
++ timer_->Stop();
++ }
++ OnDeviceRemoved(parts[0].substr(1));
++ }
++ }
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ // This weak pointer is only valid when checked on this task runner.
++ base::WeakPtr<HidServiceFreeBSD> service_;
++ scoped_refptr<base::SequencedTaskRunner> task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++ std::unique_ptr<base::RepeatingTimer> timer_;
++ base::ScopedFD devd_fd_;
++ scoped_refptr<net::IOBufferWithSize> devd_buffer_;
++ std::map<std::string, int> permissions_checks_attempts_;
++};
++
++HidServiceFreeBSD::HidServiceFreeBSD()
++ : blocking_task_runner_(
++ base::ThreadPool::CreateSequencedTaskRunner(kBlockingTaskTraits)),
++ helper_(nullptr, base::OnTaskRunnerDeleter(blocking_task_runner_)) {
++ helper_.reset(new BlockingTaskRunnerHelper(weak_factory_.GetWeakPtr()));
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskRunnerHelper::Start, base::Unretained(helper_.get())));
++}
++
++HidServiceFreeBSD::~HidServiceFreeBSD() {
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++base::WeakPtr<HidService> HidServiceFreeBSD::GetWeakPtr() {
++ return weak_factory_.GetWeakPtr();
++}
++
++// static
++void HidServiceFreeBSD::OpenOnBlockingThread(
++ std::unique_ptr<ConnectParams> params) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ base::FilePath device_path(params->device_info->device_node());
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(EVENT) << "Failed to open '" << params->device_info->device_node()
++ << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ task_runner->PostTask(FROM_HERE,
++ base::BindOnce(std::move(params->callback), nullptr));
++ return;
++ }
++ params->fd.reset(device_file.TakePlatformFile());
++ task_runner->PostTask(FROM_HERE, base::BindOnce(&HidServiceFreeBSD::FinishOpen,
++ std::move(params)));
++}
++
++void HidServiceFreeBSD::Connect(const std::string& device_guid,
++ bool allow_protected_reports,
++ bool allow_fido_reports,
++ ConnectCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const auto& map_entry = devices().find(device_guid);
++ if (map_entry == devices().end()) {
++ base::ThreadTaskRunnerHandle::Get()->PostTask(
++ FROM_HERE, base::BindOnce(std::move(callback), nullptr));
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info = map_entry->second;
++
++ auto params = std::make_unique<ConnectParams>(device_info,
++ allow_protected_reports,
++ allow_fido_reports,
++ std::move(callback));
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
++ params->blocking_task_runner;
++
++ blocking_task_runner->PostTask(
++ FROM_HERE, base::BindOnce(&HidServiceFreeBSD::OpenOnBlockingThread,
++ std::move(params)));
++}
++
++// static
++void HidServiceFreeBSD::FinishOpen(std::unique_ptr<ConnectParams> params) {
++ DCHECK(params->fd.is_valid());
++
++ if (!base::SetNonBlocking(params->fd.get())) {
++ HID_PLOG(ERROR) << "Failed to set the non-blocking flag on the device fd";
++ std::move(params->callback).Run(nullptr);
++ }
++
++ std::move(params->callback).Run(base::MakeRefCounted<HidConnectionFreeBSD>(
++ std::move(params->device_info),
++ std::move(params->fd),
++ std::move(params->blocking_task_runner),
++ params->allow_protected_reports,
++ params->allow_fido_reports
++ ));
++}
++
++} // namespace device
diff --git a/www/ungoogled-chromium/files/patch-services_device_hid_hid__service__freebsd.h b/www/ungoogled-chromium/files/patch-services_device_hid_hid__service__freebsd.h
new file mode 100644
index 000000000000..e190a33b930d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_hid_hid__service__freebsd.h
@@ -0,0 +1,52 @@
+--- services/device/hid/hid_service_freebsd.h.orig 2022-10-01 07:40:07 UTC
++++ services/device/hid/hid_service_freebsd.h
+@@ -0,0 +1,49 @@
++// Copyright 2014 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.
++
++#ifndef DEVICE_HID_HID_SERVICE_FREEBSD_H_
++#define DEVICE_HID_HID_SERVICE_FREEBSD_H_
++
++#include <string>
++
++#include "base/memory/ref_counted.h"
++#include "base/memory/weak_ptr.h"
++#include "base/timer/timer.h"
++#include "services/device/hid/hid_service.h"
++#include "net/base/io_buffer.h"
++
++namespace device {
++
++class HidServiceFreeBSD : public HidService {
++ public:
++ HidServiceFreeBSD();
++
++ HidServiceFreeBSD(const HidServiceFreeBSD&) = delete;
++ HidServiceFreeBSD& operator=(const HidServiceFreeBSD&) = delete;
++
++ ~HidServiceFreeBSD() override;
++
++ void Connect(const std::string& device_guid,
++ bool allow_protected_reports,
++ bool allow_fido_reports,
++ ConnectCallback connect) override;
++ base::WeakPtr<HidService> GetWeakPtr() override;
++
++ private:
++ struct ConnectParams;
++ class BlockingTaskRunnerHelper;
++
++ static void OpenOnBlockingThread(std::unique_ptr<ConnectParams> params);
++ static void FinishOpen(std::unique_ptr<ConnectParams> params);
++
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ // |helper_| lives on the sequence |blocking_task_runner_| posts to and holds
++ // a weak reference back to the service that owns it.
++ std::unique_ptr<BlockingTaskRunnerHelper, base::OnTaskRunnerDeleter> helper_;
++ base::WeakPtrFactory<HidServiceFreeBSD> weak_factory_{this};
++};
++
++} // namespace device
++
++#endif // DEVICE_HID_HID_SERVICE_FREEBSD_H_
diff --git a/www/ungoogled-chromium/files/patch-services_device_serial_BUILD.gn b/www/ungoogled-chromium/files/patch-services_device_serial_BUILD.gn
new file mode 100644
index 000000000000..347e50d5a182
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_serial_BUILD.gn
@@ -0,0 +1,16 @@
+--- services/device/serial/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ services/device/serial/BUILD.gn
+@@ -83,6 +83,13 @@ if (is_win || ((is_linux || is_chromeos) && use_udev)
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "serial_device_enumerator_linux.cc",
++ "serial_device_enumerator_linux.h"
++ ]
++ }
++
+ if (use_udev) {
+ deps += [ "//device/udev_linux" ]
+ }
diff --git a/www/ungoogled-chromium/files/patch-services_device_serial_serial__device__enumerator.cc b/www/ungoogled-chromium/files/patch-services_device_serial_serial__device__enumerator.cc
new file mode 100644
index 000000000000..1a64ee89d5c4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_serial_serial__device__enumerator.cc
@@ -0,0 +1,20 @@
+--- services/device/serial/serial_device_enumerator.cc.orig 2022-10-01 07:40:07 UTC
++++ services/device/serial/serial_device_enumerator.cc
+@@ -11,7 +11,7 @@
+ #include "build/build_config.h"
+ #include "components/device_event_log/device_event_log.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "services/device/serial/serial_device_enumerator_linux.h"
+ #elif BUILDFLAG(IS_MAC)
+ #include "services/device/serial/serial_device_enumerator_mac.h"
+@@ -24,7 +24,7 @@ namespace device {
+ // static
+ std::unique_ptr<SerialDeviceEnumerator> SerialDeviceEnumerator::Create(
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return SerialDeviceEnumeratorLinux::Create();
+ #elif BUILDFLAG(IS_MAC)
+ return std::make_unique<SerialDeviceEnumeratorMac>();
diff --git a/www/ungoogled-chromium/files/patch-services_device_serial_serial__io__handler__posix.cc b/www/ungoogled-chromium/files/patch-services_device_serial_serial__io__handler__posix.cc
new file mode 100644
index 000000000000..df6814b7b528
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_serial_serial__io__handler__posix.cc
@@ -0,0 +1,11 @@
+--- services/device/serial/serial_io_handler_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ services/device/serial/serial_io_handler_posix.cc
+@@ -67,7 +67,7 @@ bool BitrateToSpeedConstant(int bitrate, speed_t* spee
+ BITRATE_TO_SPEED_CASE(9600)
+ BITRATE_TO_SPEED_CASE(19200)
+ BITRATE_TO_SPEED_CASE(38400)
+-#if !BUILDFLAG(IS_MAC)
++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ BITRATE_TO_SPEED_CASE(57600)
+ BITRATE_TO_SPEED_CASE(115200)
+ BITRATE_TO_SPEED_CASE(230400)
diff --git a/www/ungoogled-chromium/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc b/www/ungoogled-chromium/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
new file mode 100644
index 000000000000..fd9a6c15e4d1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
@@ -0,0 +1,14 @@
+--- services/device/time_zone_monitor/time_zone_monitor_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ services/device/time_zone_monitor/time_zone_monitor_linux.cc
+@@ -137,7 +137,11 @@ class TimeZoneMonitorLinuxImpl
+ // false positives are harmless, assuming the false positive rate is
+ // reasonable.
+ const char* const kFilesToWatch[] = {
++#if defined(OS_BSD)
++ "/etc/localtime",
++#else
+ "/etc/localtime", "/etc/timezone", "/etc/TZ",
++#endif
+ };
+ for (size_t index = 0; index < std::size(kFilesToWatch); ++index) {
+ file_path_watchers_.push_back(std::make_unique<base::FilePathWatcher>());
diff --git a/www/ungoogled-chromium/files/patch-services_device_usb_BUILD.gn b/www/ungoogled-chromium/files/patch-services_device_usb_BUILD.gn
new file mode 100644
index 000000000000..3f66947343dd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_device_usb_BUILD.gn
@@ -0,0 +1,38 @@
+--- services/device/usb/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ services/device/usb/BUILD.gn
+@@ -103,15 +103,17 @@ static_library("usb") {
+ deps += [ "//third_party/re2" ]
+ }
+
+- if (is_mac) {
+- sources += [
+- "usb_device_handle_mac.cc",
+- "usb_device_handle_mac.h",
+- "usb_device_mac.cc",
+- "usb_device_mac.h",
+- "usb_service_mac.cc",
+- "usb_service_mac.h",
+- ]
++ if (is_mac || is_bsd) {
++ if (is_mac) {
++ sources += [
++ "usb_device_handle_mac.cc",
++ "usb_device_handle_mac.h",
++ "usb_device_mac.cc",
++ "usb_device_mac.h",
++ "usb_service_mac.cc",
++ "usb_service_mac.h",
++ ]
++ }
+
+ # These sources and deps are required for libusb.
+ # TODO(https://crbug.com/1096743) Remove these sources.
+@@ -152,7 +154,7 @@ static_library("usb") {
+ deps += [ "//device/udev_linux" ]
+ }
+
+- if (is_android || is_chromeos || is_linux) {
++ if (is_android || is_chromeos || is_linux && !is_bsd) {
+ sources += [
+ "usb_device_handle_usbfs.cc",
+ "usb_device_handle_usbfs.h",
diff --git a/www/ungoogled-chromium/files/patch-services_network_BUILD.gn b/www/ungoogled-chromium/files/patch-services_network_BUILD.gn
new file mode 100644
index 000000000000..07da042faf7d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_network_BUILD.gn
@@ -0,0 +1,10 @@
+--- services/network/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ services/network/BUILD.gn
+@@ -322,7 +322,6 @@ if (is_linux || is_chromeos) {
+ ]
+ deps = [
+ "//base:base",
+- "//sandbox/linux:sandbox_services",
+ "//sandbox/policy:policy",
+ ]
+ }
diff --git a/www/ungoogled-chromium/files/patch-services_network_network__sandbox__hook__linux.cc b/www/ungoogled-chromium/files/patch-services_network_network__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..b573a006b604
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_network_network__sandbox__hook__linux.cc
@@ -0,0 +1,26 @@
+--- services/network/network_sandbox_hook_linux.cc.orig 2022-10-01 07:40:07 UTC
++++ services/network/network_sandbox_hook_linux.cc
+@@ -26,12 +26,15 @@ sandbox::syscall_broker::BrokerCommandSet GetNetworkBr
+ });
+ }
+
++#if !defined(OS_BSD)
+ std::vector<BrokerFilePermission> GetNetworkFilePermissions() {
+ // TODO(tsepez): remove universal permission under filesystem root.
+ return {BrokerFilePermission::ReadWriteCreateRecursive("/")};
+ }
++#endif
+
+ bool NetworkPreSandboxHook(sandbox::policy::SandboxLinux::Options options) {
++#if !defined(OS_BSD)
+ auto* instance = sandbox::policy::SandboxLinux::GetInstance();
+
+ instance->StartBrokerProcess(
+@@ -39,6 +42,7 @@ bool NetworkPreSandboxHook(sandbox::policy::SandboxLin
+ sandbox::policy::SandboxLinux::PreSandboxHook(), options);
+
+ instance->EngageNamespaceSandboxIfPossible();
++#endif
+ return true;
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-services_network_network__sandbox__hook__linux.h b/www/ungoogled-chromium/files/patch-services_network_network__sandbox__hook__linux.h
new file mode 100644
index 000000000000..03f716e23fea
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_network_network__sandbox__hook__linux.h
@@ -0,0 +1,14 @@
+--- services/network/network_sandbox_hook_linux.h.orig 2022-10-01 07:40:07 UTC
++++ services/network/network_sandbox_hook_linux.h
+@@ -10,7 +10,11 @@
+ #include "base/component_export.h"
+ #include "sandbox/linux/syscall_broker/broker_command.h"
+ #include "sandbox/linux/syscall_broker/broker_file_permission.h"
++#if defined(OS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#else
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+
+ namespace network {
+
diff --git a/www/ungoogled-chromium/files/patch-services_network_network__service.cc b/www/ungoogled-chromium/files/patch-services_network_network__service.cc
new file mode 100644
index 000000000000..06c978d649c2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_network_network__service.cc
@@ -0,0 +1,11 @@
+--- services/network/network_service.cc.orig 2022-10-01 07:40:07 UTC
++++ services/network/network_service.cc
+@@ -83,7 +83,7 @@
+ #include "third_party/boringssl/src/include/openssl/cpu.h"
+ #endif
+
+-#if (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)) || \
++#if ((BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)) || BUILDFLAG(IS_BSD)) || \
+ BUILDFLAG(IS_CHROMEOS_LACROS)
+
+ #include "components/os_crypt/key_storage_config_linux.h"
diff --git a/www/ungoogled-chromium/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc b/www/ungoogled-chromium/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
new file mode 100644
index 000000000000..904d8aff9ddb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
@@ -0,0 +1,65 @@
+--- services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc.orig 2022-10-01 07:40:07 UTC
++++ services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc
+@@ -52,7 +52,7 @@ uint32_t CalculatePrivateFootprintKb(const mojom::RawO
+ uint32_t shared_resident_kb) {
+ DCHECK(os_dump.platform_private_footprint);
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ uint64_t rss_anon_bytes = os_dump.platform_private_footprint->rss_anon_bytes;
+ uint64_t vm_swap_bytes = os_dump.platform_private_footprint->vm_swap_bytes;
+ return (rss_anon_bytes + vm_swap_bytes) / 1024;
+@@ -80,7 +80,7 @@ memory_instrumentation::mojom::OSMemDumpPtr CreatePubl
+ os_dump->is_peak_rss_resettable = internal_os_dump.is_peak_rss_resettable;
+ os_dump->private_footprint_kb =
+ CalculatePrivateFootprintKb(internal_os_dump, shared_resident_kb);
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ os_dump->private_footprint_swap_kb =
+ internal_os_dump.platform_private_footprint->vm_swap_bytes / 1024;
+ #endif
+@@ -259,7 +259,7 @@ void QueuedRequestDispatcher::SetUpAndDispatch(
+
+ // On most platforms each process can dump data about their own process
+ // so ask each process to do so Linux is special see below.
+-#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD)
+ request->pending_responses.insert({client_info.pid, ResponseType::kOSDump});
+ client->RequestOSMemoryDump(request->memory_map_option(),
+ {base::kNullProcessId},
+@@ -274,7 +274,7 @@ void QueuedRequestDispatcher::SetUpAndDispatch(
+
+ // In some cases, OS stats can only be dumped from a privileged process to
+ // get around to sandboxing/selinux restrictions (see crbug.com/461788).
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ std::vector<base::ProcessId> pids;
+ mojom::ClientProcess* browser_client = nullptr;
+ base::ProcessId browser_client_pid = base::kNullProcessId;
+@@ -320,7 +320,7 @@ void QueuedRequestDispatcher::SetUpAndDispatchVmRegion
+ const OsCallback& os_callback) {
+ // On Linux, OS stats can only be dumped from a privileged process to
+ // get around to sandboxing/selinux restrictions (see crbug.com/461788).
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ mojom::ClientProcess* browser_client = nullptr;
+ base::ProcessId browser_client_pid = 0;
+ for (const auto& client_info : clients) {
+@@ -371,7 +371,7 @@ QueuedRequestDispatcher::FinalizeVmRegionRequest(
+ // each client process provides 1 OS dump, % the case where the client is
+ // disconnected mid dump.
+ OSMemDumpMap& extra_os_dumps = response.second.os_dumps;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ for (auto& kv : extra_os_dumps) {
+ auto pid = kv.first == base::kNullProcessId ? original_pid : kv.first;
+ DCHECK(results.find(pid) == results.end());
+@@ -433,7 +433,7 @@ void QueuedRequestDispatcher::Finalize(QueuedRequest*
+ // crash). In the latter case (OS_LINUX) we expect the full map to come
+ // from the browser process response.
+ OSMemDumpMap& extra_os_dumps = response.second.os_dumps;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ for (const auto& kv : extra_os_dumps) {
+ auto pid = kv.first == base::kNullProcessId ? original_pid : kv.first;
+ DCHECK_EQ(pid_to_os_dump[pid], nullptr);
diff --git a/www/ungoogled-chromium/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_BUILD.gn b/www/ungoogled-chromium/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_BUILD.gn
new file mode 100644
index 000000000000..2cb253bdf45b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_BUILD.gn
@@ -0,0 +1,16 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/BUILD.gn
+@@ -29,8 +29,12 @@ component("memory_instrumentation") {
+ sources += [ "os_metrics_win.cc" ]
+ }
+
+- if (is_android || is_linux || is_chromeos) {
++ if ((is_android || is_linux || is_chromeos) && !is_bsd) {
+ sources += [ "os_metrics_linux.cc" ]
++ }
++
++ if (is_bsd) {
++ sources += [ "os_metrics_bsd.cc" ]
+ }
+
+ if (is_fuchsia) {
diff --git a/www/ungoogled-chromium/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h b/www/ungoogled-chromium/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
new file mode 100644
index 000000000000..7e2a7662e2c0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
@@ -0,0 +1,20 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h.orig 2022-10-01 07:40:07 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h
+@@ -45,7 +45,7 @@ class COMPONENT_EXPORT(
+ mojom::RawOSMemDump*);
+ static std::vector<mojom::VmRegionPtr> GetProcessMemoryMaps(base::ProcessId);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ static void SetProcSmapsForTesting(FILE*);
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ||
+ // BUILDFLAG(IS_ANDROID)
+@@ -62,7 +62,7 @@ class COMPONENT_EXPORT(
+ static std::vector<mojom::VmRegionPtr> GetProcessModules(base::ProcessId);
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ // Provides information on the dump state of resident pages. These values are
+ // written to logs. New enum values can be added, but existing enums must
+ // never be renumbered or deleted and reused.
diff --git a/www/ungoogled-chromium/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__bsd.cc b/www/ungoogled-chromium/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__bsd.cc
new file mode 100644
index 000000000000..6400f6a8a117
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__bsd.cc
@@ -0,0 +1,61 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_bsd.cc.orig 2022-10-01 07:40:07 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_bsd.cc
+@@ -0,0 +1,58 @@
++// Copyright 2022 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 "services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h"
++
++#include "base/memory/page_size.h"
++#include "base/process/process.h"
++#include "base/process/process_handle.h"
++
++#include <sys/sysctl.h>
++
++#include <vector>
++
++#if BUILDFLAG(IS_OPENBSD)
++#define vm_rssize info.p_vm_rssize
++#elif BUILDFLAG(IS_FREEBSD)
++#include <sys/user.h>
++#define vm_rssize info.ki_rssize
++#endif
++
++namespace memory_instrumentation {
++
++// static
++bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
++ mojom::RawOSMemDump* dump) {
++ base::Process process = pid == base::kNullProcessId
++ ? base::Process::Current()
++ : base::Process::Open(pid);
++ const size_t kPageSize = base::GetPageSize();
++ struct kinfo_proc info;
++ size_t length = sizeof(struct kinfo_proc);
++#if BUILDFLAG(IS_OPENBSD)
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process.Handle(),
++ static_cast<int>(length), 1 };
++#elif BUILDFLAG(IS_FREEBSD)
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process.Handle() };
++#endif
++
++ if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0)
++ return false;
++
++ dump->resident_set_kb = (vm_rssize * kPageSize) / 1024;
++ dump->platform_private_footprint->rss_anon_bytes =
++ vm_rssize * kPageSize;
++ dump->platform_private_footprint->vm_swap_bytes = 0;
++
++ return true;
++}
++
++// static
++std::vector<mojom::VmRegionPtr> OSMetrics::GetProcessMemoryMaps(
++ base::ProcessId) {
++ NOTIMPLEMENTED();
++ return std::vector<mojom::VmRegionPtr>();
++}
++
++} // namespace memory_instrumentation
diff --git a/www/ungoogled-chromium/files/patch-services_service__manager_BUILD.gn b/www/ungoogled-chromium/files/patch-services_service__manager_BUILD.gn
new file mode 100644
index 000000000000..28c441c81ecc
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_service__manager_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ services/service_manager/BUILD.gn
+@@ -67,7 +67,7 @@ source_set("service_manager") {
+ ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ deps += [ "//sandbox/linux:sandbox_services" ]
+ }
+ }
diff --git a/www/ungoogled-chromium/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn b/www/ungoogled-chromium/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
new file mode 100644
index 000000000000..ad87aac11213
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/public/cpp/service_executable/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ services/service_manager/public/cpp/service_executable/BUILD.gn
+@@ -22,7 +22,7 @@ source_set("support") {
+ "//services/service_manager/public/mojom",
+ ]
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ deps += [
+ "//sandbox/linux:sandbox",
+ "//sandbox/linux:sandbox_services",
diff --git a/www/ungoogled-chromium/files/patch-services_video__capture_broadcasting__receiver.cc b/www/ungoogled-chromium/files/patch-services_video__capture_broadcasting__receiver.cc
new file mode 100644
index 000000000000..77c7e7f5d69a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_video__capture_broadcasting__receiver.cc
@@ -0,0 +1,11 @@
+--- services/video_capture/broadcasting_receiver.cc.orig 2022-10-01 07:40:07 UTC
++++ services/video_capture/broadcasting_receiver.cc
+@@ -234,7 +234,7 @@ void BroadcastingReceiver::BufferContext::
+ ConvertRawFileDescriptorToUnsafeShmemRegion() {
+ DCHECK(buffer_handle_->is_shared_memory_via_raw_file_descriptor());
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ const size_t handle_size =
+ buffer_handle_->get_shared_memory_via_raw_file_descriptor()
+ ->shared_memory_size_in_bytes;
diff --git a/www/ungoogled-chromium/files/patch-services_video__capture_public_mojom_video__capture__service.mojom b/www/ungoogled-chromium/files/patch-services_video__capture_public_mojom_video__capture__service.mojom
new file mode 100644
index 000000000000..c2348e4c9d5e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-services_video__capture_public_mojom_video__capture__service.mojom
@@ -0,0 +1,15 @@
+--- services/video_capture/public/mojom/video_capture_service.mojom.orig 2022-10-01 07:40:07 UTC
++++ services/video_capture/public/mojom/video_capture_service.mojom
+@@ -24,10 +24,10 @@ interface AcceleratorFactory {
+ pending_receiver<chromeos_camera.mojom.MjpegDecodeAccelerator> jda);
+ };
+
+-[EnableIf=is_fuchsia]
++[EnableIf=is_openbsd]
+ const sandbox.mojom.Sandbox kVideoCaptureSandbox
+ = sandbox.mojom.Sandbox.kVideoCapture;
+-[EnableIfNot=is_fuchsia]
++[EnableIfNot=is_openbsd]
+ const sandbox.mojom.Sandbox kVideoCaptureSandbox
+ = sandbox.mojom.Sandbox.kNoSandbox;
+
diff --git a/www/ungoogled-chromium/files/patch-skia_ext_SkMemory__new__handler.cpp b/www/ungoogled-chromium/files/patch-skia_ext_SkMemory__new__handler.cpp
new file mode 100644
index 000000000000..c5d5605f89f8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-skia_ext_SkMemory__new__handler.cpp
@@ -0,0 +1,11 @@
+--- skia/ext/SkMemory_new_handler.cpp.orig 2022-10-01 07:40:07 UTC
++++ skia/ext/SkMemory_new_handler.cpp
+@@ -79,7 +79,7 @@ static void* malloc_nothrow(size_t size) {
+ // TODO(b.kelemen): we should always use UncheckedMalloc but currently it
+ // doesn't work as intended everywhere.
+ void* result;
+-#if BUILDFLAG(IS_IOS)
++#if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_BSD)
+ result = malloc(size);
+ #else
+ // It's the responsibility of the caller to check the return value.
diff --git a/www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_base_config.h b/www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_base_config.h
new file mode 100644
index 000000000000..68b8e662813b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_base_config.h
@@ -0,0 +1,21 @@
+--- third_party/abseil-cpp/absl/base/config.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/abseil-cpp/absl/base/config.h
+@@ -458,7 +458,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] !=
+ // POSIX.1-2001.
+ #ifdef ABSL_HAVE_SCHED_YIELD
+ #error ABSL_HAVE_SCHED_YIELD cannot be directly set
+-#elif defined(__linux__) || defined(__ros__) || defined(__native_client__)
++#elif defined(__linux__) || defined(__ros__) || defined(__native_client__) || \
++ defined(__OpenBSD__) || defined(__FreeBSD__)
+ #define ABSL_HAVE_SCHED_YIELD 1
+ #endif
+
+@@ -473,7 +474,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] !=
+ // platforms.
+ #ifdef ABSL_HAVE_SEMAPHORE_H
+ #error ABSL_HAVE_SEMAPHORE_H cannot be directly set
+-#elif defined(__linux__) || defined(__ros__)
++#elif defined(__linux__) || defined(__ros__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+ #define ABSL_HAVE_SEMAPHORE_H 1
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_base_internal_sysinfo.cc b/www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_base_internal_sysinfo.cc
new file mode 100644
index 000000000000..4c9c3dab1dc3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_base_internal_sysinfo.cc
@@ -0,0 +1,23 @@
+--- third_party/abseil-cpp/absl/base/internal/sysinfo.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/abseil-cpp/absl/base/internal/sysinfo.cc
+@@ -30,7 +30,7 @@
+ #include <sys/syscall.h>
+ #endif
+
+-#if defined(__APPLE__) || defined(__FreeBSD__)
++#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+ #include <sys/sysctl.h>
+ #endif
+
+@@ -307,9 +307,11 @@ static double GetNominalCPUFrequency() {
+ // a new mode (turbo mode). Essentially, those frequencies cannot
+ // always be relied upon. The same reasons apply to /proc/cpuinfo as
+ // well.
++#if !defined(__OpenBSD__) && !defined(__FreeBSD__) // pledge violation
+ if (ReadLongFromFile("/sys/devices/system/cpu/cpu0/tsc_freq_khz", &freq)) {
+ return freq * 1e3; // Value is kHz.
+ }
++#endif
+
+ #if defined(ABSL_INTERNAL_UNSCALED_CYCLECLOCK_FREQUENCY_IS_CPU_FREQUENCY)
+ // On these platforms, the TSC frequency is the nominal CPU
diff --git a/www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_debugging_internal_elf__mem__image.h b/www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_debugging_internal_elf__mem__image.h
new file mode 100644
index 000000000000..89aa32762542
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_debugging_internal_elf__mem__image.h
@@ -0,0 +1,11 @@
+--- third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h
+@@ -33,7 +33,7 @@
+
+ #if defined(__ELF__) && !defined(__OpenBSD__) && !defined(__QNX__) && \
+ !defined(__native_client__) && !defined(__asmjs__) && \
+- !defined(__wasm__) && !defined(__HAIKU__)
++ !defined(__wasm__) && !defined(__HAIKU__) && !defined(__FreeBSD__)
+ #define ABSL_HAVE_ELF_MEM_IMAGE 1
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_time_internal_cctz_src_time__zone__format.cc b/www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_time_internal_cctz_src_time__zone__format.cc
new file mode 100644
index 000000000000..fd35ed0a0bb1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_abseil-cpp_absl_time_internal_cctz_src_time__zone__format.cc
@@ -0,0 +1,11 @@
+--- third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc
+@@ -19,7 +19,7 @@
+ #endif
+
+ #if defined(HAS_STRPTIME) && HAS_STRPTIME
+-#if !defined(_XOPEN_SOURCE) && !defined(__OpenBSD__)
++#if !defined(_XOPEN_SOURCE) && !defined(__OpenBSD__) && !defined(__FreeBSD__)
+ #define _XOPEN_SOURCE // Definedness suffices for strptime.
+ #endif
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_BUILD.gn b/www/ungoogled-chromium/files/patch-third__party_angle_BUILD.gn
new file mode 100644
index 000000000000..72fd9534fa70
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_BUILD.gn
@@ -0,0 +1,47 @@
+--- third_party/angle/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/BUILD.gn
+@@ -261,7 +261,6 @@ config("extra_warnings") {
+ "-Wtautological-type-limit-compare",
+ "-Wundefined-reinterpret-cast",
+ "-Wunneeded-internal-declaration",
+- "-Wunused-but-set-variable",
+ "-Wsuggest-destructor-override",
+ "-Wsuggest-override",
+
+@@ -439,7 +438,7 @@ angle_static_library("angle_common") {
+ all_dependent_configs = [ ":angle_disable_pool_alloc" ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ libs = [ "dl" ]
+ }
+
+@@ -569,6 +568,9 @@ angle_static_library("angle_gpu_info_util") {
+ "Xi",
+ "Xext",
+ ]
++ if (is_bsd) {
++ libs += [ "GL" ]
++ }
+ }
+
+ if (angle_use_wayland && angle_has_build) {
+@@ -1089,12 +1091,12 @@ if (angle_use_wayland) {
+ "wayland-client",
+ "wayland-egl",
+ ]
++ } else {
++ include_dirs = [
++ "$wayland_dir/egl",
++ "$wayland_dir/src",
++ ]
+ }
+-
+- include_dirs = [
+- "$wayland_dir/egl",
+- "$wayland_dir/src",
+- ]
+ }
+
+ group("angle_wayland") {
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_src_common_platform.h b/www/ungoogled-chromium/files/patch-third__party_angle_src_common_platform.h
new file mode 100644
index 000000000000..7d15d876227c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_src_common_platform.h
@@ -0,0 +1,19 @@
+--- third_party/angle/src/common/platform.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/src/common/platform.h
+@@ -26,7 +26,15 @@
+ #elif defined(__linux__) || defined(EMSCRIPTEN)
+ # define ANGLE_PLATFORM_LINUX 1
+ # define ANGLE_PLATFORM_POSIX 1
+-#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
++#elif defined(__OpenBSD__)
++# define ANGLE_PLATFORM_OPENBSD 1
++# define ANGLE_PLATFORM_POSIX 1
++# define ANGLE_PLATFORM_BSD 1
++#elif defined(__FreeBSD__)
++# define ANGLE_PLATFORM_FREEBSD 1
++# define ANGLE_PLATFORM_POSIX 1
++# define ANGLE_PLATFORM_BSD 1
++#elif defined(__NetBSD__) || \
+ defined(__DragonFly__) || defined(__sun) || defined(__GLIBC__) || defined(__GNU__) || \
+ defined(__QNX__) || defined(__Fuchsia__) || defined(__HAIKU__)
+ # define ANGLE_PLATFORM_POSIX 1
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_src_common_vulkan_BUILD.gn b/www/ungoogled-chromium/files/patch-third__party_angle_src_common_vulkan_BUILD.gn
new file mode 100644
index 000000000000..3ae1f1a598f6
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_src_common_vulkan_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/angle/src/common/vulkan/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/src/common/vulkan/BUILD.gn
+@@ -33,7 +33,7 @@ if (angle_enable_vulkan || angle_build_vulkan_system_i
+ if (angle_shared_libvulkan) {
+ defines = [ "ANGLE_SHARED_LIBVULKAN=1" ]
+ }
+- if (angle_use_wayland) {
++ if (angle_use_wayland && !use_system_libwayland) {
+ include_dirs = [ "$wayland_dir/src" ]
+ }
+ configs = [ "$angle_root:angle_vulkan_wayland_config" ]
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h b/www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
new file mode 100644
index 000000000000..f7319d70bd1b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
@@ -0,0 +1,16 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_internal.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_internal.h
+@@ -14,6 +14,13 @@
+ namespace angle
+ {
+
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices);
++#if defined(__FreeBSD__)
++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices);
++#endif
++#endif
++
+ // Defined in SystemInfo_libpci when GPU_INFO_USE_LIBPCI is defined.
+ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices);
+ // Defined in SystemInfo_x11 when GPU_INFO_USE_X11 is defined.
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp b/www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
new file mode 100644
index 000000000000..9335f81efec3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
@@ -0,0 +1,90 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp
+@@ -12,6 +12,11 @@
+ #include <pci/pci.h>
+ #include <unistd.h>
+
++#if defined(__FreeBSD__)
++#include <fcntl.h>
++#include <sys/pciio.h>
++#endif
++
+ #include "common/angleutils.h"
+ #include "common/debug.h"
+
+@@ -85,6 +90,75 @@ struct LibPCI : private angle::NonCopyable
+ };
+
+ } // anonymous namespace
++
++#if defined(__FreeBSD__)
++// Adds an entry per PCI GPU found and fills the device and vendor ID.
++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices)
++{
++ int fd;
++ struct pci_conf_io conf;
++ struct pci_conf *matches;
++ uint32_t offset = 0;
++
++ fd = open("/dev/pci", O_RDONLY);
++ if (fd < 0)
++ return false;
++
++ matches = new struct pci_conf[32];
++ conf.generation = 0;
++ do {
++ conf.pat_buf_len = 0;
++ conf.num_patterns = 0;
++ conf.patterns = NULL;
++ conf.match_buf_len = 32 * sizeof(struct pci_conf);
++ conf.num_matches = 32;
++ conf.matches = matches;
++ conf.offset = offset;
++ conf.status = PCI_GETCONF_ERROR;
++ if (ioctl(fd, PCIOCGETCONF, &conf) < 0) {
++ if (errno == ENODEV)
++ break;
++ }
++ /* PCI_GETCONF_LIST_CHANGED would require us to start over. */
++ if (conf.status == PCI_GETCONF_ERROR || conf.status == PCI_GETCONF_LIST_CHANGED) {
++ break;
++ }
++
++ for (unsigned int i = 0; i < conf.num_matches; i++) {
++ uint16_t device_class = (matches[i].pc_class << 8) | matches[i].pc_subclass;
++
++ // Skip non-GPU devices
++ switch (device_class)
++ {
++ case PCI_CLASS_DISPLAY_VGA:
++ case PCI_CLASS_DISPLAY_XGA:
++ case PCI_CLASS_DISPLAY_3D:
++ break;
++ default:
++ continue;
++ }
++
++ // Skip unknown devices
++ if (matches[i].pc_vendor == 0 || matches[i].pc_device == 0) {
++ continue;
++ }
++
++ GPUDeviceInfo info;
++ info.vendorId = matches[i].pc_vendor;
++ info.deviceId = matches[i].pc_device;
++
++ devices->push_back(info);
++ }
++ offset += conf.num_matches;
++ } while (conf.status == PCI_GETCONF_MORE_DEVS);
++
++ delete[] matches;
++
++ close(fd);
++
++ return true;
++}
++#endif
+
+ // Adds an entry per PCI GPU found and fills the device and vendor ID.
+ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices)
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp b/www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
new file mode 100644
index 000000000000..1408e5c436e3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
@@ -0,0 +1,35 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp
+@@ -71,6 +71,24 @@ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo
+
+ bool GetSystemInfo(SystemInfo *info)
+ {
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++ if (!CollectMesaCardInfo(&(info->gpus)))
++ {
++#if defined(__FreeBSD__)
++ if (!GetPCIDevicesFreeBSD(&(info->gpus)))
++ {
++#endif
++#if defined(ANGLE_USE_VULKAN_SYSTEM_INFO)
++ // Try vulkan backend to get GPU info
++ return GetSystemInfoVulkan(info);
++#else
++ return false;
++#endif
++#if defined(__FreeBSD__)
++ }
++#endif
++ }
++#else
+ if (!GetPCIDevicesWithLibPCI(&(info->gpus)))
+ {
+ #if defined(ANGLE_USE_VULKAN_SYSTEM_INFO)
+@@ -85,6 +103,7 @@ bool GetSystemInfo(SystemInfo *info)
+ {
+ return false;
+ }
++#endif
+
+ GetDualGPUInfo(info);
+
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp b/www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
new file mode 100644
index 000000000000..b175e3b4bbd1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
@@ -0,0 +1,60 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp
+@@ -8,6 +8,10 @@
+
+ #include "gpu_info_util/SystemInfo_internal.h"
+
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++#include <GL/glx.h>
++#include <GL/glxext.h>
++#endif
+ #include <X11/Xlib.h>
+
+ #include "common/debug.h"
+@@ -18,8 +22,46 @@
+ # error SystemInfo_x11.cpp compiled without GPU_INFO_USE_X11
+ #endif
+
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++#define GLX_RENDERER_VENDOR_ID_MESA 0x8183
++#define GLX_RENDERER_DEVICE_ID_MESA 0x8184
++#endif
++
+ namespace angle
+ {
++
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices)
++{
++ unsigned int vid[3], did[3];
++
++ Display *display = XOpenDisplay(NULL);
++ if (!display) {
++ return false;
++ }
++
++ PFNGLXQUERYRENDERERINTEGERMESAPROC queryInteger =
++ (PFNGLXQUERYRENDERERINTEGERMESAPROC) glXGetProcAddressARB((const GLubyte *)
++ "glXQueryRendererIntegerMESA");
++
++ if (!queryInteger)
++ return false;
++
++ bool vendor_ret =
++ queryInteger(display, 0, 0, GLX_RENDERER_VENDOR_ID_MESA, vid);
++ bool device_ret =
++ queryInteger(display, 0, 0, GLX_RENDERER_DEVICE_ID_MESA, did);
++
++ if (vendor_ret && device_ret) {
++ GPUDeviceInfo info;
++ info.vendorId = vid[0];
++ info.deviceId = did[0];
++ devices->push_back(info);
++ }
++
++ return true;
++}
++#endif
+
+ bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version)
+ {
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_Display.cpp b/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_Display.cpp
new file mode 100644
index 000000000000..94bcc98b0d1e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_Display.cpp
@@ -0,0 +1,47 @@
+--- third_party/angle/src/libANGLE/Display.cpp.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/src/libANGLE/Display.cpp
+@@ -54,7 +54,7 @@
+ # include "libANGLE/renderer/gl/wgl/DisplayWGL.h"
+ # elif defined(ANGLE_PLATFORM_MACOS) || defined(ANGLE_PLATFORM_IOS)
+ # include "libANGLE/renderer/gl/apple/DisplayApple_api.h"
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ # include "libANGLE/renderer/gl/egl/DisplayEGL.h"
+ # if defined(ANGLE_USE_GBM)
+ # include "libANGLE/renderer/gl/egl/gbm/DisplayGbm.h"
+@@ -331,7 +331,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
+ impl = rx::CreateDisplayCGLOrEAGL(state);
+ break;
+
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ # if defined(ANGLE_USE_GBM)
+ if (platformType == 0)
+ {
+@@ -374,7 +374,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
+ #if defined(ANGLE_ENABLE_OPENGL)
+ # if defined(ANGLE_PLATFORM_WINDOWS)
+ impl = new rx::DisplayWGL(state);
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ # if defined(ANGLE_USE_GBM)
+ if (platformType == 0 ||
+ platformType == EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE)
+@@ -425,7 +425,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
+ impl = rx::CreateVulkanWin32Display(state);
+ }
+ break;
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ # if defined(ANGLE_USE_GBM)
+ if (platformType == EGL_PLATFORM_GBM_KHR && rx::IsVulkanGbmDisplayAvailable())
+ {
+@@ -1986,7 +1986,7 @@ static ClientExtensions GenerateClientExtensions()
+ extensions.x11Visual = true;
+ #endif
+
+-#if defined(ANGLE_PLATFORM_LINUX)
++#if defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ extensions.platformANGLEDeviceTypeEGLANGLE = true;
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_formatutils.cpp b/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_formatutils.cpp
new file mode 100644
index 000000000000..9b71499b1d3c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_formatutils.cpp
@@ -0,0 +1,11 @@
+--- third_party/angle/src/libANGLE/formatutils.cpp.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/src/libANGLE/formatutils.cpp
+@@ -1399,7 +1399,7 @@ static InternalFormatInfoMap BuildInternalFormatInfoMa
+ AddYUVFormat(&map, GL_G8_B8R8_2PLANE_420_UNORM_ANGLE, true, 8, 8, 8, 0, 0, GL_G8_B8R8_2PLANE_420_UNORM_ANGLE, GL_UNSIGNED_BYTE, GL_UNSIGNED_NORMALIZED, false, RequireExt<&Extensions::yuvInternalFormatANGLE>, RequireExt<&Extensions::yuvInternalFormatANGLE>, RequireExt<&Extensions::yuvInternalFormatANGLE>, NeverSupported, NeverSupported);
+ AddYUVFormat(&map, GL_G8_B8_R8_3PLANE_420_UNORM_ANGLE, true, 8, 8, 8, 0, 0, GL_G8_B8_R8_3PLANE_420_UNORM_ANGLE, GL_UNSIGNED_BYTE, GL_UNSIGNED_NORMALIZED, false, RequireExt<&Extensions::yuvInternalFormatANGLE>, RequireExt<&Extensions::yuvInternalFormatANGLE>, RequireExt<&Extensions::yuvInternalFormatANGLE>, NeverSupported, NeverSupported);
+
+-#if defined(ANGLE_PLATFORM_LINUX)
++#if defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ // From GL_OES_required_internalformat
+ // The |shared| bit shouldn't be 2. But given this hits assertion when bits
+ // are checked, it's fine to have this bit set as 2 as a workaround.
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h b/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
new file mode 100644
index 000000000000..26f30beeea17
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
@@ -0,0 +1,11 @@
+--- third_party/angle/src/libANGLE/renderer/driver_utils.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/src/libANGLE/renderer/driver_utils.h
+@@ -183,7 +183,7 @@ inline bool IsWindows()
+
+ inline bool IsLinux()
+ {
+-#if defined(ANGLE_PLATFORM_LINUX)
++#if defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ return true;
+ #else
+ return false;
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_renderer_gl_glx_FunctionsGLX.cpp b/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_renderer_gl_glx_FunctionsGLX.cpp
new file mode 100644
index 000000000000..7332427f7fbd
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_renderer_gl_glx_FunctionsGLX.cpp
@@ -0,0 +1,15 @@
+--- third_party/angle/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp
+@@ -144,10 +144,10 @@ bool FunctionsGLX::initialize(Display *xDisplay, int s
+ // which a GLXWindow was ever created.
+ if (!sLibHandle)
+ {
+- sLibHandle = dlopen("libGL.so.1", RTLD_NOW);
++ sLibHandle = dlopen("libGL.so", RTLD_NOW);
+ if (!sLibHandle)
+ {
+- *errorString = std::string("Could not dlopen libGL.so.1: ") + dlerror();
++ *errorString = std::string("Could not dlopen libGL.so: ") + dlerror();
+ return false;
+ }
+ }
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h b/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h
new file mode 100644
index 000000000000..325e9469e6f7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h
@@ -0,0 +1,11 @@
+--- third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h
+@@ -23,7 +23,7 @@ bool IsVulkanWin32DisplayAvailable();
+ DisplayImpl *CreateVulkanWin32Display(const egl::DisplayState &state);
+ #endif // defined(ANGLE_PLATFORM_WINDOWS)
+
+-#if defined(ANGLE_PLATFORM_LINUX)
++#if defined(ANGLE_PLATFORM_POSIX)
+ bool IsVulkanWaylandDisplayAvailable();
+ DisplayImpl *CreateVulkanWaylandDisplay(const egl::DisplayState &state);
+
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_src_third__party_volk_BUILD.gn b/www/ungoogled-chromium/files/patch-third__party_angle_src_third__party_volk_BUILD.gn
new file mode 100644
index 000000000000..7af0201e40ae
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_src_third__party_volk_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/angle/src/third_party/volk/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/src/third_party/volk/BUILD.gn
+@@ -20,7 +20,7 @@ source_set("volk") {
+ public_configs = [ ":volk_config" ]
+ configs += [ "$angle_root:angle_no_cfi_icall" ]
+ public_deps = [ "$angle_vulkan_headers_dir:vulkan_headers" ]
+- if (angle_use_wayland) {
++ if (angle_use_wayland && !use_system_libwayland) {
+ include_dirs = [ "$wayland_dir/src" ]
+ }
+ }
diff --git a/www/ungoogled-chromium/files/patch-third__party_angle_util_BUILD.gn b/www/ungoogled-chromium/files/patch-third__party_angle_util_BUILD.gn
new file mode 100644
index 000000000000..3a6f8e0c2daa
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_angle_util_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/angle/util/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ third_party/angle/util/BUILD.gn
+@@ -246,7 +246,7 @@ foreach(is_shared_library,
+ ]
+ libs = []
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ libs += [
+ "rt",
+ "dl",
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_common_privacy__budget_active__sampling.cc b/www/ungoogled-chromium/files/patch-third__party_blink_common_privacy__budget_active__sampling.cc
new file mode 100644
index 000000000000..af6268fdd5d7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_common_privacy__budget_active__sampling.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/common/privacy_budget/active_sampling.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/common/privacy_budget/active_sampling.cc
+@@ -24,7 +24,7 @@ namespace blink {
+ bool IdentifiabilityActiveSampler::IsFontFamilyAvailable(const char* family,
+ SkFontMgr* fm) {
+ base::ScopedAllowBaseSyncPrimitives allow;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return !!fm->legacyMakeTypeface(family, SkFontStyle());
+ #else
+ sk_sp<SkFontStyleSet> set(fm->matchFamily(family));
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc b/www/ungoogled-chromium/files/patch-third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc
new file mode 100644
index 000000000000..c7f2f7df010f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc
+@@ -64,7 +64,7 @@ bool StructTraits<blink::mojom::RendererPreferencesDat
+ if (!data.ReadAcceptLanguages(&out->accept_languages))
+ return false;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (!data.ReadSystemFontFamilyName(&out->system_font_family_name))
+ return false;
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences.h b/www/ungoogled-chromium/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences.h
new file mode 100644
index 000000000000..355a848760be
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences.h
@@ -0,0 +1,11 @@
+--- third_party/blink/public/common/renderer_preferences/renderer_preferences.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/public/common/renderer_preferences/renderer_preferences.h
+@@ -50,7 +50,7 @@ struct BLINK_COMMON_EXPORT RendererPreferences {
+ bool webrtc_allow_legacy_tls_protocols{false};
+ UserAgentOverride user_agent_override;
+ std::string accept_languages;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ std::string system_font_family_name;
+ #endif
+ #if BUILDFLAG(IS_WIN)
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h b/www/ungoogled-chromium/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h
new file mode 100644
index 000000000000..33fd2cce474a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h
@@ -0,0 +1,11 @@
+--- third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h
+@@ -157,7 +157,7 @@ struct BLINK_COMMON_EXPORT
+ return data.accept_languages;
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ static const std::string& system_font_family_name(
+ const ::blink::RendererPreferences& data) {
+ return data.system_font_family_name;
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_public_platform_platform.h b/www/ungoogled-chromium/files/patch-third__party_blink_public_platform_platform.h
new file mode 100644
index 000000000000..17df6b3cc1e5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_public_platform_platform.h
@@ -0,0 +1,11 @@
+--- third_party/blink/public/platform/platform.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/public/platform/platform.h
+@@ -340,7 +340,7 @@ class BLINK_PLATFORM_EXPORT Platform {
+ return nullptr;
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // This is called after the thread is created, so the embedder
+ // can initiate an IPC to change its thread type (on Linux we can't
+ // increase the nice value, so we need to ask the browser process). This
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_public_platform_web__vector.h b/www/ungoogled-chromium/files/patch-third__party_blink_public_platform_web__vector.h
new file mode 100644
index 000000000000..135e7aeb131e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_public_platform_web__vector.h
@@ -0,0 +1,11 @@
+--- third_party/blink/public/platform/web_vector.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/public/platform/web_vector.h
+@@ -81,7 +81,7 @@ class WebVector {
+ // The vector can be populated using reserve() and emplace_back().
+ WebVector() = default;
+
+-#if defined(ARCH_CPU_64_BITS)
++#if defined(ARCH_CPU_64_BITS) || defined(__OpenBSD__)
+ // Create a vector with |size| default-constructed elements. We define
+ // a constructor with size_t otherwise we'd have a duplicate define.
+ explicit WebVector(size_t size) : data_(size) {}
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py
new file mode 100644
index 000000000000..f68cb9f752a4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py
+@@ -28,7 +28,7 @@ def init(root_src_dir, enable_style_format=True):
+ root_src_dir = os.path.abspath(root_src_dir)
+
+ # Determine //buildtools/<platform>/ directory
+- if sys.platform.startswith("linux"):
++ if sys.platform.startswith(("linux","openbsd","freebsd")):
+ platform = "linux64"
+ exe_suffix = ""
+ elif sys.platform.startswith("darwin"):
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_build_scripts_run__with__pythonpath.py b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_build_scripts_run__with__pythonpath.py
new file mode 100644
index 000000000000..5448924208e4
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_build_scripts_run__with__pythonpath.py
@@ -0,0 +1,10 @@
+--- third_party/blink/renderer/build/scripts/run_with_pythonpath.py.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/build/scripts/run_with_pythonpath.py
+@@ -22,6 +22,7 @@ def main():
+ existing_pp = (
+ os.pathsep + env['PYTHONPATH']) if 'PYTHONPATH' in env else ''
+ env['PYTHONPATH'] = os.pathsep.join(python_paths) + existing_pp
++ env['LD_LIBRARY_PATH'] = "${WRKSRC}/out/Release"
+ sys.exit(subprocess.call([sys.executable] + args, env=env))
+
+
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_controller_blink__initializer.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_controller_blink__initializer.cc
new file mode 100644
index 000000000000..fd8b360355d1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_controller_blink__initializer.cc
@@ -0,0 +1,35 @@
+--- third_party/blink/renderer/controller/blink_initializer.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/controller/blink_initializer.cc
+@@ -74,12 +74,12 @@
+ #include "third_party/blink/renderer/controller/oom_intervention_impl.h"
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "third_party/blink/renderer/controller/memory_usage_monitor_posix.h"
+ #endif
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ #include "third_party/blink/renderer/controller/highest_pmf_reporter.h"
+ #include "third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h"
+ #endif
+@@ -172,7 +172,7 @@ void InitializeCommon(Platform* platform, mojo::Binder
+ #endif
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ // Initialize UserLevelMemoryPressureSignalGenerator so it starts monitoring.
+ if (UserLevelMemoryPressureSignalGenerator::Enabled())
+ UserLevelMemoryPressureSignalGenerator::Instance();
+@@ -253,7 +253,7 @@ void BlinkInitializer::RegisterInterfaces(mojo::Binder
+ main_thread_task_runner);
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ binders.Add<mojom::blink::MemoryUsageMonitorLinux>(
+ ConvertToBaseRepeatingCallback(
+ CrossThreadBindRepeating(&MemoryUsageMonitorPosix::Bind)),
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc
new file mode 100644
index 000000000000..efbae0cf910e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc
@@ -0,0 +1,21 @@
+--- third_party/blink/renderer/controller/memory_usage_monitor_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/controller/memory_usage_monitor_posix.cc
+@@ -129,15 +129,17 @@ void MemoryUsageMonitorPosix::ResetFileDescriptors() {
+
+ void MemoryUsageMonitorPosix::SetProcFiles(base::File statm_file,
+ base::File status_file) {
++#if !BUILDFLAG(IS_BSD)
+ DCHECK(statm_file.IsValid());
+ DCHECK(status_file.IsValid());
+ DCHECK_EQ(-1, statm_fd_.get());
+ DCHECK_EQ(-1, status_fd_.get());
+ statm_fd_.reset(statm_file.TakePlatformFile());
+ status_fd_.reset(status_file.TakePlatformFile());
++#endif
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // static
+ void MemoryUsageMonitorPosix::Bind(
+ mojo::PendingReceiver<mojom::blink::MemoryUsageMonitorLinux> receiver) {
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h
new file mode 100644
index 000000000000..b159787395c0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h
@@ -0,0 +1,47 @@
+--- third_party/blink/renderer/controller/memory_usage_monitor_posix.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/controller/memory_usage_monitor_posix.h
+@@ -13,7 +13,7 @@
+ #include "third_party/blink/renderer/controller/controller_export.h"
+ #include "third_party/blink/renderer/controller/memory_usage_monitor.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "third_party/blink/public/mojom/memory_usage_monitor_linux.mojom-blink.h"
+ #endif
+
+@@ -22,7 +22,7 @@ namespace blink {
+ // MemoryUsageMonitor implementation for Android and Linux.
+ class CONTROLLER_EXPORT MemoryUsageMonitorPosix
+ : public MemoryUsageMonitor
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ ,
+ public mojom::blink::MemoryUsageMonitorLinux
+ #endif
+@@ -30,7 +30,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix
+ public:
+ MemoryUsageMonitorPosix() = default;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ static void Bind(
+ mojo::PendingReceiver<mojom::blink::MemoryUsageMonitorLinux> receiver);
+ #endif
+@@ -48,7 +48,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix
+ uint64_t* vm_size,
+ uint64_t* vm_hwm_size);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // mojom::MemoryUsageMonitorLinux implementations:
+ void SetProcFiles(base::File statm_file, base::File status_file) override;
+ #endif
+@@ -66,7 +66,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix
+ base::ScopedFD statm_fd_;
+ base::ScopedFD status_fd_;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ mojo::Receiver<mojom::blink::MemoryUsageMonitorLinux> receiver_{this};
+ #endif
+ };
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
new file mode 100644
index 000000000000..3e9ea2b00965
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/editing/editing_behavior.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/core/editing/editing_behavior.cc
+@@ -280,7 +280,7 @@ bool EditingBehavior::ShouldInsertCharacter(const Keyb
+ // unexpected behaviour
+ if (ch < ' ')
+ return false;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // According to XKB map no keyboard combinations with ctrl key are mapped to
+ // printable characters, however we need the filter as the DomKey/text could
+ // contain printable characters.
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_execution__context_navigator__base.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_execution__context_navigator__base.cc
new file mode 100644
index 000000000000..a9b9545d0a45
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_execution__context_navigator__base.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/execution_context/navigator_base.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/core/execution_context/navigator_base.cc
+@@ -31,7 +31,7 @@ String GetReducedNavigatorPlatform() {
+ return "Win32";
+ #elif BUILDFLAG(IS_FUCHSIA)
+ return "";
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return "Linux x86_64";
+ #else
+ #error Unsupported platform
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_exported_web__view__impl.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_exported_web__view__impl.cc
new file mode 100644
index 000000000000..dac419702ebb
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_exported_web__view__impl.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/core/exported/web_view_impl.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/core/exported/web_view_impl.cc
+@@ -404,7 +404,7 @@ SkFontHinting RendererPreferencesToSkiaHinting(
+ const blink::RendererPreferences& prefs) {
+ // 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)
+ if (!prefs.should_antialias_text) {
+ // When anti-aliasing is off, GTK maps all non-zero hinting settings to
+ // 'Normal' hinting so we do the same. Otherwise, folks who have 'Slight'
+@@ -3254,7 +3254,7 @@ void WebViewImpl::UpdateFontRenderingFromRendererPrefs
+ renderer_preferences_.use_subpixel_positioning);
+ // 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)) && \
+ !BUILDFLAG(IS_ANDROID)
+ if (!renderer_preferences_.system_font_family_name.empty()) {
+ WebFontRenderStyle::SetSystemFontFamily(blink::WebString::FromUTF8(
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_frame_web__frame__test.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_frame_web__frame__test.cc
new file mode 100644
index 000000000000..78b16577382e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_frame_web__frame__test.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/core/frame/web_frame_test.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/core/frame/web_frame_test.cc
+@@ -6357,7 +6357,7 @@ TEST_F(WebFrameTest, DISABLED_PositionForPointTest) {
+ MoveCaretStaysHorizontallyAlignedWhenMoved
+ #endif
+ // TODO(crbug.com/1317375): Build these tests on all platforms.
+-#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD)
+ TEST_F(WebFrameTest, MAYBE_SelectRangeStaysHorizontallyAlignedWhenMoved) {
+ RegisterMockedHttpURLLoad("move_caret.html");
+
+@@ -6753,7 +6753,7 @@ TEST_F(CompositedSelectionBoundsTest, LargeSelectionSc
+ TEST_F(CompositedSelectionBoundsTest, LargeSelectionNoScroll) {
+ RunTest("composited_selection_bounds_large_selection_noscroll.html");
+ }
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #if !BUILDFLAG(IS_ANDROID)
+ TEST_F(CompositedSelectionBoundsTest, Input) {
+ web_view_helper_.GetWebView()->GetSettings()->SetDefaultFontSize(16);
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
new file mode 100644
index 000000000000..036a26bc0654
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
+@@ -45,7 +45,7 @@ constexpr base::TimeDelta kEncodeRowSlackBeforeDeadlin
+
+ /* The value is based on user statistics on Nov 2017. */
+ #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN))
++ BUILDFLAG(IS_WIN)) || BUILDFLAG(IS_BSD)
+ const double kIdleTaskStartTimeoutDelayMs = 1000.0;
+ #else
+ const double kIdleTaskStartTimeoutDelayMs = 4000.0; // For ChromeOS, Mobile
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
new file mode 100644
index 000000000000..5ec31c3b78d8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/inspector/inspector_memory_agent.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/core/inspector/inspector_memory_agent.cc
+@@ -190,7 +190,7 @@ InspectorMemoryAgent::GetSamplingProfileById(uint32_t
+
+ Vector<String> InspectorMemoryAgent::Symbolize(
+ const WebVector<void*>& addresses) {
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // TODO(alph): Move symbolization to the client.
+ Vector<void*> addresses_to_symbolize;
+ for (size_t i = 0; i < addresses.size(); i++) {
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_layout_layout__view.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
new file mode 100644
index 000000000000..427517fc95f5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/core/layout/layout_view.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/core/layout/layout_view.cc
+@@ -65,7 +65,7 @@
+ #include "ui/display/screen_info.h"
+ #include "ui/gfx/geometry/quad_f.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/font_cache.h"
+ #endif
+
+@@ -359,7 +359,7 @@ void LayoutView::UpdateLayout() {
+ DCHECK(!layout_state_);
+ LayoutState root_layout_state(*this);
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // The font code in FontPlatformData does not have a direct connection to the
+ // document, the frame or anything from which we could retrieve the device
+ // scale factor. After using zoom for DSF, the GraphicsContext does only ever
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
new file mode 100644
index 000000000000..8bc0f00c43ac
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/paint/paint_layer.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/core/paint/paint_layer.cc
+@@ -110,7 +110,7 @@ namespace blink {
+
+ namespace {
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ struct SameSizeAsPaintLayer : GarbageCollected<PaintLayer>, DisplayItemClient {
+ // The bit fields may fit into the machine word of DisplayItemClient which
+ // has only 8-bit data.
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
new file mode 100644
index 000000000000..2582c1960308
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc
+@@ -151,7 +151,7 @@ bool ScrollbarThemeAura::SupportsDragSnapBack() const
+ // is true for at least GTK and QT apps).
+ // 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)
+ return false;
+ #else
+ return true;
+@@ -325,7 +325,7 @@ bool ScrollbarThemeAura::ShouldCenterOnThumb(const Scr
+ const WebMouseEvent& event) {
+ // 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)
+ if (event.button == WebPointerProperties::Button::kMiddle)
+ return true;
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_media_audio_audio__device__factory.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_media_audio_audio__device__factory.cc
new file mode 100644
index 000000000000..a3fea9217f68
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_media_audio_audio__device__factory.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/modules/media/audio/audio_device_factory.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/modules/media/audio/audio_device_factory.cc
+@@ -34,7 +34,7 @@ namespace {
+ AudioDeviceFactory* g_factory_override = nullptr;
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
+ // Due to driver deadlock issues on Windows (http://crbug/422522) there is a
+ // chance device authorization response is never received from the browser side.
+ // In this case we will time out, to avoid renderer hang forever waiting for
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_media_audio_audio__renderer__mixer__manager__test.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_media_audio_audio__renderer__mixer__manager__test.cc
new file mode 100644
index 000000000000..cfe6c9cc7718
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_media_audio_audio__renderer__mixer__manager__test.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager_test.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager_test.cc
+@@ -678,7 +678,7 @@ TEST_F(AudioRendererMixerManagerTest, MixerParamsLaten
+ mixer->get_output_params_for_testing().sample_rate());
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // Use 10 ms buffer (441 frames per buffer).
+ EXPECT_EQ(output_sample_rate / 100,
+ mixer->get_output_params_for_testing().frames_per_buffer());
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc
new file mode 100644
index 000000000000..745948d77ec2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc
+@@ -284,7 +284,7 @@ TEST_F(WebRtcAudioRendererTest, DISABLED_VerifySinkPar
+ SetupRenderer(kDefaultOutputDeviceId);
+ renderer_proxy_->Start();
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ static const int kExpectedBufferSize = kHardwareSampleRate / 100;
+ #elif BUILDFLAG(IS_ANDROID)
+ static const int kExpectedBufferSize = 2 * kHardwareSampleRate / 100;
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc
new file mode 100644
index 000000000000..8e24934b928e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc
+@@ -379,7 +379,7 @@ class AudioWorkletThreadPriorityTest
+
+ // TODO(crbug.com/1022888): The worklet thread priority is always NORMAL
+ // on OS_LINUX and OS_CHROMEOS regardless of the thread priority setting.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ if (expected_priority == base::ThreadPriorityForTest::kRealtimeAudio ||
+ expected_priority == base::ThreadPriorityForTest::kDisplay) {
+ EXPECT_EQ(actual_priority, base::ThreadPriorityForTest::kNormal);
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_webgl_webgl__rendering__context__base.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_webgl_webgl__rendering__context__base.cc
new file mode 100644
index 000000000000..3184d5b7e7f8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_webgl_webgl__rendering__context__base.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
+@@ -6150,7 +6150,7 @@ void WebGLRenderingContextBase::TexImageHelperMediaVid
+ constexpr bool kAllowZeroCopyImages = true;
+ #endif
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ // TODO(crbug.com/1175907): Only TexImage2D seems to work with the GPU path on
+ // Android M -- appears to work fine on R, but to avoid regressions in <video>
+ // limit to TexImage2D only for now. Fails conformance test on Nexus 5X:
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_webgl_webgl__webcodecs__video__frame.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_webgl_webgl__webcodecs__video__frame.cc
new file mode 100644
index 000000000000..b18d1a8ce7c8
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_modules_webgl_webgl__webcodecs__video__frame.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.cc
+@@ -101,7 +101,7 @@ bool WebGLWebCodecsVideoFrame::Supported(WebGLRenderin
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // TODO(jie.a.chen@intel.com): Add Linux support.
+ return false;
+ #elif BUILDFLAG(IS_MAC)
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_BUILD.gn b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_BUILD.gn
new file mode 100644
index 000000000000..19711aa8a521
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/BUILD.gn
+@@ -1898,7 +1898,7 @@ static_library("test_support") {
+ ]
+
+ # fuzzed_data_provider may not work with a custom toolchain.
+- if (custom_toolchain == "" && is_clang) {
++ if ((custom_toolchain == "" && is_clang) && !is_bsd) {
+ sources += [
+ "testing/fuzzed_data_provider.cc",
+ "testing/fuzzed_data_provider.h",
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
new file mode 100644
index 000000000000..e3a18e4a64b9
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_cache.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/fonts/font_cache.cc
+@@ -75,7 +75,7 @@ extern const char kNotoColorEmojiCompat[] = "Noto Colo
+
+ SkFontMgr* FontCache::static_font_manager_ = nullptr;
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ float FontCache::device_scale_factor_ = 1.0;
+ #endif
+
+@@ -142,7 +142,7 @@ FontCache::~FontCache() {
+ FontPlatformData* FontCache::SystemFontPlatformData(
+ const FontDescription& font_description) {
+ const AtomicString& family = FontCache::SystemFontFamily();
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ if (family.IsEmpty() || family == font_family_names::kSystemUi)
+ return nullptr;
+ #else
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
new file mode 100644
index 000000000000..8555650bac90
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
@@ -0,0 +1,47 @@
+--- third_party/blink/renderer/platform/fonts/font_cache.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/fonts/font_cache.h
+@@ -58,7 +58,7 @@
+ #include "third_party/skia/include/core/SkFontMgr.h"
+ #include "third_party/skia/include/core/SkRefCnt.h"
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "ui/gfx/font_fallback_linux.h"
+ #endif
+
+@@ -184,7 +184,7 @@ class PLATFORM_EXPORT FontCache final {
+ static void PrewarmFamily(const AtomicString& family_name) {}
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // These are needed for calling QueryRenderStyleForStrike, since
+ // gfx::GetFontRenderParams makes distinctions based on DSF.
+ static float DeviceScaleFactor() { return device_scale_factor_; }
+@@ -267,7 +267,7 @@ class PLATFORM_EXPORT FontCache final {
+ const char* locale_family_name);
+ #endif // BUILDFLAG(IS_ANDROID)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ static bool GetFontForCharacter(UChar32,
+ const char* preferred_locale,
+ gfx::FallbackFontData*);
+@@ -347,7 +347,7 @@ class PLATFORM_EXPORT FontCache final {
+ const FontFaceCreationParams&,
+ std::string& name);
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ static AtomicString GetFamilyNameForCharacter(SkFontMgr*,
+ UChar32,
+ const FontDescription&,
+@@ -389,7 +389,7 @@ class PLATFORM_EXPORT FontCache final {
+ std::unique_ptr<FallbackFamilyStyleCache> fallback_params_cache_;
+ #endif // BUILDFLAG(IS_WIN)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ static float device_scale_factor_;
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
new file mode 100644
index 000000000000..6aeb2e546445
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_description.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/fonts/font_description.cc
+@@ -39,7 +39,7 @@
+ #include "third_party/blink/renderer/platform/wtf/text/string_hash.h"
+ #include "third_party/blink/renderer/platform/wtf/text/string_hasher.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 "third_party/blink/renderer/platform/fonts/font_cache.h"
+ #endif
+
+@@ -270,7 +270,7 @@ FontCacheKey FontDescription::CacheKey(
+ static_cast<unsigned>(fields_.orientation_) << 1 | // bit 2-3
+ static_cast<unsigned>(fields_.subpixel_text_position_); // bit 1
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ float device_scale_factor_for_key = FontCache::DeviceScaleFactor();
+ #else
+ float device_scale_factor_for_key = 1.0f;
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
new file mode 100644
index 000000000000..6cd1eb0cf6db
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
@@ -0,0 +1,29 @@
+--- third_party/blink/renderer/platform/fonts/font_metrics.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/fonts/font_metrics.cc
+@@ -39,7 +39,7 @@
+ namespace blink {
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // This is the largest VDMX table which we'll try to load and parse.
+ static const size_t kMaxVDMXTableSize = 1024 * 1024; // 1 MB
+ #endif
+@@ -69,7 +69,7 @@ void FontMetrics::AscentDescentWithHacks(
+ bool is_vdmx_valid = false;
+
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // Manually digging up VDMX metrics is only applicable when bytecode hinting
+ // using FreeType. With DirectWrite or CoreText, no bytecode hinting is ever
+ // done. This code should be pushed into FreeType (hinted font metrics).
+@@ -117,7 +117,7 @@ void FontMetrics::AscentDescentWithHacks(
+ if (descent < metrics.fDescent) {
+ visual_overflow_inflation_for_descent = 1;
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
+- BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // When subpixel positioning is enabled, if the descent is rounded down,
+ // the descent part of the glyph may be truncated when displayed in a
+ // 'overflow: hidden' container. To avoid that, borrow 1 unit from the
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__platform__data.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__platform__data.cc
new file mode 100644
index 000000000000..f8fc9eee2481
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__platform__data.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_platform_data.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/fonts/font_platform_data.cc
+@@ -48,7 +48,7 @@
+ namespace blink {
+ namespace {
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // Getting the system font render style takes a significant amount of time on
+ // Linux because looking up fonts using fontconfig can be very slow. We fetch
+ // the render style for each font family and text size, while it's very
+@@ -122,7 +122,7 @@ FontPlatformData::FontPlatformData(sk_sp<SkTypeface> t
+ style_ = WebFontRenderStyle::GetDefault();
+ #if !BUILDFLAG(IS_WIN)
+ WebFontRenderStyle system_style;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ bool override_font_name_and_size =
+ base::FeatureList::IsEnabled(kOptimizeLinuxFonts);
+ #else
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
new file mode 100644
index 000000000000..3c95a99f7d26
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc
+@@ -9,7 +9,7 @@
+ #if BUILDFLAG(IS_ANDROID)
+ #include "third_party/blink/public/mojom/font_unique_name_lookup/font_unique_name_lookup.mojom-blink.h"
+ #include "third_party/blink/renderer/platform/fonts/android/font_unique_name_lookup_android.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/linux/font_unique_name_lookup_linux.h"
+ #elif BUILDFLAG(IS_WIN)
+ #include "third_party/blink/renderer/platform/fonts/win/font_unique_name_lookup_win.h"
+@@ -24,7 +24,7 @@ std::unique_ptr<FontUniqueNameLookup>
+ FontUniqueNameLookup::GetPlatformUniqueNameLookup() {
+ #if BUILDFLAG(IS_ANDROID)
+ return std::make_unique<FontUniqueNameLookupAndroid>();
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ return std::make_unique<FontUniqueNameLookupLinux>();
+ #elif BUILDFLAG(IS_WIN)
+ return std::make_unique<FontUniqueNameLookupWin>();
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
new file mode 100644
index 000000000000..8cf65e3d84fa
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
@@ -0,0 +1,29 @@
+--- third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc
+@@ -60,7 +60,7 @@ AtomicString ToAtomicString(const SkString& str) {
+ return AtomicString::FromUTF8(str.c_str(), str.size());
+ }
+
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // This function is called on android or when we are emulating android fonts on
+ // linux and the embedder has overriden the default fontManager with
+ // WebFontRendering::setSkiaFontMgr.
+@@ -236,7 +236,7 @@ sk_sp<SkTypeface> FontCache::CreateTypeface(
+ }
+ #endif
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+ // On linux if the fontManager has been overridden then we should be calling
+ // the embedder provided font Manager rather than calling
+ // SkTypeface::CreateFromName which may redirect the call to the default font
+@@ -263,7 +263,7 @@ std::unique_ptr<FontPlatformData> FontCache::CreateFon
+ std::string name;
+
+ sk_sp<SkTypeface> typeface;
+-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ bool noto_color_emoji_from_gmscore = false;
+ #if BUILDFLAG(IS_ANDROID)
+ // Use the unique local matching pathway for fetching Noto Color Emoji Compat
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_graphics_begin__frame__provider.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_graphics_begin__frame__provider.cc
new file mode 100644
index 000000000000..a9096785e14e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_graphics_begin__frame__provider.cc
@@ -0,0 +1,15 @@
+--- third_party/blink/renderer/platform/graphics/begin_frame_provider.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/graphics/begin_frame_provider.cc
+@@ -76,8 +76,12 @@ void BeginFrameProvider::CreateCompositorFrameSinkIfNe
+
+ // Once we are using RAF, this thread is driving user interactive display
+ // updates. Update priority accordingly.
++ // pledge(2)
++ // stop this baloney
++#if !defined(OS_OPENBSD)
+ base::PlatformThread::SetCurrentThreadType(
+ base::ThreadType::kDisplayCritical);
++#endif
+
+ mojo::Remote<mojom::blink::EmbeddedFrameSinkProvider> provider;
+ Platform::Current()->GetBrowserInterfaceBroker()->GetInterface(
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc
new file mode 100644
index 000000000000..08fb6988c809
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/graphics/video_frame_submitter.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/graphics/video_frame_submitter.cc
+@@ -332,7 +332,7 @@ void VideoFrameSubmitter::OnBeginFrame(
+ continue;
+ auto& feedback =
+ timing_details.find(frame_token)->value.presentation_feedback;
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // TODO: On Linux failure flag is unreliable, and perfectly rendered frames
+ // are reported as failures all the time.
+ bool presentation_failure = false;
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5
new file mode 100644
index 000000000000..e8a50ffd972e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5
@@ -0,0 +1,62 @@
+--- third_party/blink/renderer/platform/runtime_enabled_features.json5.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/runtime_enabled_features.json5
+@@ -33,7 +33,7 @@
+ // shipped stable can have its runtime flag removed soon after.
+ status: {
+ valid_values: ["stable", "experimental", "test"],
+- valid_keys: ["Android", "Win", "ChromeOS_Ash", "ChromeOS_Lacros", "Mac", "Linux"]
++ valid_keys: ["Android", "Win", "ChromeOS_Ash", "ChromeOS_Lacros", "Mac", "Linux", "OpenBSD", "FreeBSD"]
+ },
+
+ // "implied_by" or "depends_on" specifies relationship to other features:
+@@ -1014,7 +1014,7 @@
+ depends_on: ["FileSystemAccess"],
+ status: {"Android": "test", "default": "experimental"},
+ origin_trial_feature_name: "FileHandling",
+- origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos"],
++ origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos", "openbsd", "freebsd"],
+ },
+ {
+ name: "FileHandlingIcons",
+@@ -2329,7 +2329,7 @@
+ {
+ name: "U2FSecurityKeyAPI",
+ origin_trial_feature_name: "U2FSecurityKeyAPI",
+- origin_trial_os: ["win", "mac", "linux", "chromeos"],
++ origin_trial_os: ["win", "mac", "linux", "chromeos", "openbsd", "freebsd"],
+ origin_trial_type: "deprecation",
+ },
+ {
+@@ -2344,7 +2344,7 @@
+ {
+ name: "UnrestrictedSharedArrayBuffer",
+ origin_trial_feature_name: "UnrestrictedSharedArrayBuffer",
+- origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos"],
++ origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos", "openbsd", "freebsd"],
+ },
+ {
+ name: "URLPatternCompareComponent",
+@@ -2362,7 +2362,7 @@
+ origin_trial_feature_name: "UserAgentReduction",
+ origin_trial_allows_third_party: true,
+ // iOS not included as it should not send a reduced User-Agent string.
+- origin_trial_os: ["android", "chromeos", "fuchsia", "linux", "mac", "win"],
++ origin_trial_os: ["android", "chromeos", "fuchsia", "linux", "mac", "win", "openbsd", "freebsd"],
+ },
+ {
+ name: "V8IdleTasks",
+@@ -2477,12 +2477,12 @@
+ name: "WebAppUrlHandling",
+ status: "experimental",
+ origin_trial_feature_name: "WebAppUrlHandling",
+- origin_trial_os: ["win", "mac", "linux"],
++ origin_trial_os: ["win", "mac", "linux", "openbsd", "freebsd"],
+ },
+ {
+ name: "WebAppWindowControlsOverlay",
+ origin_trial_feature_name: "WebAppWindowControlsOverlay",
+- origin_trial_os: ["win", "mac", "linux", "chromeos"],
++ origin_trial_os: ["win", "mac", "linux", "chromeos", "openbsd", "freebsd"],
+ status: "stable",
+ },
+ {
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_scheduler_common_thread.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_scheduler_common_thread.cc
new file mode 100644
index 000000000000..911f7b35d566
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_scheduler_common_thread.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/scheduler/common/thread.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/scheduler/common/thread.cc
+@@ -86,7 +86,7 @@ void Thread::CreateAndSetCompositorThread() {
+ std::make_unique<scheduler::CompositorThread>(params);
+ compositor_thread->Init();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_OPENBSD)
+ compositor_thread->GetTaskRunner()->PostTaskAndReplyWithResult(
+ FROM_HERE, base::BindOnce(&base::PlatformThread::CurrentId),
+ base::BindOnce([](base::PlatformThreadId compositor_thread_id) {
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_widget_compositing_categorized__worker__pool.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_widget_compositing_categorized__worker__pool.cc
new file mode 100644
index 000000000000..6f30e23355d2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_widget_compositing_categorized__worker__pool.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/widget/compositing/categorized_worker_pool.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/widget/compositing/categorized_worker_pool.cc
+@@ -256,7 +256,7 @@ void CategorizedWorkerPool::Start(int num_normal_threa
+ "CompositorTileWorkerBackground", thread_options, this,
+ background_thread_prio_categories,
+ &has_task_for_background_priority_thread_cv_);
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ thread->SetBackgroundingCallback(
+ Thread::MainThread()->GetDeprecatedTaskRunner(),
+ base::BindOnce([](base::PlatformThreadId thread_id) {
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
new file mode 100644
index 000000000000..d4183857325b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/wtf/container_annotations.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/wtf/container_annotations.h
+@@ -12,7 +12,7 @@
+ // TODO(ochang): Remove the ARCH_CPU_X86_64 condition to enable this for X86
+ // once the crashes there have been fixed: http://crbug.com/461406
+ #if defined(ADDRESS_SANITIZER) && \
+- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \
++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && \
+ defined(ARCH_CPU_X86_64)
+
+ // Annotations require buffers to begin on an 8-byte boundary. See
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_wtf_math__extras.h b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_wtf_math__extras.h
new file mode 100644
index 000000000000..1c1525c4db52
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_wtf_math__extras.h
@@ -0,0 +1,23 @@
+--- third_party/blink/renderer/platform/wtf/math_extras.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/wtf/math_extras.h
+@@ -128,6 +128,10 @@ constexpr float Grad2turn(float g) {
+ return g * (1.0f / 400.0f);
+ }
+
++#if defined(OS_FREEBSD)
++#pragma clang diagnostic push
++#pragma clang diagnostic ignored "-Winvalid-constexpr"
++#endif
+ constexpr double RoundHalfTowardsPositiveInfinity(double value) {
+ return std::floor(value + 0.5);
+ }
+@@ -135,6 +139,9 @@ constexpr double RoundHalfTowardsPositiveInfinity(doub
+ constexpr float RoundHalfTowardsPositiveInfinity(float value) {
+ return std::floor(value + 0.5f);
+ }
++#if defined(OS_FREEBSD)
++#pragma clang diagnostic pop
++#endif
+
+ // ClampTo() is implemented by templated helper classes (to allow for partial
+ // template specialization) as well as several helper functions.
diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
new file mode 100644
index 000000000000..9419f64b054b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
@@ -0,0 +1,37 @@
+--- third_party/blink/renderer/platform/wtf/stack_util.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/blink/renderer/platform/wtf/stack_util.cc
+@@ -18,6 +18,11 @@
+ extern "C" void* __libc_stack_end; // NOLINT
+ #endif
+
++#if BUILDFLAG(IS_BSD)
++#include <sys/signal.h>
++#include <pthread_np.h>
++#endif
++
+ namespace WTF {
+
+ size_t GetUnderestimatedStackSize() {
+@@ -62,6 +67,8 @@ size_t GetUnderestimatedStackSize() {
+ // low as 512k.
+ //
+ return 512 * 1024;
++#elif BUILDFLAG(IS_OPENBSD)
++ return 512 * 1024;
+ #elif BUILDFLAG(IS_MAC)
+ // pthread_get_stacksize_np() returns too low a value for the main thread on
+ // OSX 10.9,
+@@ -147,6 +154,13 @@ void* GetStackStart() {
+ ::GetCurrentThreadStackLimits(&lowLimit, &highLimit);
+ return reinterpret_cast<void*>(highLimit);
+ #endif
++#elif BUILDFLAG(IS_OPENBSD)
++ stack_t ss;
++ void *base;
++ int error = pthread_stackseg_np(pthread_self(), &ss);
++ CHECK(!error);
++ base = (void*)((size_t) ss.ss_sp - ss.ss_size);
++ return reinterpret_cast<uint8_t*>(base) + ss.ss_size;
+ #else
+ #error Unsupported getStackStart on this platform.
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-third__party_boringssl_BUILD.generated.gni b/www/ungoogled-chromium/files/patch-third__party_boringssl_BUILD.generated.gni
new file mode 100644
index 000000000000..3b4277a66243
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_boringssl_BUILD.generated.gni
@@ -0,0 +1,18 @@
+--- third_party/boringssl/BUILD.generated.gni.orig 2022-10-01 07:40:07 UTC
++++ third_party/boringssl/BUILD.generated.gni
+@@ -78,6 +78,7 @@ crypto_sources = [
+ "src/crypto/cpu_aarch64_apple.c",
+ "src/crypto/cpu_aarch64_fuchsia.c",
+ "src/crypto/cpu_aarch64_linux.c",
++ "src/crypto/cpu_aarch64_openbsd.c",
+ "src/crypto/cpu_aarch64_win.c",
+ "src/crypto/cpu_arm.c",
+ "src/crypto/cpu_arm_linux.c",
+@@ -184,6 +185,7 @@ crypto_sources = [
+ "src/crypto/rand_extra/deterministic.c",
+ "src/crypto/rand_extra/forkunsafe.c",
+ "src/crypto/rand_extra/fuchsia.c",
++ "src/crypto/rand_extra/arc4random.c",
+ "src/crypto/rand_extra/passive.c",
+ "src/crypto/rand_extra/rand_extra.c",
+ "src/crypto/rand_extra/windows.c",
diff --git a/www/ungoogled-chromium/files/patch-third__party_boringssl_BUILD.gn b/www/ungoogled-chromium/files/patch-third__party_boringssl_BUILD.gn
new file mode 100644
index 000000000000..760a66783737
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_boringssl_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/boringssl/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ third_party/boringssl/BUILD.gn
+@@ -92,7 +92,7 @@ if (is_win && !is_msan && current_cpu != "arm64") {
+ public_configs = [ ":no_asm_config" ]
+ }
+ } else if (current_cpu == "arm64") {
+- if (is_linux || is_chromeos || is_android) {
++ if ((is_linux || is_chromeos || is_android) && !is_freebsd) {
+ sources += crypto_sources_linux_aarch64
+ } else if (is_apple) {
+ sources += crypto_sources_apple_aarch64
diff --git a/www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_cpu__aarch64__openbsd.c b/www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_cpu__aarch64__openbsd.c
new file mode 100644
index 000000000000..b63d9530072d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_cpu__aarch64__openbsd.c
@@ -0,0 +1,60 @@
+--- third_party/boringssl/src/crypto/cpu_aarch64_openbsd.c.orig 2022-10-01 07:40:07 UTC
++++ third_party/boringssl/src/crypto/cpu_aarch64_openbsd.c
+@@ -0,0 +1,57 @@
++/* Copyright (c) 2022, Robert Nagy <robert@openbsd.org>
++ *
++ * Permission to use, copy, modify, and/or distribute this software for any
++ * purpose with or without fee is hereby granted, provided that the above
++ * copyright notice and this permission notice appear in all copies.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
++
++#include <openssl/cpu.h>
++
++#if defined(OPENSSL_AARCH64) && defined(OPENSSL_OPENBSD) && \
++ !defined(OPENSSL_STATIC_ARMCAP)
++
++#include <sys/sysctl.h>
++#include <machine/cpu.h>
++#include <machine/armreg.h>
++#include <stdio.h>
++
++#include <openssl/arm_arch.h>
++
++#include "internal.h"
++
++extern uint32_t OPENSSL_armcap_P;
++
++void OPENSSL_cpuid_setup(void) {
++ int isar0_mib[] = { CTL_MACHDEP, CPU_ID_AA64ISAR0 };
++ size_t len = sizeof(uint64_t);
++ uint64_t cpu_id = 0;
++
++ if (sysctl(isar0_mib, 2, &cpu_id, &len, NULL, 0) < 0)
++ return;
++
++ OPENSSL_armcap_P |= ARMV7_NEON;
++
++ if (ID_AA64ISAR0_AES(cpu_id) >= ID_AA64ISAR0_AES_BASE)
++ OPENSSL_armcap_P |= ARMV8_AES;
++
++ if (ID_AA64ISAR0_AES(cpu_id) >= ID_AA64ISAR0_AES_PMULL)
++ OPENSSL_armcap_P |= ARMV8_PMULL;
++
++ if (ID_AA64ISAR0_SHA1(cpu_id) >= ID_AA64ISAR0_SHA1_BASE)
++ OPENSSL_armcap_P |= ARMV8_SHA1;
++
++ if (ID_AA64ISAR0_SHA2(cpu_id) >= ID_AA64ISAR0_SHA2_BASE)
++ OPENSSL_armcap_P |= ARMV8_SHA256;
++
++ if (ID_AA64ISAR0_SHA2(cpu_id) >= ID_AA64ISAR0_SHA2_512)
++ OPENSSL_armcap_P |= ARMV8_SHA512;
++}
++
++#endif // OPENSSL_AARCH64 && OPENSSL_OPENBSD && !OPENSSL_STATIC_ARMCAP
diff --git a/www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_fipsmodule_rand_internal.h b/www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_fipsmodule_rand_internal.h
new file mode 100644
index 000000000000..bb2aa71dac94
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_fipsmodule_rand_internal.h
@@ -0,0 +1,12 @@
+--- third_party/boringssl/src/crypto/fipsmodule/rand/internal.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/boringssl/src/crypto/fipsmodule/rand/internal.h
+@@ -27,7 +27,8 @@ extern "C" {
+
+
+ #if !defined(OPENSSL_WINDOWS) && !defined(OPENSSL_FUCHSIA) && \
+- !defined(BORINGSSL_UNSAFE_DETERMINISTIC_MODE) && !defined(OPENSSL_TRUSTY)
++ !defined(BORINGSSL_UNSAFE_DETERMINISTIC_MODE) && !defined(OPENSSL_TRUSTY) && \
++ !defined(OPENSSL_ARC4RANDOM)
+ #define OPENSSL_URANDOM
+ #endif
+
diff --git a/www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_rand__extra_arc4random.c b/www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_rand__extra_arc4random.c
new file mode 100644
index 000000000000..89cefe478f75
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_rand__extra_arc4random.c
@@ -0,0 +1,36 @@
+--- third_party/boringssl/src/crypto/rand_extra/arc4random.c.orig 2022-10-01 07:40:07 UTC
++++ third_party/boringssl/src/crypto/rand_extra/arc4random.c
+@@ -0,0 +1,33 @@
++/* Copyright (c) 2018, Robert Nagy <robert@openbsd.org>
++ *
++ * Permission to use, copy, modify, and/or distribute this software for any
++ * purpose with or without fee is hereby granted, provided that the above
++ * copyright notice and this permission notice appear in all copies.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
++
++#define _BSD_SOURCE 1
++
++#include <openssl/rand.h>
++
++#if defined(OPENSSL_ARC4RANDOM) && !defined(BORINGSSL_UNSAFE_DETERMINISTIC_MODE)
++
++#include <stdlib.h>
++
++#include "../fipsmodule/rand/internal.h"
++
++void CRYPTO_sysrand_for_seed(uint8_t *out, size_t requested) {
++ CRYPTO_sysrand(out, requested);
++}
++
++void CRYPTO_sysrand(uint8_t *out, size_t requested) {
++ arc4random_buf(out, requested);
++}
++
++#endif // OPENSSL_ARC4RANDOM && !BORINGSSL_UNSAFE_DETERMINISTIC_MODE
diff --git a/www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_refcount__c11.c b/www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_refcount__c11.c
new file mode 100644
index 000000000000..5301fe488782
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_boringssl_src_crypto_refcount__c11.c
@@ -0,0 +1,12 @@
+--- third_party/boringssl/src/crypto/refcount_c11.c.orig 2022-10-01 07:40:07 UTC
++++ third_party/boringssl/src/crypto/refcount_c11.c
+@@ -22,6 +22,9 @@
+ #include <stdatomic.h>
+ #include <stdlib.h>
+
++#if !defined(__cplusplus) && !defined(static_assert)
++#define static_assert _Static_assert
++#endif
+
+ // See comment above the typedef of CRYPTO_refcount_t about these tests.
+ static_assert(alignof(CRYPTO_refcount_t) == alignof(_Atomic CRYPTO_refcount_t),
diff --git a/www/ungoogled-chromium/files/patch-third__party_boringssl_src_include_openssl_base.h b/www/ungoogled-chromium/files/patch-third__party_boringssl_src_include_openssl_base.h
new file mode 100644
index 000000000000..9c958d49b2d1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_boringssl_src_include_openssl_base.h
@@ -0,0 +1,14 @@
+--- third_party/boringssl/src/include/openssl/base.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/boringssl/src/include/openssl/base.h
+@@ -156,6 +156,11 @@ extern "C" {
+ #define OPENSSL_FUCHSIA
+ #endif
+
++#if defined(__OpenBSD__)
++#define OPENSSL_OPENBSD
++#define OPENSSL_ARC4RANDOM
++#endif
++
+ #if defined(__TRUSTY__)
+ #define OPENSSL_TRUSTY
+ #define OPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED
diff --git a/www/ungoogled-chromium/files/patch-third__party_boringssl_src_include_openssl_thread.h b/www/ungoogled-chromium/files/patch-third__party_boringssl_src_include_openssl_thread.h
new file mode 100644
index 000000000000..cd260507fd1f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_boringssl_src_include_openssl_thread.h
@@ -0,0 +1,10 @@
+--- third_party/boringssl/src/include/openssl/thread.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/boringssl/src/include/openssl/thread.h
+@@ -78,6 +78,7 @@ typedef union crypto_mutex_st {
+ void *handle;
+ } CRYPTO_MUTEX;
+ #elif !defined(__GLIBC__)
++#include <pthread.h>
+ typedef pthread_rwlock_t CRYPTO_MUTEX;
+ #else
+ // On glibc, |pthread_rwlock_t| is hidden under feature flags, and we can't
diff --git a/www/ungoogled-chromium/files/patch-third__party_brotli_common_platform.h b/www/ungoogled-chromium/files/patch-third__party_brotli_common_platform.h
new file mode 100644
index 000000000000..9e9cf0715c6c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_brotli_common_platform.h
@@ -0,0 +1,11 @@
+--- third_party/brotli/common/platform.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/brotli/common/platform.h
+@@ -28,7 +28,7 @@
+ #include <brotli/port.h>
+ #include <brotli/types.h>
+
+-#if defined(OS_LINUX) || defined(OS_CYGWIN) || defined(__EMSCRIPTEN__)
++#if defined(OS_LINUX) || defined(OS_CYGWIN) || defined(__EMSCRIPTEN__) || defined(OS_BSD)
+ #include <endian.h>
+ #elif defined(OS_FREEBSD)
+ #include <machine/endian.h>
diff --git a/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
new file mode 100644
index 000000000000..6245b5bf6798
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/build/crashpad_buildconfig.gni.orig 2022-10-01 07:40:07 UTC
++++ third_party/crashpad/crashpad/build/crashpad_buildconfig.gni
+@@ -58,7 +58,7 @@ if (crashpad_is_in_chromium) {
+ crashpad_is_mac = is_mac
+ crashpad_is_ios = is_ios
+ crashpad_is_win = is_win
+- crashpad_is_linux = is_linux || is_chromeos
++ crashpad_is_linux = (is_linux || is_chromeos) && !is_bsd
+ crashpad_is_android = is_android
+ crashpad_is_fuchsia = is_fuchsia
+
diff --git a/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_client_BUILD.gn b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
new file mode 100644
index 000000000000..addbbc562dca
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
@@ -0,0 +1,16 @@
+--- third_party/crashpad/crashpad/client/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ third_party/crashpad/crashpad/client/BUILD.gn
+@@ -130,6 +130,13 @@ static_library("common") {
+ if (crashpad_is_win) {
+ sources += [ "crash_report_database_win.cc" ]
+ }
++
++ if (crashpad_is_posix) {
++ sources += [
++ "crashpad_client_posix.cc",
++ ]
++ }
++
+ if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
+ sources += [
+ "crash_report_database_generic.cc",
diff --git a/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
new file mode 100644
index 000000000000..ec68270b7f11
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
@@ -0,0 +1,43 @@
+--- third_party/crashpad/crashpad/client/crashpad_client_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/crashpad/crashpad/client/crashpad_client_posix.cc
+@@ -0,0 +1,40 @@
++// Copyright 2017 The Crashpad Authors. All rights reserved.
++//
++// Licensed under the Apache License, Version 2.0 (the "License");
++// you may not use this file except in compliance with the License.
++// You may obtain a copy of the License at
++//
++// http://www.apache.org/licenses/LICENSE-2.0
++//
++// Unless required by applicable law or agreed to in writing, software
++// distributed under the License is distributed on an "AS IS" BASIS,
++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++// See the License for the specific language governing permissions and
++// limitations under the License.
++
++#include "client/crashpad_client.h"
++
++#include "base/logging.h"
++#include "base/notreached.h"
++
++namespace crashpad {
++
++CrashpadClient::CrashpadClient() {}
++
++CrashpadClient::~CrashpadClient() {}
++
++bool CrashpadClient::StartHandler(
++ const base::FilePath& handler,
++ const base::FilePath& database,
++ const base::FilePath& metrics_dir,
++ const std::string& url,
++ const std::map<std::string, std::string>& annotations,
++ const std::vector<std::string>& arguments,
++ bool restartable,
++ bool asynchronous_start,
++ const std::vector<base::FilePath>& attachments) {
++ NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196
++ return false;
++}
++
++} // namespace crashpad
diff --git a/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_minidump_minidump__misc__info__writer.cc b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_minidump_minidump__misc__info__writer.cc
new file mode 100644
index 000000000000..11ea096a63cf
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_minidump_minidump__misc__info__writer.cc
@@ -0,0 +1,13 @@
+--- third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc
+@@ -159,6 +159,10 @@ std::string MinidumpMiscInfoDebugBuildString() {
+ static constexpr char kOS[] = "win";
+ #elif BUILDFLAG(IS_FUCHSIA)
+ static constexpr char kOS[] = "fuchsia";
++#elif defined(OS_OPENBSD)
++ static constexpr char kOS[] = "openbsd";
++#elif defined(OS_FREEBSD)
++ static constexpr char kOS[] = "freebsd";
+ #else
+ #error define kOS for this operating system
+ #endif
diff --git a/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h
new file mode 100644
index 000000000000..4226ad90f06b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/misc/address_types.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/crashpad/crashpad/util/misc/address_types.h
+@@ -25,7 +25,7 @@
+ #include <mach/mach_types.h>
+ #elif BUILDFLAG(IS_WIN)
+ #include "util/win/address_types.h"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ #include "util/linux/address_types.h"
+ #elif BUILDFLAG(IS_FUCHSIA)
+ #include <zircon/types.h>
+@@ -55,7 +55,7 @@ using VMSize = mach_vm_size_t;
+ using VMAddress = WinVMAddress;
+ using VMSize = WinVMSize;
+
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+
+ using VMAddress = LinuxVMAddress;
+ using VMSize = LinuxVMSize;
diff --git a/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h
new file mode 100644
index 000000000000..8ab48238a38b
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h
@@ -0,0 +1,22 @@
+--- third_party/crashpad/crashpad/util/misc/capture_context.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/crashpad/crashpad/util/misc/capture_context.h
+@@ -21,7 +21,8 @@
+ #include <mach/mach.h>
+ #elif BUILDFLAG(IS_WIN)
+ #include <windows.h>
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \
++ BUILDFLAG(IS_FREEBSD)
+ #include <ucontext.h>
+ #elif BUILDFLAG(IS_FUCHSIA)
+ #include <signal.h>
+@@ -38,7 +39,8 @@ using NativeCPUContext = arm_unified_thread_state;
+ #elif BUILDFLAG(IS_WIN)
+ using NativeCPUContext = CONTEXT;
+ #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || \
++ BUILDFLAG(IS_BSD)
+ using NativeCPUContext = ucontext_t;
+ #endif // BUILDFLAG(IS_APPLE)
+
diff --git a/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc
new file mode 100644
index 000000000000..d6ba33ef96df
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/misc/metrics.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/crashpad/crashpad/util/misc/metrics.cc
+@@ -25,7 +25,7 @@
+ #define METRICS_OS_NAME "Win"
+ #elif BUILDFLAG(IS_ANDROID)
+ #define METRICS_OS_NAME "Android"
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #define METRICS_OS_NAME "Linux"
+ #elif BUILDFLAG(IS_FUCHSIA)
+ #define METRICS_OS_NAME "Fuchsia"
diff --git a/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc
new file mode 100644
index 000000000000..2786281df1db
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/misc/uuid.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/crashpad/crashpad/util/misc/uuid.cc
+@@ -101,7 +101,7 @@ bool UUID::InitializeWithNew() {
+ InitializeFromBytes(uuid);
+ return true;
+ #elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
+- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)
+ // Linux, Android, and Fuchsia do not provide a UUID generator in a
+ // widely-available system library. On Linux and Android, uuid_generate()
+ // from libuuid is not available everywhere.
diff --git a/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
new file mode 100644
index 000000000000..8533fc01858e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/posix/close_multiple.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/crashpad/crashpad/util/posix/close_multiple.cc
+@@ -72,7 +72,7 @@ void CloseNowOrOnExec(int fd, bool ebadf_ok) {
+ // This is an advantage over looping over all possible file descriptors, because
+ // no attempt needs to be made to close file descriptors that are not open.
+ bool CloseMultipleNowOrOnExecUsingFDDir(int min_fd, int preserve_fd) {
+-#if BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ static constexpr char kFDDir[] = "/dev/fd";
+ #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
+ static constexpr char kFDDir[] = "/proc/self/fd";
diff --git a/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc
new file mode 100644
index 000000000000..9cbb0873a072
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/posix/drop_privileges.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/crashpad/crashpad/util/posix/drop_privileges.cc
+@@ -25,7 +25,7 @@ void DropPrivileges() {
+ gid_t gid = getgid();
+ uid_t uid = getuid();
+
+-#if BUILDFLAG(IS_APPLE)
++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD)
+ // Based on the POSIX.1-2008 2013 edition documentation for setreuid() and
+ // setregid(), setreuid() and setregid() alone should be sufficient to drop
+ // privileges. The standard specifies that the saved ID should be set to the
diff --git a/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
new file mode 100644
index 000000000000..11d45c61a2d7
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
@@ -0,0 +1,33 @@
+--- third_party/crashpad/crashpad/util/posix/signals.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/crashpad/crashpad/util/posix/signals.cc
+@@ -51,7 +51,7 @@ constexpr int kCrashSignals[] = {
+ #if defined(SIGEMT)
+ SIGEMT,
+ #endif // defined(SIGEMT)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ SIGXCPU,
+ SIGXFSZ,
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+@@ -91,7 +91,7 @@ constexpr int kTerminateSignals[] = {
+ SIGXCPU,
+ SIGXFSZ,
+ #endif // BUILDFLAG(IS_APPLE)
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ SIGIO,
+ #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+ };
+@@ -251,8 +251,12 @@ bool Signals::WillSignalReraiseAutonomously(const sigi
+ // remains. See 10.12.3 xnu-3789.41.3/bsd/kern/kern_sig.c
+ // psignal_internal().
+ (code > 0 &&
++#if defined(SI_ASYNCIO)
+ code != SI_ASYNCIO &&
++#endif
++#if defined(SI_MESGQ)
+ code != SI_MESGQ &&
++#endif
+ code != SI_QUEUE &&
+ code != SI_TIMER &&
+ code != SI_USER &&
diff --git a/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
new file mode 100644
index 000000000000..5ab689a3ce36
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc.orig 2022-10-01 07:40:07 UTC
++++ third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc
+@@ -67,7 +67,7 @@ constexpr const char* kSignalNames[] = {
+ "INFO",
+ "USR1",
+ "USR2",
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ #if defined(ARCH_CPU_MIPS_FAMILY)
+ "HUP",
+ "INT",
+@@ -138,7 +138,7 @@ constexpr const char* kSignalNames[] = {
+ #endif // defined(ARCH_CPU_MIPS_FAMILY)
+ #endif
+ };
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD)
+ // NSIG is 64 to account for real-time signals.
+ static_assert(std::size(kSignalNames) == 32, "kSignalNames length");
+ #else
diff --git a/www/ungoogled-chromium/files/patch-third__party_crc32c_BUILD.gn b/www/ungoogled-chromium/files/patch-third__party_crc32c_BUILD.gn
new file mode 100644
index 000000000000..9a4ed6cee820
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_crc32c_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/crc32c/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ third_party/crc32c/BUILD.gn
+@@ -47,7 +47,7 @@ config("crc32c_config") {
+ }
+
+ # Android added <sys/auxv.h> in API level 18.
+- if (is_linux || is_chromeos || is_android) {
++ if (is_linux || is_chromeos || is_android && !is_bsd) {
+ defines += [
+ "HAVE_STRONG_GETAUXVAL=1",
+ "HAVE_WEAK_GETAUXVAL=1",
diff --git a/www/ungoogled-chromium/files/patch-third__party_dawn_include_dawn_native_VulkanBackend.h b/www/ungoogled-chromium/files/patch-third__party_dawn_include_dawn_native_VulkanBackend.h
new file mode 100644
index 000000000000..a50757c07bfa
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_dawn_include_dawn_native_VulkanBackend.h
@@ -0,0 +1,11 @@
+--- third_party/dawn/include/dawn/native/VulkanBackend.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/dawn/include/dawn/native/VulkanBackend.h
+@@ -70,7 +70,7 @@ struct ExternalImageExportInfoVk : ExternalImageExport
+ };
+
+ // Can't use DAWN_PLATFORM_IS(LINUX) since header included in both Dawn and Chrome
+-#ifdef __linux__
++#if defined(__linux__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+
+ // Common properties of external images represented by FDs. On successful import the file
+ // descriptor's ownership is transferred to the Dawn implementation and they shouldn't be
diff --git a/www/ungoogled-chromium/files/patch-third__party_dawn_src_dawn_common_Platform.h b/www/ungoogled-chromium/files/patch-third__party_dawn_src_dawn_common_Platform.h
new file mode 100644
index 000000000000..af58ee2b68b5
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_dawn_src_dawn_common_Platform.h
@@ -0,0 +1,14 @@
+--- third_party/dawn/src/dawn/common/Platform.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/dawn/src/dawn/common/Platform.h
+@@ -45,6 +45,11 @@
+ #error "Unsupported Windows platform."
+ #endif
+
++#elif defined(__OpenBSD__) || defined(__FreeBSD__)
++#define DAWN_PLATFORM_IS_LINUX 1
++#define DAWN_PLATFORM_IS_BSD 1
++#define DAWN_PLATFORM_IS_POSIX 1
++
+ #elif defined(__linux__)
+ #define DAWN_PLATFORM_IS_LINUX 1
+ #define DAWN_PLATFORM_IS_POSIX 1
diff --git a/www/ungoogled-chromium/files/patch-third__party_dawn_src_dawn_native_vulkan_BackendVk.cpp b/www/ungoogled-chromium/files/patch-third__party_dawn_src_dawn_native_vulkan_BackendVk.cpp
new file mode 100644
index 000000000000..d0d7e5d2bd34
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_dawn_src_dawn_native_vulkan_BackendVk.cpp
@@ -0,0 +1,11 @@
+--- third_party/dawn/src/dawn/native/vulkan/BackendVk.cpp.orig 2022-10-01 07:40:07 UTC
++++ third_party/dawn/src/dawn/native/vulkan/BackendVk.cpp
+@@ -42,7 +42,7 @@ constexpr char kSwiftshaderLibName[] = "libvk_swiftsha
+ #endif
+
+ #if DAWN_PLATFORM_IS(LINUX)
+-#if DAWN_PLATFORM_IS(ANDROID)
++#if DAWN_PLATFORM_IS(ANDROID) || DAWN_PLATFORM_IS(BSD)
+ constexpr char kVulkanLibName[] = "libvulkan.so";
+ #else
+ constexpr char kVulkanLibName[] = "libvulkan.so.1";
diff --git a/www/ungoogled-chromium/files/patch-third__party_ffmpeg_BUILD.gn b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_BUILD.gn
new file mode 100644
index 000000000000..74582a01433c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_BUILD.gn
@@ -0,0 +1,10 @@
+--- third_party/ffmpeg/BUILD.gn.orig 2022-10-01 07:40:07 UTC
++++ third_party/ffmpeg/BUILD.gn
+@@ -349,7 +349,6 @@ target(link_target_type, "ffmpeg_internal") {
+ libs += [
+ "m",
+ "z",
+- "rt",
+ ]
+ }
+ if (is_component_ffmpeg) {
diff --git a/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_arm64_config.h b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_arm64_config.h
new file mode 100644
index 000000000000..24e26b649e4f
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_arm64_config.h
@@ -0,0 +1,740 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/arm64/config.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/arm64/config.h
+@@ -0,0 +1,737 @@
++/* Automatically generated by configure - do not modify! */
++#ifndef FFMPEG_CONFIG_H
++#define FFMPEG_CONFIG_H
++/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio,vp9' --extra-cflags=-I/d/code/chrome/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=nasm --optflags=-O2 --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */
++#define FFMPEG_LICENSE "LGPL version 2.1 or later"
++#define CONFIG_THIS_YEAR 2022
++#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
++#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
++#define CC_IDENT "OpenBSD clang version 13.0.0"
++#define OS_NAME openbsd
++#define av_restrict restrict
++#define EXTERN_PREFIX ""
++#define EXTERN_ASM
++#define BUILDSUF ""
++#define SLIBSUF ".so"
++#define HAVE_MMX2 HAVE_MMXEXT
++#define SWS_MAX_FILTER_SIZE 256
++#define ARCH_AARCH64 1
++#define ARCH_ALPHA 0
++#define ARCH_ARM 0
++#define ARCH_AVR32 0
++#define ARCH_AVR32_AP 0
++#define ARCH_AVR32_UC 0
++#define ARCH_BFIN 0
++#define ARCH_IA64 0
++#define ARCH_LOONGARCH 0
++#define ARCH_LOONGARCH32 0
++#define ARCH_LOONGARCH64 0
++#define ARCH_M68K 0
++#define ARCH_MIPS 0
++#define ARCH_MIPS64 0
++#define ARCH_PARISC 0
++#define ARCH_PPC 0
++#define ARCH_PPC64 0
++#define ARCH_RISCV 0
++#define ARCH_S390 0
++#define ARCH_SH4 0
++#define ARCH_SPARC 0
++#define ARCH_SPARC64 0
++#define ARCH_TILEGX 0
++#define ARCH_TILEPRO 0
++#define ARCH_TOMI 0
++#define ARCH_X86 0
++#define ARCH_X86_32 0
++#define ARCH_X86_64 0
++#define HAVE_ARMV5TE 0
++#define HAVE_ARMV6 0
++#define HAVE_ARMV6T2 0
++#define HAVE_ARMV8 1
++#define HAVE_NEON 1
++#define HAVE_VFP 1
++#define HAVE_VFPV3 0
++#define HAVE_SETEND 0
++#define HAVE_ALTIVEC 0
++#define HAVE_DCBZL 0
++#define HAVE_LDBRX 0
++#define HAVE_POWER8 0
++#define HAVE_PPC4XX 0
++#define HAVE_VSX 0
++#define HAVE_AESNI 0
++#define HAVE_AMD3DNOW 0
++#define HAVE_AMD3DNOWEXT 0
++#define HAVE_AVX 0
++#define HAVE_AVX2 0
++#define HAVE_AVX512 0
++#define HAVE_AVX512ICL 0
++#define HAVE_FMA3 0
++#define HAVE_FMA4 0
++#define HAVE_MMX 0
++#define HAVE_MMXEXT 0
++#define HAVE_SSE 0
++#define HAVE_SSE2 0
++#define HAVE_SSE3 0
++#define HAVE_SSE4 0
++#define HAVE_SSE42 0
++#define HAVE_SSSE3 0
++#define HAVE_XOP 0
++#define HAVE_CPUNOP 0
++#define HAVE_I686 0
++#define HAVE_MIPSFPU 0
++#define HAVE_MIPS32R2 0
++#define HAVE_MIPS32R5 0
++#define HAVE_MIPS64R2 0
++#define HAVE_MIPS32R6 0
++#define HAVE_MIPS64R6 0
++#define HAVE_MIPSDSP 0
++#define HAVE_MIPSDSPR2 0
++#define HAVE_MSA 0
++#define HAVE_LOONGSON2 0
++#define HAVE_LOONGSON3 0
++#define HAVE_MMI 0
++#define HAVE_LSX 0
++#define HAVE_LASX 0
++#define HAVE_ARMV5TE_EXTERNAL 0
++#define HAVE_ARMV6_EXTERNAL 0
++#define HAVE_ARMV6T2_EXTERNAL 0
++#define HAVE_ARMV8_EXTERNAL 1
++#define HAVE_NEON_EXTERNAL 1
++#define HAVE_VFP_EXTERNAL 1
++#define HAVE_VFPV3_EXTERNAL 0
++#define HAVE_SETEND_EXTERNAL 0
++#define HAVE_ALTIVEC_EXTERNAL 0
++#define HAVE_DCBZL_EXTERNAL 0
++#define HAVE_LDBRX_EXTERNAL 0
++#define HAVE_POWER8_EXTERNAL 0
++#define HAVE_PPC4XX_EXTERNAL 0
++#define HAVE_VSX_EXTERNAL 0
++#define HAVE_AESNI_EXTERNAL 0
++#define HAVE_AMD3DNOW_EXTERNAL 0
++#define HAVE_AMD3DNOWEXT_EXTERNAL 0
++#define HAVE_AVX_EXTERNAL 0
++#define HAVE_AVX2_EXTERNAL 0
++#define HAVE_AVX512_EXTERNAL 0
++#define HAVE_AVX512ICL_EXTERNAL 0
++#define HAVE_FMA3_EXTERNAL 0
++#define HAVE_FMA4_EXTERNAL 0
++#define HAVE_MMX_EXTERNAL 0
++#define HAVE_MMXEXT_EXTERNAL 0
++#define HAVE_SSE_EXTERNAL 0
++#define HAVE_SSE2_EXTERNAL 0
++#define HAVE_SSE3_EXTERNAL 0
++#define HAVE_SSE4_EXTERNAL 0
++#define HAVE_SSE42_EXTERNAL 0
++#define HAVE_SSSE3_EXTERNAL 0
++#define HAVE_XOP_EXTERNAL 0
++#define HAVE_CPUNOP_EXTERNAL 0
++#define HAVE_I686_EXTERNAL 0
++#define HAVE_MIPSFPU_EXTERNAL 0
++#define HAVE_MIPS32R2_EXTERNAL 0
++#define HAVE_MIPS32R5_EXTERNAL 0
++#define HAVE_MIPS64R2_EXTERNAL 0
++#define HAVE_MIPS32R6_EXTERNAL 0
++#define HAVE_MIPS64R6_EXTERNAL 0
++#define HAVE_MIPSDSP_EXTERNAL 0
++#define HAVE_MIPSDSPR2_EXTERNAL 0
++#define HAVE_MSA_EXTERNAL 0
++#define HAVE_LOONGSON2_EXTERNAL 0
++#define HAVE_LOONGSON3_EXTERNAL 0
++#define HAVE_MMI_EXTERNAL 0
++#define HAVE_LSX_EXTERNAL 0
++#define HAVE_LASX_EXTERNAL 0
++#define HAVE_ARMV5TE_INLINE 0
++#define HAVE_ARMV6_INLINE 0
++#define HAVE_ARMV6T2_INLINE 0
++#define HAVE_ARMV8_INLINE 1
++#define HAVE_NEON_INLINE 1
++#define HAVE_VFP_INLINE 1
++#define HAVE_VFPV3_INLINE 0
++#define HAVE_SETEND_INLINE 0
++#define HAVE_ALTIVEC_INLINE 0
++#define HAVE_DCBZL_INLINE 0
++#define HAVE_LDBRX_INLINE 0
++#define HAVE_POWER8_INLINE 0
++#define HAVE_PPC4XX_INLINE 0
++#define HAVE_VSX_INLINE 0
++#define HAVE_AESNI_INLINE 0
++#define HAVE_AMD3DNOW_INLINE 0
++#define HAVE_AMD3DNOWEXT_INLINE 0
++#define HAVE_AVX_INLINE 0
++#define HAVE_AVX2_INLINE 0
++#define HAVE_AVX512_INLINE 0
++#define HAVE_AVX512ICL_INLINE 0
++#define HAVE_FMA3_INLINE 0
++#define HAVE_FMA4_INLINE 0
++#define HAVE_MMX_INLINE 0
++#define HAVE_MMXEXT_INLINE 0
++#define HAVE_SSE_INLINE 0
++#define HAVE_SSE2_INLINE 0
++#define HAVE_SSE3_INLINE 0
++#define HAVE_SSE4_INLINE 0
++#define HAVE_SSE42_INLINE 0
++#define HAVE_SSSE3_INLINE 0
++#define HAVE_XOP_INLINE 0
++#define HAVE_CPUNOP_INLINE 0
++#define HAVE_I686_INLINE 0
++#define HAVE_MIPSFPU_INLINE 0
++#define HAVE_MIPS32R2_INLINE 0
++#define HAVE_MIPS32R5_INLINE 0
++#define HAVE_MIPS64R2_INLINE 0
++#define HAVE_MIPS32R6_INLINE 0
++#define HAVE_MIPS64R6_INLINE 0
++#define HAVE_MIPSDSP_INLINE 0
++#define HAVE_MIPSDSPR2_INLINE 0
++#define HAVE_MSA_INLINE 0
++#define HAVE_LOONGSON2_INLINE 0
++#define HAVE_LOONGSON3_INLINE 0
++#define HAVE_MMI_INLINE 0
++#define HAVE_LSX_INLINE 0
++#define HAVE_LASX_INLINE 0
++#define HAVE_ALIGNED_STACK 1
++#define HAVE_FAST_64BIT 1
++#define HAVE_FAST_CLZ 1
++#define HAVE_FAST_CMOV 0
++#define HAVE_LOCAL_ALIGNED 0
++#define HAVE_SIMD_ALIGN_16 1
++#define HAVE_SIMD_ALIGN_32 0
++#define HAVE_SIMD_ALIGN_64 0
++#define HAVE_ATOMIC_CAS_PTR 0
++#define HAVE_MACHINE_RW_BARRIER 0
++#define HAVE_MEMORYBARRIER 0
++#define HAVE_MM_EMPTY 0
++#define HAVE_RDTSC 0
++#define HAVE_SEM_TIMEDWAIT 1
++#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
++#define HAVE_CABS 0
++#define HAVE_CEXP 0
++#define HAVE_INLINE_ASM 1
++#define HAVE_SYMVER 0
++#define HAVE_X86ASM 0
++#define HAVE_BIGENDIAN 0
++#define HAVE_FAST_UNALIGNED 1
++#define HAVE_ARPA_INET_H 0
++#define HAVE_ASM_TYPES_H 0
++#define HAVE_CDIO_PARANOIA_H 0
++#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
++#define HAVE_CUDA_H 0
++#define HAVE_DISPATCH_DISPATCH_H 0
++#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
++#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
++#define HAVE_DEV_IC_BT8XX_H 1
++#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
++#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
++#define HAVE_DIRECT_H 0
++#define HAVE_DIRENT_H 1
++#define HAVE_DXGIDEBUG_H 0
++#define HAVE_DXVA_H 0
++#define HAVE_ES2_GL_H 0
++#define HAVE_GSM_H 0
++#define HAVE_IO_H 0
++#define HAVE_LINUX_DMA_BUF_H 0
++#define HAVE_LINUX_PERF_EVENT_H 0
++#define HAVE_MACHINE_IOCTL_BT848_H 0
++#define HAVE_MACHINE_IOCTL_METEOR_H 0
++#define HAVE_MALLOC_H 0
++#define HAVE_OPENCV2_CORE_CORE_C_H 0
++#define HAVE_OPENGL_GL3_H 0
++#define HAVE_POLL_H 1
++#define HAVE_SYS_PARAM_H 1
++#define HAVE_SYS_RESOURCE_H 1
++#define HAVE_SYS_SELECT_H 1
++#define HAVE_SYS_SOUNDCARD_H 0
++#define HAVE_SYS_TIME_H 1
++#define HAVE_SYS_UN_H 1
++#define HAVE_SYS_VIDEOIO_H 1
++#define HAVE_TERMIOS_H 1
++#define HAVE_UDPLITE_H 0
++#define HAVE_UNISTD_H 1
++#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 1 -- forced to 0. See https://crbug.com/590440 */
++#define HAVE_WINDOWS_H 0
++#define HAVE_WINSOCK2_H 0
++#define HAVE_INTRINSICS_NEON 1
++#define HAVE_ATANF 1
++#define HAVE_ATAN2F 1
++#define HAVE_CBRT 1
++#define HAVE_CBRTF 1
++#define HAVE_COPYSIGN 1
++#define HAVE_COSF 1
++#define HAVE_ERF 1
++#define HAVE_EXP2 1
++#define HAVE_EXP2F 1
++#define HAVE_EXPF 1
++#define HAVE_HYPOT 1
++#define HAVE_ISFINITE 1
++#define HAVE_ISINF 1
++#define HAVE_ISNAN 1
++#define HAVE_LDEXPF 1
++#define HAVE_LLRINT 1
++#define HAVE_LLRINTF 1
++#define HAVE_LOG2 1
++#define HAVE_LOG2F 1
++#define HAVE_LOG10F 1
++#define HAVE_LRINT 1
++#define HAVE_LRINTF 1
++#define HAVE_POWF 1
++#define HAVE_RINT 1
++#define HAVE_ROUND 1
++#define HAVE_ROUNDF 1
++#define HAVE_SINF 1
++#define HAVE_TRUNC 1
++#define HAVE_TRUNCF 1
++#define HAVE_DOS_PATHS 0
++#define HAVE_LIBC_MSVCRT 0
++#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
++#define HAVE_SECTION_DATA_REL_RO 1
++#define HAVE_THREADS 1
++#define HAVE_UWP 0
++#define HAVE_WINRT 0
++#define HAVE_ACCESS 1
++#define HAVE_ALIGNED_MALLOC 0
++#define HAVE_ARC4RANDOM 1
++#define HAVE_CLOCK_GETTIME 1
++#define HAVE_CLOSESOCKET 0
++#define HAVE_COMMANDLINETOARGVW 0
++#define HAVE_FCNTL 1
++#define HAVE_GETADDRINFO 0
++#define HAVE_GETAUXVAL 0
++#define HAVE_GETHRTIME 0
++#define HAVE_GETOPT 1
++#define HAVE_GETMODULEHANDLE 0
++#define HAVE_GETPROCESSAFFINITYMASK 0
++#define HAVE_GETPROCESSMEMORYINFO 0
++#define HAVE_GETPROCESSTIMES 0
++#define HAVE_GETRUSAGE 1
++#define HAVE_GETSTDHANDLE 0
++#define HAVE_GETSYSTEMTIMEASFILETIME 0
++#define HAVE_GETTIMEOFDAY 1
++#define HAVE_GLOB 1
++#define HAVE_GLXGETPROCADDRESS 0
++#define HAVE_GMTIME_R 1
++#define HAVE_INET_ATON 0
++#define HAVE_ISATTY 1
++#define HAVE_KBHIT 0
++#define HAVE_LOCALTIME_R 1
++#define HAVE_LSTAT 1
++#define HAVE_LZO1X_999_COMPRESS 0
++#define HAVE_MACH_ABSOLUTE_TIME 0
++#define HAVE_MAPVIEWOFFILE 0
++#define HAVE_MEMALIGN 0
++#define HAVE_MKSTEMP 1
++#define HAVE_MMAP 1
++#define HAVE_MPROTECT 1
++#define HAVE_NANOSLEEP 1
++#define HAVE_PEEKNAMEDPIPE 0
++#define HAVE_POSIX_MEMALIGN 1
++#define HAVE_PTHREAD_CANCEL 1
++#define HAVE_SCHED_GETAFFINITY 0
++#define HAVE_SECITEMIMPORT 0
++#define HAVE_SETCONSOLETEXTATTRIBUTE 0
++#define HAVE_SETCONSOLECTRLHANDLER 0
++#define HAVE_SETDLLDIRECTORY 0
++#define HAVE_SETMODE 0
++#define HAVE_SETRLIMIT 1
++#define HAVE_SLEEP 0
++#define HAVE_STRERROR_R 1
++#define HAVE_SYSCONF 1
++#define HAVE_SYSCTL 0 /* #define HAVE_SYSCTL 1 -- forced to 0 for Fuchsia */
++#define HAVE_USLEEP 1
++#define HAVE_UTGETOSTYPEFROMSTRING 0
++#define HAVE_VIRTUALALLOC 0
++#define HAVE_WGLGETPROCADDRESS 0
++#define HAVE_BCRYPT 0
++#define HAVE_VAAPI_DRM 0
++#define HAVE_VAAPI_X11 0
++#define HAVE_VDPAU_X11 0
++#define HAVE_PTHREADS 1
++#define HAVE_OS2THREADS 0
++#define HAVE_W32THREADS 0
++#define HAVE_AS_ARCH_DIRECTIVE 0
++#define HAVE_AS_DN_DIRECTIVE 0
++#define HAVE_AS_FPU_DIRECTIVE 0
++#define HAVE_AS_FUNC 0
++#define HAVE_AS_OBJECT_ARCH 0
++#define HAVE_ASM_MOD_Q 0
++#define HAVE_BLOCKS_EXTENSION 0
++#define HAVE_EBP_AVAILABLE 0
++#define HAVE_EBX_AVAILABLE 0
++#define HAVE_GNU_AS 0
++#define HAVE_GNU_WINDRES 0
++#define HAVE_IBM_ASM 0
++#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
++#define HAVE_INLINE_ASM_LABELS 1
++#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
++#define HAVE_PRAGMA_DEPRECATED 1
++#define HAVE_RSYNC_CONTIMEOUT 0
++#define HAVE_SYMVER_ASM_LABEL 1
++#define HAVE_SYMVER_GNU_ASM 1
++/* #define HAVE_VFP_ARGS 0 -- softfp/hardfp selection is done by the chrome build */
++#define HAVE_XFORM_ASM 0
++#define HAVE_XMM_CLOBBERS 0
++#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
++#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
++#define HAVE_KCMVIDEOCODECTYPE_VP9 0
++#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
++#define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
++#define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
++#define HAVE_SOCKLEN_T 0
++#define HAVE_STRUCT_ADDRINFO 0
++#define HAVE_STRUCT_GROUP_SOURCE_REQ 0
++#define HAVE_STRUCT_IP_MREQ_SOURCE 0
++#define HAVE_STRUCT_IPV6_MREQ 0
++#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
++#define HAVE_STRUCT_POLLFD 0
++#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
++#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
++#define HAVE_STRUCT_SOCKADDR_IN6 0
++#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
++#define HAVE_STRUCT_SOCKADDR_STORAGE 0
++#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
++#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
++#define HAVE_GZIP 1
++#define HAVE_LIBDRM_GETFB2 0
++#define HAVE_MAKEINFO 1
++#define HAVE_MAKEINFO_HTML 0
++#define HAVE_OPENCL_D3D11 0
++#define HAVE_OPENCL_DRM_ARM 0
++#define HAVE_OPENCL_DRM_BEIGNET 0
++#define HAVE_OPENCL_DXVA2 0
++#define HAVE_OPENCL_VAAPI_BEIGNET 0
++#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
++#define HAVE_PERL 1
++#define HAVE_POD2MAN 1
++#define HAVE_TEXI2HTML 0
++#define HAVE_XMLLINT 1
++#define HAVE_ZLIB_GZIP 0
++#define CONFIG_DOC 0
++#define CONFIG_HTMLPAGES 0
++#define CONFIG_MANPAGES 0
++#define CONFIG_PODPAGES 0
++#define CONFIG_TXTPAGES 0
++#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
++#define CONFIG_AVIO_READING_EXAMPLE 1
++#define CONFIG_DECODE_AUDIO_EXAMPLE 1
++#define CONFIG_DECODE_VIDEO_EXAMPLE 1
++#define CONFIG_DEMUXING_DECODING_EXAMPLE 1
++#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
++#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
++#define CONFIG_EXTRACT_MVS_EXAMPLE 1
++#define CONFIG_FILTER_AUDIO_EXAMPLE 0
++#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
++#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
++#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
++#define CONFIG_HW_DECODE_EXAMPLE 1
++#define CONFIG_METADATA_EXAMPLE 1
++#define CONFIG_MUXING_EXAMPLE 0
++#define CONFIG_QSVDEC_EXAMPLE 0
++#define CONFIG_REMUXING_EXAMPLE 1
++#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
++#define CONFIG_SCALING_VIDEO_EXAMPLE 0
++#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
++#define CONFIG_TRANSCODING_EXAMPLE 0
++#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
++#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
++#define CONFIG_AVISYNTH 0
++#define CONFIG_FREI0R 0
++#define CONFIG_LIBCDIO 0
++#define CONFIG_LIBDAVS2 0
++#define CONFIG_LIBRUBBERBAND 0
++#define CONFIG_LIBVIDSTAB 0
++#define CONFIG_LIBX264 0
++#define CONFIG_LIBX265 0
++#define CONFIG_LIBXAVS 0
++#define CONFIG_LIBXAVS2 0
++#define CONFIG_LIBXVID 0
++#define CONFIG_DECKLINK 0
++#define CONFIG_LIBFDK_AAC 0
++#define CONFIG_LIBTLS 0
++#define CONFIG_GMP 0
++#define CONFIG_LIBARIBB24 0
++#define CONFIG_LIBLENSFUN 0
++#define CONFIG_LIBOPENCORE_AMRNB 0
++#define CONFIG_LIBOPENCORE_AMRWB 0
++#define CONFIG_LIBVO_AMRWBENC 0
++#define CONFIG_MBEDTLS 0
++#define CONFIG_RKMPP 0
++#define CONFIG_LIBSMBCLIENT 0
++#define CONFIG_CHROMAPRINT 0
++#define CONFIG_GCRYPT 0
++#define CONFIG_GNUTLS 0
++#define CONFIG_JNI 0
++#define CONFIG_LADSPA 0
++#define CONFIG_LIBAOM 0
++#define CONFIG_LIBASS 0
++#define CONFIG_LIBBLURAY 0
++#define CONFIG_LIBBS2B 0
++#define CONFIG_LIBCACA 0
++#define CONFIG_LIBCELT 0
++#define CONFIG_LIBCODEC2 0
++#define CONFIG_LIBDAV1D 0
++#define CONFIG_LIBDC1394 0
++#define CONFIG_LIBDRM 0
++#define CONFIG_LIBFLITE 0
++#define CONFIG_LIBFONTCONFIG 0
++#define CONFIG_LIBFREETYPE 0
++#define CONFIG_LIBFRIBIDI 0
++#define CONFIG_LIBGLSLANG 0
++#define CONFIG_LIBGME 0
++#define CONFIG_LIBGSM 0
++#define CONFIG_LIBIEC61883 0
++#define CONFIG_LIBILBC 0
++#define CONFIG_LIBJACK 0
++#define CONFIG_LIBKLVANC 0
++#define CONFIG_LIBKVAZAAR 0
++#define CONFIG_LIBMODPLUG 0
++#define CONFIG_LIBMP3LAME 0
++#define CONFIG_LIBMYSOFA 0
++#define CONFIG_LIBOPENCV 0
++#define CONFIG_LIBOPENH264 0
++#define CONFIG_LIBOPENJPEG 0
++#define CONFIG_LIBOPENMPT 0
++#define CONFIG_LIBOPENVINO 0
++#define CONFIG_LIBOPUS 1
++#define CONFIG_LIBPLACEBO 0
++#define CONFIG_LIBPULSE 0
++#define CONFIG_LIBRABBITMQ 0
++#define CONFIG_LIBRAV1E 0
++#define CONFIG_LIBRIST 0
++#define CONFIG_LIBRSVG 0
++#define CONFIG_LIBRTMP 0
++#define CONFIG_LIBSHADERC 0
++#define CONFIG_LIBSHINE 0
++#define CONFIG_LIBSMBCLIENT 0
++#define CONFIG_LIBSNAPPY 0
++#define CONFIG_LIBSOXR 0
++#define CONFIG_LIBSPEEX 0
++#define CONFIG_LIBSRT 0
++#define CONFIG_LIBSSH 0
++#define CONFIG_LIBSVTAV1 0
++#define CONFIG_LIBTENSORFLOW 0
++#define CONFIG_LIBTESSERACT 0
++#define CONFIG_LIBTHEORA 0
++#define CONFIG_LIBTWOLAME 0
++#define CONFIG_LIBUAVS3D 0
++#define CONFIG_LIBV4L2 0
++#define CONFIG_LIBVMAF 0
++#define CONFIG_LIBVORBIS 0
++#define CONFIG_LIBVPX 0
++#define CONFIG_LIBWEBP 0
++#define CONFIG_LIBXML2 0
++#define CONFIG_LIBZIMG 0
++#define CONFIG_LIBZMQ 0
++#define CONFIG_LIBZVBI 0
++#define CONFIG_LV2 0
++#define CONFIG_MEDIACODEC 0
++#define CONFIG_OPENAL 0
++#define CONFIG_OPENGL 0
++#define CONFIG_OPENSSL 0
++#define CONFIG_POCKETSPHINX 0
++#define CONFIG_VAPOURSYNTH 0
++#define CONFIG_ALSA 0
++#define CONFIG_APPKIT 0
++#define CONFIG_AVFOUNDATION 0
++#define CONFIG_BZLIB 0
++#define CONFIG_COREIMAGE 0
++#define CONFIG_ICONV 0
++#define CONFIG_LIBXCB 0
++#define CONFIG_LIBXCB_SHM 0
++#define CONFIG_LIBXCB_SHAPE 0
++#define CONFIG_LIBXCB_XFIXES 0
++#define CONFIG_LZMA 0
++#define CONFIG_MEDIAFOUNDATION 0
++#define CONFIG_METAL 0
++#define CONFIG_SCHANNEL 0
++#define CONFIG_SDL2 0
++#define CONFIG_SECURETRANSPORT 0
++#define CONFIG_SNDIO 0
++#define CONFIG_XLIB 0
++#define CONFIG_ZLIB 0
++#define CONFIG_CUDA_NVCC 0
++#define CONFIG_CUDA_SDK 0
++#define CONFIG_LIBNPP 0
++#define CONFIG_LIBMFX 0
++#define CONFIG_MMAL 0
++#define CONFIG_OMX 0
++#define CONFIG_OPENCL 0
++#define CONFIG_AMF 0
++#define CONFIG_AUDIOTOOLBOX 0
++#define CONFIG_CRYSTALHD 0
++#define CONFIG_CUDA 0
++#define CONFIG_CUDA_LLVM 0
++#define CONFIG_CUVID 0
++#define CONFIG_D3D11VA 0
++#define CONFIG_DXVA2 0
++#define CONFIG_FFNVCODEC 0
++#define CONFIG_NVDEC 0
++#define CONFIG_NVENC 0
++#define CONFIG_VAAPI 0
++#define CONFIG_VDPAU 0
++#define CONFIG_VIDEOTOOLBOX 0
++#define CONFIG_VULKAN 0
++#define CONFIG_V4L2_M2M 0
++#define CONFIG_FTRAPV 0
++#define CONFIG_GRAY 0
++#define CONFIG_HARDCODED_TABLES 0
++#define CONFIG_OMX_RPI 0
++#define CONFIG_RUNTIME_CPUDETECT 1
++#define CONFIG_SAFE_BITSTREAM_READER 1
++#define CONFIG_SHARED 0
++#define CONFIG_SMALL 0
++#define CONFIG_STATIC 1
++#define CONFIG_SWSCALE_ALPHA 1
++#define CONFIG_GPL 0
++#define CONFIG_NONFREE 0
++#define CONFIG_VERSION3 0
++#define CONFIG_AVDEVICE 0
++#define CONFIG_AVFILTER 0
++#define CONFIG_SWSCALE 0
++#define CONFIG_POSTPROC 0
++#define CONFIG_AVFORMAT 1
++#define CONFIG_AVCODEC 1
++#define CONFIG_SWRESAMPLE 0
++#define CONFIG_AVUTIL 1
++#define CONFIG_FFPLAY 0
++#define CONFIG_FFPROBE 0
++#define CONFIG_FFMPEG 0
++#define CONFIG_DCT 1
++#define CONFIG_DWT 0
++#define CONFIG_ERROR_RESILIENCE 0
++#define CONFIG_FAAN 0
++#define CONFIG_FAST_UNALIGNED 1
++#define CONFIG_FFT 1
++#define CONFIG_LSP 0
++#define CONFIG_MDCT 1
++#define CONFIG_PIXELUTILS 0
++#define CONFIG_NETWORK 0
++#define CONFIG_RDFT 1
++#define CONFIG_AUTODETECT 0
++#define CONFIG_FONTCONFIG 0
++#define CONFIG_LARGE_TESTS 1
++#define CONFIG_LINUX_PERF 0
++#define CONFIG_MACOS_KPERF 0
++#define CONFIG_MEMORY_POISONING 0
++#define CONFIG_NEON_CLOBBER_TEST 0
++#define CONFIG_OSSFUZZ 0
++#define CONFIG_PIC 1
++#define CONFIG_PTX_COMPRESSION 0
++#define CONFIG_THUMB 0
++#define CONFIG_VALGRIND_BACKTRACE 0
++#define CONFIG_XMM_CLOBBER_TEST 0
++#define CONFIG_BSFS 0
++#define CONFIG_DECODERS 1
++#define CONFIG_ENCODERS 0
++#define CONFIG_HWACCELS 0
++#define CONFIG_PARSERS 1
++#define CONFIG_INDEVS 0
++#define CONFIG_OUTDEVS 0
++#define CONFIG_FILTERS 0
++#define CONFIG_DEMUXERS 1
++#define CONFIG_MUXERS 0
++#define CONFIG_PROTOCOLS 0
++#define CONFIG_AANDCTTABLES 0
++#define CONFIG_AC3DSP 0
++#define CONFIG_ADTS_HEADER 1
++#define CONFIG_ATSC_A53 1
++#define CONFIG_AUDIO_FRAME_QUEUE 0
++#define CONFIG_AUDIODSP 0
++#define CONFIG_BLOCKDSP 0
++#define CONFIG_BSWAPDSP 0
++#define CONFIG_CABAC 1
++#define CONFIG_CBS 0
++#define CONFIG_CBS_AV1 0
++#define CONFIG_CBS_H264 0
++#define CONFIG_CBS_H265 0
++#define CONFIG_CBS_JPEG 0
++#define CONFIG_CBS_MPEG2 0
++#define CONFIG_CBS_VP9 0
++#define CONFIG_DEFLATE_WRAPPER 0
++#define CONFIG_DIRAC_PARSE 1
++#define CONFIG_DNN 0
++#define CONFIG_DOVI_RPU 0
++#define CONFIG_DVPROFILE 0
++#define CONFIG_EXIF 0
++#define CONFIG_FAANDCT 0
++#define CONFIG_FAANIDCT 0
++#define CONFIG_FDCTDSP 0
++#define CONFIG_FLACDSP 1
++#define CONFIG_FMTCONVERT 0
++#define CONFIG_FRAME_THREAD_ENCODER 0
++#define CONFIG_G722DSP 0
++#define CONFIG_GOLOMB 1
++#define CONFIG_GPLV3 0
++#define CONFIG_H263DSP 0
++#define CONFIG_H264CHROMA 1
++#define CONFIG_H264DSP 1
++#define CONFIG_H264PARSE 1
++#define CONFIG_H264PRED 1
++#define CONFIG_H264QPEL 1
++#define CONFIG_HEVCPARSE 0
++#define CONFIG_HPELDSP 1
++#define CONFIG_HUFFMAN 0
++#define CONFIG_HUFFYUVDSP 0
++#define CONFIG_HUFFYUVENCDSP 0
++#define CONFIG_IDCTDSP 0
++#define CONFIG_IIRFILTER 0
++#define CONFIG_MDCT15 1
++#define CONFIG_INFLATE_WRAPPER 0
++#define CONFIG_INTRAX8 0
++#define CONFIG_ISO_MEDIA 1
++#define CONFIG_IVIDSP 0
++#define CONFIG_JPEGTABLES 0
++#define CONFIG_LGPLV3 0
++#define CONFIG_LIBX262 0
++#define CONFIG_LLAUDDSP 0
++#define CONFIG_LLVIDDSP 0
++#define CONFIG_LLVIDENCDSP 0
++#define CONFIG_LPC 0
++#define CONFIG_LZF 0
++#define CONFIG_ME_CMP 0
++#define CONFIG_MPEG_ER 0
++#define CONFIG_MPEGAUDIO 1
++#define CONFIG_MPEGAUDIODSP 1
++#define CONFIG_MPEGAUDIOHEADER 1
++#define CONFIG_MPEG4AUDIO 1
++#define CONFIG_MPEGVIDEO 0
++#define CONFIG_MPEGVIDEODEC 0
++#define CONFIG_MPEGVIDEOENC 0
++#define CONFIG_MSS34DSP 0
++#define CONFIG_PIXBLOCKDSP 0
++#define CONFIG_QPELDSP 0
++#define CONFIG_QSV 0
++#define CONFIG_QSVDEC 0
++#define CONFIG_QSVENC 0
++#define CONFIG_QSVVPP 0
++#define CONFIG_RANGECODER 0
++#define CONFIG_RIFFDEC 1
++#define CONFIG_RIFFENC 0
++#define CONFIG_RTPDEC 0
++#define CONFIG_RTPENC_CHAIN 0
++#define CONFIG_RV34DSP 0
++#define CONFIG_SCENE_SAD 0
++#define CONFIG_SINEWIN 1
++#define CONFIG_SNAPPY 0
++#define CONFIG_SRTP 0
++#define CONFIG_STARTCODE 1
++#define CONFIG_TEXTUREDSP 0
++#define CONFIG_TEXTUREDSPENC 0
++#define CONFIG_TPELDSP 0
++#define CONFIG_VAAPI_1 0
++#define CONFIG_VAAPI_ENCODE 0
++#define CONFIG_VC1DSP 0
++#define CONFIG_VIDEODSP 1
++#define CONFIG_VP3DSP 1
++#define CONFIG_VP56DSP 0
++#define CONFIG_VP8DSP 1
++#define CONFIG_WMA_FREQS 0
++#define CONFIG_WMV2DSP 0
++#endif /* FFMPEG_CONFIG_H */
diff --git a/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_arm64_config__components.h b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_arm64_config__components.h
new file mode 100644
index 000000000000..2179e96bda17
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_arm64_config__components.h
@@ -0,0 +1,2066 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/arm64/config_components.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/arm64/config_components.h
+@@ -0,0 +1,2063 @@
++/* Automatically generated by configure - do not modify! */
++#ifndef FFMPEG_CONFIG_COMPONENTS_H
++#define FFMPEG_CONFIG_COMPONENTS_H
++#define CONFIG_AAC_ADTSTOASC_BSF 0
++#define CONFIG_AV1_FRAME_MERGE_BSF 0
++#define CONFIG_AV1_FRAME_SPLIT_BSF 0
++#define CONFIG_AV1_METADATA_BSF 0
++#define CONFIG_CHOMP_BSF 0
++#define CONFIG_DUMP_EXTRADATA_BSF 0
++#define CONFIG_DCA_CORE_BSF 0
++#define CONFIG_DV_ERROR_MARKER_BSF 0
++#define CONFIG_EAC3_CORE_BSF 0
++#define CONFIG_EXTRACT_EXTRADATA_BSF 0
++#define CONFIG_FILTER_UNITS_BSF 0
++#define CONFIG_H264_METADATA_BSF 0
++#define CONFIG_H264_MP4TOANNEXB_BSF 0
++#define CONFIG_H264_REDUNDANT_PPS_BSF 0
++#define CONFIG_HAPQA_EXTRACT_BSF 0
++#define CONFIG_HEVC_METADATA_BSF 0
++#define CONFIG_HEVC_MP4TOANNEXB_BSF 0
++#define CONFIG_IMX_DUMP_HEADER_BSF 0
++#define CONFIG_MJPEG2JPEG_BSF 0
++#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
++#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
++#define CONFIG_MPEG2_METADATA_BSF 0
++#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
++#define CONFIG_MOV2TEXTSUB_BSF 0
++#define CONFIG_NOISE_BSF 0
++#define CONFIG_NULL_BSF 0
++#define CONFIG_OPUS_METADATA_BSF 0
++#define CONFIG_PCM_RECHUNK_BSF 0
++#define CONFIG_PRORES_METADATA_BSF 0
++#define CONFIG_REMOVE_EXTRADATA_BSF 0
++#define CONFIG_SETTS_BSF 0
++#define CONFIG_TEXT2MOVSUB_BSF 0
++#define CONFIG_TRACE_HEADERS_BSF 0
++#define CONFIG_TRUEHD_CORE_BSF 0
++#define CONFIG_VP9_METADATA_BSF 0
++#define CONFIG_VP9_RAW_REORDER_BSF 0
++#define CONFIG_VP9_SUPERFRAME_BSF 0
++#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0
++#define CONFIG_AASC_DECODER 0
++#define CONFIG_AIC_DECODER 0
++#define CONFIG_ALIAS_PIX_DECODER 0
++#define CONFIG_AGM_DECODER 0
++#define CONFIG_AMV_DECODER 0
++#define CONFIG_ANM_DECODER 0
++#define CONFIG_ANSI_DECODER 0
++#define CONFIG_APNG_DECODER 0
++#define CONFIG_ARBC_DECODER 0
++#define CONFIG_ARGO_DECODER 0
++#define CONFIG_ASV1_DECODER 0
++#define CONFIG_ASV2_DECODER 0
++#define CONFIG_AURA_DECODER 0
++#define CONFIG_AURA2_DECODER 0
++#define CONFIG_AVRP_DECODER 0
++#define CONFIG_AVRN_DECODER 0
++#define CONFIG_AVS_DECODER 0
++#define CONFIG_AVUI_DECODER 0
++#define CONFIG_AYUV_DECODER 0
++#define CONFIG_BETHSOFTVID_DECODER 0
++#define CONFIG_BFI_DECODER 0
++#define CONFIG_BINK_DECODER 0
++#define CONFIG_BITPACKED_DECODER 0
++#define CONFIG_BMP_DECODER 0
++#define CONFIG_BMV_VIDEO_DECODER 0
++#define CONFIG_BRENDER_PIX_DECODER 0
++#define CONFIG_C93_DECODER 0
++#define CONFIG_CAVS_DECODER 0
++#define CONFIG_CDGRAPHICS_DECODER 0
++#define CONFIG_CDTOONS_DECODER 0
++#define CONFIG_CDXL_DECODER 0
++#define CONFIG_CFHD_DECODER 0
++#define CONFIG_CINEPAK_DECODER 0
++#define CONFIG_CLEARVIDEO_DECODER 0
++#define CONFIG_CLJR_DECODER 0
++#define CONFIG_CLLC_DECODER 0
++#define CONFIG_COMFORTNOISE_DECODER 0
++#define CONFIG_CPIA_DECODER 0
++#define CONFIG_CRI_DECODER 0
++#define CONFIG_CSCD_DECODER 0
++#define CONFIG_CYUV_DECODER 0
++#define CONFIG_DDS_DECODER 0
++#define CONFIG_DFA_DECODER 0
++#define CONFIG_DIRAC_DECODER 0
++#define CONFIG_DNXHD_DECODER 0
++#define CONFIG_DPX_DECODER 0
++#define CONFIG_DSICINVIDEO_DECODER 0
++#define CONFIG_DVAUDIO_DECODER 0
++#define CONFIG_DVVIDEO_DECODER 0
++#define CONFIG_DXA_DECODER 0
++#define CONFIG_DXTORY_DECODER 0
++#define CONFIG_DXV_DECODER 0
++#define CONFIG_EACMV_DECODER 0
++#define CONFIG_EAMAD_DECODER 0
++#define CONFIG_EATGQ_DECODER 0
++#define CONFIG_EATGV_DECODER 0
++#define CONFIG_EATQI_DECODER 0
++#define CONFIG_EIGHTBPS_DECODER 0
++#define CONFIG_EIGHTSVX_EXP_DECODER 0
++#define CONFIG_EIGHTSVX_FIB_DECODER 0
++#define CONFIG_ESCAPE124_DECODER 0
++#define CONFIG_ESCAPE130_DECODER 0
++#define CONFIG_EXR_DECODER 0
++#define CONFIG_FFV1_DECODER 0
++#define CONFIG_FFVHUFF_DECODER 0
++#define CONFIG_FIC_DECODER 0
++#define CONFIG_FITS_DECODER 0
++#define CONFIG_FLASHSV_DECODER 0
++#define CONFIG_FLASHSV2_DECODER 0
++#define CONFIG_FLIC_DECODER 0
++#define CONFIG_FLV_DECODER 0
++#define CONFIG_FMVC_DECODER 0
++#define CONFIG_FOURXM_DECODER 0
++#define CONFIG_FRAPS_DECODER 0
++#define CONFIG_FRWU_DECODER 0
++#define CONFIG_G2M_DECODER 0
++#define CONFIG_GDV_DECODER 0
++#define CONFIG_GEM_DECODER 0
++#define CONFIG_GIF_DECODER 0
++#define CONFIG_H261_DECODER 0
++#define CONFIG_H263_DECODER 0
++#define CONFIG_H263I_DECODER 0
++#define CONFIG_H263P_DECODER 0
++#define CONFIG_H263_V4L2M2M_DECODER 0
++#define CONFIG_H264_DECODER 1
++#define CONFIG_H264_CRYSTALHD_DECODER 0
++#define CONFIG_H264_V4L2M2M_DECODER 0
++#define CONFIG_H264_MEDIACODEC_DECODER 0
++#define CONFIG_H264_MMAL_DECODER 0
++#define CONFIG_H264_QSV_DECODER 0
++#define CONFIG_H264_RKMPP_DECODER 0
++#define CONFIG_HAP_DECODER 0
++#define CONFIG_HEVC_DECODER 0
++#define CONFIG_HEVC_QSV_DECODER 0
++#define CONFIG_HEVC_RKMPP_DECODER 0
++#define CONFIG_HEVC_V4L2M2M_DECODER 0
++#define CONFIG_HNM4_VIDEO_DECODER 0
++#define CONFIG_HQ_HQA_DECODER 0
++#define CONFIG_HQX_DECODER 0
++#define CONFIG_HUFFYUV_DECODER 0
++#define CONFIG_HYMT_DECODER 0
++#define CONFIG_IDCIN_DECODER 0
++#define CONFIG_IFF_ILBM_DECODER 0
++#define CONFIG_IMM4_DECODER 0
++#define CONFIG_IMM5_DECODER 0
++#define CONFIG_INDEO2_DECODER 0
++#define CONFIG_INDEO3_DECODER 0
++#define CONFIG_INDEO4_DECODER 0
++#define CONFIG_INDEO5_DECODER 0
++#define CONFIG_INTERPLAY_VIDEO_DECODER 0
++#define CONFIG_IPU_DECODER 0
++#define CONFIG_JPEG2000_DECODER 0
++#define CONFIG_JPEGLS_DECODER 0
++#define CONFIG_JV_DECODER 0
++#define CONFIG_KGV1_DECODER 0
++#define CONFIG_KMVC_DECODER 0
++#define CONFIG_LAGARITH_DECODER 0
++#define CONFIG_LOCO_DECODER 0
++#define CONFIG_LSCR_DECODER 0
++#define CONFIG_M101_DECODER 0
++#define CONFIG_MAGICYUV_DECODER 0
++#define CONFIG_MDEC_DECODER 0
++#define CONFIG_MIMIC_DECODER 0
++#define CONFIG_MJPEG_DECODER 0
++#define CONFIG_MJPEGB_DECODER 0
++#define CONFIG_MMVIDEO_DECODER 0
++#define CONFIG_MOBICLIP_DECODER 0
++#define CONFIG_MOTIONPIXELS_DECODER 0
++#define CONFIG_MPEG1VIDEO_DECODER 0
++#define CONFIG_MPEG2VIDEO_DECODER 0
++#define CONFIG_MPEG4_DECODER 0
++#define CONFIG_MPEG4_CRYSTALHD_DECODER 0
++#define CONFIG_MPEG4_V4L2M2M_DECODER 0
++#define CONFIG_MPEG4_MMAL_DECODER 0
++#define CONFIG_MPEGVIDEO_DECODER 0
++#define CONFIG_MPEG1_V4L2M2M_DECODER 0
++#define CONFIG_MPEG2_MMAL_DECODER 0
++#define CONFIG_MPEG2_CRYSTALHD_DECODER 0
++#define CONFIG_MPEG2_V4L2M2M_DECODER 0
++#define CONFIG_MPEG2_QSV_DECODER 0
++#define CONFIG_MPEG2_MEDIACODEC_DECODER 0
++#define CONFIG_MSA1_DECODER 0
++#define CONFIG_MSCC_DECODER 0
++#define CONFIG_MSMPEG4V1_DECODER 0
++#define CONFIG_MSMPEG4V2_DECODER 0
++#define CONFIG_MSMPEG4V3_DECODER 0
++#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
++#define CONFIG_MSP2_DECODER 0
++#define CONFIG_MSRLE_DECODER 0
++#define CONFIG_MSS1_DECODER 0
++#define CONFIG_MSS2_DECODER 0
++#define CONFIG_MSVIDEO1_DECODER 0
++#define CONFIG_MSZH_DECODER 0
++#define CONFIG_MTS2_DECODER 0
++#define CONFIG_MV30_DECODER 0
++#define CONFIG_MVC1_DECODER 0
++#define CONFIG_MVC2_DECODER 0
++#define CONFIG_MVDV_DECODER 0
++#define CONFIG_MVHA_DECODER 0
++#define CONFIG_MWSC_DECODER 0
++#define CONFIG_MXPEG_DECODER 0
++#define CONFIG_NOTCHLC_DECODER 0
++#define CONFIG_NUV_DECODER 0
++#define CONFIG_PAF_VIDEO_DECODER 0
++#define CONFIG_PAM_DECODER 0
++#define CONFIG_PBM_DECODER 0
++#define CONFIG_PCX_DECODER 0
++#define CONFIG_PFM_DECODER 0
++#define CONFIG_PGM_DECODER 0
++#define CONFIG_PGMYUV_DECODER 0
++#define CONFIG_PGX_DECODER 0
++#define CONFIG_PHOTOCD_DECODER 0
++#define CONFIG_PICTOR_DECODER 0
++#define CONFIG_PIXLET_DECODER 0
++#define CONFIG_PNG_DECODER 0
++#define CONFIG_PPM_DECODER 0
++#define CONFIG_PRORES_DECODER 0
++#define CONFIG_PROSUMER_DECODER 0
++#define CONFIG_PSD_DECODER 0
++#define CONFIG_PTX_DECODER 0
++#define CONFIG_QDRAW_DECODER 0
++#define CONFIG_QPEG_DECODER 0
++#define CONFIG_QTRLE_DECODER 0
++#define CONFIG_R10K_DECODER 0
++#define CONFIG_R210_DECODER 0
++#define CONFIG_RASC_DECODER 0
++#define CONFIG_RAWVIDEO_DECODER 0
++#define CONFIG_RL2_DECODER 0
++#define CONFIG_ROQ_DECODER 0
++#define CONFIG_RPZA_DECODER 0
++#define CONFIG_RSCC_DECODER 0
++#define CONFIG_RV10_DECODER 0
++#define CONFIG_RV20_DECODER 0
++#define CONFIG_RV30_DECODER 0
++#define CONFIG_RV40_DECODER 0
++#define CONFIG_S302M_DECODER 0
++#define CONFIG_SANM_DECODER 0
++#define CONFIG_SCPR_DECODER 0
++#define CONFIG_SCREENPRESSO_DECODER 0
++#define CONFIG_SGA_DECODER 0
++#define CONFIG_SGI_DECODER 0
++#define CONFIG_SGIRLE_DECODER 0
++#define CONFIG_SHEERVIDEO_DECODER 0
++#define CONFIG_SIMBIOSIS_IMX_DECODER 0
++#define CONFIG_SMACKER_DECODER 0
++#define CONFIG_SMC_DECODER 0
++#define CONFIG_SMVJPEG_DECODER 0
++#define CONFIG_SNOW_DECODER 0
++#define CONFIG_SP5X_DECODER 0
++#define CONFIG_SPEEDHQ_DECODER 0
++#define CONFIG_SPEEX_DECODER 0
++#define CONFIG_SRGC_DECODER 0
++#define CONFIG_SUNRAST_DECODER 0
++#define CONFIG_SVQ1_DECODER 0
++#define CONFIG_SVQ3_DECODER 0
++#define CONFIG_TARGA_DECODER 0
++#define CONFIG_TARGA_Y216_DECODER 0
++#define CONFIG_TDSC_DECODER 0
++#define CONFIG_THEORA_DECODER 1
++#define CONFIG_THP_DECODER 0
++#define CONFIG_TIERTEXSEQVIDEO_DECODER 0
++#define CONFIG_TIFF_DECODER 0
++#define CONFIG_TMV_DECODER 0
++#define CONFIG_TRUEMOTION1_DECODER 0
++#define CONFIG_TRUEMOTION2_DECODER 0
++#define CONFIG_TRUEMOTION2RT_DECODER 0
++#define CONFIG_TSCC_DECODER 0
++#define CONFIG_TSCC2_DECODER 0
++#define CONFIG_TXD_DECODER 0
++#define CONFIG_ULTI_DECODER 0
++#define CONFIG_UTVIDEO_DECODER 0
++#define CONFIG_V210_DECODER 0
++#define CONFIG_V210X_DECODER 0
++#define CONFIG_V308_DECODER 0
++#define CONFIG_V408_DECODER 0
++#define CONFIG_V410_DECODER 0
++#define CONFIG_VB_DECODER 0
++#define CONFIG_VBLE_DECODER 0
++#define CONFIG_VC1_DECODER 0
++#define CONFIG_VC1_CRYSTALHD_DECODER 0
++#define CONFIG_VC1IMAGE_DECODER 0
++#define CONFIG_VC1_MMAL_DECODER 0
++#define CONFIG_VC1_QSV_DECODER 0
++#define CONFIG_VC1_V4L2M2M_DECODER 0
++#define CONFIG_VCR1_DECODER 0
++#define CONFIG_VMDVIDEO_DECODER 0
++#define CONFIG_VMNC_DECODER 0
++#define CONFIG_VP3_DECODER 1
++#define CONFIG_VP4_DECODER 0
++#define CONFIG_VP5_DECODER 0
++#define CONFIG_VP6_DECODER 0
++#define CONFIG_VP6A_DECODER 0
++#define CONFIG_VP6F_DECODER 0
++#define CONFIG_VP7_DECODER 0
++#define CONFIG_VP8_DECODER 1
++#define CONFIG_VP8_RKMPP_DECODER 0
++#define CONFIG_VP8_V4L2M2M_DECODER 0
++#define CONFIG_VP9_DECODER 0
++#define CONFIG_VP9_RKMPP_DECODER 0
++#define CONFIG_VP9_V4L2M2M_DECODER 0
++#define CONFIG_VQA_DECODER 0
++#define CONFIG_WEBP_DECODER 0
++#define CONFIG_WCMV_DECODER 0
++#define CONFIG_WRAPPED_AVFRAME_DECODER 0
++#define CONFIG_WMV1_DECODER 0
++#define CONFIG_WMV2_DECODER 0
++#define CONFIG_WMV3_DECODER 0
++#define CONFIG_WMV3_CRYSTALHD_DECODER 0
++#define CONFIG_WMV3IMAGE_DECODER 0
++#define CONFIG_WNV1_DECODER 0
++#define CONFIG_XAN_WC3_DECODER 0
++#define CONFIG_XAN_WC4_DECODER 0
++#define CONFIG_XBM_DECODER 0
++#define CONFIG_XFACE_DECODER 0
++#define CONFIG_XL_DECODER 0
++#define CONFIG_XPM_DECODER 0
++#define CONFIG_XWD_DECODER 0
++#define CONFIG_Y41P_DECODER 0
++#define CONFIG_YLC_DECODER 0
++#define CONFIG_YOP_DECODER 0
++#define CONFIG_YUV4_DECODER 0
++#define CONFIG_ZERO12V_DECODER 0
++#define CONFIG_ZEROCODEC_DECODER 0
++#define CONFIG_ZLIB_DECODER 0
++#define CONFIG_ZMBV_DECODER 0
++#define CONFIG_AAC_DECODER 1
++#define CONFIG_AAC_FIXED_DECODER 0
++#define CONFIG_AAC_LATM_DECODER 0
++#define CONFIG_AC3_DECODER 0
++#define CONFIG_AC3_FIXED_DECODER 0
++#define CONFIG_ACELP_KELVIN_DECODER 0
++#define CONFIG_ALAC_DECODER 0
++#define CONFIG_ALS_DECODER 0
++#define CONFIG_AMRNB_DECODER 0
++#define CONFIG_AMRWB_DECODER 0
++#define CONFIG_APE_DECODER 0
++#define CONFIG_APTX_DECODER 0
++#define CONFIG_APTX_HD_DECODER 0
++#define CONFIG_ATRAC1_DECODER 0
++#define CONFIG_ATRAC3_DECODER 0
++#define CONFIG_ATRAC3AL_DECODER 0
++#define CONFIG_ATRAC3P_DECODER 0
++#define CONFIG_ATRAC3PAL_DECODER 0
++#define CONFIG_ATRAC9_DECODER 0
++#define CONFIG_BINKAUDIO_DCT_DECODER 0
++#define CONFIG_BINKAUDIO_RDFT_DECODER 0
++#define CONFIG_BMV_AUDIO_DECODER 0
++#define CONFIG_COOK_DECODER 0
++#define CONFIG_DCA_DECODER 0
++#define CONFIG_DFPWM_DECODER 0
++#define CONFIG_DOLBY_E_DECODER 0
++#define CONFIG_DSD_LSBF_DECODER 0
++#define CONFIG_DSD_MSBF_DECODER 0
++#define CONFIG_DSD_LSBF_PLANAR_DECODER 0
++#define CONFIG_DSD_MSBF_PLANAR_DECODER 0
++#define CONFIG_DSICINAUDIO_DECODER 0
++#define CONFIG_DSS_SP_DECODER 0
++#define CONFIG_DST_DECODER 0
++#define CONFIG_EAC3_DECODER 0
++#define CONFIG_EVRC_DECODER 0
++#define CONFIG_FASTAUDIO_DECODER 0
++#define CONFIG_FFWAVESYNTH_DECODER 0
++#define CONFIG_FLAC_DECODER 1
++#define CONFIG_G723_1_DECODER 0
++#define CONFIG_G729_DECODER 0
++#define CONFIG_GSM_DECODER 0
++#define CONFIG_GSM_MS_DECODER 0
++#define CONFIG_HCA_DECODER 0
++#define CONFIG_HCOM_DECODER 0
++#define CONFIG_IAC_DECODER 0
++#define CONFIG_ILBC_DECODER 0
++#define CONFIG_IMC_DECODER 0
++#define CONFIG_INTERPLAY_ACM_DECODER 0
++#define CONFIG_MACE3_DECODER 0
++#define CONFIG_MACE6_DECODER 0
++#define CONFIG_METASOUND_DECODER 0
++#define CONFIG_MLP_DECODER 0
++#define CONFIG_MP1_DECODER 0
++#define CONFIG_MP1FLOAT_DECODER 0
++#define CONFIG_MP2_DECODER 0
++#define CONFIG_MP2FLOAT_DECODER 0
++#define CONFIG_MP3FLOAT_DECODER 0
++#define CONFIG_MP3_DECODER 1
++#define CONFIG_MP3ADUFLOAT_DECODER 0
++#define CONFIG_MP3ADU_DECODER 0
++#define CONFIG_MP3ON4FLOAT_DECODER 0
++#define CONFIG_MP3ON4_DECODER 0
++#define CONFIG_MPC7_DECODER 0
++#define CONFIG_MPC8_DECODER 0
++#define CONFIG_MSNSIREN_DECODER 0
++#define CONFIG_NELLYMOSER_DECODER 0
++#define CONFIG_ON2AVC_DECODER 0
++#define CONFIG_OPUS_DECODER 0
++#define CONFIG_PAF_AUDIO_DECODER 0
++#define CONFIG_QCELP_DECODER 0
++#define CONFIG_QDM2_DECODER 0
++#define CONFIG_QDMC_DECODER 0
++#define CONFIG_RA_144_DECODER 0
++#define CONFIG_RA_288_DECODER 0
++#define CONFIG_RALF_DECODER 0
++#define CONFIG_SBC_DECODER 0
++#define CONFIG_SHORTEN_DECODER 0
++#define CONFIG_SIPR_DECODER 0
++#define CONFIG_SIREN_DECODER 0
++#define CONFIG_SMACKAUD_DECODER 0
++#define CONFIG_SONIC_DECODER 0
++#define CONFIG_TAK_DECODER 0
++#define CONFIG_TRUEHD_DECODER 0
++#define CONFIG_TRUESPEECH_DECODER 0
++#define CONFIG_TTA_DECODER 0
++#define CONFIG_TWINVQ_DECODER 0
++#define CONFIG_VMDAUDIO_DECODER 0
++#define CONFIG_VORBIS_DECODER 1
++#define CONFIG_WAVPACK_DECODER 0
++#define CONFIG_WMALOSSLESS_DECODER 0
++#define CONFIG_WMAPRO_DECODER 0
++#define CONFIG_WMAV1_DECODER 0
++#define CONFIG_WMAV2_DECODER 0
++#define CONFIG_WMAVOICE_DECODER 0
++#define CONFIG_WS_SND1_DECODER 0
++#define CONFIG_XMA1_DECODER 0
++#define CONFIG_XMA2_DECODER 0
++#define CONFIG_PCM_ALAW_DECODER 1
++#define CONFIG_PCM_BLURAY_DECODER 0
++#define CONFIG_PCM_DVD_DECODER 0
++#define CONFIG_PCM_F16LE_DECODER 0
++#define CONFIG_PCM_F24LE_DECODER 0
++#define CONFIG_PCM_F32BE_DECODER 0
++#define CONFIG_PCM_F32LE_DECODER 1
++#define CONFIG_PCM_F64BE_DECODER 0
++#define CONFIG_PCM_F64LE_DECODER 0
++#define CONFIG_PCM_LXF_DECODER 0
++#define CONFIG_PCM_MULAW_DECODER 1
++#define CONFIG_PCM_S8_DECODER 0
++#define CONFIG_PCM_S8_PLANAR_DECODER 0
++#define CONFIG_PCM_S16BE_DECODER 1
++#define CONFIG_PCM_S16BE_PLANAR_DECODER 0
++#define CONFIG_PCM_S16LE_DECODER 1
++#define CONFIG_PCM_S16LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S24BE_DECODER 1
++#define CONFIG_PCM_S24DAUD_DECODER 0
++#define CONFIG_PCM_S24LE_DECODER 1
++#define CONFIG_PCM_S24LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S32BE_DECODER 0
++#define CONFIG_PCM_S32LE_DECODER 1
++#define CONFIG_PCM_S32LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S64BE_DECODER 0
++#define CONFIG_PCM_S64LE_DECODER 0
++#define CONFIG_PCM_SGA_DECODER 0
++#define CONFIG_PCM_U8_DECODER 1
++#define CONFIG_PCM_U16BE_DECODER 0
++#define CONFIG_PCM_U16LE_DECODER 0
++#define CONFIG_PCM_U24BE_DECODER 0
++#define CONFIG_PCM_U24LE_DECODER 0
++#define CONFIG_PCM_U32BE_DECODER 0
++#define CONFIG_PCM_U32LE_DECODER 0
++#define CONFIG_PCM_VIDC_DECODER 0
++#define CONFIG_DERF_DPCM_DECODER 0
++#define CONFIG_GREMLIN_DPCM_DECODER 0
++#define CONFIG_INTERPLAY_DPCM_DECODER 0
++#define CONFIG_ROQ_DPCM_DECODER 0
++#define CONFIG_SDX2_DPCM_DECODER 0
++#define CONFIG_SOL_DPCM_DECODER 0
++#define CONFIG_XAN_DPCM_DECODER 0
++#define CONFIG_ADPCM_4XM_DECODER 0
++#define CONFIG_ADPCM_ADX_DECODER 0
++#define CONFIG_ADPCM_AFC_DECODER 0
++#define CONFIG_ADPCM_AGM_DECODER 0
++#define CONFIG_ADPCM_AICA_DECODER 0
++#define CONFIG_ADPCM_ARGO_DECODER 0
++#define CONFIG_ADPCM_CT_DECODER 0
++#define CONFIG_ADPCM_DTK_DECODER 0
++#define CONFIG_ADPCM_EA_DECODER 0
++#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
++#define CONFIG_ADPCM_EA_R1_DECODER 0
++#define CONFIG_ADPCM_EA_R2_DECODER 0
++#define CONFIG_ADPCM_EA_R3_DECODER 0
++#define CONFIG_ADPCM_EA_XAS_DECODER 0
++#define CONFIG_ADPCM_G722_DECODER 0
++#define CONFIG_ADPCM_G726_DECODER 0
++#define CONFIG_ADPCM_G726LE_DECODER 0
++#define CONFIG_ADPCM_IMA_ACORN_DECODER 0
++#define CONFIG_ADPCM_IMA_AMV_DECODER 0
++#define CONFIG_ADPCM_IMA_ALP_DECODER 0
++#define CONFIG_ADPCM_IMA_APC_DECODER 0
++#define CONFIG_ADPCM_IMA_APM_DECODER 0
++#define CONFIG_ADPCM_IMA_CUNNING_DECODER 0
++#define CONFIG_ADPCM_IMA_DAT4_DECODER 0
++#define CONFIG_ADPCM_IMA_DK3_DECODER 0
++#define CONFIG_ADPCM_IMA_DK4_DECODER 0
++#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
++#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
++#define CONFIG_ADPCM_IMA_ISS_DECODER 0
++#define CONFIG_ADPCM_IMA_MOFLEX_DECODER 0
++#define CONFIG_ADPCM_IMA_MTF_DECODER 0
++#define CONFIG_ADPCM_IMA_OKI_DECODER 0
++#define CONFIG_ADPCM_IMA_QT_DECODER 0
++#define CONFIG_ADPCM_IMA_RAD_DECODER 0
++#define CONFIG_ADPCM_IMA_SSI_DECODER 0
++#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
++#define CONFIG_ADPCM_IMA_WAV_DECODER 0
++#define CONFIG_ADPCM_IMA_WS_DECODER 0
++#define CONFIG_ADPCM_MS_DECODER 0
++#define CONFIG_ADPCM_MTAF_DECODER 0
++#define CONFIG_ADPCM_PSX_DECODER 0
++#define CONFIG_ADPCM_SBPRO_2_DECODER 0
++#define CONFIG_ADPCM_SBPRO_3_DECODER 0
++#define CONFIG_ADPCM_SBPRO_4_DECODER 0
++#define CONFIG_ADPCM_SWF_DECODER 0
++#define CONFIG_ADPCM_THP_DECODER 0
++#define CONFIG_ADPCM_THP_LE_DECODER 0
++#define CONFIG_ADPCM_VIMA_DECODER 0
++#define CONFIG_ADPCM_XA_DECODER 0
++#define CONFIG_ADPCM_YAMAHA_DECODER 0
++#define CONFIG_ADPCM_ZORK_DECODER 0
++#define CONFIG_SSA_DECODER 0
++#define CONFIG_ASS_DECODER 0
++#define CONFIG_CCAPTION_DECODER 0
++#define CONFIG_DVBSUB_DECODER 0
++#define CONFIG_DVDSUB_DECODER 0
++#define CONFIG_JACOSUB_DECODER 0
++#define CONFIG_MICRODVD_DECODER 0
++#define CONFIG_MOVTEXT_DECODER 0
++#define CONFIG_MPL2_DECODER 0
++#define CONFIG_PGSSUB_DECODER 0
++#define CONFIG_PJS_DECODER 0
++#define CONFIG_REALTEXT_DECODER 0
++#define CONFIG_SAMI_DECODER 0
++#define CONFIG_SRT_DECODER 0
++#define CONFIG_STL_DECODER 0
++#define CONFIG_SUBRIP_DECODER 0
++#define CONFIG_SUBVIEWER_DECODER 0
++#define CONFIG_SUBVIEWER1_DECODER 0
++#define CONFIG_TEXT_DECODER 0
++#define CONFIG_VPLAYER_DECODER 0
++#define CONFIG_WEBVTT_DECODER 0
++#define CONFIG_XSUB_DECODER 0
++#define CONFIG_AAC_AT_DECODER 0
++#define CONFIG_AC3_AT_DECODER 0
++#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
++#define CONFIG_ALAC_AT_DECODER 0
++#define CONFIG_AMR_NB_AT_DECODER 0
++#define CONFIG_EAC3_AT_DECODER 0
++#define CONFIG_GSM_MS_AT_DECODER 0
++#define CONFIG_ILBC_AT_DECODER 0
++#define CONFIG_MP1_AT_DECODER 0
++#define CONFIG_MP2_AT_DECODER 0
++#define CONFIG_MP3_AT_DECODER 0
++#define CONFIG_PCM_ALAW_AT_DECODER 0
++#define CONFIG_PCM_MULAW_AT_DECODER 0
++#define CONFIG_QDMC_AT_DECODER 0
++#define CONFIG_QDM2_AT_DECODER 0
++#define CONFIG_LIBARIBB24_DECODER 0
++#define CONFIG_LIBCELT_DECODER 0
++#define CONFIG_LIBCODEC2_DECODER 0
++#define CONFIG_LIBDAV1D_DECODER 0
++#define CONFIG_LIBDAVS2_DECODER 0
++#define CONFIG_LIBFDK_AAC_DECODER 0
++#define CONFIG_LIBGSM_DECODER 0
++#define CONFIG_LIBGSM_MS_DECODER 0
++#define CONFIG_LIBILBC_DECODER 0
++#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
++#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
++#define CONFIG_LIBOPENJPEG_DECODER 0
++#define CONFIG_LIBOPUS_DECODER 1
++#define CONFIG_LIBRSVG_DECODER 0
++#define CONFIG_LIBSPEEX_DECODER 0
++#define CONFIG_LIBUAVS3D_DECODER 0
++#define CONFIG_LIBVORBIS_DECODER 0
++#define CONFIG_LIBVPX_VP8_DECODER 0
++#define CONFIG_LIBVPX_VP9_DECODER 0
++#define CONFIG_LIBZVBI_TELETEXT_DECODER 0
++#define CONFIG_BINTEXT_DECODER 0
++#define CONFIG_XBIN_DECODER 0
++#define CONFIG_IDF_DECODER 0
++#define CONFIG_LIBAOM_AV1_DECODER 0
++#define CONFIG_AV1_DECODER 0
++#define CONFIG_AV1_CUVID_DECODER 0
++#define CONFIG_AV1_QSV_DECODER 0
++#define CONFIG_LIBOPENH264_DECODER 0
++#define CONFIG_H264_CUVID_DECODER 0
++#define CONFIG_HEVC_CUVID_DECODER 0
++#define CONFIG_HEVC_MEDIACODEC_DECODER 0
++#define CONFIG_MJPEG_CUVID_DECODER 0
++#define CONFIG_MJPEG_QSV_DECODER 0
++#define CONFIG_MPEG1_CUVID_DECODER 0
++#define CONFIG_MPEG2_CUVID_DECODER 0
++#define CONFIG_MPEG4_CUVID_DECODER 0
++#define CONFIG_MPEG4_MEDIACODEC_DECODER 0
++#define CONFIG_VC1_CUVID_DECODER 0
++#define CONFIG_VP8_CUVID_DECODER 0
++#define CONFIG_VP8_MEDIACODEC_DECODER 0
++#define CONFIG_VP8_QSV_DECODER 0
++#define CONFIG_VP9_CUVID_DECODER 0
++#define CONFIG_VP9_MEDIACODEC_DECODER 0
++#define CONFIG_VP9_QSV_DECODER 0
++#define CONFIG_A64MULTI_ENCODER 0
++#define CONFIG_A64MULTI5_ENCODER 0
++#define CONFIG_ALIAS_PIX_ENCODER 0
++#define CONFIG_AMV_ENCODER 0
++#define CONFIG_APNG_ENCODER 0
++#define CONFIG_ASV1_ENCODER 0
++#define CONFIG_ASV2_ENCODER 0
++#define CONFIG_AVRP_ENCODER 0
++#define CONFIG_AVUI_ENCODER 0
++#define CONFIG_AYUV_ENCODER 0
++#define CONFIG_BITPACKED_ENCODER 0
++#define CONFIG_BMP_ENCODER 0
++#define CONFIG_CFHD_ENCODER 0
++#define CONFIG_CINEPAK_ENCODER 0
++#define CONFIG_CLJR_ENCODER 0
++#define CONFIG_COMFORTNOISE_ENCODER 0
++#define CONFIG_DNXHD_ENCODER 0
++#define CONFIG_DPX_ENCODER 0
++#define CONFIG_DVVIDEO_ENCODER 0
++#define CONFIG_EXR_ENCODER 0
++#define CONFIG_FFV1_ENCODER 0
++#define CONFIG_FFVHUFF_ENCODER 0
++#define CONFIG_FITS_ENCODER 0
++#define CONFIG_FLASHSV_ENCODER 0
++#define CONFIG_FLASHSV2_ENCODER 0
++#define CONFIG_FLV_ENCODER 0
++#define CONFIG_GIF_ENCODER 0
++#define CONFIG_H261_ENCODER 0
++#define CONFIG_H263_ENCODER 0
++#define CONFIG_H263P_ENCODER 0
++#define CONFIG_HAP_ENCODER 0
++#define CONFIG_HUFFYUV_ENCODER 0
++#define CONFIG_JPEG2000_ENCODER 0
++#define CONFIG_JPEGLS_ENCODER 0
++#define CONFIG_LJPEG_ENCODER 0
++#define CONFIG_MAGICYUV_ENCODER 0
++#define CONFIG_MJPEG_ENCODER 0
++#define CONFIG_MPEG1VIDEO_ENCODER 0
++#define CONFIG_MPEG2VIDEO_ENCODER 0
++#define CONFIG_MPEG4_ENCODER 0
++#define CONFIG_MSMPEG4V2_ENCODER 0
++#define CONFIG_MSMPEG4V3_ENCODER 0
++#define CONFIG_MSVIDEO1_ENCODER 0
++#define CONFIG_PAM_ENCODER 0
++#define CONFIG_PBM_ENCODER 0
++#define CONFIG_PCX_ENCODER 0
++#define CONFIG_PFM_ENCODER 0
++#define CONFIG_PGM_ENCODER 0
++#define CONFIG_PGMYUV_ENCODER 0
++#define CONFIG_PNG_ENCODER 0
++#define CONFIG_PPM_ENCODER 0
++#define CONFIG_PRORES_ENCODER 0
++#define CONFIG_PRORES_AW_ENCODER 0
++#define CONFIG_PRORES_KS_ENCODER 0
++#define CONFIG_QTRLE_ENCODER 0
++#define CONFIG_R10K_ENCODER 0
++#define CONFIG_R210_ENCODER 0
++#define CONFIG_RAWVIDEO_ENCODER 0
++#define CONFIG_ROQ_ENCODER 0
++#define CONFIG_RPZA_ENCODER 0
++#define CONFIG_RV10_ENCODER 0
++#define CONFIG_RV20_ENCODER 0
++#define CONFIG_S302M_ENCODER 0
++#define CONFIG_SGI_ENCODER 0
++#define CONFIG_SMC_ENCODER 0
++#define CONFIG_SNOW_ENCODER 0
++#define CONFIG_SPEEDHQ_ENCODER 0
++#define CONFIG_SUNRAST_ENCODER 0
++#define CONFIG_SVQ1_ENCODER 0
++#define CONFIG_TARGA_ENCODER 0
++#define CONFIG_TIFF_ENCODER 0
++#define CONFIG_UTVIDEO_ENCODER 0
++#define CONFIG_V210_ENCODER 0
++#define CONFIG_V308_ENCODER 0
++#define CONFIG_V408_ENCODER 0
++#define CONFIG_V410_ENCODER 0
++#define CONFIG_VC2_ENCODER 0
++#define CONFIG_WRAPPED_AVFRAME_ENCODER 0
++#define CONFIG_WMV1_ENCODER 0
++#define CONFIG_WMV2_ENCODER 0
++#define CONFIG_XBM_ENCODER 0
++#define CONFIG_XFACE_ENCODER 0
++#define CONFIG_XWD_ENCODER 0
++#define CONFIG_Y41P_ENCODER 0
++#define CONFIG_YUV4_ENCODER 0
++#define CONFIG_ZLIB_ENCODER 0
++#define CONFIG_ZMBV_ENCODER 0
++#define CONFIG_AAC_ENCODER 0
++#define CONFIG_AC3_ENCODER 0
++#define CONFIG_AC3_FIXED_ENCODER 0
++#define CONFIG_ALAC_ENCODER 0
++#define CONFIG_APTX_ENCODER 0
++#define CONFIG_APTX_HD_ENCODER 0
++#define CONFIG_DCA_ENCODER 0
++#define CONFIG_DFPWM_ENCODER 0
++#define CONFIG_EAC3_ENCODER 0
++#define CONFIG_FLAC_ENCODER 0
++#define CONFIG_G723_1_ENCODER 0
++#define CONFIG_MLP_ENCODER 0
++#define CONFIG_MP2_ENCODER 0
++#define CONFIG_MP2FIXED_ENCODER 0
++#define CONFIG_NELLYMOSER_ENCODER 0
++#define CONFIG_OPUS_ENCODER 0
++#define CONFIG_RA_144_ENCODER 0
++#define CONFIG_SBC_ENCODER 0
++#define CONFIG_SONIC_ENCODER 0
++#define CONFIG_SONIC_LS_ENCODER 0
++#define CONFIG_TRUEHD_ENCODER 0
++#define CONFIG_TTA_ENCODER 0
++#define CONFIG_VORBIS_ENCODER 0
++#define CONFIG_WAVPACK_ENCODER 0
++#define CONFIG_WMAV1_ENCODER 0
++#define CONFIG_WMAV2_ENCODER 0
++#define CONFIG_PCM_ALAW_ENCODER 0
++#define CONFIG_PCM_BLURAY_ENCODER 0
++#define CONFIG_PCM_DVD_ENCODER 0
++#define CONFIG_PCM_F32BE_ENCODER 0
++#define CONFIG_PCM_F32LE_ENCODER 0
++#define CONFIG_PCM_F64BE_ENCODER 0
++#define CONFIG_PCM_F64LE_ENCODER 0
++#define CONFIG_PCM_MULAW_ENCODER 0
++#define CONFIG_PCM_S8_ENCODER 0
++#define CONFIG_PCM_S8_PLANAR_ENCODER 0
++#define CONFIG_PCM_S16BE_ENCODER 0
++#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S16LE_ENCODER 0
++#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S24BE_ENCODER 0
++#define CONFIG_PCM_S24DAUD_ENCODER 0
++#define CONFIG_PCM_S24LE_ENCODER 0
++#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S32BE_ENCODER 0
++#define CONFIG_PCM_S32LE_ENCODER 0
++#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S64BE_ENCODER 0
++#define CONFIG_PCM_S64LE_ENCODER 0
++#define CONFIG_PCM_U8_ENCODER 0
++#define CONFIG_PCM_U16BE_ENCODER 0
++#define CONFIG_PCM_U16LE_ENCODER 0
++#define CONFIG_PCM_U24BE_ENCODER 0
++#define CONFIG_PCM_U24LE_ENCODER 0
++#define CONFIG_PCM_U32BE_ENCODER 0
++#define CONFIG_PCM_U32LE_ENCODER 0
++#define CONFIG_PCM_VIDC_ENCODER 0
++#define CONFIG_ROQ_DPCM_ENCODER 0
++#define CONFIG_ADPCM_ADX_ENCODER 0
++#define CONFIG_ADPCM_ARGO_ENCODER 0
++#define CONFIG_ADPCM_G722_ENCODER 0
++#define CONFIG_ADPCM_G726_ENCODER 0
++#define CONFIG_ADPCM_G726LE_ENCODER 0
++#define CONFIG_ADPCM_IMA_AMV_ENCODER 0
++#define CONFIG_ADPCM_IMA_ALP_ENCODER 0
++#define CONFIG_ADPCM_IMA_APM_ENCODER 0
++#define CONFIG_ADPCM_IMA_QT_ENCODER 0
++#define CONFIG_ADPCM_IMA_SSI_ENCODER 0
++#define CONFIG_ADPCM_IMA_WAV_ENCODER 0
++#define CONFIG_ADPCM_IMA_WS_ENCODER 0
++#define CONFIG_ADPCM_MS_ENCODER 0
++#define CONFIG_ADPCM_SWF_ENCODER 0
++#define CONFIG_ADPCM_YAMAHA_ENCODER 0
++#define CONFIG_SSA_ENCODER 0
++#define CONFIG_ASS_ENCODER 0
++#define CONFIG_DVBSUB_ENCODER 0
++#define CONFIG_DVDSUB_ENCODER 0
++#define CONFIG_MOVTEXT_ENCODER 0
++#define CONFIG_SRT_ENCODER 0
++#define CONFIG_SUBRIP_ENCODER 0
++#define CONFIG_TEXT_ENCODER 0
++#define CONFIG_TTML_ENCODER 0
++#define CONFIG_WEBVTT_ENCODER 0
++#define CONFIG_XSUB_ENCODER 0
++#define CONFIG_AAC_AT_ENCODER 0
++#define CONFIG_ALAC_AT_ENCODER 0
++#define CONFIG_ILBC_AT_ENCODER 0
++#define CONFIG_PCM_ALAW_AT_ENCODER 0
++#define CONFIG_PCM_MULAW_AT_ENCODER 0
++#define CONFIG_LIBAOM_AV1_ENCODER 0
++#define CONFIG_LIBCODEC2_ENCODER 0
++#define CONFIG_LIBFDK_AAC_ENCODER 0
++#define CONFIG_LIBGSM_ENCODER 0
++#define CONFIG_LIBGSM_MS_ENCODER 0
++#define CONFIG_LIBILBC_ENCODER 0
++#define CONFIG_LIBMP3LAME_ENCODER 0
++#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
++#define CONFIG_LIBOPENJPEG_ENCODER 0
++#define CONFIG_LIBOPUS_ENCODER 0
++#define CONFIG_LIBRAV1E_ENCODER 0
++#define CONFIG_LIBSHINE_ENCODER 0
++#define CONFIG_LIBSPEEX_ENCODER 0
++#define CONFIG_LIBSVTAV1_ENCODER 0
++#define CONFIG_LIBTHEORA_ENCODER 0
++#define CONFIG_LIBTWOLAME_ENCODER 0
++#define CONFIG_LIBVO_AMRWBENC_ENCODER 0
++#define CONFIG_LIBVORBIS_ENCODER 0
++#define CONFIG_LIBVPX_VP8_ENCODER 0
++#define CONFIG_LIBVPX_VP9_ENCODER 0
++#define CONFIG_LIBWEBP_ANIM_ENCODER 0
++#define CONFIG_LIBWEBP_ENCODER 0
++#define CONFIG_LIBX262_ENCODER 0
++#define CONFIG_LIBX264_ENCODER 0
++#define CONFIG_LIBX264RGB_ENCODER 0
++#define CONFIG_LIBX265_ENCODER 0
++#define CONFIG_LIBXAVS_ENCODER 0
++#define CONFIG_LIBXAVS2_ENCODER 0
++#define CONFIG_LIBXVID_ENCODER 0
++#define CONFIG_AAC_MF_ENCODER 0
++#define CONFIG_AC3_MF_ENCODER 0
++#define CONFIG_H263_V4L2M2M_ENCODER 0
++#define CONFIG_LIBOPENH264_ENCODER 0
++#define CONFIG_H264_AMF_ENCODER 0
++#define CONFIG_H264_MF_ENCODER 0
++#define CONFIG_H264_NVENC_ENCODER 0
++#define CONFIG_H264_OMX_ENCODER 0
++#define CONFIG_H264_QSV_ENCODER 0
++#define CONFIG_H264_V4L2M2M_ENCODER 0
++#define CONFIG_H264_VAAPI_ENCODER 0
++#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_HEVC_AMF_ENCODER 0
++#define CONFIG_HEVC_MF_ENCODER 0
++#define CONFIG_HEVC_NVENC_ENCODER 0
++#define CONFIG_HEVC_QSV_ENCODER 0
++#define CONFIG_HEVC_V4L2M2M_ENCODER 0
++#define CONFIG_HEVC_VAAPI_ENCODER 0
++#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_LIBKVAZAAR_ENCODER 0
++#define CONFIG_MJPEG_QSV_ENCODER 0
++#define CONFIG_MJPEG_VAAPI_ENCODER 0
++#define CONFIG_MP3_MF_ENCODER 0
++#define CONFIG_MPEG2_QSV_ENCODER 0
++#define CONFIG_MPEG2_VAAPI_ENCODER 0
++#define CONFIG_MPEG4_OMX_ENCODER 0
++#define CONFIG_MPEG4_V4L2M2M_ENCODER 0
++#define CONFIG_PRORES_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_VP8_V4L2M2M_ENCODER 0
++#define CONFIG_VP8_VAAPI_ENCODER 0
++#define CONFIG_VP9_VAAPI_ENCODER 0
++#define CONFIG_VP9_QSV_ENCODER 0
++#define CONFIG_AV1_D3D11VA_HWACCEL 0
++#define CONFIG_AV1_D3D11VA2_HWACCEL 0
++#define CONFIG_AV1_DXVA2_HWACCEL 0
++#define CONFIG_AV1_NVDEC_HWACCEL 0
++#define CONFIG_AV1_VAAPI_HWACCEL 0
++#define CONFIG_H263_VAAPI_HWACCEL 0
++#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_H264_D3D11VA_HWACCEL 0
++#define CONFIG_H264_D3D11VA2_HWACCEL 0
++#define CONFIG_H264_DXVA2_HWACCEL 0
++#define CONFIG_H264_NVDEC_HWACCEL 0
++#define CONFIG_H264_VAAPI_HWACCEL 0
++#define CONFIG_H264_VDPAU_HWACCEL 0
++#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_HEVC_D3D11VA_HWACCEL 0
++#define CONFIG_HEVC_D3D11VA2_HWACCEL 0
++#define CONFIG_HEVC_DXVA2_HWACCEL 0
++#define CONFIG_HEVC_NVDEC_HWACCEL 0
++#define CONFIG_HEVC_VAAPI_HWACCEL 0
++#define CONFIG_HEVC_VDPAU_HWACCEL 0
++#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MJPEG_NVDEC_HWACCEL 0
++#define CONFIG_MJPEG_VAAPI_HWACCEL 0
++#define CONFIG_MPEG1_NVDEC_HWACCEL 0
++#define CONFIG_MPEG1_VDPAU_HWACCEL 0
++#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MPEG2_D3D11VA_HWACCEL 0
++#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
++#define CONFIG_MPEG2_NVDEC_HWACCEL 0
++#define CONFIG_MPEG2_DXVA2_HWACCEL 0
++#define CONFIG_MPEG2_VAAPI_HWACCEL 0
++#define CONFIG_MPEG2_VDPAU_HWACCEL 0
++#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MPEG4_NVDEC_HWACCEL 0
++#define CONFIG_MPEG4_VAAPI_HWACCEL 0
++#define CONFIG_MPEG4_VDPAU_HWACCEL 0
++#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_PRORES_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_VC1_D3D11VA_HWACCEL 0
++#define CONFIG_VC1_D3D11VA2_HWACCEL 0
++#define CONFIG_VC1_DXVA2_HWACCEL 0
++#define CONFIG_VC1_NVDEC_HWACCEL 0
++#define CONFIG_VC1_VAAPI_HWACCEL 0
++#define CONFIG_VC1_VDPAU_HWACCEL 0
++#define CONFIG_VP8_NVDEC_HWACCEL 0
++#define CONFIG_VP8_VAAPI_HWACCEL 0
++#define CONFIG_VP9_D3D11VA_HWACCEL 0
++#define CONFIG_VP9_D3D11VA2_HWACCEL 0
++#define CONFIG_VP9_DXVA2_HWACCEL 0
++#define CONFIG_VP9_NVDEC_HWACCEL 0
++#define CONFIG_VP9_VAAPI_HWACCEL 0
++#define CONFIG_VP9_VDPAU_HWACCEL 0
++#define CONFIG_VP9_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_WMV3_D3D11VA_HWACCEL 0
++#define CONFIG_WMV3_D3D11VA2_HWACCEL 0
++#define CONFIG_WMV3_DXVA2_HWACCEL 0
++#define CONFIG_WMV3_NVDEC_HWACCEL 0
++#define CONFIG_WMV3_VAAPI_HWACCEL 0
++#define CONFIG_WMV3_VDPAU_HWACCEL 0
++#define CONFIG_AAC_PARSER 1
++#define CONFIG_AAC_LATM_PARSER 0
++#define CONFIG_AC3_PARSER 0
++#define CONFIG_ADX_PARSER 0
++#define CONFIG_AMR_PARSER 0
++#define CONFIG_AV1_PARSER 0
++#define CONFIG_AVS2_PARSER 0
++#define CONFIG_AVS3_PARSER 0
++#define CONFIG_BMP_PARSER 0
++#define CONFIG_CAVSVIDEO_PARSER 0
++#define CONFIG_COOK_PARSER 0
++#define CONFIG_CRI_PARSER 0
++#define CONFIG_DCA_PARSER 0
++#define CONFIG_DIRAC_PARSER 0
++#define CONFIG_DNXHD_PARSER 0
++#define CONFIG_DOLBY_E_PARSER 0
++#define CONFIG_DPX_PARSER 0
++#define CONFIG_DVAUDIO_PARSER 0
++#define CONFIG_DVBSUB_PARSER 0
++#define CONFIG_DVDSUB_PARSER 0
++#define CONFIG_DVD_NAV_PARSER 0
++#define CONFIG_FLAC_PARSER 1
++#define CONFIG_G723_1_PARSER 0
++#define CONFIG_G729_PARSER 0
++#define CONFIG_GIF_PARSER 0
++#define CONFIG_GSM_PARSER 0
++#define CONFIG_H261_PARSER 0
++#define CONFIG_H263_PARSER 0
++#define CONFIG_H264_PARSER 1
++#define CONFIG_HEVC_PARSER 0
++#define CONFIG_IPU_PARSER 0
++#define CONFIG_JPEG2000_PARSER 0
++#define CONFIG_MJPEG_PARSER 0
++#define CONFIG_MLP_PARSER 0
++#define CONFIG_MPEG4VIDEO_PARSER 0
++#define CONFIG_MPEGAUDIO_PARSER 1
++#define CONFIG_MPEGVIDEO_PARSER 0
++#define CONFIG_OPUS_PARSER 1
++#define CONFIG_PNG_PARSER 0
++#define CONFIG_PNM_PARSER 0
++#define CONFIG_RV30_PARSER 0
++#define CONFIG_RV40_PARSER 0
++#define CONFIG_SBC_PARSER 0
++#define CONFIG_SIPR_PARSER 0
++#define CONFIG_TAK_PARSER 0
++#define CONFIG_VC1_PARSER 0
++#define CONFIG_VORBIS_PARSER 1
++#define CONFIG_VP3_PARSER 1
++#define CONFIG_VP8_PARSER 1
++#define CONFIG_VP9_PARSER 1
++#define CONFIG_WEBP_PARSER 0
++#define CONFIG_XBM_PARSER 0
++#define CONFIG_XMA_PARSER 0
++#define CONFIG_ALSA_INDEV 0
++#define CONFIG_ANDROID_CAMERA_INDEV 0
++#define CONFIG_AVFOUNDATION_INDEV 0
++#define CONFIG_BKTR_INDEV 0
++#define CONFIG_DECKLINK_INDEV 0
++#define CONFIG_DSHOW_INDEV 0
++#define CONFIG_FBDEV_INDEV 0
++#define CONFIG_GDIGRAB_INDEV 0
++#define CONFIG_IEC61883_INDEV 0
++#define CONFIG_JACK_INDEV 0
++#define CONFIG_KMSGRAB_INDEV 0
++#define CONFIG_LAVFI_INDEV 0
++#define CONFIG_OPENAL_INDEV 0
++#define CONFIG_OSS_INDEV 0
++#define CONFIG_PULSE_INDEV 0
++#define CONFIG_SNDIO_INDEV 0
++#define CONFIG_V4L2_INDEV 0
++#define CONFIG_VFWCAP_INDEV 0
++#define CONFIG_XCBGRAB_INDEV 0
++#define CONFIG_LIBCDIO_INDEV 0
++#define CONFIG_LIBDC1394_INDEV 0
++#define CONFIG_ALSA_OUTDEV 0
++#define CONFIG_AUDIOTOOLBOX_OUTDEV 0
++#define CONFIG_CACA_OUTDEV 0
++#define CONFIG_DECKLINK_OUTDEV 0
++#define CONFIG_FBDEV_OUTDEV 0
++#define CONFIG_OPENGL_OUTDEV 0
++#define CONFIG_OSS_OUTDEV 0
++#define CONFIG_PULSE_OUTDEV 0
++#define CONFIG_SDL2_OUTDEV 0
++#define CONFIG_SNDIO_OUTDEV 0
++#define CONFIG_V4L2_OUTDEV 0
++#define CONFIG_XV_OUTDEV 0
++#define CONFIG_ABENCH_FILTER 0
++#define CONFIG_ACOMPRESSOR_FILTER 0
++#define CONFIG_ACONTRAST_FILTER 0
++#define CONFIG_ACOPY_FILTER 0
++#define CONFIG_ACUE_FILTER 0
++#define CONFIG_ACROSSFADE_FILTER 0
++#define CONFIG_ACROSSOVER_FILTER 0
++#define CONFIG_ACRUSHER_FILTER 0
++#define CONFIG_ADECLICK_FILTER 0
++#define CONFIG_ADECLIP_FILTER 0
++#define CONFIG_ADECORRELATE_FILTER 0
++#define CONFIG_ADELAY_FILTER 0
++#define CONFIG_ADENORM_FILTER 0
++#define CONFIG_ADERIVATIVE_FILTER 0
++#define CONFIG_ADYNAMICEQUALIZER_FILTER 0
++#define CONFIG_ADYNAMICSMOOTH_FILTER 0
++#define CONFIG_AECHO_FILTER 0
++#define CONFIG_AEMPHASIS_FILTER 0
++#define CONFIG_AEVAL_FILTER 0
++#define CONFIG_AEXCITER_FILTER 0
++#define CONFIG_AFADE_FILTER 0
++#define CONFIG_AFFTDN_FILTER 0
++#define CONFIG_AFFTFILT_FILTER 0
++#define CONFIG_AFIR_FILTER 0
++#define CONFIG_AFORMAT_FILTER 0
++#define CONFIG_AFREQSHIFT_FILTER 0
++#define CONFIG_AFWTDN_FILTER 0
++#define CONFIG_AGATE_FILTER 0
++#define CONFIG_AIIR_FILTER 0
++#define CONFIG_AINTEGRAL_FILTER 0
++#define CONFIG_AINTERLEAVE_FILTER 0
++#define CONFIG_ALATENCY_FILTER 0
++#define CONFIG_ALIMITER_FILTER 0
++#define CONFIG_ALLPASS_FILTER 0
++#define CONFIG_ALOOP_FILTER 0
++#define CONFIG_AMERGE_FILTER 0
++#define CONFIG_AMETADATA_FILTER 0
++#define CONFIG_AMIX_FILTER 0
++#define CONFIG_AMULTIPLY_FILTER 0
++#define CONFIG_ANEQUALIZER_FILTER 0
++#define CONFIG_ANLMDN_FILTER 0
++#define CONFIG_ANLMF_FILTER 0
++#define CONFIG_ANLMS_FILTER 0
++#define CONFIG_ANULL_FILTER 0
++#define CONFIG_APAD_FILTER 0
++#define CONFIG_APERMS_FILTER 0
++#define CONFIG_APHASER_FILTER 0
++#define CONFIG_APHASESHIFT_FILTER 0
++#define CONFIG_APSYCLIP_FILTER 0
++#define CONFIG_APULSATOR_FILTER 0
++#define CONFIG_AREALTIME_FILTER 0
++#define CONFIG_ARESAMPLE_FILTER 0
++#define CONFIG_AREVERSE_FILTER 0
++#define CONFIG_ARNNDN_FILTER 0
++#define CONFIG_ASDR_FILTER 0
++#define CONFIG_ASEGMENT_FILTER 0
++#define CONFIG_ASELECT_FILTER 0
++#define CONFIG_ASENDCMD_FILTER 0
++#define CONFIG_ASETNSAMPLES_FILTER 0
++#define CONFIG_ASETPTS_FILTER 0
++#define CONFIG_ASETRATE_FILTER 0
++#define CONFIG_ASETTB_FILTER 0
++#define CONFIG_ASHOWINFO_FILTER 0
++#define CONFIG_ASIDEDATA_FILTER 0
++#define CONFIG_ASOFTCLIP_FILTER 0
++#define CONFIG_ASPECTRALSTATS_FILTER 0
++#define CONFIG_ASPLIT_FILTER 0
++#define CONFIG_ASR_FILTER 0
++#define CONFIG_ASTATS_FILTER 0
++#define CONFIG_ASTREAMSELECT_FILTER 0
++#define CONFIG_ASUBBOOST_FILTER 0
++#define CONFIG_ASUBCUT_FILTER 0
++#define CONFIG_ASUPERCUT_FILTER 0
++#define CONFIG_ASUPERPASS_FILTER 0
++#define CONFIG_ASUPERSTOP_FILTER 0
++#define CONFIG_ATEMPO_FILTER 0
++#define CONFIG_ATILT_FILTER 0
++#define CONFIG_ATRIM_FILTER 0
++#define CONFIG_AXCORRELATE_FILTER 0
++#define CONFIG_AZMQ_FILTER 0
++#define CONFIG_BANDPASS_FILTER 0
++#define CONFIG_BANDREJECT_FILTER 0
++#define CONFIG_BASS_FILTER 0
++#define CONFIG_BIQUAD_FILTER 0
++#define CONFIG_BS2B_FILTER 0
++#define CONFIG_CHANNELMAP_FILTER 0
++#define CONFIG_CHANNELSPLIT_FILTER 0
++#define CONFIG_CHORUS_FILTER 0
++#define CONFIG_COMPAND_FILTER 0
++#define CONFIG_COMPENSATIONDELAY_FILTER 0
++#define CONFIG_CROSSFEED_FILTER 0
++#define CONFIG_CRYSTALIZER_FILTER 0
++#define CONFIG_DCSHIFT_FILTER 0
++#define CONFIG_DEESSER_FILTER 0
++#define CONFIG_DIALOGUENHANCE_FILTER 0
++#define CONFIG_DRMETER_FILTER 0
++#define CONFIG_DYNAUDNORM_FILTER 0
++#define CONFIG_EARWAX_FILTER 0
++#define CONFIG_EBUR128_FILTER 0
++#define CONFIG_EQUALIZER_FILTER 0
++#define CONFIG_EXTRASTEREO_FILTER 0
++#define CONFIG_FIREQUALIZER_FILTER 0
++#define CONFIG_FLANGER_FILTER 0
++#define CONFIG_HAAS_FILTER 0
++#define CONFIG_HDCD_FILTER 0
++#define CONFIG_HEADPHONE_FILTER 0
++#define CONFIG_HIGHPASS_FILTER 0
++#define CONFIG_HIGHSHELF_FILTER 0
++#define CONFIG_JOIN_FILTER 0
++#define CONFIG_LADSPA_FILTER 0
++#define CONFIG_LOUDNORM_FILTER 0
++#define CONFIG_LOWPASS_FILTER 0
++#define CONFIG_LOWSHELF_FILTER 0
++#define CONFIG_LV2_FILTER 0
++#define CONFIG_MCOMPAND_FILTER 0
++#define CONFIG_PAN_FILTER 0
++#define CONFIG_REPLAYGAIN_FILTER 0
++#define CONFIG_RUBBERBAND_FILTER 0
++#define CONFIG_SIDECHAINCOMPRESS_FILTER 0
++#define CONFIG_SIDECHAINGATE_FILTER 0
++#define CONFIG_SILENCEDETECT_FILTER 0
++#define CONFIG_SILENCEREMOVE_FILTER 0
++#define CONFIG_SOFALIZER_FILTER 0
++#define CONFIG_SPEECHNORM_FILTER 0
++#define CONFIG_STEREOTOOLS_FILTER 0
++#define CONFIG_STEREOWIDEN_FILTER 0
++#define CONFIG_SUPEREQUALIZER_FILTER 0
++#define CONFIG_SURROUND_FILTER 0
++#define CONFIG_TREBLE_FILTER 0
++#define CONFIG_TREMOLO_FILTER 0
++#define CONFIG_VIBRATO_FILTER 0
++#define CONFIG_VOLUME_FILTER 0
++#define CONFIG_VOLUMEDETECT_FILTER 0
++#define CONFIG_AEVALSRC_FILTER 0
++#define CONFIG_AFIRSRC_FILTER 0
++#define CONFIG_ANOISESRC_FILTER 0
++#define CONFIG_ANULLSRC_FILTER 0
++#define CONFIG_FLITE_FILTER 0
++#define CONFIG_HILBERT_FILTER 0
++#define CONFIG_SINC_FILTER 0
++#define CONFIG_SINE_FILTER 0
++#define CONFIG_ANULLSINK_FILTER 0
++#define CONFIG_ADDROI_FILTER 0
++#define CONFIG_ALPHAEXTRACT_FILTER 0
++#define CONFIG_ALPHAMERGE_FILTER 0
++#define CONFIG_AMPLIFY_FILTER 0
++#define CONFIG_ASS_FILTER 0
++#define CONFIG_ATADENOISE_FILTER 0
++#define CONFIG_AVGBLUR_FILTER 0
++#define CONFIG_AVGBLUR_OPENCL_FILTER 0
++#define CONFIG_AVGBLUR_VULKAN_FILTER 0
++#define CONFIG_BBOX_FILTER 0
++#define CONFIG_BENCH_FILTER 0
++#define CONFIG_BILATERAL_FILTER 0
++#define CONFIG_BITPLANENOISE_FILTER 0
++#define CONFIG_BLACKDETECT_FILTER 0
++#define CONFIG_BLACKFRAME_FILTER 0
++#define CONFIG_BLEND_FILTER 0
++#define CONFIG_BLEND_VULKAN_FILTER 0
++#define CONFIG_BM3D_FILTER 0
++#define CONFIG_BOXBLUR_FILTER 0
++#define CONFIG_BOXBLUR_OPENCL_FILTER 0
++#define CONFIG_BWDIF_FILTER 0
++#define CONFIG_CAS_FILTER 0
++#define CONFIG_CHROMABER_VULKAN_FILTER 0
++#define CONFIG_CHROMAHOLD_FILTER 0
++#define CONFIG_CHROMAKEY_FILTER 0
++#define CONFIG_CHROMANR_FILTER 0
++#define CONFIG_CHROMASHIFT_FILTER 0
++#define CONFIG_CIESCOPE_FILTER 0
++#define CONFIG_CODECVIEW_FILTER 0
++#define CONFIG_COLORBALANCE_FILTER 0
++#define CONFIG_COLORCHANNELMIXER_FILTER 0
++#define CONFIG_COLORCONTRAST_FILTER 0
++#define CONFIG_COLORCORRECT_FILTER 0
++#define CONFIG_COLORIZE_FILTER 0
++#define CONFIG_COLORKEY_FILTER 0
++#define CONFIG_COLORKEY_OPENCL_FILTER 0
++#define CONFIG_COLORHOLD_FILTER 0
++#define CONFIG_COLORLEVELS_FILTER 0
++#define CONFIG_COLORMATRIX_FILTER 0
++#define CONFIG_COLORSPACE_FILTER 0
++#define CONFIG_COLORTEMPERATURE_FILTER 0
++#define CONFIG_CONVOLUTION_FILTER 0
++#define CONFIG_CONVOLUTION_OPENCL_FILTER 0
++#define CONFIG_CONVOLVE_FILTER 0
++#define CONFIG_COPY_FILTER 0
++#define CONFIG_COREIMAGE_FILTER 0
++#define CONFIG_COVER_RECT_FILTER 0
++#define CONFIG_CROP_FILTER 0
++#define CONFIG_CROPDETECT_FILTER 0
++#define CONFIG_CUE_FILTER 0
++#define CONFIG_CURVES_FILTER 0
++#define CONFIG_DATASCOPE_FILTER 0
++#define CONFIG_DBLUR_FILTER 0
++#define CONFIG_DCTDNOIZ_FILTER 0
++#define CONFIG_DEBAND_FILTER 0
++#define CONFIG_DEBLOCK_FILTER 0
++#define CONFIG_DECIMATE_FILTER 0
++#define CONFIG_DECONVOLVE_FILTER 0
++#define CONFIG_DEDOT_FILTER 0
++#define CONFIG_DEFLATE_FILTER 0
++#define CONFIG_DEFLICKER_FILTER 0
++#define CONFIG_DEINTERLACE_QSV_FILTER 0
++#define CONFIG_DEINTERLACE_VAAPI_FILTER 0
++#define CONFIG_DEJUDDER_FILTER 0
++#define CONFIG_DELOGO_FILTER 0
++#define CONFIG_DENOISE_VAAPI_FILTER 0
++#define CONFIG_DERAIN_FILTER 0
++#define CONFIG_DESHAKE_FILTER 0
++#define CONFIG_DESHAKE_OPENCL_FILTER 0
++#define CONFIG_DESPILL_FILTER 0
++#define CONFIG_DETELECINE_FILTER 0
++#define CONFIG_DILATION_FILTER 0
++#define CONFIG_DILATION_OPENCL_FILTER 0
++#define CONFIG_DISPLACE_FILTER 0
++#define CONFIG_DNN_CLASSIFY_FILTER 0
++#define CONFIG_DNN_DETECT_FILTER 0
++#define CONFIG_DNN_PROCESSING_FILTER 0
++#define CONFIG_DOUBLEWEAVE_FILTER 0
++#define CONFIG_DRAWBOX_FILTER 0
++#define CONFIG_DRAWGRAPH_FILTER 0
++#define CONFIG_DRAWGRID_FILTER 0
++#define CONFIG_DRAWTEXT_FILTER 0
++#define CONFIG_EDGEDETECT_FILTER 0
++#define CONFIG_ELBG_FILTER 0
++#define CONFIG_ENTROPY_FILTER 0
++#define CONFIG_EPX_FILTER 0
++#define CONFIG_EQ_FILTER 0
++#define CONFIG_EROSION_FILTER 0
++#define CONFIG_EROSION_OPENCL_FILTER 0
++#define CONFIG_ESTDIF_FILTER 0
++#define CONFIG_EXPOSURE_FILTER 0
++#define CONFIG_EXTRACTPLANES_FILTER 0
++#define CONFIG_FADE_FILTER 0
++#define CONFIG_FFTDNOIZ_FILTER 0
++#define CONFIG_FFTFILT_FILTER 0
++#define CONFIG_FIELD_FILTER 0
++#define CONFIG_FIELDHINT_FILTER 0
++#define CONFIG_FIELDMATCH_FILTER 0
++#define CONFIG_FIELDORDER_FILTER 0
++#define CONFIG_FILLBORDERS_FILTER 0
++#define CONFIG_FIND_RECT_FILTER 0
++#define CONFIG_FLIP_VULKAN_FILTER 0
++#define CONFIG_FLOODFILL_FILTER 0
++#define CONFIG_FORMAT_FILTER 0
++#define CONFIG_FPS_FILTER 0
++#define CONFIG_FRAMEPACK_FILTER 0
++#define CONFIG_FRAMERATE_FILTER 0
++#define CONFIG_FRAMESTEP_FILTER 0
++#define CONFIG_FREEZEDETECT_FILTER 0
++#define CONFIG_FREEZEFRAMES_FILTER 0
++#define CONFIG_FREI0R_FILTER 0
++#define CONFIG_FSPP_FILTER 0
++#define CONFIG_GBLUR_FILTER 0
++#define CONFIG_GBLUR_VULKAN_FILTER 0
++#define CONFIG_GEQ_FILTER 0
++#define CONFIG_GRADFUN_FILTER 0
++#define CONFIG_GRAPHMONITOR_FILTER 0
++#define CONFIG_GRAYWORLD_FILTER 0
++#define CONFIG_GREYEDGE_FILTER 0
++#define CONFIG_GUIDED_FILTER 0
++#define CONFIG_HALDCLUT_FILTER 0
++#define CONFIG_HFLIP_FILTER 0
++#define CONFIG_HFLIP_VULKAN_FILTER 0
++#define CONFIG_HISTEQ_FILTER 0
++#define CONFIG_HISTOGRAM_FILTER 0
++#define CONFIG_HQDN3D_FILTER 0
++#define CONFIG_HQX_FILTER 0
++#define CONFIG_HSTACK_FILTER 0
++#define CONFIG_HSVHOLD_FILTER 0
++#define CONFIG_HSVKEY_FILTER 0
++#define CONFIG_HUE_FILTER 0
++#define CONFIG_HUESATURATION_FILTER 0
++#define CONFIG_HWDOWNLOAD_FILTER 0
++#define CONFIG_HWMAP_FILTER 0
++#define CONFIG_HWUPLOAD_FILTER 0
++#define CONFIG_HWUPLOAD_CUDA_FILTER 0
++#define CONFIG_HYSTERESIS_FILTER 0
++#define CONFIG_IDENTITY_FILTER 0
++#define CONFIG_IDET_FILTER 0
++#define CONFIG_IL_FILTER 0
++#define CONFIG_INFLATE_FILTER 0
++#define CONFIG_INTERLACE_FILTER 0
++#define CONFIG_INTERLEAVE_FILTER 0
++#define CONFIG_KERNDEINT_FILTER 0
++#define CONFIG_KIRSCH_FILTER 0
++#define CONFIG_LAGFUN_FILTER 0
++#define CONFIG_LATENCY_FILTER 0
++#define CONFIG_LENSCORRECTION_FILTER 0
++#define CONFIG_LENSFUN_FILTER 0
++#define CONFIG_LIBPLACEBO_FILTER 0
++#define CONFIG_LIBVMAF_FILTER 0
++#define CONFIG_LIMITDIFF_FILTER 0
++#define CONFIG_LIMITER_FILTER 0
++#define CONFIG_LOOP_FILTER 0
++#define CONFIG_LUMAKEY_FILTER 0
++#define CONFIG_LUT_FILTER 0
++#define CONFIG_LUT1D_FILTER 0
++#define CONFIG_LUT2_FILTER 0
++#define CONFIG_LUT3D_FILTER 0
++#define CONFIG_LUTRGB_FILTER 0
++#define CONFIG_LUTYUV_FILTER 0
++#define CONFIG_MASKEDCLAMP_FILTER 0
++#define CONFIG_MASKEDMAX_FILTER 0
++#define CONFIG_MASKEDMERGE_FILTER 0
++#define CONFIG_MASKEDMIN_FILTER 0
++#define CONFIG_MASKEDTHRESHOLD_FILTER 0
++#define CONFIG_MASKFUN_FILTER 0
++#define CONFIG_MCDEINT_FILTER 0
++#define CONFIG_MEDIAN_FILTER 0
++#define CONFIG_MERGEPLANES_FILTER 0
++#define CONFIG_MESTIMATE_FILTER 0
++#define CONFIG_METADATA_FILTER 0
++#define CONFIG_MIDEQUALIZER_FILTER 0
++#define CONFIG_MINTERPOLATE_FILTER 0
++#define CONFIG_MIX_FILTER 0
++#define CONFIG_MONOCHROME_FILTER 0
++#define CONFIG_MORPHO_FILTER 0
++#define CONFIG_MPDECIMATE_FILTER 0
++#define CONFIG_MSAD_FILTER 0
++#define CONFIG_NEGATE_FILTER 0
++#define CONFIG_NLMEANS_FILTER 0
++#define CONFIG_NLMEANS_OPENCL_FILTER 0
++#define CONFIG_NNEDI_FILTER 0
++#define CONFIG_NOFORMAT_FILTER 0
++#define CONFIG_NOISE_FILTER 0
++#define CONFIG_NORMALIZE_FILTER 0
++#define CONFIG_NULL_FILTER 0
++#define CONFIG_OCR_FILTER 0
++#define CONFIG_OCV_FILTER 0
++#define CONFIG_OSCILLOSCOPE_FILTER 0
++#define CONFIG_OVERLAY_FILTER 0
++#define CONFIG_OVERLAY_OPENCL_FILTER 0
++#define CONFIG_OVERLAY_QSV_FILTER 0
++#define CONFIG_OVERLAY_VAAPI_FILTER 0
++#define CONFIG_OVERLAY_VULKAN_FILTER 0
++#define CONFIG_OVERLAY_CUDA_FILTER 0
++#define CONFIG_OWDENOISE_FILTER 0
++#define CONFIG_PAD_FILTER 0
++#define CONFIG_PAD_OPENCL_FILTER 0
++#define CONFIG_PALETTEGEN_FILTER 0
++#define CONFIG_PALETTEUSE_FILTER 0
++#define CONFIG_PERMS_FILTER 0
++#define CONFIG_PERSPECTIVE_FILTER 0
++#define CONFIG_PHASE_FILTER 0
++#define CONFIG_PHOTOSENSITIVITY_FILTER 0
++#define CONFIG_PIXDESCTEST_FILTER 0
++#define CONFIG_PIXSCOPE_FILTER 0
++#define CONFIG_PP_FILTER 0
++#define CONFIG_PP7_FILTER 0
++#define CONFIG_PREMULTIPLY_FILTER 0
++#define CONFIG_PREWITT_FILTER 0
++#define CONFIG_PREWITT_OPENCL_FILTER 0
++#define CONFIG_PROCAMP_VAAPI_FILTER 0
++#define CONFIG_PROGRAM_OPENCL_FILTER 0
++#define CONFIG_PSEUDOCOLOR_FILTER 0
++#define CONFIG_PSNR_FILTER 0
++#define CONFIG_PULLUP_FILTER 0
++#define CONFIG_QP_FILTER 0
++#define CONFIG_RANDOM_FILTER 0
++#define CONFIG_READEIA608_FILTER 0
++#define CONFIG_READVITC_FILTER 0
++#define CONFIG_REALTIME_FILTER 0
++#define CONFIG_REMAP_FILTER 0
++#define CONFIG_REMOVEGRAIN_FILTER 0
++#define CONFIG_REMOVELOGO_FILTER 0
++#define CONFIG_REPEATFIELDS_FILTER 0
++#define CONFIG_REVERSE_FILTER 0
++#define CONFIG_RGBASHIFT_FILTER 0
++#define CONFIG_ROBERTS_FILTER 0
++#define CONFIG_ROBERTS_OPENCL_FILTER 0
++#define CONFIG_ROTATE_FILTER 0
++#define CONFIG_SAB_FILTER 0
++#define CONFIG_SCALE_FILTER 0
++#define CONFIG_SCALE_CUDA_FILTER 0
++#define CONFIG_SCALE_NPP_FILTER 0
++#define CONFIG_SCALE_QSV_FILTER 0
++#define CONFIG_SCALE_VAAPI_FILTER 0
++#define CONFIG_SCALE_VULKAN_FILTER 0
++#define CONFIG_SCALE2REF_FILTER 0
++#define CONFIG_SCALE2REF_NPP_FILTER 0
++#define CONFIG_SCDET_FILTER 0
++#define CONFIG_SCHARR_FILTER 0
++#define CONFIG_SCROLL_FILTER 0
++#define CONFIG_SEGMENT_FILTER 0
++#define CONFIG_SELECT_FILTER 0
++#define CONFIG_SELECTIVECOLOR_FILTER 0
++#define CONFIG_SENDCMD_FILTER 0
++#define CONFIG_SEPARATEFIELDS_FILTER 0
++#define CONFIG_SETDAR_FILTER 0
++#define CONFIG_SETFIELD_FILTER 0
++#define CONFIG_SETPARAMS_FILTER 0
++#define CONFIG_SETPTS_FILTER 0
++#define CONFIG_SETRANGE_FILTER 0
++#define CONFIG_SETSAR_FILTER 0
++#define CONFIG_SETTB_FILTER 0
++#define CONFIG_SHARPEN_NPP_FILTER 0
++#define CONFIG_SHARPNESS_VAAPI_FILTER 0
++#define CONFIG_SHEAR_FILTER 0
++#define CONFIG_SHOWINFO_FILTER 0
++#define CONFIG_SHOWPALETTE_FILTER 0
++#define CONFIG_SHUFFLEFRAMES_FILTER 0
++#define CONFIG_SHUFFLEPIXELS_FILTER 0
++#define CONFIG_SHUFFLEPLANES_FILTER 0
++#define CONFIG_SIDEDATA_FILTER 0
++#define CONFIG_SIGNALSTATS_FILTER 0
++#define CONFIG_SIGNATURE_FILTER 0
++#define CONFIG_SMARTBLUR_FILTER 0
++#define CONFIG_SOBEL_FILTER 0
++#define CONFIG_SOBEL_OPENCL_FILTER 0
++#define CONFIG_SPLIT_FILTER 0
++#define CONFIG_SPP_FILTER 0
++#define CONFIG_SR_FILTER 0
++#define CONFIG_SSIM_FILTER 0
++#define CONFIG_STEREO3D_FILTER 0
++#define CONFIG_STREAMSELECT_FILTER 0
++#define CONFIG_SUBTITLES_FILTER 0
++#define CONFIG_SUPER2XSAI_FILTER 0
++#define CONFIG_SWAPRECT_FILTER 0
++#define CONFIG_SWAPUV_FILTER 0
++#define CONFIG_TBLEND_FILTER 0
++#define CONFIG_TELECINE_FILTER 0
++#define CONFIG_THISTOGRAM_FILTER 0
++#define CONFIG_THRESHOLD_FILTER 0
++#define CONFIG_THUMBNAIL_FILTER 0
++#define CONFIG_THUMBNAIL_CUDA_FILTER 0
++#define CONFIG_TILE_FILTER 0
++#define CONFIG_TINTERLACE_FILTER 0
++#define CONFIG_TLUT2_FILTER 0
++#define CONFIG_TMEDIAN_FILTER 0
++#define CONFIG_TMIDEQUALIZER_FILTER 0
++#define CONFIG_TMIX_FILTER 0
++#define CONFIG_TONEMAP_FILTER 0
++#define CONFIG_TONEMAP_OPENCL_FILTER 0
++#define CONFIG_TONEMAP_VAAPI_FILTER 0
++#define CONFIG_TPAD_FILTER 0
++#define CONFIG_TRANSPOSE_FILTER 0
++#define CONFIG_TRANSPOSE_NPP_FILTER 0
++#define CONFIG_TRANSPOSE_OPENCL_FILTER 0
++#define CONFIG_TRANSPOSE_VAAPI_FILTER 0
++#define CONFIG_TRANSPOSE_VULKAN_FILTER 0
++#define CONFIG_TRIM_FILTER 0
++#define CONFIG_UNPREMULTIPLY_FILTER 0
++#define CONFIG_UNSHARP_FILTER 0
++#define CONFIG_UNSHARP_OPENCL_FILTER 0
++#define CONFIG_UNTILE_FILTER 0
++#define CONFIG_USPP_FILTER 0
++#define CONFIG_V360_FILTER 0
++#define CONFIG_VAGUEDENOISER_FILTER 0
++#define CONFIG_VARBLUR_FILTER 0
++#define CONFIG_VECTORSCOPE_FILTER 0
++#define CONFIG_VFLIP_FILTER 0
++#define CONFIG_VFLIP_VULKAN_FILTER 0
++#define CONFIG_VFRDET_FILTER 0
++#define CONFIG_VIBRANCE_FILTER 0
++#define CONFIG_VIDSTABDETECT_FILTER 0
++#define CONFIG_VIDSTABTRANSFORM_FILTER 0
++#define CONFIG_VIF_FILTER 0
++#define CONFIG_VIGNETTE_FILTER 0
++#define CONFIG_VMAFMOTION_FILTER 0
++#define CONFIG_VPP_QSV_FILTER 0
++#define CONFIG_VSTACK_FILTER 0
++#define CONFIG_W3FDIF_FILTER 0
++#define CONFIG_WAVEFORM_FILTER 0
++#define CONFIG_WEAVE_FILTER 0
++#define CONFIG_XBR_FILTER 0
++#define CONFIG_XCORRELATE_FILTER 0
++#define CONFIG_XFADE_FILTER 0
++#define CONFIG_XFADE_OPENCL_FILTER 0
++#define CONFIG_XMEDIAN_FILTER 0
++#define CONFIG_XSTACK_FILTER 0
++#define CONFIG_YADIF_FILTER 0
++#define CONFIG_YADIF_CUDA_FILTER 0
++#define CONFIG_YADIF_VIDEOTOOLBOX_FILTER 0
++#define CONFIG_YAEPBLUR_FILTER 0
++#define CONFIG_ZMQ_FILTER 0
++#define CONFIG_ZOOMPAN_FILTER 0
++#define CONFIG_ZSCALE_FILTER 0
++#define CONFIG_ALLRGB_FILTER 0
++#define CONFIG_ALLYUV_FILTER 0
++#define CONFIG_CELLAUTO_FILTER 0
++#define CONFIG_COLOR_FILTER 0
++#define CONFIG_COLORSPECTRUM_FILTER 0
++#define CONFIG_COREIMAGESRC_FILTER 0
++#define CONFIG_FREI0R_SRC_FILTER 0
++#define CONFIG_GRADIENTS_FILTER 0
++#define CONFIG_HALDCLUTSRC_FILTER 0
++#define CONFIG_LIFE_FILTER 0
++#define CONFIG_MANDELBROT_FILTER 0
++#define CONFIG_MPTESTSRC_FILTER 0
++#define CONFIG_NULLSRC_FILTER 0
++#define CONFIG_OPENCLSRC_FILTER 0
++#define CONFIG_PAL75BARS_FILTER 0
++#define CONFIG_PAL100BARS_FILTER 0
++#define CONFIG_RGBTESTSRC_FILTER 0
++#define CONFIG_SIERPINSKI_FILTER 0
++#define CONFIG_SMPTEBARS_FILTER 0
++#define CONFIG_SMPTEHDBARS_FILTER 0
++#define CONFIG_TESTSRC_FILTER 0
++#define CONFIG_TESTSRC2_FILTER 0
++#define CONFIG_YUVTESTSRC_FILTER 0
++#define CONFIG_NULLSINK_FILTER 0
++#define CONFIG_ABITSCOPE_FILTER 0
++#define CONFIG_ADRAWGRAPH_FILTER 0
++#define CONFIG_AGRAPHMONITOR_FILTER 0
++#define CONFIG_AHISTOGRAM_FILTER 0
++#define CONFIG_APHASEMETER_FILTER 0
++#define CONFIG_AVECTORSCOPE_FILTER 0
++#define CONFIG_CONCAT_FILTER 0
++#define CONFIG_SHOWCQT_FILTER 0
++#define CONFIG_SHOWFREQS_FILTER 0
++#define CONFIG_SHOWSPATIAL_FILTER 0
++#define CONFIG_SHOWSPECTRUM_FILTER 0
++#define CONFIG_SHOWSPECTRUMPIC_FILTER 0
++#define CONFIG_SHOWVOLUME_FILTER 0
++#define CONFIG_SHOWWAVES_FILTER 0
++#define CONFIG_SHOWWAVESPIC_FILTER 0
++#define CONFIG_SPECTRUMSYNTH_FILTER 0
++#define CONFIG_AMOVIE_FILTER 0
++#define CONFIG_MOVIE_FILTER 0
++#define CONFIG_AFIFO_FILTER 0
++#define CONFIG_FIFO_FILTER 0
++#define CONFIG_AA_DEMUXER 0
++#define CONFIG_AAC_DEMUXER 1
++#define CONFIG_AAX_DEMUXER 0
++#define CONFIG_AC3_DEMUXER 0
++#define CONFIG_ACE_DEMUXER 0
++#define CONFIG_ACM_DEMUXER 0
++#define CONFIG_ACT_DEMUXER 0
++#define CONFIG_ADF_DEMUXER 0
++#define CONFIG_ADP_DEMUXER 0
++#define CONFIG_ADS_DEMUXER 0
++#define CONFIG_ADX_DEMUXER 0
++#define CONFIG_AEA_DEMUXER 0
++#define CONFIG_AFC_DEMUXER 0
++#define CONFIG_AIFF_DEMUXER 0
++#define CONFIG_AIX_DEMUXER 0
++#define CONFIG_ALP_DEMUXER 0
++#define CONFIG_AMR_DEMUXER 0
++#define CONFIG_AMRNB_DEMUXER 0
++#define CONFIG_AMRWB_DEMUXER 0
++#define CONFIG_ANM_DEMUXER 0
++#define CONFIG_APC_DEMUXER 0
++#define CONFIG_APE_DEMUXER 0
++#define CONFIG_APM_DEMUXER 0
++#define CONFIG_APNG_DEMUXER 0
++#define CONFIG_APTX_DEMUXER 0
++#define CONFIG_APTX_HD_DEMUXER 0
++#define CONFIG_AQTITLE_DEMUXER 0
++#define CONFIG_ARGO_ASF_DEMUXER 0
++#define CONFIG_ARGO_BRP_DEMUXER 0
++#define CONFIG_ARGO_CVG_DEMUXER 0
++#define CONFIG_ASF_DEMUXER 0
++#define CONFIG_ASF_O_DEMUXER 0
++#define CONFIG_ASS_DEMUXER 0
++#define CONFIG_AST_DEMUXER 0
++#define CONFIG_AU_DEMUXER 0
++#define CONFIG_AV1_DEMUXER 0
++#define CONFIG_AVI_DEMUXER 0
++#define CONFIG_AVISYNTH_DEMUXER 0
++#define CONFIG_AVR_DEMUXER 0
++#define CONFIG_AVS_DEMUXER 0
++#define CONFIG_AVS2_DEMUXER 0
++#define CONFIG_AVS3_DEMUXER 0
++#define CONFIG_BETHSOFTVID_DEMUXER 0
++#define CONFIG_BFI_DEMUXER 0
++#define CONFIG_BINTEXT_DEMUXER 0
++#define CONFIG_BINK_DEMUXER 0
++#define CONFIG_BINKA_DEMUXER 0
++#define CONFIG_BIT_DEMUXER 0
++#define CONFIG_BITPACKED_DEMUXER 0
++#define CONFIG_BMV_DEMUXER 0
++#define CONFIG_BFSTM_DEMUXER 0
++#define CONFIG_BRSTM_DEMUXER 0
++#define CONFIG_BOA_DEMUXER 0
++#define CONFIG_C93_DEMUXER 0
++#define CONFIG_CAF_DEMUXER 0
++#define CONFIG_CAVSVIDEO_DEMUXER 0
++#define CONFIG_CDG_DEMUXER 0
++#define CONFIG_CDXL_DEMUXER 0
++#define CONFIG_CINE_DEMUXER 0
++#define CONFIG_CODEC2_DEMUXER 0
++#define CONFIG_CODEC2RAW_DEMUXER 0
++#define CONFIG_CONCAT_DEMUXER 0
++#define CONFIG_DASH_DEMUXER 0
++#define CONFIG_DATA_DEMUXER 0
++#define CONFIG_DAUD_DEMUXER 0
++#define CONFIG_DCSTR_DEMUXER 0
++#define CONFIG_DERF_DEMUXER 0
++#define CONFIG_DFA_DEMUXER 0
++#define CONFIG_DFPWM_DEMUXER 0
++#define CONFIG_DHAV_DEMUXER 0
++#define CONFIG_DIRAC_DEMUXER 0
++#define CONFIG_DNXHD_DEMUXER 0
++#define CONFIG_DSF_DEMUXER 0
++#define CONFIG_DSICIN_DEMUXER 0
++#define CONFIG_DSS_DEMUXER 0
++#define CONFIG_DTS_DEMUXER 0
++#define CONFIG_DTSHD_DEMUXER 0
++#define CONFIG_DV_DEMUXER 0
++#define CONFIG_DVBSUB_DEMUXER 0
++#define CONFIG_DVBTXT_DEMUXER 0
++#define CONFIG_DXA_DEMUXER 0
++#define CONFIG_EA_DEMUXER 0
++#define CONFIG_EA_CDATA_DEMUXER 0
++#define CONFIG_EAC3_DEMUXER 0
++#define CONFIG_EPAF_DEMUXER 0
++#define CONFIG_FFMETADATA_DEMUXER 0
++#define CONFIG_FILMSTRIP_DEMUXER 0
++#define CONFIG_FITS_DEMUXER 0
++#define CONFIG_FLAC_DEMUXER 1
++#define CONFIG_FLIC_DEMUXER 0
++#define CONFIG_FLV_DEMUXER 0
++#define CONFIG_LIVE_FLV_DEMUXER 0
++#define CONFIG_FOURXM_DEMUXER 0
++#define CONFIG_FRM_DEMUXER 0
++#define CONFIG_FSB_DEMUXER 0
++#define CONFIG_FWSE_DEMUXER 0
++#define CONFIG_G722_DEMUXER 0
++#define CONFIG_G723_1_DEMUXER 0
++#define CONFIG_G726_DEMUXER 0
++#define CONFIG_G726LE_DEMUXER 0
++#define CONFIG_G729_DEMUXER 0
++#define CONFIG_GDV_DEMUXER 0
++#define CONFIG_GENH_DEMUXER 0
++#define CONFIG_GIF_DEMUXER 0
++#define CONFIG_GSM_DEMUXER 0
++#define CONFIG_GXF_DEMUXER 0
++#define CONFIG_H261_DEMUXER 0
++#define CONFIG_H263_DEMUXER 0
++#define CONFIG_H264_DEMUXER 0
++#define CONFIG_HCA_DEMUXER 0
++#define CONFIG_HCOM_DEMUXER 0
++#define CONFIG_HEVC_DEMUXER 0
++#define CONFIG_HLS_DEMUXER 0
++#define CONFIG_HNM_DEMUXER 0
++#define CONFIG_ICO_DEMUXER 0
++#define CONFIG_IDCIN_DEMUXER 0
++#define CONFIG_IDF_DEMUXER 0
++#define CONFIG_IFF_DEMUXER 0
++#define CONFIG_IFV_DEMUXER 0
++#define CONFIG_ILBC_DEMUXER 0
++#define CONFIG_IMAGE2_DEMUXER 0
++#define CONFIG_IMAGE2PIPE_DEMUXER 0
++#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
++#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
++#define CONFIG_IMF_DEMUXER 0
++#define CONFIG_INGENIENT_DEMUXER 0
++#define CONFIG_IPMOVIE_DEMUXER 0
++#define CONFIG_IPU_DEMUXER 0
++#define CONFIG_IRCAM_DEMUXER 0
++#define CONFIG_ISS_DEMUXER 0
++#define CONFIG_IV8_DEMUXER 0
++#define CONFIG_IVF_DEMUXER 0
++#define CONFIG_IVR_DEMUXER 0
++#define CONFIG_JACOSUB_DEMUXER 0
++#define CONFIG_JV_DEMUXER 0
++#define CONFIG_KUX_DEMUXER 0
++#define CONFIG_KVAG_DEMUXER 0
++#define CONFIG_LMLM4_DEMUXER 0
++#define CONFIG_LOAS_DEMUXER 0
++#define CONFIG_LUODAT_DEMUXER 0
++#define CONFIG_LRC_DEMUXER 0
++#define CONFIG_LVF_DEMUXER 0
++#define CONFIG_LXF_DEMUXER 0
++#define CONFIG_M4V_DEMUXER 0
++#define CONFIG_MCA_DEMUXER 0
++#define CONFIG_MCC_DEMUXER 0
++#define CONFIG_MATROSKA_DEMUXER 1
++#define CONFIG_MGSTS_DEMUXER 0
++#define CONFIG_MICRODVD_DEMUXER 0
++#define CONFIG_MJPEG_DEMUXER 0
++#define CONFIG_MJPEG_2000_DEMUXER 0
++#define CONFIG_MLP_DEMUXER 0
++#define CONFIG_MLV_DEMUXER 0
++#define CONFIG_MM_DEMUXER 0
++#define CONFIG_MMF_DEMUXER 0
++#define CONFIG_MODS_DEMUXER 0
++#define CONFIG_MOFLEX_DEMUXER 0
++#define CONFIG_MOV_DEMUXER 1
++#define CONFIG_MP3_DEMUXER 1
++#define CONFIG_MPC_DEMUXER 0
++#define CONFIG_MPC8_DEMUXER 0
++#define CONFIG_MPEGPS_DEMUXER 0
++#define CONFIG_MPEGTS_DEMUXER 0
++#define CONFIG_MPEGTSRAW_DEMUXER 0
++#define CONFIG_MPEGVIDEO_DEMUXER 0
++#define CONFIG_MPJPEG_DEMUXER 0
++#define CONFIG_MPL2_DEMUXER 0
++#define CONFIG_MPSUB_DEMUXER 0
++#define CONFIG_MSF_DEMUXER 0
++#define CONFIG_MSNWC_TCP_DEMUXER 0
++#define CONFIG_MSP_DEMUXER 0
++#define CONFIG_MTAF_DEMUXER 0
++#define CONFIG_MTV_DEMUXER 0
++#define CONFIG_MUSX_DEMUXER 0
++#define CONFIG_MV_DEMUXER 0
++#define CONFIG_MVI_DEMUXER 0
++#define CONFIG_MXF_DEMUXER 0
++#define CONFIG_MXG_DEMUXER 0
++#define CONFIG_NC_DEMUXER 0
++#define CONFIG_NISTSPHERE_DEMUXER 0
++#define CONFIG_NSP_DEMUXER 0
++#define CONFIG_NSV_DEMUXER 0
++#define CONFIG_NUT_DEMUXER 0
++#define CONFIG_NUV_DEMUXER 0
++#define CONFIG_OBU_DEMUXER 0
++#define CONFIG_OGG_DEMUXER 1
++#define CONFIG_OMA_DEMUXER 0
++#define CONFIG_PAF_DEMUXER 0
++#define CONFIG_PCM_ALAW_DEMUXER 0
++#define CONFIG_PCM_MULAW_DEMUXER 0
++#define CONFIG_PCM_VIDC_DEMUXER 0
++#define CONFIG_PCM_F64BE_DEMUXER 0
++#define CONFIG_PCM_F64LE_DEMUXER 0
++#define CONFIG_PCM_F32BE_DEMUXER 0
++#define CONFIG_PCM_F32LE_DEMUXER 0
++#define CONFIG_PCM_S32BE_DEMUXER 0
++#define CONFIG_PCM_S32LE_DEMUXER 0
++#define CONFIG_PCM_S24BE_DEMUXER 0
++#define CONFIG_PCM_S24LE_DEMUXER 0
++#define CONFIG_PCM_S16BE_DEMUXER 0
++#define CONFIG_PCM_S16LE_DEMUXER 0
++#define CONFIG_PCM_S8_DEMUXER 0
++#define CONFIG_PCM_U32BE_DEMUXER 0
++#define CONFIG_PCM_U32LE_DEMUXER 0
++#define CONFIG_PCM_U24BE_DEMUXER 0
++#define CONFIG_PCM_U24LE_DEMUXER 0
++#define CONFIG_PCM_U16BE_DEMUXER 0
++#define CONFIG_PCM_U16LE_DEMUXER 0
++#define CONFIG_PCM_U8_DEMUXER 0
++#define CONFIG_PJS_DEMUXER 0
++#define CONFIG_PMP_DEMUXER 0
++#define CONFIG_PP_BNK_DEMUXER 0
++#define CONFIG_PVA_DEMUXER 0
++#define CONFIG_PVF_DEMUXER 0
++#define CONFIG_QCP_DEMUXER 0
++#define CONFIG_R3D_DEMUXER 0
++#define CONFIG_RAWVIDEO_DEMUXER 0
++#define CONFIG_REALTEXT_DEMUXER 0
++#define CONFIG_REDSPARK_DEMUXER 0
++#define CONFIG_RL2_DEMUXER 0
++#define CONFIG_RM_DEMUXER 0
++#define CONFIG_ROQ_DEMUXER 0
++#define CONFIG_RPL_DEMUXER 0
++#define CONFIG_RSD_DEMUXER 0
++#define CONFIG_RSO_DEMUXER 0
++#define CONFIG_RTP_DEMUXER 0
++#define CONFIG_RTSP_DEMUXER 0
++#define CONFIG_S337M_DEMUXER 0
++#define CONFIG_SAMI_DEMUXER 0
++#define CONFIG_SAP_DEMUXER 0
++#define CONFIG_SBC_DEMUXER 0
++#define CONFIG_SBG_DEMUXER 0
++#define CONFIG_SCC_DEMUXER 0
++#define CONFIG_SCD_DEMUXER 0
++#define CONFIG_SDP_DEMUXER 0
++#define CONFIG_SDR2_DEMUXER 0
++#define CONFIG_SDS_DEMUXER 0
++#define CONFIG_SDX_DEMUXER 0
++#define CONFIG_SEGAFILM_DEMUXER 0
++#define CONFIG_SER_DEMUXER 0
++#define CONFIG_SGA_DEMUXER 0
++#define CONFIG_SHORTEN_DEMUXER 0
++#define CONFIG_SIFF_DEMUXER 0
++#define CONFIG_SIMBIOSIS_IMX_DEMUXER 0
++#define CONFIG_SLN_DEMUXER 0
++#define CONFIG_SMACKER_DEMUXER 0
++#define CONFIG_SMJPEG_DEMUXER 0
++#define CONFIG_SMUSH_DEMUXER 0
++#define CONFIG_SOL_DEMUXER 0
++#define CONFIG_SOX_DEMUXER 0
++#define CONFIG_SPDIF_DEMUXER 0
++#define CONFIG_SRT_DEMUXER 0
++#define CONFIG_STR_DEMUXER 0
++#define CONFIG_STL_DEMUXER 0
++#define CONFIG_SUBVIEWER1_DEMUXER 0
++#define CONFIG_SUBVIEWER_DEMUXER 0
++#define CONFIG_SUP_DEMUXER 0
++#define CONFIG_SVAG_DEMUXER 0
++#define CONFIG_SVS_DEMUXER 0
++#define CONFIG_SWF_DEMUXER 0
++#define CONFIG_TAK_DEMUXER 0
++#define CONFIG_TEDCAPTIONS_DEMUXER 0
++#define CONFIG_THP_DEMUXER 0
++#define CONFIG_THREEDOSTR_DEMUXER 0
++#define CONFIG_TIERTEXSEQ_DEMUXER 0
++#define CONFIG_TMV_DEMUXER 0
++#define CONFIG_TRUEHD_DEMUXER 0
++#define CONFIG_TTA_DEMUXER 0
++#define CONFIG_TXD_DEMUXER 0
++#define CONFIG_TTY_DEMUXER 0
++#define CONFIG_TY_DEMUXER 0
++#define CONFIG_V210_DEMUXER 0
++#define CONFIG_V210X_DEMUXER 0
++#define CONFIG_VAG_DEMUXER 0
++#define CONFIG_VC1_DEMUXER 0
++#define CONFIG_VC1T_DEMUXER 0
++#define CONFIG_VIVIDAS_DEMUXER 0
++#define CONFIG_VIVO_DEMUXER 0
++#define CONFIG_VMD_DEMUXER 0
++#define CONFIG_VOBSUB_DEMUXER 0
++#define CONFIG_VOC_DEMUXER 0
++#define CONFIG_VPK_DEMUXER 0
++#define CONFIG_VPLAYER_DEMUXER 0
++#define CONFIG_VQF_DEMUXER 0
++#define CONFIG_W64_DEMUXER 0
++#define CONFIG_WAV_DEMUXER 1
++#define CONFIG_WC3_DEMUXER 0
++#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
++#define CONFIG_WEBVTT_DEMUXER 0
++#define CONFIG_WSAUD_DEMUXER 0
++#define CONFIG_WSD_DEMUXER 0
++#define CONFIG_WSVQA_DEMUXER 0
++#define CONFIG_WTV_DEMUXER 0
++#define CONFIG_WVE_DEMUXER 0
++#define CONFIG_WV_DEMUXER 0
++#define CONFIG_XA_DEMUXER 0
++#define CONFIG_XBIN_DEMUXER 0
++#define CONFIG_XMV_DEMUXER 0
++#define CONFIG_XVAG_DEMUXER 0
++#define CONFIG_XWMA_DEMUXER 0
++#define CONFIG_YOP_DEMUXER 0
++#define CONFIG_YUV4MPEGPIPE_DEMUXER 0
++#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_CRI_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_GEM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XBM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
++#define CONFIG_LIBGME_DEMUXER 0
++#define CONFIG_LIBMODPLUG_DEMUXER 0
++#define CONFIG_LIBOPENMPT_DEMUXER 0
++#define CONFIG_VAPOURSYNTH_DEMUXER 0
++#define CONFIG_A64_MUXER 0
++#define CONFIG_AC3_MUXER 0
++#define CONFIG_ADTS_MUXER 0
++#define CONFIG_ADX_MUXER 0
++#define CONFIG_AIFF_MUXER 0
++#define CONFIG_ALP_MUXER 0
++#define CONFIG_AMR_MUXER 0
++#define CONFIG_AMV_MUXER 0
++#define CONFIG_APM_MUXER 0
++#define CONFIG_APNG_MUXER 0
++#define CONFIG_APTX_MUXER 0
++#define CONFIG_APTX_HD_MUXER 0
++#define CONFIG_ARGO_ASF_MUXER 0
++#define CONFIG_ARGO_CVG_MUXER 0
++#define CONFIG_ASF_MUXER 0
++#define CONFIG_ASS_MUXER 0
++#define CONFIG_AST_MUXER 0
++#define CONFIG_ASF_STREAM_MUXER 0
++#define CONFIG_AU_MUXER 0
++#define CONFIG_AVI_MUXER 0
++#define CONFIG_AVM2_MUXER 0
++#define CONFIG_AVS2_MUXER 0
++#define CONFIG_AVS3_MUXER 0
++#define CONFIG_BIT_MUXER 0
++#define CONFIG_CAF_MUXER 0
++#define CONFIG_CAVSVIDEO_MUXER 0
++#define CONFIG_CODEC2_MUXER 0
++#define CONFIG_CODEC2RAW_MUXER 0
++#define CONFIG_CRC_MUXER 0
++#define CONFIG_DASH_MUXER 0
++#define CONFIG_DATA_MUXER 0
++#define CONFIG_DAUD_MUXER 0
++#define CONFIG_DFPWM_MUXER 0
++#define CONFIG_DIRAC_MUXER 0
++#define CONFIG_DNXHD_MUXER 0
++#define CONFIG_DTS_MUXER 0
++#define CONFIG_DV_MUXER 0
++#define CONFIG_EAC3_MUXER 0
++#define CONFIG_F4V_MUXER 0
++#define CONFIG_FFMETADATA_MUXER 0
++#define CONFIG_FIFO_MUXER 0
++#define CONFIG_FIFO_TEST_MUXER 0
++#define CONFIG_FILMSTRIP_MUXER 0
++#define CONFIG_FITS_MUXER 0
++#define CONFIG_FLAC_MUXER 0
++#define CONFIG_FLV_MUXER 0
++#define CONFIG_FRAMECRC_MUXER 0
++#define CONFIG_FRAMEHASH_MUXER 0
++#define CONFIG_FRAMEMD5_MUXER 0
++#define CONFIG_G722_MUXER 0
++#define CONFIG_G723_1_MUXER 0
++#define CONFIG_G726_MUXER 0
++#define CONFIG_G726LE_MUXER 0
++#define CONFIG_GIF_MUXER 0
++#define CONFIG_GSM_MUXER 0
++#define CONFIG_GXF_MUXER 0
++#define CONFIG_H261_MUXER 0
++#define CONFIG_H263_MUXER 0
++#define CONFIG_H264_MUXER 0
++#define CONFIG_HASH_MUXER 0
++#define CONFIG_HDS_MUXER 0
++#define CONFIG_HEVC_MUXER 0
++#define CONFIG_HLS_MUXER 0
++#define CONFIG_ICO_MUXER 0
++#define CONFIG_ILBC_MUXER 0
++#define CONFIG_IMAGE2_MUXER 0
++#define CONFIG_IMAGE2PIPE_MUXER 0
++#define CONFIG_IPOD_MUXER 0
++#define CONFIG_IRCAM_MUXER 0
++#define CONFIG_ISMV_MUXER 0
++#define CONFIG_IVF_MUXER 0
++#define CONFIG_JACOSUB_MUXER 0
++#define CONFIG_KVAG_MUXER 0
++#define CONFIG_LATM_MUXER 0
++#define CONFIG_LRC_MUXER 0
++#define CONFIG_M4V_MUXER 0
++#define CONFIG_MD5_MUXER 0
++#define CONFIG_MATROSKA_MUXER 0
++#define CONFIG_MATROSKA_AUDIO_MUXER 0
++#define CONFIG_MICRODVD_MUXER 0
++#define CONFIG_MJPEG_MUXER 0
++#define CONFIG_MLP_MUXER 0
++#define CONFIG_MMF_MUXER 0
++#define CONFIG_MOV_MUXER 0
++#define CONFIG_MP2_MUXER 0
++#define CONFIG_MP3_MUXER 0
++#define CONFIG_MP4_MUXER 0
++#define CONFIG_MPEG1SYSTEM_MUXER 0
++#define CONFIG_MPEG1VCD_MUXER 0
++#define CONFIG_MPEG1VIDEO_MUXER 0
++#define CONFIG_MPEG2DVD_MUXER 0
++#define CONFIG_MPEG2SVCD_MUXER 0
++#define CONFIG_MPEG2VIDEO_MUXER 0
++#define CONFIG_MPEG2VOB_MUXER 0
++#define CONFIG_MPEGTS_MUXER 0
++#define CONFIG_MPJPEG_MUXER 0
++#define CONFIG_MXF_MUXER 0
++#define CONFIG_MXF_D10_MUXER 0
++#define CONFIG_MXF_OPATOM_MUXER 0
++#define CONFIG_NULL_MUXER 0
++#define CONFIG_NUT_MUXER 0
++#define CONFIG_OBU_MUXER 0
++#define CONFIG_OGA_MUXER 0
++#define CONFIG_OGG_MUXER 0
++#define CONFIG_OGV_MUXER 0
++#define CONFIG_OMA_MUXER 0
++#define CONFIG_OPUS_MUXER 0
++#define CONFIG_PCM_ALAW_MUXER 0
++#define CONFIG_PCM_MULAW_MUXER 0
++#define CONFIG_PCM_VIDC_MUXER 0
++#define CONFIG_PCM_F64BE_MUXER 0
++#define CONFIG_PCM_F64LE_MUXER 0
++#define CONFIG_PCM_F32BE_MUXER 0
++#define CONFIG_PCM_F32LE_MUXER 0
++#define CONFIG_PCM_S32BE_MUXER 0
++#define CONFIG_PCM_S32LE_MUXER 0
++#define CONFIG_PCM_S24BE_MUXER 0
++#define CONFIG_PCM_S24LE_MUXER 0
++#define CONFIG_PCM_S16BE_MUXER 0
++#define CONFIG_PCM_S16LE_MUXER 0
++#define CONFIG_PCM_S8_MUXER 0
++#define CONFIG_PCM_U32BE_MUXER 0
++#define CONFIG_PCM_U32LE_MUXER 0
++#define CONFIG_PCM_U24BE_MUXER 0
++#define CONFIG_PCM_U24LE_MUXER 0
++#define CONFIG_PCM_U16BE_MUXER 0
++#define CONFIG_PCM_U16LE_MUXER 0
++#define CONFIG_PCM_U8_MUXER 0
++#define CONFIG_PSP_MUXER 0
++#define CONFIG_RAWVIDEO_MUXER 0
++#define CONFIG_RM_MUXER 0
++#define CONFIG_ROQ_MUXER 0
++#define CONFIG_RSO_MUXER 0
++#define CONFIG_RTP_MUXER 0
++#define CONFIG_RTP_MPEGTS_MUXER 0
++#define CONFIG_RTSP_MUXER 0
++#define CONFIG_SAP_MUXER 0
++#define CONFIG_SBC_MUXER 0
++#define CONFIG_SCC_MUXER 0
++#define CONFIG_SEGAFILM_MUXER 0
++#define CONFIG_SEGMENT_MUXER 0
++#define CONFIG_STREAM_SEGMENT_MUXER 0
++#define CONFIG_SMJPEG_MUXER 0
++#define CONFIG_SMOOTHSTREAMING_MUXER 0
++#define CONFIG_SOX_MUXER 0
++#define CONFIG_SPX_MUXER 0
++#define CONFIG_SPDIF_MUXER 0
++#define CONFIG_SRT_MUXER 0
++#define CONFIG_STREAMHASH_MUXER 0
++#define CONFIG_SUP_MUXER 0
++#define CONFIG_SWF_MUXER 0
++#define CONFIG_TEE_MUXER 0
++#define CONFIG_TG2_MUXER 0
++#define CONFIG_TGP_MUXER 0
++#define CONFIG_MKVTIMESTAMP_V2_MUXER 0
++#define CONFIG_TRUEHD_MUXER 0
++#define CONFIG_TTA_MUXER 0
++#define CONFIG_TTML_MUXER 0
++#define CONFIG_UNCODEDFRAMECRC_MUXER 0
++#define CONFIG_VC1_MUXER 0
++#define CONFIG_VC1T_MUXER 0
++#define CONFIG_VOC_MUXER 0
++#define CONFIG_W64_MUXER 0
++#define CONFIG_WAV_MUXER 0
++#define CONFIG_WEBM_MUXER 0
++#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
++#define CONFIG_WEBM_CHUNK_MUXER 0
++#define CONFIG_WEBP_MUXER 0
++#define CONFIG_WEBVTT_MUXER 0
++#define CONFIG_WSAUD_MUXER 0
++#define CONFIG_WTV_MUXER 0
++#define CONFIG_WV_MUXER 0
++#define CONFIG_YUV4MPEGPIPE_MUXER 0
++#define CONFIG_CHROMAPRINT_MUXER 0
++#define CONFIG_ASYNC_PROTOCOL 0
++#define CONFIG_BLURAY_PROTOCOL 0
++#define CONFIG_CACHE_PROTOCOL 0
++#define CONFIG_CONCAT_PROTOCOL 0
++#define CONFIG_CONCATF_PROTOCOL 0
++#define CONFIG_CRYPTO_PROTOCOL 0
++#define CONFIG_DATA_PROTOCOL 0
++#define CONFIG_FFRTMPCRYPT_PROTOCOL 0
++#define CONFIG_FFRTMPHTTP_PROTOCOL 0
++#define CONFIG_FILE_PROTOCOL 0
++#define CONFIG_FTP_PROTOCOL 0
++#define CONFIG_GOPHER_PROTOCOL 0
++#define CONFIG_GOPHERS_PROTOCOL 0
++#define CONFIG_HLS_PROTOCOL 0
++#define CONFIG_HTTP_PROTOCOL 0
++#define CONFIG_HTTPPROXY_PROTOCOL 0
++#define CONFIG_HTTPS_PROTOCOL 0
++#define CONFIG_ICECAST_PROTOCOL 0
++#define CONFIG_MMSH_PROTOCOL 0
++#define CONFIG_MMST_PROTOCOL 0
++#define CONFIG_MD5_PROTOCOL 0
++#define CONFIG_PIPE_PROTOCOL 0
++#define CONFIG_PROMPEG_PROTOCOL 0
++#define CONFIG_RTMP_PROTOCOL 0
++#define CONFIG_RTMPE_PROTOCOL 0
++#define CONFIG_RTMPS_PROTOCOL 0
++#define CONFIG_RTMPT_PROTOCOL 0
++#define CONFIG_RTMPTE_PROTOCOL 0
++#define CONFIG_RTMPTS_PROTOCOL 0
++#define CONFIG_RTP_PROTOCOL 0
++#define CONFIG_SCTP_PROTOCOL 0
++#define CONFIG_SRTP_PROTOCOL 0
++#define CONFIG_SUBFILE_PROTOCOL 0
++#define CONFIG_TEE_PROTOCOL 0
++#define CONFIG_TCP_PROTOCOL 0
++#define CONFIG_TLS_PROTOCOL 0
++#define CONFIG_UDP_PROTOCOL 0
++#define CONFIG_UDPLITE_PROTOCOL 0
++#define CONFIG_UNIX_PROTOCOL 0
++#define CONFIG_LIBAMQP_PROTOCOL 0
++#define CONFIG_LIBRIST_PROTOCOL 0
++#define CONFIG_LIBRTMP_PROTOCOL 0
++#define CONFIG_LIBRTMPE_PROTOCOL 0
++#define CONFIG_LIBRTMPS_PROTOCOL 0
++#define CONFIG_LIBRTMPT_PROTOCOL 0
++#define CONFIG_LIBRTMPTE_PROTOCOL 0
++#define CONFIG_LIBSRT_PROTOCOL 0
++#define CONFIG_LIBSSH_PROTOCOL 0
++#define CONFIG_LIBSMBCLIENT_PROTOCOL 0
++#define CONFIG_LIBZMQ_PROTOCOL 0
++#endif /* FFMPEG_CONFIG_COMPONENTS_H */
diff --git a/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.asm b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.asm
new file mode 100644
index 000000000000..4ab3d4d60a1d
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.asm
@@ -0,0 +1,723 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/ia32/config.asm.orig 2022-10-01 07:40:07 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/ia32/config.asm
+@@ -0,0 +1,720 @@
++; Automatically generated by configure - do not modify!
++%define ARCH_AARCH64 0
++%define ARCH_ALPHA 0
++%define ARCH_ARM 0
++%define ARCH_AVR32 0
++%define ARCH_AVR32_AP 0
++%define ARCH_AVR32_UC 0
++%define ARCH_BFIN 0
++%define ARCH_IA64 0
++%define ARCH_LOONGARCH 0
++%define ARCH_LOONGARCH32 0
++%define ARCH_LOONGARCH64 0
++%define ARCH_M68K 0
++%define ARCH_MIPS 0
++%define ARCH_MIPS64 0
++%define ARCH_PARISC 0
++%define ARCH_PPC 0
++%define ARCH_PPC64 0
++%define ARCH_RISCV 0
++%define ARCH_S390 0
++%define ARCH_SH4 0
++%define ARCH_SPARC 0
++%define ARCH_SPARC64 0
++%define ARCH_TILEGX 0
++%define ARCH_TILEPRO 0
++%define ARCH_TOMI 0
++%define ARCH_X86 1
++%define ARCH_X86_32 1
++%define ARCH_X86_64 0
++%define HAVE_ARMV5TE 0
++%define HAVE_ARMV6 0
++%define HAVE_ARMV6T2 0
++%define HAVE_ARMV8 0
++%define HAVE_NEON 0
++%define HAVE_VFP 0
++%define HAVE_VFPV3 0
++%define HAVE_SETEND 0
++%define HAVE_ALTIVEC 0
++%define HAVE_DCBZL 0
++%define HAVE_LDBRX 0
++%define HAVE_POWER8 0
++%define HAVE_PPC4XX 0
++%define HAVE_VSX 0
++%define HAVE_AESNI 1
++%define HAVE_AMD3DNOW 1
++%define HAVE_AMD3DNOWEXT 1
++%define HAVE_AVX 1
++%define HAVE_AVX2 1
++%define HAVE_AVX512 1
++%define HAVE_AVX512ICL 1
++%define HAVE_FMA3 1
++%define HAVE_FMA4 1
++%define HAVE_MMX 1
++%define HAVE_MMXEXT 1
++%define HAVE_SSE 1
++%define HAVE_SSE2 1
++%define HAVE_SSE3 1
++%define HAVE_SSE4 1
++%define HAVE_SSE42 1
++%define HAVE_SSSE3 1
++%define HAVE_XOP 1
++%define HAVE_CPUNOP 0
++%define HAVE_I686 1
++%define HAVE_MIPSFPU 0
++%define HAVE_MIPS32R2 0
++%define HAVE_MIPS32R5 0
++%define HAVE_MIPS64R2 0
++%define HAVE_MIPS32R6 0
++%define HAVE_MIPS64R6 0
++%define HAVE_MIPSDSP 0
++%define HAVE_MIPSDSPR2 0
++%define HAVE_MSA 0
++%define HAVE_LOONGSON2 0
++%define HAVE_LOONGSON3 0
++%define HAVE_MMI 0
++%define HAVE_LSX 0
++%define HAVE_LASX 0
++%define HAVE_ARMV5TE_EXTERNAL 0
++%define HAVE_ARMV6_EXTERNAL 0
++%define HAVE_ARMV6T2_EXTERNAL 0
++%define HAVE_ARMV8_EXTERNAL 0
++%define HAVE_NEON_EXTERNAL 0
++%define HAVE_VFP_EXTERNAL 0
++%define HAVE_VFPV3_EXTERNAL 0
++%define HAVE_SETEND_EXTERNAL 0
++%define HAVE_ALTIVEC_EXTERNAL 0
++%define HAVE_DCBZL_EXTERNAL 0
++%define HAVE_LDBRX_EXTERNAL 0
++%define HAVE_POWER8_EXTERNAL 0
++%define HAVE_PPC4XX_EXTERNAL 0
++%define HAVE_VSX_EXTERNAL 0
++%define HAVE_AESNI_EXTERNAL 1
++%define HAVE_AMD3DNOW_EXTERNAL 1
++%define HAVE_AMD3DNOWEXT_EXTERNAL 1
++%define HAVE_AVX_EXTERNAL 1
++%define HAVE_AVX2_EXTERNAL 1
++%define HAVE_AVX512_EXTERNAL 1
++%define HAVE_AVX512ICL_EXTERNAL 0
++%define HAVE_FMA3_EXTERNAL 1
++%define HAVE_FMA4_EXTERNAL 1
++%define HAVE_MMX_EXTERNAL 1
++%define HAVE_MMXEXT_EXTERNAL 1
++%define HAVE_SSE_EXTERNAL 1
++%define HAVE_SSE2_EXTERNAL 1
++%define HAVE_SSE3_EXTERNAL 1
++%define HAVE_SSE4_EXTERNAL 1
++%define HAVE_SSE42_EXTERNAL 1
++%define HAVE_SSSE3_EXTERNAL 1
++%define HAVE_XOP_EXTERNAL 1
++%define HAVE_CPUNOP_EXTERNAL 0
++%define HAVE_I686_EXTERNAL 0
++%define HAVE_MIPSFPU_EXTERNAL 0
++%define HAVE_MIPS32R2_EXTERNAL 0
++%define HAVE_MIPS32R5_EXTERNAL 0
++%define HAVE_MIPS64R2_EXTERNAL 0
++%define HAVE_MIPS32R6_EXTERNAL 0
++%define HAVE_MIPS64R6_EXTERNAL 0
++%define HAVE_MIPSDSP_EXTERNAL 0
++%define HAVE_MIPSDSPR2_EXTERNAL 0
++%define HAVE_MSA_EXTERNAL 0
++%define HAVE_LOONGSON2_EXTERNAL 0
++%define HAVE_LOONGSON3_EXTERNAL 0
++%define HAVE_MMI_EXTERNAL 0
++%define HAVE_LSX_EXTERNAL 0
++%define HAVE_LASX_EXTERNAL 0
++%define HAVE_ARMV5TE_INLINE 0
++%define HAVE_ARMV6_INLINE 0
++%define HAVE_ARMV6T2_INLINE 0
++%define HAVE_ARMV8_INLINE 0
++%define HAVE_NEON_INLINE 0
++%define HAVE_VFP_INLINE 0
++%define HAVE_VFPV3_INLINE 0
++%define HAVE_SETEND_INLINE 0
++%define HAVE_ALTIVEC_INLINE 0
++%define HAVE_DCBZL_INLINE 0
++%define HAVE_LDBRX_INLINE 0
++%define HAVE_POWER8_INLINE 0
++%define HAVE_PPC4XX_INLINE 0
++%define HAVE_VSX_INLINE 0
++%define HAVE_AESNI_INLINE 1
++%define HAVE_AMD3DNOW_INLINE 1
++%define HAVE_AMD3DNOWEXT_INLINE 1
++%define HAVE_AVX_INLINE 1
++%define HAVE_AVX2_INLINE 1
++%define HAVE_AVX512_INLINE 1
++%define HAVE_AVX512ICL_INLINE 1
++%define HAVE_FMA3_INLINE 1
++%define HAVE_FMA4_INLINE 1
++%define HAVE_MMX_INLINE 1
++%define HAVE_MMXEXT_INLINE 1
++%define HAVE_SSE_INLINE 1
++%define HAVE_SSE2_INLINE 1
++%define HAVE_SSE3_INLINE 1
++%define HAVE_SSE4_INLINE 1
++%define HAVE_SSE42_INLINE 1
++%define HAVE_SSSE3_INLINE 1
++%define HAVE_XOP_INLINE 1
++%define HAVE_CPUNOP_INLINE 0
++%define HAVE_I686_INLINE 0
++%define HAVE_MIPSFPU_INLINE 0
++%define HAVE_MIPS32R2_INLINE 0
++%define HAVE_MIPS32R5_INLINE 0
++%define HAVE_MIPS64R2_INLINE 0
++%define HAVE_MIPS32R6_INLINE 0
++%define HAVE_MIPS64R6_INLINE 0
++%define HAVE_MIPSDSP_INLINE 0
++%define HAVE_MIPSDSPR2_INLINE 0
++%define HAVE_MSA_INLINE 0
++%define HAVE_LOONGSON2_INLINE 0
++%define HAVE_LOONGSON3_INLINE 0
++%define HAVE_MMI_INLINE 0
++%define HAVE_LSX_INLINE 0
++%define HAVE_LASX_INLINE 0
++%define HAVE_ALIGNED_STACK 0
++%define HAVE_FAST_64BIT 0
++%define HAVE_FAST_CLZ 1
++%define HAVE_FAST_CMOV 0
++%define HAVE_LOCAL_ALIGNED 1
++%define HAVE_SIMD_ALIGN_16 1
++%define HAVE_SIMD_ALIGN_32 1
++%define HAVE_SIMD_ALIGN_64 1
++%define HAVE_ATOMIC_CAS_PTR 0
++%define HAVE_MACHINE_RW_BARRIER 0
++%define HAVE_MEMORYBARRIER 0
++%define HAVE_MM_EMPTY 0
++%define HAVE_RDTSC 0
++%define HAVE_SEM_TIMEDWAIT 1
++%define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
++%define HAVE_CABS 0
++%define HAVE_CEXP 0
++%define HAVE_INLINE_ASM 1
++%define HAVE_SYMVER 0
++%define HAVE_X86ASM 1
++%define HAVE_BIGENDIAN 0
++%define HAVE_FAST_UNALIGNED 1
++%define HAVE_ARPA_INET_H 0
++%define HAVE_ASM_TYPES_H 0
++%define HAVE_CDIO_PARANOIA_H 0
++%define HAVE_CDIO_PARANOIA_PARANOIA_H 0
++%define HAVE_CUDA_H 0
++%define HAVE_DISPATCH_DISPATCH_H 0
++%define HAVE_DEV_BKTR_IOCTL_BT848_H 0
++%define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
++%define HAVE_DEV_IC_BT8XX_H 1
++%define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
++%define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
++%define HAVE_DIRECT_H 0
++%define HAVE_DIRENT_H 1
++%define HAVE_DXGIDEBUG_H 0
++%define HAVE_DXVA_H 0
++%define HAVE_ES2_GL_H 0
++%define HAVE_GSM_H 0
++%define HAVE_IO_H 0
++%define HAVE_LINUX_DMA_BUF_H 0
++%define HAVE_LINUX_PERF_EVENT_H 0
++%define HAVE_MACHINE_IOCTL_BT848_H 0
++%define HAVE_MACHINE_IOCTL_METEOR_H 0
++%define HAVE_MALLOC_H 0
++%define HAVE_OPENCV2_CORE_CORE_C_H 0
++%define HAVE_OPENGL_GL3_H 0
++%define HAVE_POLL_H 1
++%define HAVE_SYS_PARAM_H 1
++%define HAVE_SYS_RESOURCE_H 1
++%define HAVE_SYS_SELECT_H 1
++%define HAVE_SYS_SOUNDCARD_H 0
++%define HAVE_SYS_TIME_H 1
++%define HAVE_SYS_UN_H 1
++%define HAVE_SYS_VIDEOIO_H 1
++%define HAVE_TERMIOS_H 1
++%define HAVE_UDPLITE_H 0
++%define HAVE_UNISTD_H 1
++%define HAVE_VALGRIND_VALGRIND_H 0 ; %define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440
++%define HAVE_WINDOWS_H 0
++%define HAVE_WINSOCK2_H 0
++%define HAVE_INTRINSICS_NEON 0
++%define HAVE_ATANF 1
++%define HAVE_ATAN2F 1
++%define HAVE_CBRT 1
++%define HAVE_CBRTF 1
++%define HAVE_COPYSIGN 1
++%define HAVE_COSF 1
++%define HAVE_ERF 1
++%define HAVE_EXP2 1
++%define HAVE_EXP2F 1
++%define HAVE_EXPF 1
++%define HAVE_HYPOT 1
++%define HAVE_ISFINITE 1
++%define HAVE_ISINF 1
++%define HAVE_ISNAN 1
++%define HAVE_LDEXPF 1
++%define HAVE_LLRINT 1
++%define HAVE_LLRINTF 1
++%define HAVE_LOG2 1
++%define HAVE_LOG2F 1
++%define HAVE_LOG10F 1
++%define HAVE_LRINT 1
++%define HAVE_LRINTF 1
++%define HAVE_POWF 1
++%define HAVE_RINT 1
++%define HAVE_ROUND 1
++%define HAVE_ROUNDF 1
++%define HAVE_SINF 1
++%define HAVE_TRUNC 1
++%define HAVE_TRUNCF 1
++%define HAVE_DOS_PATHS 0
++%define HAVE_LIBC_MSVCRT 0
++%define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
++%define HAVE_SECTION_DATA_REL_RO 1
++%define HAVE_THREADS 1
++%define HAVE_UWP 0
++%define HAVE_WINRT 0
++%define HAVE_ACCESS 1
++%define HAVE_ALIGNED_MALLOC 0
++%define HAVE_ARC4RANDOM 1
++%define HAVE_CLOCK_GETTIME 1
++%define HAVE_CLOSESOCKET 0
++%define HAVE_COMMANDLINETOARGVW 0
++%define HAVE_FCNTL 1
++%define HAVE_GETADDRINFO 0
++%define HAVE_GETAUXVAL 0
++%define HAVE_GETHRTIME 0
++%define HAVE_GETOPT 1
++%define HAVE_GETMODULEHANDLE 0
++%define HAVE_GETPROCESSAFFINITYMASK 0
++%define HAVE_GETPROCESSMEMORYINFO 0
++%define HAVE_GETPROCESSTIMES 0
++%define HAVE_GETRUSAGE 1
++%define HAVE_GETSTDHANDLE 0
++%define HAVE_GETSYSTEMTIMEASFILETIME 0
++%define HAVE_GETTIMEOFDAY 1
++%define HAVE_GLOB 1
++%define HAVE_GLXGETPROCADDRESS 0
++%define HAVE_GMTIME_R 1
++%define HAVE_INET_ATON 0
++%define HAVE_ISATTY 1
++%define HAVE_KBHIT 0
++%define HAVE_LOCALTIME_R 1
++%define HAVE_LSTAT 1
++%define HAVE_LZO1X_999_COMPRESS 0
++%define HAVE_MACH_ABSOLUTE_TIME 0
++%define HAVE_MAPVIEWOFFILE 0
++%define HAVE_MEMALIGN 0
++%define HAVE_MKSTEMP 1
++%define HAVE_MMAP 1
++%define HAVE_MPROTECT 1
++%define HAVE_NANOSLEEP 1
++%define HAVE_PEEKNAMEDPIPE 0
++%define HAVE_POSIX_MEMALIGN 1
++%define HAVE_PTHREAD_CANCEL 1
++%define HAVE_SCHED_GETAFFINITY 0
++%define HAVE_SECITEMIMPORT 0
++%define HAVE_SETCONSOLETEXTATTRIBUTE 0
++%define HAVE_SETCONSOLECTRLHANDLER 0
++%define HAVE_SETDLLDIRECTORY 0
++%define HAVE_SETMODE 0
++%define HAVE_SETRLIMIT 1
++%define HAVE_SLEEP 0
++%define HAVE_STRERROR_R 1
++%define HAVE_SYSCONF 1
++%define HAVE_SYSCTL 0
++%define HAVE_USLEEP 1
++%define HAVE_UTGETOSTYPEFROMSTRING 0
++%define HAVE_VIRTUALALLOC 0
++%define HAVE_WGLGETPROCADDRESS 0
++%define HAVE_BCRYPT 0
++%define HAVE_VAAPI_DRM 0
++%define HAVE_VAAPI_X11 0
++%define HAVE_VDPAU_X11 0
++%define HAVE_PTHREADS 1
++%define HAVE_OS2THREADS 0
++%define HAVE_W32THREADS 0
++%define HAVE_AS_ARCH_DIRECTIVE 0
++%define HAVE_AS_DN_DIRECTIVE 0
++%define HAVE_AS_FPU_DIRECTIVE 0
++%define HAVE_AS_FUNC 0
++%define HAVE_AS_OBJECT_ARCH 0
++%define HAVE_ASM_MOD_Q 0
++%define HAVE_BLOCKS_EXTENSION 0
++%define HAVE_EBP_AVAILABLE 1
++%define HAVE_EBX_AVAILABLE 1
++%define HAVE_GNU_AS 0
++%define HAVE_GNU_WINDRES 0
++%define HAVE_IBM_ASM 0
++%define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 1
++%define HAVE_INLINE_ASM_LABELS 1
++%define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
++%define HAVE_PRAGMA_DEPRECATED 1
++%define HAVE_RSYNC_CONTIMEOUT 1
++%define HAVE_SYMVER_ASM_LABEL 1
++%define HAVE_SYMVER_GNU_ASM 1
++%define HAVE_VFP_ARGS 0
++%define HAVE_XFORM_ASM 0
++%define HAVE_XMM_CLOBBERS 1
++%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
++%define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
++%define HAVE_KCMVIDEOCODECTYPE_VP9 0
++%define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
++%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
++%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
++%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
++%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
++%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
++%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
++%define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
++%define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
++%define HAVE_SOCKLEN_T 0
++%define HAVE_STRUCT_ADDRINFO 0
++%define HAVE_STRUCT_GROUP_SOURCE_REQ 0
++%define HAVE_STRUCT_IP_MREQ_SOURCE 0
++%define HAVE_STRUCT_IPV6_MREQ 0
++%define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
++%define HAVE_STRUCT_POLLFD 0
++%define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
++%define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
++%define HAVE_STRUCT_SOCKADDR_IN6 0
++%define HAVE_STRUCT_SOCKADDR_SA_LEN 0
++%define HAVE_STRUCT_SOCKADDR_STORAGE 0
++%define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
++%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
++%define HAVE_GZIP 1
++%define HAVE_LIBDRM_GETFB2 0
++%define HAVE_MAKEINFO 1
++%define HAVE_MAKEINFO_HTML 0
++%define HAVE_OPENCL_D3D11 0
++%define HAVE_OPENCL_DRM_ARM 0
++%define HAVE_OPENCL_DRM_BEIGNET 0
++%define HAVE_OPENCL_DXVA2 0
++%define HAVE_OPENCL_VAAPI_BEIGNET 0
++%define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
++%define HAVE_PERL 1
++%define HAVE_POD2MAN 1
++%define HAVE_TEXI2HTML 0
++%define HAVE_XMLLINT 1
++%define HAVE_ZLIB_GZIP 0
++%define CONFIG_DOC 0
++%define CONFIG_HTMLPAGES 0
++%define CONFIG_MANPAGES 0
++%define CONFIG_PODPAGES 0
++%define CONFIG_TXTPAGES 0
++%define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
++%define CONFIG_AVIO_READING_EXAMPLE 1
++%define CONFIG_DECODE_AUDIO_EXAMPLE 1
++%define CONFIG_DECODE_VIDEO_EXAMPLE 1
++%define CONFIG_DEMUXING_DECODING_EXAMPLE 1
++%define CONFIG_ENCODE_AUDIO_EXAMPLE 1
++%define CONFIG_ENCODE_VIDEO_EXAMPLE 1
++%define CONFIG_EXTRACT_MVS_EXAMPLE 1
++%define CONFIG_FILTER_AUDIO_EXAMPLE 0
++%define CONFIG_FILTERING_AUDIO_EXAMPLE 0
++%define CONFIG_FILTERING_VIDEO_EXAMPLE 0
++%define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
++%define CONFIG_HW_DECODE_EXAMPLE 1
++%define CONFIG_METADATA_EXAMPLE 1
++%define CONFIG_MUXING_EXAMPLE 0
++%define CONFIG_QSVDEC_EXAMPLE 0
++%define CONFIG_REMUXING_EXAMPLE 1
++%define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
++%define CONFIG_SCALING_VIDEO_EXAMPLE 0
++%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
++%define CONFIG_TRANSCODING_EXAMPLE 0
++%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
++%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
++%define CONFIG_AVISYNTH 0
++%define CONFIG_FREI0R 0
++%define CONFIG_LIBCDIO 0
++%define CONFIG_LIBDAVS2 0
++%define CONFIG_LIBRUBBERBAND 0
++%define CONFIG_LIBVIDSTAB 0
++%define CONFIG_LIBX264 0
++%define CONFIG_LIBX265 0
++%define CONFIG_LIBXAVS 0
++%define CONFIG_LIBXAVS2 0
++%define CONFIG_LIBXVID 0
++%define CONFIG_DECKLINK 0
++%define CONFIG_LIBFDK_AAC 0
++%define CONFIG_LIBTLS 0
++%define CONFIG_GMP 0
++%define CONFIG_LIBARIBB24 0
++%define CONFIG_LIBLENSFUN 0
++%define CONFIG_LIBOPENCORE_AMRNB 0
++%define CONFIG_LIBOPENCORE_AMRWB 0
++%define CONFIG_LIBVO_AMRWBENC 0
++%define CONFIG_MBEDTLS 0
++%define CONFIG_RKMPP 0
++%define CONFIG_LIBSMBCLIENT 0
++%define CONFIG_CHROMAPRINT 0
++%define CONFIG_GCRYPT 0
++%define CONFIG_GNUTLS 0
++%define CONFIG_JNI 0
++%define CONFIG_LADSPA 0
++%define CONFIG_LIBAOM 0
++%define CONFIG_LIBASS 0
++%define CONFIG_LIBBLURAY 0
++%define CONFIG_LIBBS2B 0
++%define CONFIG_LIBCACA 0
++%define CONFIG_LIBCELT 0
++%define CONFIG_LIBCODEC2 0
++%define CONFIG_LIBDAV1D 0
++%define CONFIG_LIBDC1394 0
++%define CONFIG_LIBDRM 0
++%define CONFIG_LIBFLITE 0
++%define CONFIG_LIBFONTCONFIG 0
++%define CONFIG_LIBFREETYPE 0
++%define CONFIG_LIBFRIBIDI 0
++%define CONFIG_LIBGLSLANG 0
++%define CONFIG_LIBGME 0
++%define CONFIG_LIBGSM 0
++%define CONFIG_LIBIEC61883 0
++%define CONFIG_LIBILBC 0
++%define CONFIG_LIBJACK 0
++%define CONFIG_LIBKLVANC 0
++%define CONFIG_LIBKVAZAAR 0
++%define CONFIG_LIBMODPLUG 0
++%define CONFIG_LIBMP3LAME 0
++%define CONFIG_LIBMYSOFA 0
++%define CONFIG_LIBOPENCV 0
++%define CONFIG_LIBOPENH264 0
++%define CONFIG_LIBOPENJPEG 0
++%define CONFIG_LIBOPENMPT 0
++%define CONFIG_LIBOPENVINO 0
++%define CONFIG_LIBOPUS 1
++%define CONFIG_LIBPLACEBO 0
++%define CONFIG_LIBPULSE 0
++%define CONFIG_LIBRABBITMQ 0
++%define CONFIG_LIBRAV1E 0
++%define CONFIG_LIBRIST 0
++%define CONFIG_LIBRSVG 0
++%define CONFIG_LIBRTMP 0
++%define CONFIG_LIBSHADERC 0
++%define CONFIG_LIBSHINE 0
++%define CONFIG_LIBSMBCLIENT 0
++%define CONFIG_LIBSNAPPY 0
++%define CONFIG_LIBSOXR 0
++%define CONFIG_LIBSPEEX 0
++%define CONFIG_LIBSRT 0
++%define CONFIG_LIBSSH 0
++%define CONFIG_LIBSVTAV1 0
++%define CONFIG_LIBTENSORFLOW 0
++%define CONFIG_LIBTESSERACT 0
++%define CONFIG_LIBTHEORA 0
++%define CONFIG_LIBTWOLAME 0
++%define CONFIG_LIBUAVS3D 0
++%define CONFIG_LIBV4L2 0
++%define CONFIG_LIBVMAF 0
++%define CONFIG_LIBVORBIS 0
++%define CONFIG_LIBVPX 0
++%define CONFIG_LIBWEBP 0
++%define CONFIG_LIBXML2 0
++%define CONFIG_LIBZIMG 0
++%define CONFIG_LIBZMQ 0
++%define CONFIG_LIBZVBI 0
++%define CONFIG_LV2 0
++%define CONFIG_MEDIACODEC 0
++%define CONFIG_OPENAL 0
++%define CONFIG_OPENGL 0
++%define CONFIG_OPENSSL 0
++%define CONFIG_POCKETSPHINX 0
++%define CONFIG_VAPOURSYNTH 0
++%define CONFIG_ALSA 0
++%define CONFIG_APPKIT 0
++%define CONFIG_AVFOUNDATION 0
++%define CONFIG_BZLIB 0
++%define CONFIG_COREIMAGE 0
++%define CONFIG_ICONV 0
++%define CONFIG_LIBXCB 0
++%define CONFIG_LIBXCB_SHM 0
++%define CONFIG_LIBXCB_SHAPE 0
++%define CONFIG_LIBXCB_XFIXES 0
++%define CONFIG_LZMA 0
++%define CONFIG_MEDIAFOUNDATION 0
++%define CONFIG_METAL 0
++%define CONFIG_SCHANNEL 0
++%define CONFIG_SDL2 0
++%define CONFIG_SECURETRANSPORT 0
++%define CONFIG_SNDIO 0
++%define CONFIG_XLIB 0
++%define CONFIG_ZLIB 0
++%define CONFIG_CUDA_NVCC 0
++%define CONFIG_CUDA_SDK 0
++%define CONFIG_LIBNPP 0
++%define CONFIG_LIBMFX 0
++%define CONFIG_MMAL 0
++%define CONFIG_OMX 0
++%define CONFIG_OPENCL 0
++%define CONFIG_AMF 0
++%define CONFIG_AUDIOTOOLBOX 0
++%define CONFIG_CRYSTALHD 0
++%define CONFIG_CUDA 0
++%define CONFIG_CUDA_LLVM 0
++%define CONFIG_CUVID 0
++%define CONFIG_D3D11VA 0
++%define CONFIG_DXVA2 0
++%define CONFIG_FFNVCODEC 0
++%define CONFIG_NVDEC 0
++%define CONFIG_NVENC 0
++%define CONFIG_VAAPI 0
++%define CONFIG_VDPAU 0
++%define CONFIG_VIDEOTOOLBOX 0
++%define CONFIG_VULKAN 0
++%define CONFIG_V4L2_M2M 0
++%define CONFIG_FTRAPV 0
++%define CONFIG_GRAY 0
++%define CONFIG_HARDCODED_TABLES 0
++%define CONFIG_OMX_RPI 0
++%define CONFIG_RUNTIME_CPUDETECT 1
++%define CONFIG_SAFE_BITSTREAM_READER 1
++%define CONFIG_SHARED 0
++%define CONFIG_SMALL 0
++%define CONFIG_STATIC 1
++%define CONFIG_SWSCALE_ALPHA 1
++%define CONFIG_GPL 0
++%define CONFIG_NONFREE 0
++%define CONFIG_VERSION3 0
++%define CONFIG_AVDEVICE 0
++%define CONFIG_AVFILTER 0
++%define CONFIG_SWSCALE 0
++%define CONFIG_POSTPROC 0
++%define CONFIG_AVFORMAT 1
++%define CONFIG_AVCODEC 1
++%define CONFIG_SWRESAMPLE 0
++%define CONFIG_AVUTIL 1
++%define CONFIG_FFPLAY 0
++%define CONFIG_FFPROBE 0
++%define CONFIG_FFMPEG 0
++%define CONFIG_DCT 1
++%define CONFIG_DWT 0
++%define CONFIG_ERROR_RESILIENCE 0
++%define CONFIG_FAAN 0
++%define CONFIG_FAST_UNALIGNED 1
++%define CONFIG_FFT 1
++%define CONFIG_LSP 0
++%define CONFIG_MDCT 1
++%define CONFIG_PIXELUTILS 0
++%define CONFIG_NETWORK 0
++%define CONFIG_RDFT 1
++%define CONFIG_AUTODETECT 0
++%define CONFIG_FONTCONFIG 0
++%define CONFIG_LARGE_TESTS 1
++%define CONFIG_LINUX_PERF 0
++%define CONFIG_MACOS_KPERF 0
++%define CONFIG_MEMORY_POISONING 0
++%define CONFIG_NEON_CLOBBER_TEST 0
++%define CONFIG_OSSFUZZ 0
++%define CONFIG_PIC 1
++%define CONFIG_PTX_COMPRESSION 0
++%define CONFIG_THUMB 0
++%define CONFIG_VALGRIND_BACKTRACE 0
++%define CONFIG_XMM_CLOBBER_TEST 0
++%define CONFIG_BSFS 0
++%define CONFIG_DECODERS 1
++%define CONFIG_ENCODERS 0
++%define CONFIG_HWACCELS 0
++%define CONFIG_PARSERS 1
++%define CONFIG_INDEVS 0
++%define CONFIG_OUTDEVS 0
++%define CONFIG_FILTERS 0
++%define CONFIG_DEMUXERS 1
++%define CONFIG_MUXERS 0
++%define CONFIG_PROTOCOLS 0
++%define CONFIG_AANDCTTABLES 0
++%define CONFIG_AC3DSP 0
++%define CONFIG_ADTS_HEADER 1
++%define CONFIG_ATSC_A53 1
++%define CONFIG_AUDIO_FRAME_QUEUE 0
++%define CONFIG_AUDIODSP 0
++%define CONFIG_BLOCKDSP 0
++%define CONFIG_BSWAPDSP 0
++%define CONFIG_CABAC 1
++%define CONFIG_CBS 0
++%define CONFIG_CBS_AV1 0
++%define CONFIG_CBS_H264 0
++%define CONFIG_CBS_H265 0
++%define CONFIG_CBS_JPEG 0
++%define CONFIG_CBS_MPEG2 0
++%define CONFIG_CBS_VP9 0
++%define CONFIG_DEFLATE_WRAPPER 0
++%define CONFIG_DIRAC_PARSE 1
++%define CONFIG_DNN 0
++%define CONFIG_DOVI_RPU 0
++%define CONFIG_DVPROFILE 0
++%define CONFIG_EXIF 0
++%define CONFIG_FAANDCT 0
++%define CONFIG_FAANIDCT 0
++%define CONFIG_FDCTDSP 0
++%define CONFIG_FLACDSP 1
++%define CONFIG_FMTCONVERT 0
++%define CONFIG_FRAME_THREAD_ENCODER 0
++%define CONFIG_G722DSP 0
++%define CONFIG_GOLOMB 1
++%define CONFIG_GPLV3 0
++%define CONFIG_H263DSP 0
++%define CONFIG_H264CHROMA 1
++%define CONFIG_H264DSP 1
++%define CONFIG_H264PARSE 1
++%define CONFIG_H264PRED 1
++%define CONFIG_H264QPEL 1
++%define CONFIG_HEVCPARSE 0
++%define CONFIG_HPELDSP 1
++%define CONFIG_HUFFMAN 0
++%define CONFIG_HUFFYUVDSP 0
++%define CONFIG_HUFFYUVENCDSP 0
++%define CONFIG_IDCTDSP 0
++%define CONFIG_IIRFILTER 0
++%define CONFIG_MDCT15 1
++%define CONFIG_INFLATE_WRAPPER 0
++%define CONFIG_INTRAX8 0
++%define CONFIG_ISO_MEDIA 1
++%define CONFIG_IVIDSP 0
++%define CONFIG_JPEGTABLES 0
++%define CONFIG_LGPLV3 0
++%define CONFIG_LIBX262 0
++%define CONFIG_LLAUDDSP 0
++%define CONFIG_LLVIDDSP 0
++%define CONFIG_LLVIDENCDSP 0
++%define CONFIG_LPC 0
++%define CONFIG_LZF 0
++%define CONFIG_ME_CMP 0
++%define CONFIG_MPEG_ER 0
++%define CONFIG_MPEGAUDIO 1
++%define CONFIG_MPEGAUDIODSP 1
++%define CONFIG_MPEGAUDIOHEADER 1
++%define CONFIG_MPEG4AUDIO 1
++%define CONFIG_MPEGVIDEO 0
++%define CONFIG_MPEGVIDEODEC 0
++%define CONFIG_MPEGVIDEOENC 0
++%define CONFIG_MSS34DSP 0
++%define CONFIG_PIXBLOCKDSP 0
++%define CONFIG_QPELDSP 0
++%define CONFIG_QSV 0
++%define CONFIG_QSVDEC 0
++%define CONFIG_QSVENC 0
++%define CONFIG_QSVVPP 0
++%define CONFIG_RANGECODER 0
++%define CONFIG_RIFFDEC 1
++%define CONFIG_RIFFENC 0
++%define CONFIG_RTPDEC 0
++%define CONFIG_RTPENC_CHAIN 0
++%define CONFIG_RV34DSP 0
++%define CONFIG_SCENE_SAD 0
++%define CONFIG_SINEWIN 1
++%define CONFIG_SNAPPY 0
++%define CONFIG_SRTP 0
++%define CONFIG_STARTCODE 1
++%define CONFIG_TEXTUREDSP 0
++%define CONFIG_TEXTUREDSPENC 0
++%define CONFIG_TPELDSP 0
++%define CONFIG_VAAPI_1 0
++%define CONFIG_VAAPI_ENCODE 0
++%define CONFIG_VC1DSP 0
++%define CONFIG_VIDEODSP 1
++%define CONFIG_VP3DSP 1
++%define CONFIG_VP56DSP 0
++%define CONFIG_VP8DSP 1
++%define CONFIG_WMA_FREQS 0
++%define CONFIG_WMV2DSP 0
diff --git a/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.h b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.h
new file mode 100644
index 000000000000..7efd0083783a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.h
@@ -0,0 +1,740 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/ia32/config.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/ia32/config.h
+@@ -0,0 +1,737 @@
++/* Automatically generated by configure - do not modify! */
++#ifndef FFMPEG_CONFIG_H
++#define FFMPEG_CONFIG_H
++/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio,vp9' --extra-cflags=-I/d/code/chrome/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=nasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */
++#define FFMPEG_LICENSE "LGPL version 2.1 or later"
++#define CONFIG_THIS_YEAR 2022
++#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
++#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
++#define CC_IDENT "OpenBSD clang version 13.0.0"
++#define OS_NAME openbsd
++#define av_restrict restrict
++#define EXTERN_PREFIX ""
++#define EXTERN_ASM
++#define BUILDSUF ""
++#define SLIBSUF ".so"
++#define HAVE_MMX2 HAVE_MMXEXT
++#define SWS_MAX_FILTER_SIZE 256
++#define ARCH_AARCH64 0
++#define ARCH_ALPHA 0
++#define ARCH_ARM 0
++#define ARCH_AVR32 0
++#define ARCH_AVR32_AP 0
++#define ARCH_AVR32_UC 0
++#define ARCH_BFIN 0
++#define ARCH_IA64 0
++#define ARCH_LOONGARCH 0
++#define ARCH_LOONGARCH32 0
++#define ARCH_LOONGARCH64 0
++#define ARCH_M68K 0
++#define ARCH_MIPS 0
++#define ARCH_MIPS64 0
++#define ARCH_PARISC 0
++#define ARCH_PPC 0
++#define ARCH_PPC64 0
++#define ARCH_RISCV 0
++#define ARCH_S390 0
++#define ARCH_SH4 0
++#define ARCH_SPARC 0
++#define ARCH_SPARC64 0
++#define ARCH_TILEGX 0
++#define ARCH_TILEPRO 0
++#define ARCH_TOMI 0
++#define ARCH_X86 1
++#define ARCH_X86_32 1
++#define ARCH_X86_64 0
++#define HAVE_ARMV5TE 0
++#define HAVE_ARMV6 0
++#define HAVE_ARMV6T2 0
++#define HAVE_ARMV8 0
++#define HAVE_NEON 0
++#define HAVE_VFP 0
++#define HAVE_VFPV3 0
++#define HAVE_SETEND 0
++#define HAVE_ALTIVEC 0
++#define HAVE_DCBZL 0
++#define HAVE_LDBRX 0
++#define HAVE_POWER8 0
++#define HAVE_PPC4XX 0
++#define HAVE_VSX 0
++#define HAVE_AESNI 1
++#define HAVE_AMD3DNOW 1
++#define HAVE_AMD3DNOWEXT 1
++#define HAVE_AVX 1
++#define HAVE_AVX2 1
++#define HAVE_AVX512 1
++#define HAVE_AVX512ICL 1
++#define HAVE_FMA3 1
++#define HAVE_FMA4 1
++#define HAVE_MMX 1
++#define HAVE_MMXEXT 1
++#define HAVE_SSE 1
++#define HAVE_SSE2 1
++#define HAVE_SSE3 1
++#define HAVE_SSE4 1
++#define HAVE_SSE42 1
++#define HAVE_SSSE3 1
++#define HAVE_XOP 1
++#define HAVE_CPUNOP 0
++#define HAVE_I686 1
++#define HAVE_MIPSFPU 0
++#define HAVE_MIPS32R2 0
++#define HAVE_MIPS32R5 0
++#define HAVE_MIPS64R2 0
++#define HAVE_MIPS32R6 0
++#define HAVE_MIPS64R6 0
++#define HAVE_MIPSDSP 0
++#define HAVE_MIPSDSPR2 0
++#define HAVE_MSA 0
++#define HAVE_LOONGSON2 0
++#define HAVE_LOONGSON3 0
++#define HAVE_MMI 0
++#define HAVE_LSX 0
++#define HAVE_LASX 0
++#define HAVE_ARMV5TE_EXTERNAL 0
++#define HAVE_ARMV6_EXTERNAL 0
++#define HAVE_ARMV6T2_EXTERNAL 0
++#define HAVE_ARMV8_EXTERNAL 0
++#define HAVE_NEON_EXTERNAL 0
++#define HAVE_VFP_EXTERNAL 0
++#define HAVE_VFPV3_EXTERNAL 0
++#define HAVE_SETEND_EXTERNAL 0
++#define HAVE_ALTIVEC_EXTERNAL 0
++#define HAVE_DCBZL_EXTERNAL 0
++#define HAVE_LDBRX_EXTERNAL 0
++#define HAVE_POWER8_EXTERNAL 0
++#define HAVE_PPC4XX_EXTERNAL 0
++#define HAVE_VSX_EXTERNAL 0
++#define HAVE_AESNI_EXTERNAL 1
++#define HAVE_AMD3DNOW_EXTERNAL 1
++#define HAVE_AMD3DNOWEXT_EXTERNAL 1
++#define HAVE_AVX_EXTERNAL 1
++#define HAVE_AVX2_EXTERNAL 1
++#define HAVE_AVX512_EXTERNAL 1
++#define HAVE_AVX512ICL_EXTERNAL 0
++#define HAVE_FMA3_EXTERNAL 1
++#define HAVE_FMA4_EXTERNAL 1
++#define HAVE_MMX_EXTERNAL 1
++#define HAVE_MMXEXT_EXTERNAL 1
++#define HAVE_SSE_EXTERNAL 1
++#define HAVE_SSE2_EXTERNAL 1
++#define HAVE_SSE3_EXTERNAL 1
++#define HAVE_SSE4_EXTERNAL 1
++#define HAVE_SSE42_EXTERNAL 1
++#define HAVE_SSSE3_EXTERNAL 1
++#define HAVE_XOP_EXTERNAL 1
++#define HAVE_CPUNOP_EXTERNAL 0
++#define HAVE_I686_EXTERNAL 0
++#define HAVE_MIPSFPU_EXTERNAL 0
++#define HAVE_MIPS32R2_EXTERNAL 0
++#define HAVE_MIPS32R5_EXTERNAL 0
++#define HAVE_MIPS64R2_EXTERNAL 0
++#define HAVE_MIPS32R6_EXTERNAL 0
++#define HAVE_MIPS64R6_EXTERNAL 0
++#define HAVE_MIPSDSP_EXTERNAL 0
++#define HAVE_MIPSDSPR2_EXTERNAL 0
++#define HAVE_MSA_EXTERNAL 0
++#define HAVE_LOONGSON2_EXTERNAL 0
++#define HAVE_LOONGSON3_EXTERNAL 0
++#define HAVE_MMI_EXTERNAL 0
++#define HAVE_LSX_EXTERNAL 0
++#define HAVE_LASX_EXTERNAL 0
++#define HAVE_ARMV5TE_INLINE 0
++#define HAVE_ARMV6_INLINE 0
++#define HAVE_ARMV6T2_INLINE 0
++#define HAVE_ARMV8_INLINE 0
++#define HAVE_NEON_INLINE 0
++#define HAVE_VFP_INLINE 0
++#define HAVE_VFPV3_INLINE 0
++#define HAVE_SETEND_INLINE 0
++#define HAVE_ALTIVEC_INLINE 0
++#define HAVE_DCBZL_INLINE 0
++#define HAVE_LDBRX_INLINE 0
++#define HAVE_POWER8_INLINE 0
++#define HAVE_PPC4XX_INLINE 0
++#define HAVE_VSX_INLINE 0
++#define HAVE_AESNI_INLINE 1
++#define HAVE_AMD3DNOW_INLINE 1
++#define HAVE_AMD3DNOWEXT_INLINE 1
++#define HAVE_AVX_INLINE 1
++#define HAVE_AVX2_INLINE 1
++#define HAVE_AVX512_INLINE 1
++#define HAVE_AVX512ICL_INLINE 1
++#define HAVE_FMA3_INLINE 1
++#define HAVE_FMA4_INLINE 1
++#define HAVE_MMX_INLINE 1
++#define HAVE_MMXEXT_INLINE 1
++#define HAVE_SSE_INLINE 1
++#define HAVE_SSE2_INLINE 1
++#define HAVE_SSE3_INLINE 1
++#define HAVE_SSE4_INLINE 1
++#define HAVE_SSE42_INLINE 1
++#define HAVE_SSSE3_INLINE 1
++#define HAVE_XOP_INLINE 1
++#define HAVE_CPUNOP_INLINE 0
++#define HAVE_I686_INLINE 0
++#define HAVE_MIPSFPU_INLINE 0
++#define HAVE_MIPS32R2_INLINE 0
++#define HAVE_MIPS32R5_INLINE 0
++#define HAVE_MIPS64R2_INLINE 0
++#define HAVE_MIPS32R6_INLINE 0
++#define HAVE_MIPS64R6_INLINE 0
++#define HAVE_MIPSDSP_INLINE 0
++#define HAVE_MIPSDSPR2_INLINE 0
++#define HAVE_MSA_INLINE 0
++#define HAVE_LOONGSON2_INLINE 0
++#define HAVE_LOONGSON3_INLINE 0
++#define HAVE_MMI_INLINE 0
++#define HAVE_LSX_INLINE 0
++#define HAVE_LASX_INLINE 0
++#define HAVE_ALIGNED_STACK 0
++#define HAVE_FAST_64BIT 0
++#define HAVE_FAST_CLZ 1
++#define HAVE_FAST_CMOV 0
++#define HAVE_LOCAL_ALIGNED 1
++#define HAVE_SIMD_ALIGN_16 1
++#define HAVE_SIMD_ALIGN_32 1
++#define HAVE_SIMD_ALIGN_64 1
++#define HAVE_ATOMIC_CAS_PTR 0
++#define HAVE_MACHINE_RW_BARRIER 0
++#define HAVE_MEMORYBARRIER 0
++#define HAVE_MM_EMPTY 0
++#define HAVE_RDTSC 0
++#define HAVE_SEM_TIMEDWAIT 1
++#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
++#define HAVE_CABS 0
++#define HAVE_CEXP 0
++#define HAVE_INLINE_ASM 1
++#define HAVE_SYMVER 0
++#define HAVE_X86ASM 1
++#define HAVE_BIGENDIAN 0
++#define HAVE_FAST_UNALIGNED 1
++#define HAVE_ARPA_INET_H 0
++#define HAVE_ASM_TYPES_H 0
++#define HAVE_CDIO_PARANOIA_H 0
++#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
++#define HAVE_CUDA_H 0
++#define HAVE_DISPATCH_DISPATCH_H 0
++#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
++#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
++#define HAVE_DEV_IC_BT8XX_H 1
++#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
++#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
++#define HAVE_DIRECT_H 0
++#define HAVE_DIRENT_H 1
++#define HAVE_DXGIDEBUG_H 0
++#define HAVE_DXVA_H 0
++#define HAVE_ES2_GL_H 0
++#define HAVE_GSM_H 0
++#define HAVE_IO_H 0
++#define HAVE_LINUX_DMA_BUF_H 0
++#define HAVE_LINUX_PERF_EVENT_H 0
++#define HAVE_MACHINE_IOCTL_BT848_H 0
++#define HAVE_MACHINE_IOCTL_METEOR_H 0
++#define HAVE_MALLOC_H 0
++#define HAVE_OPENCV2_CORE_CORE_C_H 0
++#define HAVE_OPENGL_GL3_H 0
++#define HAVE_POLL_H 1
++#define HAVE_SYS_PARAM_H 1
++#define HAVE_SYS_RESOURCE_H 1
++#define HAVE_SYS_SELECT_H 1
++#define HAVE_SYS_SOUNDCARD_H 0
++#define HAVE_SYS_TIME_H 1
++#define HAVE_SYS_UN_H 1
++#define HAVE_SYS_VIDEOIO_H 1
++#define HAVE_TERMIOS_H 1
++#define HAVE_UDPLITE_H 0
++#define HAVE_UNISTD_H 1
++#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440 */
++#define HAVE_WINDOWS_H 0
++#define HAVE_WINSOCK2_H 0
++#define HAVE_INTRINSICS_NEON 0
++#define HAVE_ATANF 1
++#define HAVE_ATAN2F 1
++#define HAVE_CBRT 1
++#define HAVE_CBRTF 1
++#define HAVE_COPYSIGN 1
++#define HAVE_COSF 1
++#define HAVE_ERF 1
++#define HAVE_EXP2 1
++#define HAVE_EXP2F 1
++#define HAVE_EXPF 1
++#define HAVE_HYPOT 1
++#define HAVE_ISFINITE 1
++#define HAVE_ISINF 1
++#define HAVE_ISNAN 1
++#define HAVE_LDEXPF 1
++#define HAVE_LLRINT 1
++#define HAVE_LLRINTF 1
++#define HAVE_LOG2 1
++#define HAVE_LOG2F 1
++#define HAVE_LOG10F 1
++#define HAVE_LRINT 1
++#define HAVE_LRINTF 1
++#define HAVE_POWF 1
++#define HAVE_RINT 1
++#define HAVE_ROUND 1
++#define HAVE_ROUNDF 1
++#define HAVE_SINF 1
++#define HAVE_TRUNC 1
++#define HAVE_TRUNCF 1
++#define HAVE_DOS_PATHS 0
++#define HAVE_LIBC_MSVCRT 0
++#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
++#define HAVE_SECTION_DATA_REL_RO 1
++#define HAVE_THREADS 1
++#define HAVE_UWP 0
++#define HAVE_WINRT 0
++#define HAVE_ACCESS 1
++#define HAVE_ALIGNED_MALLOC 0
++#define HAVE_ARC4RANDOM 1
++#define HAVE_CLOCK_GETTIME 1
++#define HAVE_CLOSESOCKET 0
++#define HAVE_COMMANDLINETOARGVW 0
++#define HAVE_FCNTL 1
++#define HAVE_GETADDRINFO 0
++#define HAVE_GETAUXVAL 0
++#define HAVE_GETHRTIME 0
++#define HAVE_GETOPT 1
++#define HAVE_GETMODULEHANDLE 0
++#define HAVE_GETPROCESSAFFINITYMASK 0
++#define HAVE_GETPROCESSMEMORYINFO 0
++#define HAVE_GETPROCESSTIMES 0
++#define HAVE_GETRUSAGE 1
++#define HAVE_GETSTDHANDLE 0
++#define HAVE_GETSYSTEMTIMEASFILETIME 0
++#define HAVE_GETTIMEOFDAY 1
++#define HAVE_GLOB 1
++#define HAVE_GLXGETPROCADDRESS 0
++#define HAVE_GMTIME_R 1
++#define HAVE_INET_ATON 0
++#define HAVE_ISATTY 1
++#define HAVE_KBHIT 0
++#define HAVE_LOCALTIME_R 1
++#define HAVE_LSTAT 1
++#define HAVE_LZO1X_999_COMPRESS 0
++#define HAVE_MACH_ABSOLUTE_TIME 0
++#define HAVE_MAPVIEWOFFILE 0
++#define HAVE_MEMALIGN 0
++#define HAVE_MKSTEMP 1
++#define HAVE_MMAP 1
++#define HAVE_MPROTECT 1
++#define HAVE_NANOSLEEP 1
++#define HAVE_PEEKNAMEDPIPE 0
++#define HAVE_POSIX_MEMALIGN 1
++#define HAVE_PTHREAD_CANCEL 1
++#define HAVE_SCHED_GETAFFINITY 0
++#define HAVE_SECITEMIMPORT 0
++#define HAVE_SETCONSOLETEXTATTRIBUTE 0
++#define HAVE_SETCONSOLECTRLHANDLER 0
++#define HAVE_SETDLLDIRECTORY 0
++#define HAVE_SETMODE 0
++#define HAVE_SETRLIMIT 1
++#define HAVE_SLEEP 0
++#define HAVE_STRERROR_R 1
++#define HAVE_SYSCONF 1
++#define HAVE_SYSCTL 0 /* #define HAVE_SYSCTL 0 -- forced to 0 for Fuchsia */
++#define HAVE_USLEEP 1
++#define HAVE_UTGETOSTYPEFROMSTRING 0
++#define HAVE_VIRTUALALLOC 0
++#define HAVE_WGLGETPROCADDRESS 0
++#define HAVE_BCRYPT 0
++#define HAVE_VAAPI_DRM 0
++#define HAVE_VAAPI_X11 0
++#define HAVE_VDPAU_X11 0
++#define HAVE_PTHREADS 1
++#define HAVE_OS2THREADS 0
++#define HAVE_W32THREADS 0
++#define HAVE_AS_ARCH_DIRECTIVE 0
++#define HAVE_AS_DN_DIRECTIVE 0
++#define HAVE_AS_FPU_DIRECTIVE 0
++#define HAVE_AS_FUNC 0
++#define HAVE_AS_OBJECT_ARCH 0
++#define HAVE_ASM_MOD_Q 0
++#define HAVE_BLOCKS_EXTENSION 0
++/* #define HAVE_EBP_AVAILABLE 1 -- ebp selection is done by the chrome build */
++#define HAVE_EBX_AVAILABLE 1
++#define HAVE_GNU_AS 0
++#define HAVE_GNU_WINDRES 0
++#define HAVE_IBM_ASM 0
++#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 1
++#define HAVE_INLINE_ASM_LABELS 1
++#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
++#define HAVE_PRAGMA_DEPRECATED 1
++#define HAVE_RSYNC_CONTIMEOUT 1
++#define HAVE_SYMVER_ASM_LABEL 1
++#define HAVE_SYMVER_GNU_ASM 1
++#define HAVE_VFP_ARGS 0
++#define HAVE_XFORM_ASM 0
++#define HAVE_XMM_CLOBBERS 1
++#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
++#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
++#define HAVE_KCMVIDEOCODECTYPE_VP9 0
++#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
++#define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
++#define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
++#define HAVE_SOCKLEN_T 0
++#define HAVE_STRUCT_ADDRINFO 0
++#define HAVE_STRUCT_GROUP_SOURCE_REQ 0
++#define HAVE_STRUCT_IP_MREQ_SOURCE 0
++#define HAVE_STRUCT_IPV6_MREQ 0
++#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
++#define HAVE_STRUCT_POLLFD 0
++#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
++#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
++#define HAVE_STRUCT_SOCKADDR_IN6 0
++#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
++#define HAVE_STRUCT_SOCKADDR_STORAGE 0
++#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
++#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
++#define HAVE_GZIP 1
++#define HAVE_LIBDRM_GETFB2 0
++#define HAVE_MAKEINFO 1
++#define HAVE_MAKEINFO_HTML 0
++#define HAVE_OPENCL_D3D11 0
++#define HAVE_OPENCL_DRM_ARM 0
++#define HAVE_OPENCL_DRM_BEIGNET 0
++#define HAVE_OPENCL_DXVA2 0
++#define HAVE_OPENCL_VAAPI_BEIGNET 0
++#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
++#define HAVE_PERL 1
++#define HAVE_POD2MAN 1
++#define HAVE_TEXI2HTML 0
++#define HAVE_XMLLINT 1
++#define HAVE_ZLIB_GZIP 0
++#define CONFIG_DOC 0
++#define CONFIG_HTMLPAGES 0
++#define CONFIG_MANPAGES 0
++#define CONFIG_PODPAGES 0
++#define CONFIG_TXTPAGES 0
++#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
++#define CONFIG_AVIO_READING_EXAMPLE 1
++#define CONFIG_DECODE_AUDIO_EXAMPLE 1
++#define CONFIG_DECODE_VIDEO_EXAMPLE 1
++#define CONFIG_DEMUXING_DECODING_EXAMPLE 1
++#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
++#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
++#define CONFIG_EXTRACT_MVS_EXAMPLE 1
++#define CONFIG_FILTER_AUDIO_EXAMPLE 0
++#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
++#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
++#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
++#define CONFIG_HW_DECODE_EXAMPLE 1
++#define CONFIG_METADATA_EXAMPLE 1
++#define CONFIG_MUXING_EXAMPLE 0
++#define CONFIG_QSVDEC_EXAMPLE 0
++#define CONFIG_REMUXING_EXAMPLE 1
++#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
++#define CONFIG_SCALING_VIDEO_EXAMPLE 0
++#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
++#define CONFIG_TRANSCODING_EXAMPLE 0
++#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
++#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
++#define CONFIG_AVISYNTH 0
++#define CONFIG_FREI0R 0
++#define CONFIG_LIBCDIO 0
++#define CONFIG_LIBDAVS2 0
++#define CONFIG_LIBRUBBERBAND 0
++#define CONFIG_LIBVIDSTAB 0
++#define CONFIG_LIBX264 0
++#define CONFIG_LIBX265 0
++#define CONFIG_LIBXAVS 0
++#define CONFIG_LIBXAVS2 0
++#define CONFIG_LIBXVID 0
++#define CONFIG_DECKLINK 0
++#define CONFIG_LIBFDK_AAC 0
++#define CONFIG_LIBTLS 0
++#define CONFIG_GMP 0
++#define CONFIG_LIBARIBB24 0
++#define CONFIG_LIBLENSFUN 0
++#define CONFIG_LIBOPENCORE_AMRNB 0
++#define CONFIG_LIBOPENCORE_AMRWB 0
++#define CONFIG_LIBVO_AMRWBENC 0
++#define CONFIG_MBEDTLS 0
++#define CONFIG_RKMPP 0
++#define CONFIG_LIBSMBCLIENT 0
++#define CONFIG_CHROMAPRINT 0
++#define CONFIG_GCRYPT 0
++#define CONFIG_GNUTLS 0
++#define CONFIG_JNI 0
++#define CONFIG_LADSPA 0
++#define CONFIG_LIBAOM 0
++#define CONFIG_LIBASS 0
++#define CONFIG_LIBBLURAY 0
++#define CONFIG_LIBBS2B 0
++#define CONFIG_LIBCACA 0
++#define CONFIG_LIBCELT 0
++#define CONFIG_LIBCODEC2 0
++#define CONFIG_LIBDAV1D 0
++#define CONFIG_LIBDC1394 0
++#define CONFIG_LIBDRM 0
++#define CONFIG_LIBFLITE 0
++#define CONFIG_LIBFONTCONFIG 0
++#define CONFIG_LIBFREETYPE 0
++#define CONFIG_LIBFRIBIDI 0
++#define CONFIG_LIBGLSLANG 0
++#define CONFIG_LIBGME 0
++#define CONFIG_LIBGSM 0
++#define CONFIG_LIBIEC61883 0
++#define CONFIG_LIBILBC 0
++#define CONFIG_LIBJACK 0
++#define CONFIG_LIBKLVANC 0
++#define CONFIG_LIBKVAZAAR 0
++#define CONFIG_LIBMODPLUG 0
++#define CONFIG_LIBMP3LAME 0
++#define CONFIG_LIBMYSOFA 0
++#define CONFIG_LIBOPENCV 0
++#define CONFIG_LIBOPENH264 0
++#define CONFIG_LIBOPENJPEG 0
++#define CONFIG_LIBOPENMPT 0
++#define CONFIG_LIBOPENVINO 0
++#define CONFIG_LIBOPUS 1
++#define CONFIG_LIBPLACEBO 0
++#define CONFIG_LIBPULSE 0
++#define CONFIG_LIBRABBITMQ 0
++#define CONFIG_LIBRAV1E 0
++#define CONFIG_LIBRIST 0
++#define CONFIG_LIBRSVG 0
++#define CONFIG_LIBRTMP 0
++#define CONFIG_LIBSHADERC 0
++#define CONFIG_LIBSHINE 0
++#define CONFIG_LIBSMBCLIENT 0
++#define CONFIG_LIBSNAPPY 0
++#define CONFIG_LIBSOXR 0
++#define CONFIG_LIBSPEEX 0
++#define CONFIG_LIBSRT 0
++#define CONFIG_LIBSSH 0
++#define CONFIG_LIBSVTAV1 0
++#define CONFIG_LIBTENSORFLOW 0
++#define CONFIG_LIBTESSERACT 0
++#define CONFIG_LIBTHEORA 0
++#define CONFIG_LIBTWOLAME 0
++#define CONFIG_LIBUAVS3D 0
++#define CONFIG_LIBV4L2 0
++#define CONFIG_LIBVMAF 0
++#define CONFIG_LIBVORBIS 0
++#define CONFIG_LIBVPX 0
++#define CONFIG_LIBWEBP 0
++#define CONFIG_LIBXML2 0
++#define CONFIG_LIBZIMG 0
++#define CONFIG_LIBZMQ 0
++#define CONFIG_LIBZVBI 0
++#define CONFIG_LV2 0
++#define CONFIG_MEDIACODEC 0
++#define CONFIG_OPENAL 0
++#define CONFIG_OPENGL 0
++#define CONFIG_OPENSSL 0
++#define CONFIG_POCKETSPHINX 0
++#define CONFIG_VAPOURSYNTH 0
++#define CONFIG_ALSA 0
++#define CONFIG_APPKIT 0
++#define CONFIG_AVFOUNDATION 0
++#define CONFIG_BZLIB 0
++#define CONFIG_COREIMAGE 0
++#define CONFIG_ICONV 0
++#define CONFIG_LIBXCB 0
++#define CONFIG_LIBXCB_SHM 0
++#define CONFIG_LIBXCB_SHAPE 0
++#define CONFIG_LIBXCB_XFIXES 0
++#define CONFIG_LZMA 0
++#define CONFIG_MEDIAFOUNDATION 0
++#define CONFIG_METAL 0
++#define CONFIG_SCHANNEL 0
++#define CONFIG_SDL2 0
++#define CONFIG_SECURETRANSPORT 0
++#define CONFIG_SNDIO 0
++#define CONFIG_XLIB 0
++#define CONFIG_ZLIB 0
++#define CONFIG_CUDA_NVCC 0
++#define CONFIG_CUDA_SDK 0
++#define CONFIG_LIBNPP 0
++#define CONFIG_LIBMFX 0
++#define CONFIG_MMAL 0
++#define CONFIG_OMX 0
++#define CONFIG_OPENCL 0
++#define CONFIG_AMF 0
++#define CONFIG_AUDIOTOOLBOX 0
++#define CONFIG_CRYSTALHD 0
++#define CONFIG_CUDA 0
++#define CONFIG_CUDA_LLVM 0
++#define CONFIG_CUVID 0
++#define CONFIG_D3D11VA 0
++#define CONFIG_DXVA2 0
++#define CONFIG_FFNVCODEC 0
++#define CONFIG_NVDEC 0
++#define CONFIG_NVENC 0
++#define CONFIG_VAAPI 0
++#define CONFIG_VDPAU 0
++#define CONFIG_VIDEOTOOLBOX 0
++#define CONFIG_VULKAN 0
++#define CONFIG_V4L2_M2M 0
++#define CONFIG_FTRAPV 0
++#define CONFIG_GRAY 0
++#define CONFIG_HARDCODED_TABLES 0
++#define CONFIG_OMX_RPI 0
++#define CONFIG_RUNTIME_CPUDETECT 1
++#define CONFIG_SAFE_BITSTREAM_READER 1
++#define CONFIG_SHARED 0
++#define CONFIG_SMALL 0
++#define CONFIG_STATIC 1
++#define CONFIG_SWSCALE_ALPHA 1
++#define CONFIG_GPL 0
++#define CONFIG_NONFREE 0
++#define CONFIG_VERSION3 0
++#define CONFIG_AVDEVICE 0
++#define CONFIG_AVFILTER 0
++#define CONFIG_SWSCALE 0
++#define CONFIG_POSTPROC 0
++#define CONFIG_AVFORMAT 1
++#define CONFIG_AVCODEC 1
++#define CONFIG_SWRESAMPLE 0
++#define CONFIG_AVUTIL 1
++#define CONFIG_FFPLAY 0
++#define CONFIG_FFPROBE 0
++#define CONFIG_FFMPEG 0
++#define CONFIG_DCT 1
++#define CONFIG_DWT 0
++#define CONFIG_ERROR_RESILIENCE 0
++#define CONFIG_FAAN 0
++#define CONFIG_FAST_UNALIGNED 1
++#define CONFIG_FFT 1
++#define CONFIG_LSP 0
++#define CONFIG_MDCT 1
++#define CONFIG_PIXELUTILS 0
++#define CONFIG_NETWORK 0
++#define CONFIG_RDFT 1
++#define CONFIG_AUTODETECT 0
++#define CONFIG_FONTCONFIG 0
++#define CONFIG_LARGE_TESTS 1
++#define CONFIG_LINUX_PERF 0
++#define CONFIG_MACOS_KPERF 0
++#define CONFIG_MEMORY_POISONING 0
++#define CONFIG_NEON_CLOBBER_TEST 0
++#define CONFIG_OSSFUZZ 0
++#define CONFIG_PIC 1
++#define CONFIG_PTX_COMPRESSION 0
++#define CONFIG_THUMB 0
++#define CONFIG_VALGRIND_BACKTRACE 0
++#define CONFIG_XMM_CLOBBER_TEST 0
++#define CONFIG_BSFS 0
++#define CONFIG_DECODERS 1
++#define CONFIG_ENCODERS 0
++#define CONFIG_HWACCELS 0
++#define CONFIG_PARSERS 1
++#define CONFIG_INDEVS 0
++#define CONFIG_OUTDEVS 0
++#define CONFIG_FILTERS 0
++#define CONFIG_DEMUXERS 1
++#define CONFIG_MUXERS 0
++#define CONFIG_PROTOCOLS 0
++#define CONFIG_AANDCTTABLES 0
++#define CONFIG_AC3DSP 0
++#define CONFIG_ADTS_HEADER 1
++#define CONFIG_ATSC_A53 1
++#define CONFIG_AUDIO_FRAME_QUEUE 0
++#define CONFIG_AUDIODSP 0
++#define CONFIG_BLOCKDSP 0
++#define CONFIG_BSWAPDSP 0
++#define CONFIG_CABAC 1
++#define CONFIG_CBS 0
++#define CONFIG_CBS_AV1 0
++#define CONFIG_CBS_H264 0
++#define CONFIG_CBS_H265 0
++#define CONFIG_CBS_JPEG 0
++#define CONFIG_CBS_MPEG2 0
++#define CONFIG_CBS_VP9 0
++#define CONFIG_DEFLATE_WRAPPER 0
++#define CONFIG_DIRAC_PARSE 1
++#define CONFIG_DNN 0
++#define CONFIG_DOVI_RPU 0
++#define CONFIG_DVPROFILE 0
++#define CONFIG_EXIF 0
++#define CONFIG_FAANDCT 0
++#define CONFIG_FAANIDCT 0
++#define CONFIG_FDCTDSP 0
++#define CONFIG_FLACDSP 1
++#define CONFIG_FMTCONVERT 0
++#define CONFIG_FRAME_THREAD_ENCODER 0
++#define CONFIG_G722DSP 0
++#define CONFIG_GOLOMB 1
++#define CONFIG_GPLV3 0
++#define CONFIG_H263DSP 0
++#define CONFIG_H264CHROMA 1
++#define CONFIG_H264DSP 1
++#define CONFIG_H264PARSE 1
++#define CONFIG_H264PRED 1
++#define CONFIG_H264QPEL 1
++#define CONFIG_HEVCPARSE 0
++#define CONFIG_HPELDSP 1
++#define CONFIG_HUFFMAN 0
++#define CONFIG_HUFFYUVDSP 0
++#define CONFIG_HUFFYUVENCDSP 0
++#define CONFIG_IDCTDSP 0
++#define CONFIG_IIRFILTER 0
++#define CONFIG_MDCT15 1
++#define CONFIG_INFLATE_WRAPPER 0
++#define CONFIG_INTRAX8 0
++#define CONFIG_ISO_MEDIA 1
++#define CONFIG_IVIDSP 0
++#define CONFIG_JPEGTABLES 0
++#define CONFIG_LGPLV3 0
++#define CONFIG_LIBX262 0
++#define CONFIG_LLAUDDSP 0
++#define CONFIG_LLVIDDSP 0
++#define CONFIG_LLVIDENCDSP 0
++#define CONFIG_LPC 0
++#define CONFIG_LZF 0
++#define CONFIG_ME_CMP 0
++#define CONFIG_MPEG_ER 0
++#define CONFIG_MPEGAUDIO 1
++#define CONFIG_MPEGAUDIODSP 1
++#define CONFIG_MPEGAUDIOHEADER 1
++#define CONFIG_MPEG4AUDIO 1
++#define CONFIG_MPEGVIDEO 0
++#define CONFIG_MPEGVIDEODEC 0
++#define CONFIG_MPEGVIDEOENC 0
++#define CONFIG_MSS34DSP 0
++#define CONFIG_PIXBLOCKDSP 0
++#define CONFIG_QPELDSP 0
++#define CONFIG_QSV 0
++#define CONFIG_QSVDEC 0
++#define CONFIG_QSVENC 0
++#define CONFIG_QSVVPP 0
++#define CONFIG_RANGECODER 0
++#define CONFIG_RIFFDEC 1
++#define CONFIG_RIFFENC 0
++#define CONFIG_RTPDEC 0
++#define CONFIG_RTPENC_CHAIN 0
++#define CONFIG_RV34DSP 0
++#define CONFIG_SCENE_SAD 0
++#define CONFIG_SINEWIN 1
++#define CONFIG_SNAPPY 0
++#define CONFIG_SRTP 0
++#define CONFIG_STARTCODE 1
++#define CONFIG_TEXTUREDSP 0
++#define CONFIG_TEXTUREDSPENC 0
++#define CONFIG_TPELDSP 0
++#define CONFIG_VAAPI_1 0
++#define CONFIG_VAAPI_ENCODE 0
++#define CONFIG_VC1DSP 0
++#define CONFIG_VIDEODSP 1
++#define CONFIG_VP3DSP 1
++#define CONFIG_VP56DSP 0
++#define CONFIG_VP8DSP 1
++#define CONFIG_WMA_FREQS 0
++#define CONFIG_WMV2DSP 0
++#endif /* FFMPEG_CONFIG_H */
diff --git a/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config__components.h b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config__components.h
new file mode 100644
index 000000000000..17513983d93c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config__components.h
@@ -0,0 +1,2066 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/ia32/config_components.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/ia32/config_components.h
+@@ -0,0 +1,2063 @@
++/* Automatically generated by configure - do not modify! */
++#ifndef FFMPEG_CONFIG_COMPONENTS_H
++#define FFMPEG_CONFIG_COMPONENTS_H
++#define CONFIG_AAC_ADTSTOASC_BSF 0
++#define CONFIG_AV1_FRAME_MERGE_BSF 0
++#define CONFIG_AV1_FRAME_SPLIT_BSF 0
++#define CONFIG_AV1_METADATA_BSF 0
++#define CONFIG_CHOMP_BSF 0
++#define CONFIG_DUMP_EXTRADATA_BSF 0
++#define CONFIG_DCA_CORE_BSF 0
++#define CONFIG_DV_ERROR_MARKER_BSF 0
++#define CONFIG_EAC3_CORE_BSF 0
++#define CONFIG_EXTRACT_EXTRADATA_BSF 0
++#define CONFIG_FILTER_UNITS_BSF 0
++#define CONFIG_H264_METADATA_BSF 0
++#define CONFIG_H264_MP4TOANNEXB_BSF 0
++#define CONFIG_H264_REDUNDANT_PPS_BSF 0
++#define CONFIG_HAPQA_EXTRACT_BSF 0
++#define CONFIG_HEVC_METADATA_BSF 0
++#define CONFIG_HEVC_MP4TOANNEXB_BSF 0
++#define CONFIG_IMX_DUMP_HEADER_BSF 0
++#define CONFIG_MJPEG2JPEG_BSF 0
++#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
++#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
++#define CONFIG_MPEG2_METADATA_BSF 0
++#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
++#define CONFIG_MOV2TEXTSUB_BSF 0
++#define CONFIG_NOISE_BSF 0
++#define CONFIG_NULL_BSF 0
++#define CONFIG_OPUS_METADATA_BSF 0
++#define CONFIG_PCM_RECHUNK_BSF 0
++#define CONFIG_PRORES_METADATA_BSF 0
++#define CONFIG_REMOVE_EXTRADATA_BSF 0
++#define CONFIG_SETTS_BSF 0
++#define CONFIG_TEXT2MOVSUB_BSF 0
++#define CONFIG_TRACE_HEADERS_BSF 0
++#define CONFIG_TRUEHD_CORE_BSF 0
++#define CONFIG_VP9_METADATA_BSF 0
++#define CONFIG_VP9_RAW_REORDER_BSF 0
++#define CONFIG_VP9_SUPERFRAME_BSF 0
++#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0
++#define CONFIG_AASC_DECODER 0
++#define CONFIG_AIC_DECODER 0
++#define CONFIG_ALIAS_PIX_DECODER 0
++#define CONFIG_AGM_DECODER 0
++#define CONFIG_AMV_DECODER 0
++#define CONFIG_ANM_DECODER 0
++#define CONFIG_ANSI_DECODER 0
++#define CONFIG_APNG_DECODER 0
++#define CONFIG_ARBC_DECODER 0
++#define CONFIG_ARGO_DECODER 0
++#define CONFIG_ASV1_DECODER 0
++#define CONFIG_ASV2_DECODER 0
++#define CONFIG_AURA_DECODER 0
++#define CONFIG_AURA2_DECODER 0
++#define CONFIG_AVRP_DECODER 0
++#define CONFIG_AVRN_DECODER 0
++#define CONFIG_AVS_DECODER 0
++#define CONFIG_AVUI_DECODER 0
++#define CONFIG_AYUV_DECODER 0
++#define CONFIG_BETHSOFTVID_DECODER 0
++#define CONFIG_BFI_DECODER 0
++#define CONFIG_BINK_DECODER 0
++#define CONFIG_BITPACKED_DECODER 0
++#define CONFIG_BMP_DECODER 0
++#define CONFIG_BMV_VIDEO_DECODER 0
++#define CONFIG_BRENDER_PIX_DECODER 0
++#define CONFIG_C93_DECODER 0
++#define CONFIG_CAVS_DECODER 0
++#define CONFIG_CDGRAPHICS_DECODER 0
++#define CONFIG_CDTOONS_DECODER 0
++#define CONFIG_CDXL_DECODER 0
++#define CONFIG_CFHD_DECODER 0
++#define CONFIG_CINEPAK_DECODER 0
++#define CONFIG_CLEARVIDEO_DECODER 0
++#define CONFIG_CLJR_DECODER 0
++#define CONFIG_CLLC_DECODER 0
++#define CONFIG_COMFORTNOISE_DECODER 0
++#define CONFIG_CPIA_DECODER 0
++#define CONFIG_CRI_DECODER 0
++#define CONFIG_CSCD_DECODER 0
++#define CONFIG_CYUV_DECODER 0
++#define CONFIG_DDS_DECODER 0
++#define CONFIG_DFA_DECODER 0
++#define CONFIG_DIRAC_DECODER 0
++#define CONFIG_DNXHD_DECODER 0
++#define CONFIG_DPX_DECODER 0
++#define CONFIG_DSICINVIDEO_DECODER 0
++#define CONFIG_DVAUDIO_DECODER 0
++#define CONFIG_DVVIDEO_DECODER 0
++#define CONFIG_DXA_DECODER 0
++#define CONFIG_DXTORY_DECODER 0
++#define CONFIG_DXV_DECODER 0
++#define CONFIG_EACMV_DECODER 0
++#define CONFIG_EAMAD_DECODER 0
++#define CONFIG_EATGQ_DECODER 0
++#define CONFIG_EATGV_DECODER 0
++#define CONFIG_EATQI_DECODER 0
++#define CONFIG_EIGHTBPS_DECODER 0
++#define CONFIG_EIGHTSVX_EXP_DECODER 0
++#define CONFIG_EIGHTSVX_FIB_DECODER 0
++#define CONFIG_ESCAPE124_DECODER 0
++#define CONFIG_ESCAPE130_DECODER 0
++#define CONFIG_EXR_DECODER 0
++#define CONFIG_FFV1_DECODER 0
++#define CONFIG_FFVHUFF_DECODER 0
++#define CONFIG_FIC_DECODER 0
++#define CONFIG_FITS_DECODER 0
++#define CONFIG_FLASHSV_DECODER 0
++#define CONFIG_FLASHSV2_DECODER 0
++#define CONFIG_FLIC_DECODER 0
++#define CONFIG_FLV_DECODER 0
++#define CONFIG_FMVC_DECODER 0
++#define CONFIG_FOURXM_DECODER 0
++#define CONFIG_FRAPS_DECODER 0
++#define CONFIG_FRWU_DECODER 0
++#define CONFIG_G2M_DECODER 0
++#define CONFIG_GDV_DECODER 0
++#define CONFIG_GEM_DECODER 0
++#define CONFIG_GIF_DECODER 0
++#define CONFIG_H261_DECODER 0
++#define CONFIG_H263_DECODER 0
++#define CONFIG_H263I_DECODER 0
++#define CONFIG_H263P_DECODER 0
++#define CONFIG_H263_V4L2M2M_DECODER 0
++#define CONFIG_H264_DECODER 1
++#define CONFIG_H264_CRYSTALHD_DECODER 0
++#define CONFIG_H264_V4L2M2M_DECODER 0
++#define CONFIG_H264_MEDIACODEC_DECODER 0
++#define CONFIG_H264_MMAL_DECODER 0
++#define CONFIG_H264_QSV_DECODER 0
++#define CONFIG_H264_RKMPP_DECODER 0
++#define CONFIG_HAP_DECODER 0
++#define CONFIG_HEVC_DECODER 0
++#define CONFIG_HEVC_QSV_DECODER 0
++#define CONFIG_HEVC_RKMPP_DECODER 0
++#define CONFIG_HEVC_V4L2M2M_DECODER 0
++#define CONFIG_HNM4_VIDEO_DECODER 0
++#define CONFIG_HQ_HQA_DECODER 0
++#define CONFIG_HQX_DECODER 0
++#define CONFIG_HUFFYUV_DECODER 0
++#define CONFIG_HYMT_DECODER 0
++#define CONFIG_IDCIN_DECODER 0
++#define CONFIG_IFF_ILBM_DECODER 0
++#define CONFIG_IMM4_DECODER 0
++#define CONFIG_IMM5_DECODER 0
++#define CONFIG_INDEO2_DECODER 0
++#define CONFIG_INDEO3_DECODER 0
++#define CONFIG_INDEO4_DECODER 0
++#define CONFIG_INDEO5_DECODER 0
++#define CONFIG_INTERPLAY_VIDEO_DECODER 0
++#define CONFIG_IPU_DECODER 0
++#define CONFIG_JPEG2000_DECODER 0
++#define CONFIG_JPEGLS_DECODER 0
++#define CONFIG_JV_DECODER 0
++#define CONFIG_KGV1_DECODER 0
++#define CONFIG_KMVC_DECODER 0
++#define CONFIG_LAGARITH_DECODER 0
++#define CONFIG_LOCO_DECODER 0
++#define CONFIG_LSCR_DECODER 0
++#define CONFIG_M101_DECODER 0
++#define CONFIG_MAGICYUV_DECODER 0
++#define CONFIG_MDEC_DECODER 0
++#define CONFIG_MIMIC_DECODER 0
++#define CONFIG_MJPEG_DECODER 0
++#define CONFIG_MJPEGB_DECODER 0
++#define CONFIG_MMVIDEO_DECODER 0
++#define CONFIG_MOBICLIP_DECODER 0
++#define CONFIG_MOTIONPIXELS_DECODER 0
++#define CONFIG_MPEG1VIDEO_DECODER 0
++#define CONFIG_MPEG2VIDEO_DECODER 0
++#define CONFIG_MPEG4_DECODER 0
++#define CONFIG_MPEG4_CRYSTALHD_DECODER 0
++#define CONFIG_MPEG4_V4L2M2M_DECODER 0
++#define CONFIG_MPEG4_MMAL_DECODER 0
++#define CONFIG_MPEGVIDEO_DECODER 0
++#define CONFIG_MPEG1_V4L2M2M_DECODER 0
++#define CONFIG_MPEG2_MMAL_DECODER 0
++#define CONFIG_MPEG2_CRYSTALHD_DECODER 0
++#define CONFIG_MPEG2_V4L2M2M_DECODER 0
++#define CONFIG_MPEG2_QSV_DECODER 0
++#define CONFIG_MPEG2_MEDIACODEC_DECODER 0
++#define CONFIG_MSA1_DECODER 0
++#define CONFIG_MSCC_DECODER 0
++#define CONFIG_MSMPEG4V1_DECODER 0
++#define CONFIG_MSMPEG4V2_DECODER 0
++#define CONFIG_MSMPEG4V3_DECODER 0
++#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
++#define CONFIG_MSP2_DECODER 0
++#define CONFIG_MSRLE_DECODER 0
++#define CONFIG_MSS1_DECODER 0
++#define CONFIG_MSS2_DECODER 0
++#define CONFIG_MSVIDEO1_DECODER 0
++#define CONFIG_MSZH_DECODER 0
++#define CONFIG_MTS2_DECODER 0
++#define CONFIG_MV30_DECODER 0
++#define CONFIG_MVC1_DECODER 0
++#define CONFIG_MVC2_DECODER 0
++#define CONFIG_MVDV_DECODER 0
++#define CONFIG_MVHA_DECODER 0
++#define CONFIG_MWSC_DECODER 0
++#define CONFIG_MXPEG_DECODER 0
++#define CONFIG_NOTCHLC_DECODER 0
++#define CONFIG_NUV_DECODER 0
++#define CONFIG_PAF_VIDEO_DECODER 0
++#define CONFIG_PAM_DECODER 0
++#define CONFIG_PBM_DECODER 0
++#define CONFIG_PCX_DECODER 0
++#define CONFIG_PFM_DECODER 0
++#define CONFIG_PGM_DECODER 0
++#define CONFIG_PGMYUV_DECODER 0
++#define CONFIG_PGX_DECODER 0
++#define CONFIG_PHOTOCD_DECODER 0
++#define CONFIG_PICTOR_DECODER 0
++#define CONFIG_PIXLET_DECODER 0
++#define CONFIG_PNG_DECODER 0
++#define CONFIG_PPM_DECODER 0
++#define CONFIG_PRORES_DECODER 0
++#define CONFIG_PROSUMER_DECODER 0
++#define CONFIG_PSD_DECODER 0
++#define CONFIG_PTX_DECODER 0
++#define CONFIG_QDRAW_DECODER 0
++#define CONFIG_QPEG_DECODER 0
++#define CONFIG_QTRLE_DECODER 0
++#define CONFIG_R10K_DECODER 0
++#define CONFIG_R210_DECODER 0
++#define CONFIG_RASC_DECODER 0
++#define CONFIG_RAWVIDEO_DECODER 0
++#define CONFIG_RL2_DECODER 0
++#define CONFIG_ROQ_DECODER 0
++#define CONFIG_RPZA_DECODER 0
++#define CONFIG_RSCC_DECODER 0
++#define CONFIG_RV10_DECODER 0
++#define CONFIG_RV20_DECODER 0
++#define CONFIG_RV30_DECODER 0
++#define CONFIG_RV40_DECODER 0
++#define CONFIG_S302M_DECODER 0
++#define CONFIG_SANM_DECODER 0
++#define CONFIG_SCPR_DECODER 0
++#define CONFIG_SCREENPRESSO_DECODER 0
++#define CONFIG_SGA_DECODER 0
++#define CONFIG_SGI_DECODER 0
++#define CONFIG_SGIRLE_DECODER 0
++#define CONFIG_SHEERVIDEO_DECODER 0
++#define CONFIG_SIMBIOSIS_IMX_DECODER 0
++#define CONFIG_SMACKER_DECODER 0
++#define CONFIG_SMC_DECODER 0
++#define CONFIG_SMVJPEG_DECODER 0
++#define CONFIG_SNOW_DECODER 0
++#define CONFIG_SP5X_DECODER 0
++#define CONFIG_SPEEDHQ_DECODER 0
++#define CONFIG_SPEEX_DECODER 0
++#define CONFIG_SRGC_DECODER 0
++#define CONFIG_SUNRAST_DECODER 0
++#define CONFIG_SVQ1_DECODER 0
++#define CONFIG_SVQ3_DECODER 0
++#define CONFIG_TARGA_DECODER 0
++#define CONFIG_TARGA_Y216_DECODER 0
++#define CONFIG_TDSC_DECODER 0
++#define CONFIG_THEORA_DECODER 1
++#define CONFIG_THP_DECODER 0
++#define CONFIG_TIERTEXSEQVIDEO_DECODER 0
++#define CONFIG_TIFF_DECODER 0
++#define CONFIG_TMV_DECODER 0
++#define CONFIG_TRUEMOTION1_DECODER 0
++#define CONFIG_TRUEMOTION2_DECODER 0
++#define CONFIG_TRUEMOTION2RT_DECODER 0
++#define CONFIG_TSCC_DECODER 0
++#define CONFIG_TSCC2_DECODER 0
++#define CONFIG_TXD_DECODER 0
++#define CONFIG_ULTI_DECODER 0
++#define CONFIG_UTVIDEO_DECODER 0
++#define CONFIG_V210_DECODER 0
++#define CONFIG_V210X_DECODER 0
++#define CONFIG_V308_DECODER 0
++#define CONFIG_V408_DECODER 0
++#define CONFIG_V410_DECODER 0
++#define CONFIG_VB_DECODER 0
++#define CONFIG_VBLE_DECODER 0
++#define CONFIG_VC1_DECODER 0
++#define CONFIG_VC1_CRYSTALHD_DECODER 0
++#define CONFIG_VC1IMAGE_DECODER 0
++#define CONFIG_VC1_MMAL_DECODER 0
++#define CONFIG_VC1_QSV_DECODER 0
++#define CONFIG_VC1_V4L2M2M_DECODER 0
++#define CONFIG_VCR1_DECODER 0
++#define CONFIG_VMDVIDEO_DECODER 0
++#define CONFIG_VMNC_DECODER 0
++#define CONFIG_VP3_DECODER 1
++#define CONFIG_VP4_DECODER 0
++#define CONFIG_VP5_DECODER 0
++#define CONFIG_VP6_DECODER 0
++#define CONFIG_VP6A_DECODER 0
++#define CONFIG_VP6F_DECODER 0
++#define CONFIG_VP7_DECODER 0
++#define CONFIG_VP8_DECODER 1
++#define CONFIG_VP8_RKMPP_DECODER 0
++#define CONFIG_VP8_V4L2M2M_DECODER 0
++#define CONFIG_VP9_DECODER 0
++#define CONFIG_VP9_RKMPP_DECODER 0
++#define CONFIG_VP9_V4L2M2M_DECODER 0
++#define CONFIG_VQA_DECODER 0
++#define CONFIG_WEBP_DECODER 0
++#define CONFIG_WCMV_DECODER 0
++#define CONFIG_WRAPPED_AVFRAME_DECODER 0
++#define CONFIG_WMV1_DECODER 0
++#define CONFIG_WMV2_DECODER 0
++#define CONFIG_WMV3_DECODER 0
++#define CONFIG_WMV3_CRYSTALHD_DECODER 0
++#define CONFIG_WMV3IMAGE_DECODER 0
++#define CONFIG_WNV1_DECODER 0
++#define CONFIG_XAN_WC3_DECODER 0
++#define CONFIG_XAN_WC4_DECODER 0
++#define CONFIG_XBM_DECODER 0
++#define CONFIG_XFACE_DECODER 0
++#define CONFIG_XL_DECODER 0
++#define CONFIG_XPM_DECODER 0
++#define CONFIG_XWD_DECODER 0
++#define CONFIG_Y41P_DECODER 0
++#define CONFIG_YLC_DECODER 0
++#define CONFIG_YOP_DECODER 0
++#define CONFIG_YUV4_DECODER 0
++#define CONFIG_ZERO12V_DECODER 0
++#define CONFIG_ZEROCODEC_DECODER 0
++#define CONFIG_ZLIB_DECODER 0
++#define CONFIG_ZMBV_DECODER 0
++#define CONFIG_AAC_DECODER 1
++#define CONFIG_AAC_FIXED_DECODER 0
++#define CONFIG_AAC_LATM_DECODER 0
++#define CONFIG_AC3_DECODER 0
++#define CONFIG_AC3_FIXED_DECODER 0
++#define CONFIG_ACELP_KELVIN_DECODER 0
++#define CONFIG_ALAC_DECODER 0
++#define CONFIG_ALS_DECODER 0
++#define CONFIG_AMRNB_DECODER 0
++#define CONFIG_AMRWB_DECODER 0
++#define CONFIG_APE_DECODER 0
++#define CONFIG_APTX_DECODER 0
++#define CONFIG_APTX_HD_DECODER 0
++#define CONFIG_ATRAC1_DECODER 0
++#define CONFIG_ATRAC3_DECODER 0
++#define CONFIG_ATRAC3AL_DECODER 0
++#define CONFIG_ATRAC3P_DECODER 0
++#define CONFIG_ATRAC3PAL_DECODER 0
++#define CONFIG_ATRAC9_DECODER 0
++#define CONFIG_BINKAUDIO_DCT_DECODER 0
++#define CONFIG_BINKAUDIO_RDFT_DECODER 0
++#define CONFIG_BMV_AUDIO_DECODER 0
++#define CONFIG_COOK_DECODER 0
++#define CONFIG_DCA_DECODER 0
++#define CONFIG_DFPWM_DECODER 0
++#define CONFIG_DOLBY_E_DECODER 0
++#define CONFIG_DSD_LSBF_DECODER 0
++#define CONFIG_DSD_MSBF_DECODER 0
++#define CONFIG_DSD_LSBF_PLANAR_DECODER 0
++#define CONFIG_DSD_MSBF_PLANAR_DECODER 0
++#define CONFIG_DSICINAUDIO_DECODER 0
++#define CONFIG_DSS_SP_DECODER 0
++#define CONFIG_DST_DECODER 0
++#define CONFIG_EAC3_DECODER 0
++#define CONFIG_EVRC_DECODER 0
++#define CONFIG_FASTAUDIO_DECODER 0
++#define CONFIG_FFWAVESYNTH_DECODER 0
++#define CONFIG_FLAC_DECODER 1
++#define CONFIG_G723_1_DECODER 0
++#define CONFIG_G729_DECODER 0
++#define CONFIG_GSM_DECODER 0
++#define CONFIG_GSM_MS_DECODER 0
++#define CONFIG_HCA_DECODER 0
++#define CONFIG_HCOM_DECODER 0
++#define CONFIG_IAC_DECODER 0
++#define CONFIG_ILBC_DECODER 0
++#define CONFIG_IMC_DECODER 0
++#define CONFIG_INTERPLAY_ACM_DECODER 0
++#define CONFIG_MACE3_DECODER 0
++#define CONFIG_MACE6_DECODER 0
++#define CONFIG_METASOUND_DECODER 0
++#define CONFIG_MLP_DECODER 0
++#define CONFIG_MP1_DECODER 0
++#define CONFIG_MP1FLOAT_DECODER 0
++#define CONFIG_MP2_DECODER 0
++#define CONFIG_MP2FLOAT_DECODER 0
++#define CONFIG_MP3FLOAT_DECODER 0
++#define CONFIG_MP3_DECODER 1
++#define CONFIG_MP3ADUFLOAT_DECODER 0
++#define CONFIG_MP3ADU_DECODER 0
++#define CONFIG_MP3ON4FLOAT_DECODER 0
++#define CONFIG_MP3ON4_DECODER 0
++#define CONFIG_MPC7_DECODER 0
++#define CONFIG_MPC8_DECODER 0
++#define CONFIG_MSNSIREN_DECODER 0
++#define CONFIG_NELLYMOSER_DECODER 0
++#define CONFIG_ON2AVC_DECODER 0
++#define CONFIG_OPUS_DECODER 0
++#define CONFIG_PAF_AUDIO_DECODER 0
++#define CONFIG_QCELP_DECODER 0
++#define CONFIG_QDM2_DECODER 0
++#define CONFIG_QDMC_DECODER 0
++#define CONFIG_RA_144_DECODER 0
++#define CONFIG_RA_288_DECODER 0
++#define CONFIG_RALF_DECODER 0
++#define CONFIG_SBC_DECODER 0
++#define CONFIG_SHORTEN_DECODER 0
++#define CONFIG_SIPR_DECODER 0
++#define CONFIG_SIREN_DECODER 0
++#define CONFIG_SMACKAUD_DECODER 0
++#define CONFIG_SONIC_DECODER 0
++#define CONFIG_TAK_DECODER 0
++#define CONFIG_TRUEHD_DECODER 0
++#define CONFIG_TRUESPEECH_DECODER 0
++#define CONFIG_TTA_DECODER 0
++#define CONFIG_TWINVQ_DECODER 0
++#define CONFIG_VMDAUDIO_DECODER 0
++#define CONFIG_VORBIS_DECODER 1
++#define CONFIG_WAVPACK_DECODER 0
++#define CONFIG_WMALOSSLESS_DECODER 0
++#define CONFIG_WMAPRO_DECODER 0
++#define CONFIG_WMAV1_DECODER 0
++#define CONFIG_WMAV2_DECODER 0
++#define CONFIG_WMAVOICE_DECODER 0
++#define CONFIG_WS_SND1_DECODER 0
++#define CONFIG_XMA1_DECODER 0
++#define CONFIG_XMA2_DECODER 0
++#define CONFIG_PCM_ALAW_DECODER 1
++#define CONFIG_PCM_BLURAY_DECODER 0
++#define CONFIG_PCM_DVD_DECODER 0
++#define CONFIG_PCM_F16LE_DECODER 0
++#define CONFIG_PCM_F24LE_DECODER 0
++#define CONFIG_PCM_F32BE_DECODER 0
++#define CONFIG_PCM_F32LE_DECODER 1
++#define CONFIG_PCM_F64BE_DECODER 0
++#define CONFIG_PCM_F64LE_DECODER 0
++#define CONFIG_PCM_LXF_DECODER 0
++#define CONFIG_PCM_MULAW_DECODER 1
++#define CONFIG_PCM_S8_DECODER 0
++#define CONFIG_PCM_S8_PLANAR_DECODER 0
++#define CONFIG_PCM_S16BE_DECODER 1
++#define CONFIG_PCM_S16BE_PLANAR_DECODER 0
++#define CONFIG_PCM_S16LE_DECODER 1
++#define CONFIG_PCM_S16LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S24BE_DECODER 1
++#define CONFIG_PCM_S24DAUD_DECODER 0
++#define CONFIG_PCM_S24LE_DECODER 1
++#define CONFIG_PCM_S24LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S32BE_DECODER 0
++#define CONFIG_PCM_S32LE_DECODER 1
++#define CONFIG_PCM_S32LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S64BE_DECODER 0
++#define CONFIG_PCM_S64LE_DECODER 0
++#define CONFIG_PCM_SGA_DECODER 0
++#define CONFIG_PCM_U8_DECODER 1
++#define CONFIG_PCM_U16BE_DECODER 0
++#define CONFIG_PCM_U16LE_DECODER 0
++#define CONFIG_PCM_U24BE_DECODER 0
++#define CONFIG_PCM_U24LE_DECODER 0
++#define CONFIG_PCM_U32BE_DECODER 0
++#define CONFIG_PCM_U32LE_DECODER 0
++#define CONFIG_PCM_VIDC_DECODER 0
++#define CONFIG_DERF_DPCM_DECODER 0
++#define CONFIG_GREMLIN_DPCM_DECODER 0
++#define CONFIG_INTERPLAY_DPCM_DECODER 0
++#define CONFIG_ROQ_DPCM_DECODER 0
++#define CONFIG_SDX2_DPCM_DECODER 0
++#define CONFIG_SOL_DPCM_DECODER 0
++#define CONFIG_XAN_DPCM_DECODER 0
++#define CONFIG_ADPCM_4XM_DECODER 0
++#define CONFIG_ADPCM_ADX_DECODER 0
++#define CONFIG_ADPCM_AFC_DECODER 0
++#define CONFIG_ADPCM_AGM_DECODER 0
++#define CONFIG_ADPCM_AICA_DECODER 0
++#define CONFIG_ADPCM_ARGO_DECODER 0
++#define CONFIG_ADPCM_CT_DECODER 0
++#define CONFIG_ADPCM_DTK_DECODER 0
++#define CONFIG_ADPCM_EA_DECODER 0
++#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
++#define CONFIG_ADPCM_EA_R1_DECODER 0
++#define CONFIG_ADPCM_EA_R2_DECODER 0
++#define CONFIG_ADPCM_EA_R3_DECODER 0
++#define CONFIG_ADPCM_EA_XAS_DECODER 0
++#define CONFIG_ADPCM_G722_DECODER 0
++#define CONFIG_ADPCM_G726_DECODER 0
++#define CONFIG_ADPCM_G726LE_DECODER 0
++#define CONFIG_ADPCM_IMA_ACORN_DECODER 0
++#define CONFIG_ADPCM_IMA_AMV_DECODER 0
++#define CONFIG_ADPCM_IMA_ALP_DECODER 0
++#define CONFIG_ADPCM_IMA_APC_DECODER 0
++#define CONFIG_ADPCM_IMA_APM_DECODER 0
++#define CONFIG_ADPCM_IMA_CUNNING_DECODER 0
++#define CONFIG_ADPCM_IMA_DAT4_DECODER 0
++#define CONFIG_ADPCM_IMA_DK3_DECODER 0
++#define CONFIG_ADPCM_IMA_DK4_DECODER 0
++#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
++#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
++#define CONFIG_ADPCM_IMA_ISS_DECODER 0
++#define CONFIG_ADPCM_IMA_MOFLEX_DECODER 0
++#define CONFIG_ADPCM_IMA_MTF_DECODER 0
++#define CONFIG_ADPCM_IMA_OKI_DECODER 0
++#define CONFIG_ADPCM_IMA_QT_DECODER 0
++#define CONFIG_ADPCM_IMA_RAD_DECODER 0
++#define CONFIG_ADPCM_IMA_SSI_DECODER 0
++#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
++#define CONFIG_ADPCM_IMA_WAV_DECODER 0
++#define CONFIG_ADPCM_IMA_WS_DECODER 0
++#define CONFIG_ADPCM_MS_DECODER 0
++#define CONFIG_ADPCM_MTAF_DECODER 0
++#define CONFIG_ADPCM_PSX_DECODER 0
++#define CONFIG_ADPCM_SBPRO_2_DECODER 0
++#define CONFIG_ADPCM_SBPRO_3_DECODER 0
++#define CONFIG_ADPCM_SBPRO_4_DECODER 0
++#define CONFIG_ADPCM_SWF_DECODER 0
++#define CONFIG_ADPCM_THP_DECODER 0
++#define CONFIG_ADPCM_THP_LE_DECODER 0
++#define CONFIG_ADPCM_VIMA_DECODER 0
++#define CONFIG_ADPCM_XA_DECODER 0
++#define CONFIG_ADPCM_YAMAHA_DECODER 0
++#define CONFIG_ADPCM_ZORK_DECODER 0
++#define CONFIG_SSA_DECODER 0
++#define CONFIG_ASS_DECODER 0
++#define CONFIG_CCAPTION_DECODER 0
++#define CONFIG_DVBSUB_DECODER 0
++#define CONFIG_DVDSUB_DECODER 0
++#define CONFIG_JACOSUB_DECODER 0
++#define CONFIG_MICRODVD_DECODER 0
++#define CONFIG_MOVTEXT_DECODER 0
++#define CONFIG_MPL2_DECODER 0
++#define CONFIG_PGSSUB_DECODER 0
++#define CONFIG_PJS_DECODER 0
++#define CONFIG_REALTEXT_DECODER 0
++#define CONFIG_SAMI_DECODER 0
++#define CONFIG_SRT_DECODER 0
++#define CONFIG_STL_DECODER 0
++#define CONFIG_SUBRIP_DECODER 0
++#define CONFIG_SUBVIEWER_DECODER 0
++#define CONFIG_SUBVIEWER1_DECODER 0
++#define CONFIG_TEXT_DECODER 0
++#define CONFIG_VPLAYER_DECODER 0
++#define CONFIG_WEBVTT_DECODER 0
++#define CONFIG_XSUB_DECODER 0
++#define CONFIG_AAC_AT_DECODER 0
++#define CONFIG_AC3_AT_DECODER 0
++#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
++#define CONFIG_ALAC_AT_DECODER 0
++#define CONFIG_AMR_NB_AT_DECODER 0
++#define CONFIG_EAC3_AT_DECODER 0
++#define CONFIG_GSM_MS_AT_DECODER 0
++#define CONFIG_ILBC_AT_DECODER 0
++#define CONFIG_MP1_AT_DECODER 0
++#define CONFIG_MP2_AT_DECODER 0
++#define CONFIG_MP3_AT_DECODER 0
++#define CONFIG_PCM_ALAW_AT_DECODER 0
++#define CONFIG_PCM_MULAW_AT_DECODER 0
++#define CONFIG_QDMC_AT_DECODER 0
++#define CONFIG_QDM2_AT_DECODER 0
++#define CONFIG_LIBARIBB24_DECODER 0
++#define CONFIG_LIBCELT_DECODER 0
++#define CONFIG_LIBCODEC2_DECODER 0
++#define CONFIG_LIBDAV1D_DECODER 0
++#define CONFIG_LIBDAVS2_DECODER 0
++#define CONFIG_LIBFDK_AAC_DECODER 0
++#define CONFIG_LIBGSM_DECODER 0
++#define CONFIG_LIBGSM_MS_DECODER 0
++#define CONFIG_LIBILBC_DECODER 0
++#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
++#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
++#define CONFIG_LIBOPENJPEG_DECODER 0
++#define CONFIG_LIBOPUS_DECODER 1
++#define CONFIG_LIBRSVG_DECODER 0
++#define CONFIG_LIBSPEEX_DECODER 0
++#define CONFIG_LIBUAVS3D_DECODER 0
++#define CONFIG_LIBVORBIS_DECODER 0
++#define CONFIG_LIBVPX_VP8_DECODER 0
++#define CONFIG_LIBVPX_VP9_DECODER 0
++#define CONFIG_LIBZVBI_TELETEXT_DECODER 0
++#define CONFIG_BINTEXT_DECODER 0
++#define CONFIG_XBIN_DECODER 0
++#define CONFIG_IDF_DECODER 0
++#define CONFIG_LIBAOM_AV1_DECODER 0
++#define CONFIG_AV1_DECODER 0
++#define CONFIG_AV1_CUVID_DECODER 0
++#define CONFIG_AV1_QSV_DECODER 0
++#define CONFIG_LIBOPENH264_DECODER 0
++#define CONFIG_H264_CUVID_DECODER 0
++#define CONFIG_HEVC_CUVID_DECODER 0
++#define CONFIG_HEVC_MEDIACODEC_DECODER 0
++#define CONFIG_MJPEG_CUVID_DECODER 0
++#define CONFIG_MJPEG_QSV_DECODER 0
++#define CONFIG_MPEG1_CUVID_DECODER 0
++#define CONFIG_MPEG2_CUVID_DECODER 0
++#define CONFIG_MPEG4_CUVID_DECODER 0
++#define CONFIG_MPEG4_MEDIACODEC_DECODER 0
++#define CONFIG_VC1_CUVID_DECODER 0
++#define CONFIG_VP8_CUVID_DECODER 0
++#define CONFIG_VP8_MEDIACODEC_DECODER 0
++#define CONFIG_VP8_QSV_DECODER 0
++#define CONFIG_VP9_CUVID_DECODER 0
++#define CONFIG_VP9_MEDIACODEC_DECODER 0
++#define CONFIG_VP9_QSV_DECODER 0
++#define CONFIG_A64MULTI_ENCODER 0
++#define CONFIG_A64MULTI5_ENCODER 0
++#define CONFIG_ALIAS_PIX_ENCODER 0
++#define CONFIG_AMV_ENCODER 0
++#define CONFIG_APNG_ENCODER 0
++#define CONFIG_ASV1_ENCODER 0
++#define CONFIG_ASV2_ENCODER 0
++#define CONFIG_AVRP_ENCODER 0
++#define CONFIG_AVUI_ENCODER 0
++#define CONFIG_AYUV_ENCODER 0
++#define CONFIG_BITPACKED_ENCODER 0
++#define CONFIG_BMP_ENCODER 0
++#define CONFIG_CFHD_ENCODER 0
++#define CONFIG_CINEPAK_ENCODER 0
++#define CONFIG_CLJR_ENCODER 0
++#define CONFIG_COMFORTNOISE_ENCODER 0
++#define CONFIG_DNXHD_ENCODER 0
++#define CONFIG_DPX_ENCODER 0
++#define CONFIG_DVVIDEO_ENCODER 0
++#define CONFIG_EXR_ENCODER 0
++#define CONFIG_FFV1_ENCODER 0
++#define CONFIG_FFVHUFF_ENCODER 0
++#define CONFIG_FITS_ENCODER 0
++#define CONFIG_FLASHSV_ENCODER 0
++#define CONFIG_FLASHSV2_ENCODER 0
++#define CONFIG_FLV_ENCODER 0
++#define CONFIG_GIF_ENCODER 0
++#define CONFIG_H261_ENCODER 0
++#define CONFIG_H263_ENCODER 0
++#define CONFIG_H263P_ENCODER 0
++#define CONFIG_HAP_ENCODER 0
++#define CONFIG_HUFFYUV_ENCODER 0
++#define CONFIG_JPEG2000_ENCODER 0
++#define CONFIG_JPEGLS_ENCODER 0
++#define CONFIG_LJPEG_ENCODER 0
++#define CONFIG_MAGICYUV_ENCODER 0
++#define CONFIG_MJPEG_ENCODER 0
++#define CONFIG_MPEG1VIDEO_ENCODER 0
++#define CONFIG_MPEG2VIDEO_ENCODER 0
++#define CONFIG_MPEG4_ENCODER 0
++#define CONFIG_MSMPEG4V2_ENCODER 0
++#define CONFIG_MSMPEG4V3_ENCODER 0
++#define CONFIG_MSVIDEO1_ENCODER 0
++#define CONFIG_PAM_ENCODER 0
++#define CONFIG_PBM_ENCODER 0
++#define CONFIG_PCX_ENCODER 0
++#define CONFIG_PFM_ENCODER 0
++#define CONFIG_PGM_ENCODER 0
++#define CONFIG_PGMYUV_ENCODER 0
++#define CONFIG_PNG_ENCODER 0
++#define CONFIG_PPM_ENCODER 0
++#define CONFIG_PRORES_ENCODER 0
++#define CONFIG_PRORES_AW_ENCODER 0
++#define CONFIG_PRORES_KS_ENCODER 0
++#define CONFIG_QTRLE_ENCODER 0
++#define CONFIG_R10K_ENCODER 0
++#define CONFIG_R210_ENCODER 0
++#define CONFIG_RAWVIDEO_ENCODER 0
++#define CONFIG_ROQ_ENCODER 0
++#define CONFIG_RPZA_ENCODER 0
++#define CONFIG_RV10_ENCODER 0
++#define CONFIG_RV20_ENCODER 0
++#define CONFIG_S302M_ENCODER 0
++#define CONFIG_SGI_ENCODER 0
++#define CONFIG_SMC_ENCODER 0
++#define CONFIG_SNOW_ENCODER 0
++#define CONFIG_SPEEDHQ_ENCODER 0
++#define CONFIG_SUNRAST_ENCODER 0
++#define CONFIG_SVQ1_ENCODER 0
++#define CONFIG_TARGA_ENCODER 0
++#define CONFIG_TIFF_ENCODER 0
++#define CONFIG_UTVIDEO_ENCODER 0
++#define CONFIG_V210_ENCODER 0
++#define CONFIG_V308_ENCODER 0
++#define CONFIG_V408_ENCODER 0
++#define CONFIG_V410_ENCODER 0
++#define CONFIG_VC2_ENCODER 0
++#define CONFIG_WRAPPED_AVFRAME_ENCODER 0
++#define CONFIG_WMV1_ENCODER 0
++#define CONFIG_WMV2_ENCODER 0
++#define CONFIG_XBM_ENCODER 0
++#define CONFIG_XFACE_ENCODER 0
++#define CONFIG_XWD_ENCODER 0
++#define CONFIG_Y41P_ENCODER 0
++#define CONFIG_YUV4_ENCODER 0
++#define CONFIG_ZLIB_ENCODER 0
++#define CONFIG_ZMBV_ENCODER 0
++#define CONFIG_AAC_ENCODER 0
++#define CONFIG_AC3_ENCODER 0
++#define CONFIG_AC3_FIXED_ENCODER 0
++#define CONFIG_ALAC_ENCODER 0
++#define CONFIG_APTX_ENCODER 0
++#define CONFIG_APTX_HD_ENCODER 0
++#define CONFIG_DCA_ENCODER 0
++#define CONFIG_DFPWM_ENCODER 0
++#define CONFIG_EAC3_ENCODER 0
++#define CONFIG_FLAC_ENCODER 0
++#define CONFIG_G723_1_ENCODER 0
++#define CONFIG_MLP_ENCODER 0
++#define CONFIG_MP2_ENCODER 0
++#define CONFIG_MP2FIXED_ENCODER 0
++#define CONFIG_NELLYMOSER_ENCODER 0
++#define CONFIG_OPUS_ENCODER 0
++#define CONFIG_RA_144_ENCODER 0
++#define CONFIG_SBC_ENCODER 0
++#define CONFIG_SONIC_ENCODER 0
++#define CONFIG_SONIC_LS_ENCODER 0
++#define CONFIG_TRUEHD_ENCODER 0
++#define CONFIG_TTA_ENCODER 0
++#define CONFIG_VORBIS_ENCODER 0
++#define CONFIG_WAVPACK_ENCODER 0
++#define CONFIG_WMAV1_ENCODER 0
++#define CONFIG_WMAV2_ENCODER 0
++#define CONFIG_PCM_ALAW_ENCODER 0
++#define CONFIG_PCM_BLURAY_ENCODER 0
++#define CONFIG_PCM_DVD_ENCODER 0
++#define CONFIG_PCM_F32BE_ENCODER 0
++#define CONFIG_PCM_F32LE_ENCODER 0
++#define CONFIG_PCM_F64BE_ENCODER 0
++#define CONFIG_PCM_F64LE_ENCODER 0
++#define CONFIG_PCM_MULAW_ENCODER 0
++#define CONFIG_PCM_S8_ENCODER 0
++#define CONFIG_PCM_S8_PLANAR_ENCODER 0
++#define CONFIG_PCM_S16BE_ENCODER 0
++#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S16LE_ENCODER 0
++#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S24BE_ENCODER 0
++#define CONFIG_PCM_S24DAUD_ENCODER 0
++#define CONFIG_PCM_S24LE_ENCODER 0
++#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S32BE_ENCODER 0
++#define CONFIG_PCM_S32LE_ENCODER 0
++#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S64BE_ENCODER 0
++#define CONFIG_PCM_S64LE_ENCODER 0
++#define CONFIG_PCM_U8_ENCODER 0
++#define CONFIG_PCM_U16BE_ENCODER 0
++#define CONFIG_PCM_U16LE_ENCODER 0
++#define CONFIG_PCM_U24BE_ENCODER 0
++#define CONFIG_PCM_U24LE_ENCODER 0
++#define CONFIG_PCM_U32BE_ENCODER 0
++#define CONFIG_PCM_U32LE_ENCODER 0
++#define CONFIG_PCM_VIDC_ENCODER 0
++#define CONFIG_ROQ_DPCM_ENCODER 0
++#define CONFIG_ADPCM_ADX_ENCODER 0
++#define CONFIG_ADPCM_ARGO_ENCODER 0
++#define CONFIG_ADPCM_G722_ENCODER 0
++#define CONFIG_ADPCM_G726_ENCODER 0
++#define CONFIG_ADPCM_G726LE_ENCODER 0
++#define CONFIG_ADPCM_IMA_AMV_ENCODER 0
++#define CONFIG_ADPCM_IMA_ALP_ENCODER 0
++#define CONFIG_ADPCM_IMA_APM_ENCODER 0
++#define CONFIG_ADPCM_IMA_QT_ENCODER 0
++#define CONFIG_ADPCM_IMA_SSI_ENCODER 0
++#define CONFIG_ADPCM_IMA_WAV_ENCODER 0
++#define CONFIG_ADPCM_IMA_WS_ENCODER 0
++#define CONFIG_ADPCM_MS_ENCODER 0
++#define CONFIG_ADPCM_SWF_ENCODER 0
++#define CONFIG_ADPCM_YAMAHA_ENCODER 0
++#define CONFIG_SSA_ENCODER 0
++#define CONFIG_ASS_ENCODER 0
++#define CONFIG_DVBSUB_ENCODER 0
++#define CONFIG_DVDSUB_ENCODER 0
++#define CONFIG_MOVTEXT_ENCODER 0
++#define CONFIG_SRT_ENCODER 0
++#define CONFIG_SUBRIP_ENCODER 0
++#define CONFIG_TEXT_ENCODER 0
++#define CONFIG_TTML_ENCODER 0
++#define CONFIG_WEBVTT_ENCODER 0
++#define CONFIG_XSUB_ENCODER 0
++#define CONFIG_AAC_AT_ENCODER 0
++#define CONFIG_ALAC_AT_ENCODER 0
++#define CONFIG_ILBC_AT_ENCODER 0
++#define CONFIG_PCM_ALAW_AT_ENCODER 0
++#define CONFIG_PCM_MULAW_AT_ENCODER 0
++#define CONFIG_LIBAOM_AV1_ENCODER 0
++#define CONFIG_LIBCODEC2_ENCODER 0
++#define CONFIG_LIBFDK_AAC_ENCODER 0
++#define CONFIG_LIBGSM_ENCODER 0
++#define CONFIG_LIBGSM_MS_ENCODER 0
++#define CONFIG_LIBILBC_ENCODER 0
++#define CONFIG_LIBMP3LAME_ENCODER 0
++#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
++#define CONFIG_LIBOPENJPEG_ENCODER 0
++#define CONFIG_LIBOPUS_ENCODER 0
++#define CONFIG_LIBRAV1E_ENCODER 0
++#define CONFIG_LIBSHINE_ENCODER 0
++#define CONFIG_LIBSPEEX_ENCODER 0
++#define CONFIG_LIBSVTAV1_ENCODER 0
++#define CONFIG_LIBTHEORA_ENCODER 0
++#define CONFIG_LIBTWOLAME_ENCODER 0
++#define CONFIG_LIBVO_AMRWBENC_ENCODER 0
++#define CONFIG_LIBVORBIS_ENCODER 0
++#define CONFIG_LIBVPX_VP8_ENCODER 0
++#define CONFIG_LIBVPX_VP9_ENCODER 0
++#define CONFIG_LIBWEBP_ANIM_ENCODER 0
++#define CONFIG_LIBWEBP_ENCODER 0
++#define CONFIG_LIBX262_ENCODER 0
++#define CONFIG_LIBX264_ENCODER 0
++#define CONFIG_LIBX264RGB_ENCODER 0
++#define CONFIG_LIBX265_ENCODER 0
++#define CONFIG_LIBXAVS_ENCODER 0
++#define CONFIG_LIBXAVS2_ENCODER 0
++#define CONFIG_LIBXVID_ENCODER 0
++#define CONFIG_AAC_MF_ENCODER 0
++#define CONFIG_AC3_MF_ENCODER 0
++#define CONFIG_H263_V4L2M2M_ENCODER 0
++#define CONFIG_LIBOPENH264_ENCODER 0
++#define CONFIG_H264_AMF_ENCODER 0
++#define CONFIG_H264_MF_ENCODER 0
++#define CONFIG_H264_NVENC_ENCODER 0
++#define CONFIG_H264_OMX_ENCODER 0
++#define CONFIG_H264_QSV_ENCODER 0
++#define CONFIG_H264_V4L2M2M_ENCODER 0
++#define CONFIG_H264_VAAPI_ENCODER 0
++#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_HEVC_AMF_ENCODER 0
++#define CONFIG_HEVC_MF_ENCODER 0
++#define CONFIG_HEVC_NVENC_ENCODER 0
++#define CONFIG_HEVC_QSV_ENCODER 0
++#define CONFIG_HEVC_V4L2M2M_ENCODER 0
++#define CONFIG_HEVC_VAAPI_ENCODER 0
++#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_LIBKVAZAAR_ENCODER 0
++#define CONFIG_MJPEG_QSV_ENCODER 0
++#define CONFIG_MJPEG_VAAPI_ENCODER 0
++#define CONFIG_MP3_MF_ENCODER 0
++#define CONFIG_MPEG2_QSV_ENCODER 0
++#define CONFIG_MPEG2_VAAPI_ENCODER 0
++#define CONFIG_MPEG4_OMX_ENCODER 0
++#define CONFIG_MPEG4_V4L2M2M_ENCODER 0
++#define CONFIG_PRORES_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_VP8_V4L2M2M_ENCODER 0
++#define CONFIG_VP8_VAAPI_ENCODER 0
++#define CONFIG_VP9_VAAPI_ENCODER 0
++#define CONFIG_VP9_QSV_ENCODER 0
++#define CONFIG_AV1_D3D11VA_HWACCEL 0
++#define CONFIG_AV1_D3D11VA2_HWACCEL 0
++#define CONFIG_AV1_DXVA2_HWACCEL 0
++#define CONFIG_AV1_NVDEC_HWACCEL 0
++#define CONFIG_AV1_VAAPI_HWACCEL 0
++#define CONFIG_H263_VAAPI_HWACCEL 0
++#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_H264_D3D11VA_HWACCEL 0
++#define CONFIG_H264_D3D11VA2_HWACCEL 0
++#define CONFIG_H264_DXVA2_HWACCEL 0
++#define CONFIG_H264_NVDEC_HWACCEL 0
++#define CONFIG_H264_VAAPI_HWACCEL 0
++#define CONFIG_H264_VDPAU_HWACCEL 0
++#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_HEVC_D3D11VA_HWACCEL 0
++#define CONFIG_HEVC_D3D11VA2_HWACCEL 0
++#define CONFIG_HEVC_DXVA2_HWACCEL 0
++#define CONFIG_HEVC_NVDEC_HWACCEL 0
++#define CONFIG_HEVC_VAAPI_HWACCEL 0
++#define CONFIG_HEVC_VDPAU_HWACCEL 0
++#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MJPEG_NVDEC_HWACCEL 0
++#define CONFIG_MJPEG_VAAPI_HWACCEL 0
++#define CONFIG_MPEG1_NVDEC_HWACCEL 0
++#define CONFIG_MPEG1_VDPAU_HWACCEL 0
++#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MPEG2_D3D11VA_HWACCEL 0
++#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
++#define CONFIG_MPEG2_NVDEC_HWACCEL 0
++#define CONFIG_MPEG2_DXVA2_HWACCEL 0
++#define CONFIG_MPEG2_VAAPI_HWACCEL 0
++#define CONFIG_MPEG2_VDPAU_HWACCEL 0
++#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MPEG4_NVDEC_HWACCEL 0
++#define CONFIG_MPEG4_VAAPI_HWACCEL 0
++#define CONFIG_MPEG4_VDPAU_HWACCEL 0
++#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_PRORES_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_VC1_D3D11VA_HWACCEL 0
++#define CONFIG_VC1_D3D11VA2_HWACCEL 0
++#define CONFIG_VC1_DXVA2_HWACCEL 0
++#define CONFIG_VC1_NVDEC_HWACCEL 0
++#define CONFIG_VC1_VAAPI_HWACCEL 0
++#define CONFIG_VC1_VDPAU_HWACCEL 0
++#define CONFIG_VP8_NVDEC_HWACCEL 0
++#define CONFIG_VP8_VAAPI_HWACCEL 0
++#define CONFIG_VP9_D3D11VA_HWACCEL 0
++#define CONFIG_VP9_D3D11VA2_HWACCEL 0
++#define CONFIG_VP9_DXVA2_HWACCEL 0
++#define CONFIG_VP9_NVDEC_HWACCEL 0
++#define CONFIG_VP9_VAAPI_HWACCEL 0
++#define CONFIG_VP9_VDPAU_HWACCEL 0
++#define CONFIG_VP9_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_WMV3_D3D11VA_HWACCEL 0
++#define CONFIG_WMV3_D3D11VA2_HWACCEL 0
++#define CONFIG_WMV3_DXVA2_HWACCEL 0
++#define CONFIG_WMV3_NVDEC_HWACCEL 0
++#define CONFIG_WMV3_VAAPI_HWACCEL 0
++#define CONFIG_WMV3_VDPAU_HWACCEL 0
++#define CONFIG_AAC_PARSER 1
++#define CONFIG_AAC_LATM_PARSER 0
++#define CONFIG_AC3_PARSER 0
++#define CONFIG_ADX_PARSER 0
++#define CONFIG_AMR_PARSER 0
++#define CONFIG_AV1_PARSER 0
++#define CONFIG_AVS2_PARSER 0
++#define CONFIG_AVS3_PARSER 0
++#define CONFIG_BMP_PARSER 0
++#define CONFIG_CAVSVIDEO_PARSER 0
++#define CONFIG_COOK_PARSER 0
++#define CONFIG_CRI_PARSER 0
++#define CONFIG_DCA_PARSER 0
++#define CONFIG_DIRAC_PARSER 0
++#define CONFIG_DNXHD_PARSER 0
++#define CONFIG_DOLBY_E_PARSER 0
++#define CONFIG_DPX_PARSER 0
++#define CONFIG_DVAUDIO_PARSER 0
++#define CONFIG_DVBSUB_PARSER 0
++#define CONFIG_DVDSUB_PARSER 0
++#define CONFIG_DVD_NAV_PARSER 0
++#define CONFIG_FLAC_PARSER 1
++#define CONFIG_G723_1_PARSER 0
++#define CONFIG_G729_PARSER 0
++#define CONFIG_GIF_PARSER 0
++#define CONFIG_GSM_PARSER 0
++#define CONFIG_H261_PARSER 0
++#define CONFIG_H263_PARSER 0
++#define CONFIG_H264_PARSER 1
++#define CONFIG_HEVC_PARSER 0
++#define CONFIG_IPU_PARSER 0
++#define CONFIG_JPEG2000_PARSER 0
++#define CONFIG_MJPEG_PARSER 0
++#define CONFIG_MLP_PARSER 0
++#define CONFIG_MPEG4VIDEO_PARSER 0
++#define CONFIG_MPEGAUDIO_PARSER 1
++#define CONFIG_MPEGVIDEO_PARSER 0
++#define CONFIG_OPUS_PARSER 1
++#define CONFIG_PNG_PARSER 0
++#define CONFIG_PNM_PARSER 0
++#define CONFIG_RV30_PARSER 0
++#define CONFIG_RV40_PARSER 0
++#define CONFIG_SBC_PARSER 0
++#define CONFIG_SIPR_PARSER 0
++#define CONFIG_TAK_PARSER 0
++#define CONFIG_VC1_PARSER 0
++#define CONFIG_VORBIS_PARSER 1
++#define CONFIG_VP3_PARSER 1
++#define CONFIG_VP8_PARSER 1
++#define CONFIG_VP9_PARSER 1
++#define CONFIG_WEBP_PARSER 0
++#define CONFIG_XBM_PARSER 0
++#define CONFIG_XMA_PARSER 0
++#define CONFIG_ALSA_INDEV 0
++#define CONFIG_ANDROID_CAMERA_INDEV 0
++#define CONFIG_AVFOUNDATION_INDEV 0
++#define CONFIG_BKTR_INDEV 0
++#define CONFIG_DECKLINK_INDEV 0
++#define CONFIG_DSHOW_INDEV 0
++#define CONFIG_FBDEV_INDEV 0
++#define CONFIG_GDIGRAB_INDEV 0
++#define CONFIG_IEC61883_INDEV 0
++#define CONFIG_JACK_INDEV 0
++#define CONFIG_KMSGRAB_INDEV 0
++#define CONFIG_LAVFI_INDEV 0
++#define CONFIG_OPENAL_INDEV 0
++#define CONFIG_OSS_INDEV 0
++#define CONFIG_PULSE_INDEV 0
++#define CONFIG_SNDIO_INDEV 0
++#define CONFIG_V4L2_INDEV 0
++#define CONFIG_VFWCAP_INDEV 0
++#define CONFIG_XCBGRAB_INDEV 0
++#define CONFIG_LIBCDIO_INDEV 0
++#define CONFIG_LIBDC1394_INDEV 0
++#define CONFIG_ALSA_OUTDEV 0
++#define CONFIG_AUDIOTOOLBOX_OUTDEV 0
++#define CONFIG_CACA_OUTDEV 0
++#define CONFIG_DECKLINK_OUTDEV 0
++#define CONFIG_FBDEV_OUTDEV 0
++#define CONFIG_OPENGL_OUTDEV 0
++#define CONFIG_OSS_OUTDEV 0
++#define CONFIG_PULSE_OUTDEV 0
++#define CONFIG_SDL2_OUTDEV 0
++#define CONFIG_SNDIO_OUTDEV 0
++#define CONFIG_V4L2_OUTDEV 0
++#define CONFIG_XV_OUTDEV 0
++#define CONFIG_ABENCH_FILTER 0
++#define CONFIG_ACOMPRESSOR_FILTER 0
++#define CONFIG_ACONTRAST_FILTER 0
++#define CONFIG_ACOPY_FILTER 0
++#define CONFIG_ACUE_FILTER 0
++#define CONFIG_ACROSSFADE_FILTER 0
++#define CONFIG_ACROSSOVER_FILTER 0
++#define CONFIG_ACRUSHER_FILTER 0
++#define CONFIG_ADECLICK_FILTER 0
++#define CONFIG_ADECLIP_FILTER 0
++#define CONFIG_ADECORRELATE_FILTER 0
++#define CONFIG_ADELAY_FILTER 0
++#define CONFIG_ADENORM_FILTER 0
++#define CONFIG_ADERIVATIVE_FILTER 0
++#define CONFIG_ADYNAMICEQUALIZER_FILTER 0
++#define CONFIG_ADYNAMICSMOOTH_FILTER 0
++#define CONFIG_AECHO_FILTER 0
++#define CONFIG_AEMPHASIS_FILTER 0
++#define CONFIG_AEVAL_FILTER 0
++#define CONFIG_AEXCITER_FILTER 0
++#define CONFIG_AFADE_FILTER 0
++#define CONFIG_AFFTDN_FILTER 0
++#define CONFIG_AFFTFILT_FILTER 0
++#define CONFIG_AFIR_FILTER 0
++#define CONFIG_AFORMAT_FILTER 0
++#define CONFIG_AFREQSHIFT_FILTER 0
++#define CONFIG_AFWTDN_FILTER 0
++#define CONFIG_AGATE_FILTER 0
++#define CONFIG_AIIR_FILTER 0
++#define CONFIG_AINTEGRAL_FILTER 0
++#define CONFIG_AINTERLEAVE_FILTER 0
++#define CONFIG_ALATENCY_FILTER 0
++#define CONFIG_ALIMITER_FILTER 0
++#define CONFIG_ALLPASS_FILTER 0
++#define CONFIG_ALOOP_FILTER 0
++#define CONFIG_AMERGE_FILTER 0
++#define CONFIG_AMETADATA_FILTER 0
++#define CONFIG_AMIX_FILTER 0
++#define CONFIG_AMULTIPLY_FILTER 0
++#define CONFIG_ANEQUALIZER_FILTER 0
++#define CONFIG_ANLMDN_FILTER 0
++#define CONFIG_ANLMF_FILTER 0
++#define CONFIG_ANLMS_FILTER 0
++#define CONFIG_ANULL_FILTER 0
++#define CONFIG_APAD_FILTER 0
++#define CONFIG_APERMS_FILTER 0
++#define CONFIG_APHASER_FILTER 0
++#define CONFIG_APHASESHIFT_FILTER 0
++#define CONFIG_APSYCLIP_FILTER 0
++#define CONFIG_APULSATOR_FILTER 0
++#define CONFIG_AREALTIME_FILTER 0
++#define CONFIG_ARESAMPLE_FILTER 0
++#define CONFIG_AREVERSE_FILTER 0
++#define CONFIG_ARNNDN_FILTER 0
++#define CONFIG_ASDR_FILTER 0
++#define CONFIG_ASEGMENT_FILTER 0
++#define CONFIG_ASELECT_FILTER 0
++#define CONFIG_ASENDCMD_FILTER 0
++#define CONFIG_ASETNSAMPLES_FILTER 0
++#define CONFIG_ASETPTS_FILTER 0
++#define CONFIG_ASETRATE_FILTER 0
++#define CONFIG_ASETTB_FILTER 0
++#define CONFIG_ASHOWINFO_FILTER 0
++#define CONFIG_ASIDEDATA_FILTER 0
++#define CONFIG_ASOFTCLIP_FILTER 0
++#define CONFIG_ASPECTRALSTATS_FILTER 0
++#define CONFIG_ASPLIT_FILTER 0
++#define CONFIG_ASR_FILTER 0
++#define CONFIG_ASTATS_FILTER 0
++#define CONFIG_ASTREAMSELECT_FILTER 0
++#define CONFIG_ASUBBOOST_FILTER 0
++#define CONFIG_ASUBCUT_FILTER 0
++#define CONFIG_ASUPERCUT_FILTER 0
++#define CONFIG_ASUPERPASS_FILTER 0
++#define CONFIG_ASUPERSTOP_FILTER 0
++#define CONFIG_ATEMPO_FILTER 0
++#define CONFIG_ATILT_FILTER 0
++#define CONFIG_ATRIM_FILTER 0
++#define CONFIG_AXCORRELATE_FILTER 0
++#define CONFIG_AZMQ_FILTER 0
++#define CONFIG_BANDPASS_FILTER 0
++#define CONFIG_BANDREJECT_FILTER 0
++#define CONFIG_BASS_FILTER 0
++#define CONFIG_BIQUAD_FILTER 0
++#define CONFIG_BS2B_FILTER 0
++#define CONFIG_CHANNELMAP_FILTER 0
++#define CONFIG_CHANNELSPLIT_FILTER 0
++#define CONFIG_CHORUS_FILTER 0
++#define CONFIG_COMPAND_FILTER 0
++#define CONFIG_COMPENSATIONDELAY_FILTER 0
++#define CONFIG_CROSSFEED_FILTER 0
++#define CONFIG_CRYSTALIZER_FILTER 0
++#define CONFIG_DCSHIFT_FILTER 0
++#define CONFIG_DEESSER_FILTER 0
++#define CONFIG_DIALOGUENHANCE_FILTER 0
++#define CONFIG_DRMETER_FILTER 0
++#define CONFIG_DYNAUDNORM_FILTER 0
++#define CONFIG_EARWAX_FILTER 0
++#define CONFIG_EBUR128_FILTER 0
++#define CONFIG_EQUALIZER_FILTER 0
++#define CONFIG_EXTRASTEREO_FILTER 0
++#define CONFIG_FIREQUALIZER_FILTER 0
++#define CONFIG_FLANGER_FILTER 0
++#define CONFIG_HAAS_FILTER 0
++#define CONFIG_HDCD_FILTER 0
++#define CONFIG_HEADPHONE_FILTER 0
++#define CONFIG_HIGHPASS_FILTER 0
++#define CONFIG_HIGHSHELF_FILTER 0
++#define CONFIG_JOIN_FILTER 0
++#define CONFIG_LADSPA_FILTER 0
++#define CONFIG_LOUDNORM_FILTER 0
++#define CONFIG_LOWPASS_FILTER 0
++#define CONFIG_LOWSHELF_FILTER 0
++#define CONFIG_LV2_FILTER 0
++#define CONFIG_MCOMPAND_FILTER 0
++#define CONFIG_PAN_FILTER 0
++#define CONFIG_REPLAYGAIN_FILTER 0
++#define CONFIG_RUBBERBAND_FILTER 0
++#define CONFIG_SIDECHAINCOMPRESS_FILTER 0
++#define CONFIG_SIDECHAINGATE_FILTER 0
++#define CONFIG_SILENCEDETECT_FILTER 0
++#define CONFIG_SILENCEREMOVE_FILTER 0
++#define CONFIG_SOFALIZER_FILTER 0
++#define CONFIG_SPEECHNORM_FILTER 0
++#define CONFIG_STEREOTOOLS_FILTER 0
++#define CONFIG_STEREOWIDEN_FILTER 0
++#define CONFIG_SUPEREQUALIZER_FILTER 0
++#define CONFIG_SURROUND_FILTER 0
++#define CONFIG_TREBLE_FILTER 0
++#define CONFIG_TREMOLO_FILTER 0
++#define CONFIG_VIBRATO_FILTER 0
++#define CONFIG_VOLUME_FILTER 0
++#define CONFIG_VOLUMEDETECT_FILTER 0
++#define CONFIG_AEVALSRC_FILTER 0
++#define CONFIG_AFIRSRC_FILTER 0
++#define CONFIG_ANOISESRC_FILTER 0
++#define CONFIG_ANULLSRC_FILTER 0
++#define CONFIG_FLITE_FILTER 0
++#define CONFIG_HILBERT_FILTER 0
++#define CONFIG_SINC_FILTER 0
++#define CONFIG_SINE_FILTER 0
++#define CONFIG_ANULLSINK_FILTER 0
++#define CONFIG_ADDROI_FILTER 0
++#define CONFIG_ALPHAEXTRACT_FILTER 0
++#define CONFIG_ALPHAMERGE_FILTER 0
++#define CONFIG_AMPLIFY_FILTER 0
++#define CONFIG_ASS_FILTER 0
++#define CONFIG_ATADENOISE_FILTER 0
++#define CONFIG_AVGBLUR_FILTER 0
++#define CONFIG_AVGBLUR_OPENCL_FILTER 0
++#define CONFIG_AVGBLUR_VULKAN_FILTER 0
++#define CONFIG_BBOX_FILTER 0
++#define CONFIG_BENCH_FILTER 0
++#define CONFIG_BILATERAL_FILTER 0
++#define CONFIG_BITPLANENOISE_FILTER 0
++#define CONFIG_BLACKDETECT_FILTER 0
++#define CONFIG_BLACKFRAME_FILTER 0
++#define CONFIG_BLEND_FILTER 0
++#define CONFIG_BLEND_VULKAN_FILTER 0
++#define CONFIG_BM3D_FILTER 0
++#define CONFIG_BOXBLUR_FILTER 0
++#define CONFIG_BOXBLUR_OPENCL_FILTER 0
++#define CONFIG_BWDIF_FILTER 0
++#define CONFIG_CAS_FILTER 0
++#define CONFIG_CHROMABER_VULKAN_FILTER 0
++#define CONFIG_CHROMAHOLD_FILTER 0
++#define CONFIG_CHROMAKEY_FILTER 0
++#define CONFIG_CHROMANR_FILTER 0
++#define CONFIG_CHROMASHIFT_FILTER 0
++#define CONFIG_CIESCOPE_FILTER 0
++#define CONFIG_CODECVIEW_FILTER 0
++#define CONFIG_COLORBALANCE_FILTER 0
++#define CONFIG_COLORCHANNELMIXER_FILTER 0
++#define CONFIG_COLORCONTRAST_FILTER 0
++#define CONFIG_COLORCORRECT_FILTER 0
++#define CONFIG_COLORIZE_FILTER 0
++#define CONFIG_COLORKEY_FILTER 0
++#define CONFIG_COLORKEY_OPENCL_FILTER 0
++#define CONFIG_COLORHOLD_FILTER 0
++#define CONFIG_COLORLEVELS_FILTER 0
++#define CONFIG_COLORMATRIX_FILTER 0
++#define CONFIG_COLORSPACE_FILTER 0
++#define CONFIG_COLORTEMPERATURE_FILTER 0
++#define CONFIG_CONVOLUTION_FILTER 0
++#define CONFIG_CONVOLUTION_OPENCL_FILTER 0
++#define CONFIG_CONVOLVE_FILTER 0
++#define CONFIG_COPY_FILTER 0
++#define CONFIG_COREIMAGE_FILTER 0
++#define CONFIG_COVER_RECT_FILTER 0
++#define CONFIG_CROP_FILTER 0
++#define CONFIG_CROPDETECT_FILTER 0
++#define CONFIG_CUE_FILTER 0
++#define CONFIG_CURVES_FILTER 0
++#define CONFIG_DATASCOPE_FILTER 0
++#define CONFIG_DBLUR_FILTER 0
++#define CONFIG_DCTDNOIZ_FILTER 0
++#define CONFIG_DEBAND_FILTER 0
++#define CONFIG_DEBLOCK_FILTER 0
++#define CONFIG_DECIMATE_FILTER 0
++#define CONFIG_DECONVOLVE_FILTER 0
++#define CONFIG_DEDOT_FILTER 0
++#define CONFIG_DEFLATE_FILTER 0
++#define CONFIG_DEFLICKER_FILTER 0
++#define CONFIG_DEINTERLACE_QSV_FILTER 0
++#define CONFIG_DEINTERLACE_VAAPI_FILTER 0
++#define CONFIG_DEJUDDER_FILTER 0
++#define CONFIG_DELOGO_FILTER 0
++#define CONFIG_DENOISE_VAAPI_FILTER 0
++#define CONFIG_DERAIN_FILTER 0
++#define CONFIG_DESHAKE_FILTER 0
++#define CONFIG_DESHAKE_OPENCL_FILTER 0
++#define CONFIG_DESPILL_FILTER 0
++#define CONFIG_DETELECINE_FILTER 0
++#define CONFIG_DILATION_FILTER 0
++#define CONFIG_DILATION_OPENCL_FILTER 0
++#define CONFIG_DISPLACE_FILTER 0
++#define CONFIG_DNN_CLASSIFY_FILTER 0
++#define CONFIG_DNN_DETECT_FILTER 0
++#define CONFIG_DNN_PROCESSING_FILTER 0
++#define CONFIG_DOUBLEWEAVE_FILTER 0
++#define CONFIG_DRAWBOX_FILTER 0
++#define CONFIG_DRAWGRAPH_FILTER 0
++#define CONFIG_DRAWGRID_FILTER 0
++#define CONFIG_DRAWTEXT_FILTER 0
++#define CONFIG_EDGEDETECT_FILTER 0
++#define CONFIG_ELBG_FILTER 0
++#define CONFIG_ENTROPY_FILTER 0
++#define CONFIG_EPX_FILTER 0
++#define CONFIG_EQ_FILTER 0
++#define CONFIG_EROSION_FILTER 0
++#define CONFIG_EROSION_OPENCL_FILTER 0
++#define CONFIG_ESTDIF_FILTER 0
++#define CONFIG_EXPOSURE_FILTER 0
++#define CONFIG_EXTRACTPLANES_FILTER 0
++#define CONFIG_FADE_FILTER 0
++#define CONFIG_FFTDNOIZ_FILTER 0
++#define CONFIG_FFTFILT_FILTER 0
++#define CONFIG_FIELD_FILTER 0
++#define CONFIG_FIELDHINT_FILTER 0
++#define CONFIG_FIELDMATCH_FILTER 0
++#define CONFIG_FIELDORDER_FILTER 0
++#define CONFIG_FILLBORDERS_FILTER 0
++#define CONFIG_FIND_RECT_FILTER 0
++#define CONFIG_FLIP_VULKAN_FILTER 0
++#define CONFIG_FLOODFILL_FILTER 0
++#define CONFIG_FORMAT_FILTER 0
++#define CONFIG_FPS_FILTER 0
++#define CONFIG_FRAMEPACK_FILTER 0
++#define CONFIG_FRAMERATE_FILTER 0
++#define CONFIG_FRAMESTEP_FILTER 0
++#define CONFIG_FREEZEDETECT_FILTER 0
++#define CONFIG_FREEZEFRAMES_FILTER 0
++#define CONFIG_FREI0R_FILTER 0
++#define CONFIG_FSPP_FILTER 0
++#define CONFIG_GBLUR_FILTER 0
++#define CONFIG_GBLUR_VULKAN_FILTER 0
++#define CONFIG_GEQ_FILTER 0
++#define CONFIG_GRADFUN_FILTER 0
++#define CONFIG_GRAPHMONITOR_FILTER 0
++#define CONFIG_GRAYWORLD_FILTER 0
++#define CONFIG_GREYEDGE_FILTER 0
++#define CONFIG_GUIDED_FILTER 0
++#define CONFIG_HALDCLUT_FILTER 0
++#define CONFIG_HFLIP_FILTER 0
++#define CONFIG_HFLIP_VULKAN_FILTER 0
++#define CONFIG_HISTEQ_FILTER 0
++#define CONFIG_HISTOGRAM_FILTER 0
++#define CONFIG_HQDN3D_FILTER 0
++#define CONFIG_HQX_FILTER 0
++#define CONFIG_HSTACK_FILTER 0
++#define CONFIG_HSVHOLD_FILTER 0
++#define CONFIG_HSVKEY_FILTER 0
++#define CONFIG_HUE_FILTER 0
++#define CONFIG_HUESATURATION_FILTER 0
++#define CONFIG_HWDOWNLOAD_FILTER 0
++#define CONFIG_HWMAP_FILTER 0
++#define CONFIG_HWUPLOAD_FILTER 0
++#define CONFIG_HWUPLOAD_CUDA_FILTER 0
++#define CONFIG_HYSTERESIS_FILTER 0
++#define CONFIG_IDENTITY_FILTER 0
++#define CONFIG_IDET_FILTER 0
++#define CONFIG_IL_FILTER 0
++#define CONFIG_INFLATE_FILTER 0
++#define CONFIG_INTERLACE_FILTER 0
++#define CONFIG_INTERLEAVE_FILTER 0
++#define CONFIG_KERNDEINT_FILTER 0
++#define CONFIG_KIRSCH_FILTER 0
++#define CONFIG_LAGFUN_FILTER 0
++#define CONFIG_LATENCY_FILTER 0
++#define CONFIG_LENSCORRECTION_FILTER 0
++#define CONFIG_LENSFUN_FILTER 0
++#define CONFIG_LIBPLACEBO_FILTER 0
++#define CONFIG_LIBVMAF_FILTER 0
++#define CONFIG_LIMITDIFF_FILTER 0
++#define CONFIG_LIMITER_FILTER 0
++#define CONFIG_LOOP_FILTER 0
++#define CONFIG_LUMAKEY_FILTER 0
++#define CONFIG_LUT_FILTER 0
++#define CONFIG_LUT1D_FILTER 0
++#define CONFIG_LUT2_FILTER 0
++#define CONFIG_LUT3D_FILTER 0
++#define CONFIG_LUTRGB_FILTER 0
++#define CONFIG_LUTYUV_FILTER 0
++#define CONFIG_MASKEDCLAMP_FILTER 0
++#define CONFIG_MASKEDMAX_FILTER 0
++#define CONFIG_MASKEDMERGE_FILTER 0
++#define CONFIG_MASKEDMIN_FILTER 0
++#define CONFIG_MASKEDTHRESHOLD_FILTER 0
++#define CONFIG_MASKFUN_FILTER 0
++#define CONFIG_MCDEINT_FILTER 0
++#define CONFIG_MEDIAN_FILTER 0
++#define CONFIG_MERGEPLANES_FILTER 0
++#define CONFIG_MESTIMATE_FILTER 0
++#define CONFIG_METADATA_FILTER 0
++#define CONFIG_MIDEQUALIZER_FILTER 0
++#define CONFIG_MINTERPOLATE_FILTER 0
++#define CONFIG_MIX_FILTER 0
++#define CONFIG_MONOCHROME_FILTER 0
++#define CONFIG_MORPHO_FILTER 0
++#define CONFIG_MPDECIMATE_FILTER 0
++#define CONFIG_MSAD_FILTER 0
++#define CONFIG_NEGATE_FILTER 0
++#define CONFIG_NLMEANS_FILTER 0
++#define CONFIG_NLMEANS_OPENCL_FILTER 0
++#define CONFIG_NNEDI_FILTER 0
++#define CONFIG_NOFORMAT_FILTER 0
++#define CONFIG_NOISE_FILTER 0
++#define CONFIG_NORMALIZE_FILTER 0
++#define CONFIG_NULL_FILTER 0
++#define CONFIG_OCR_FILTER 0
++#define CONFIG_OCV_FILTER 0
++#define CONFIG_OSCILLOSCOPE_FILTER 0
++#define CONFIG_OVERLAY_FILTER 0
++#define CONFIG_OVERLAY_OPENCL_FILTER 0
++#define CONFIG_OVERLAY_QSV_FILTER 0
++#define CONFIG_OVERLAY_VAAPI_FILTER 0
++#define CONFIG_OVERLAY_VULKAN_FILTER 0
++#define CONFIG_OVERLAY_CUDA_FILTER 0
++#define CONFIG_OWDENOISE_FILTER 0
++#define CONFIG_PAD_FILTER 0
++#define CONFIG_PAD_OPENCL_FILTER 0
++#define CONFIG_PALETTEGEN_FILTER 0
++#define CONFIG_PALETTEUSE_FILTER 0
++#define CONFIG_PERMS_FILTER 0
++#define CONFIG_PERSPECTIVE_FILTER 0
++#define CONFIG_PHASE_FILTER 0
++#define CONFIG_PHOTOSENSITIVITY_FILTER 0
++#define CONFIG_PIXDESCTEST_FILTER 0
++#define CONFIG_PIXSCOPE_FILTER 0
++#define CONFIG_PP_FILTER 0
++#define CONFIG_PP7_FILTER 0
++#define CONFIG_PREMULTIPLY_FILTER 0
++#define CONFIG_PREWITT_FILTER 0
++#define CONFIG_PREWITT_OPENCL_FILTER 0
++#define CONFIG_PROCAMP_VAAPI_FILTER 0
++#define CONFIG_PROGRAM_OPENCL_FILTER 0
++#define CONFIG_PSEUDOCOLOR_FILTER 0
++#define CONFIG_PSNR_FILTER 0
++#define CONFIG_PULLUP_FILTER 0
++#define CONFIG_QP_FILTER 0
++#define CONFIG_RANDOM_FILTER 0
++#define CONFIG_READEIA608_FILTER 0
++#define CONFIG_READVITC_FILTER 0
++#define CONFIG_REALTIME_FILTER 0
++#define CONFIG_REMAP_FILTER 0
++#define CONFIG_REMOVEGRAIN_FILTER 0
++#define CONFIG_REMOVELOGO_FILTER 0
++#define CONFIG_REPEATFIELDS_FILTER 0
++#define CONFIG_REVERSE_FILTER 0
++#define CONFIG_RGBASHIFT_FILTER 0
++#define CONFIG_ROBERTS_FILTER 0
++#define CONFIG_ROBERTS_OPENCL_FILTER 0
++#define CONFIG_ROTATE_FILTER 0
++#define CONFIG_SAB_FILTER 0
++#define CONFIG_SCALE_FILTER 0
++#define CONFIG_SCALE_CUDA_FILTER 0
++#define CONFIG_SCALE_NPP_FILTER 0
++#define CONFIG_SCALE_QSV_FILTER 0
++#define CONFIG_SCALE_VAAPI_FILTER 0
++#define CONFIG_SCALE_VULKAN_FILTER 0
++#define CONFIG_SCALE2REF_FILTER 0
++#define CONFIG_SCALE2REF_NPP_FILTER 0
++#define CONFIG_SCDET_FILTER 0
++#define CONFIG_SCHARR_FILTER 0
++#define CONFIG_SCROLL_FILTER 0
++#define CONFIG_SEGMENT_FILTER 0
++#define CONFIG_SELECT_FILTER 0
++#define CONFIG_SELECTIVECOLOR_FILTER 0
++#define CONFIG_SENDCMD_FILTER 0
++#define CONFIG_SEPARATEFIELDS_FILTER 0
++#define CONFIG_SETDAR_FILTER 0
++#define CONFIG_SETFIELD_FILTER 0
++#define CONFIG_SETPARAMS_FILTER 0
++#define CONFIG_SETPTS_FILTER 0
++#define CONFIG_SETRANGE_FILTER 0
++#define CONFIG_SETSAR_FILTER 0
++#define CONFIG_SETTB_FILTER 0
++#define CONFIG_SHARPEN_NPP_FILTER 0
++#define CONFIG_SHARPNESS_VAAPI_FILTER 0
++#define CONFIG_SHEAR_FILTER 0
++#define CONFIG_SHOWINFO_FILTER 0
++#define CONFIG_SHOWPALETTE_FILTER 0
++#define CONFIG_SHUFFLEFRAMES_FILTER 0
++#define CONFIG_SHUFFLEPIXELS_FILTER 0
++#define CONFIG_SHUFFLEPLANES_FILTER 0
++#define CONFIG_SIDEDATA_FILTER 0
++#define CONFIG_SIGNALSTATS_FILTER 0
++#define CONFIG_SIGNATURE_FILTER 0
++#define CONFIG_SMARTBLUR_FILTER 0
++#define CONFIG_SOBEL_FILTER 0
++#define CONFIG_SOBEL_OPENCL_FILTER 0
++#define CONFIG_SPLIT_FILTER 0
++#define CONFIG_SPP_FILTER 0
++#define CONFIG_SR_FILTER 0
++#define CONFIG_SSIM_FILTER 0
++#define CONFIG_STEREO3D_FILTER 0
++#define CONFIG_STREAMSELECT_FILTER 0
++#define CONFIG_SUBTITLES_FILTER 0
++#define CONFIG_SUPER2XSAI_FILTER 0
++#define CONFIG_SWAPRECT_FILTER 0
++#define CONFIG_SWAPUV_FILTER 0
++#define CONFIG_TBLEND_FILTER 0
++#define CONFIG_TELECINE_FILTER 0
++#define CONFIG_THISTOGRAM_FILTER 0
++#define CONFIG_THRESHOLD_FILTER 0
++#define CONFIG_THUMBNAIL_FILTER 0
++#define CONFIG_THUMBNAIL_CUDA_FILTER 0
++#define CONFIG_TILE_FILTER 0
++#define CONFIG_TINTERLACE_FILTER 0
++#define CONFIG_TLUT2_FILTER 0
++#define CONFIG_TMEDIAN_FILTER 0
++#define CONFIG_TMIDEQUALIZER_FILTER 0
++#define CONFIG_TMIX_FILTER 0
++#define CONFIG_TONEMAP_FILTER 0
++#define CONFIG_TONEMAP_OPENCL_FILTER 0
++#define CONFIG_TONEMAP_VAAPI_FILTER 0
++#define CONFIG_TPAD_FILTER 0
++#define CONFIG_TRANSPOSE_FILTER 0
++#define CONFIG_TRANSPOSE_NPP_FILTER 0
++#define CONFIG_TRANSPOSE_OPENCL_FILTER 0
++#define CONFIG_TRANSPOSE_VAAPI_FILTER 0
++#define CONFIG_TRANSPOSE_VULKAN_FILTER 0
++#define CONFIG_TRIM_FILTER 0
++#define CONFIG_UNPREMULTIPLY_FILTER 0
++#define CONFIG_UNSHARP_FILTER 0
++#define CONFIG_UNSHARP_OPENCL_FILTER 0
++#define CONFIG_UNTILE_FILTER 0
++#define CONFIG_USPP_FILTER 0
++#define CONFIG_V360_FILTER 0
++#define CONFIG_VAGUEDENOISER_FILTER 0
++#define CONFIG_VARBLUR_FILTER 0
++#define CONFIG_VECTORSCOPE_FILTER 0
++#define CONFIG_VFLIP_FILTER 0
++#define CONFIG_VFLIP_VULKAN_FILTER 0
++#define CONFIG_VFRDET_FILTER 0
++#define CONFIG_VIBRANCE_FILTER 0
++#define CONFIG_VIDSTABDETECT_FILTER 0
++#define CONFIG_VIDSTABTRANSFORM_FILTER 0
++#define CONFIG_VIF_FILTER 0
++#define CONFIG_VIGNETTE_FILTER 0
++#define CONFIG_VMAFMOTION_FILTER 0
++#define CONFIG_VPP_QSV_FILTER 0
++#define CONFIG_VSTACK_FILTER 0
++#define CONFIG_W3FDIF_FILTER 0
++#define CONFIG_WAVEFORM_FILTER 0
++#define CONFIG_WEAVE_FILTER 0
++#define CONFIG_XBR_FILTER 0
++#define CONFIG_XCORRELATE_FILTER 0
++#define CONFIG_XFADE_FILTER 0
++#define CONFIG_XFADE_OPENCL_FILTER 0
++#define CONFIG_XMEDIAN_FILTER 0
++#define CONFIG_XSTACK_FILTER 0
++#define CONFIG_YADIF_FILTER 0
++#define CONFIG_YADIF_CUDA_FILTER 0
++#define CONFIG_YADIF_VIDEOTOOLBOX_FILTER 0
++#define CONFIG_YAEPBLUR_FILTER 0
++#define CONFIG_ZMQ_FILTER 0
++#define CONFIG_ZOOMPAN_FILTER 0
++#define CONFIG_ZSCALE_FILTER 0
++#define CONFIG_ALLRGB_FILTER 0
++#define CONFIG_ALLYUV_FILTER 0
++#define CONFIG_CELLAUTO_FILTER 0
++#define CONFIG_COLOR_FILTER 0
++#define CONFIG_COLORSPECTRUM_FILTER 0
++#define CONFIG_COREIMAGESRC_FILTER 0
++#define CONFIG_FREI0R_SRC_FILTER 0
++#define CONFIG_GRADIENTS_FILTER 0
++#define CONFIG_HALDCLUTSRC_FILTER 0
++#define CONFIG_LIFE_FILTER 0
++#define CONFIG_MANDELBROT_FILTER 0
++#define CONFIG_MPTESTSRC_FILTER 0
++#define CONFIG_NULLSRC_FILTER 0
++#define CONFIG_OPENCLSRC_FILTER 0
++#define CONFIG_PAL75BARS_FILTER 0
++#define CONFIG_PAL100BARS_FILTER 0
++#define CONFIG_RGBTESTSRC_FILTER 0
++#define CONFIG_SIERPINSKI_FILTER 0
++#define CONFIG_SMPTEBARS_FILTER 0
++#define CONFIG_SMPTEHDBARS_FILTER 0
++#define CONFIG_TESTSRC_FILTER 0
++#define CONFIG_TESTSRC2_FILTER 0
++#define CONFIG_YUVTESTSRC_FILTER 0
++#define CONFIG_NULLSINK_FILTER 0
++#define CONFIG_ABITSCOPE_FILTER 0
++#define CONFIG_ADRAWGRAPH_FILTER 0
++#define CONFIG_AGRAPHMONITOR_FILTER 0
++#define CONFIG_AHISTOGRAM_FILTER 0
++#define CONFIG_APHASEMETER_FILTER 0
++#define CONFIG_AVECTORSCOPE_FILTER 0
++#define CONFIG_CONCAT_FILTER 0
++#define CONFIG_SHOWCQT_FILTER 0
++#define CONFIG_SHOWFREQS_FILTER 0
++#define CONFIG_SHOWSPATIAL_FILTER 0
++#define CONFIG_SHOWSPECTRUM_FILTER 0
++#define CONFIG_SHOWSPECTRUMPIC_FILTER 0
++#define CONFIG_SHOWVOLUME_FILTER 0
++#define CONFIG_SHOWWAVES_FILTER 0
++#define CONFIG_SHOWWAVESPIC_FILTER 0
++#define CONFIG_SPECTRUMSYNTH_FILTER 0
++#define CONFIG_AMOVIE_FILTER 0
++#define CONFIG_MOVIE_FILTER 0
++#define CONFIG_AFIFO_FILTER 0
++#define CONFIG_FIFO_FILTER 0
++#define CONFIG_AA_DEMUXER 0
++#define CONFIG_AAC_DEMUXER 1
++#define CONFIG_AAX_DEMUXER 0
++#define CONFIG_AC3_DEMUXER 0
++#define CONFIG_ACE_DEMUXER 0
++#define CONFIG_ACM_DEMUXER 0
++#define CONFIG_ACT_DEMUXER 0
++#define CONFIG_ADF_DEMUXER 0
++#define CONFIG_ADP_DEMUXER 0
++#define CONFIG_ADS_DEMUXER 0
++#define CONFIG_ADX_DEMUXER 0
++#define CONFIG_AEA_DEMUXER 0
++#define CONFIG_AFC_DEMUXER 0
++#define CONFIG_AIFF_DEMUXER 0
++#define CONFIG_AIX_DEMUXER 0
++#define CONFIG_ALP_DEMUXER 0
++#define CONFIG_AMR_DEMUXER 0
++#define CONFIG_AMRNB_DEMUXER 0
++#define CONFIG_AMRWB_DEMUXER 0
++#define CONFIG_ANM_DEMUXER 0
++#define CONFIG_APC_DEMUXER 0
++#define CONFIG_APE_DEMUXER 0
++#define CONFIG_APM_DEMUXER 0
++#define CONFIG_APNG_DEMUXER 0
++#define CONFIG_APTX_DEMUXER 0
++#define CONFIG_APTX_HD_DEMUXER 0
++#define CONFIG_AQTITLE_DEMUXER 0
++#define CONFIG_ARGO_ASF_DEMUXER 0
++#define CONFIG_ARGO_BRP_DEMUXER 0
++#define CONFIG_ARGO_CVG_DEMUXER 0
++#define CONFIG_ASF_DEMUXER 0
++#define CONFIG_ASF_O_DEMUXER 0
++#define CONFIG_ASS_DEMUXER 0
++#define CONFIG_AST_DEMUXER 0
++#define CONFIG_AU_DEMUXER 0
++#define CONFIG_AV1_DEMUXER 0
++#define CONFIG_AVI_DEMUXER 0
++#define CONFIG_AVISYNTH_DEMUXER 0
++#define CONFIG_AVR_DEMUXER 0
++#define CONFIG_AVS_DEMUXER 0
++#define CONFIG_AVS2_DEMUXER 0
++#define CONFIG_AVS3_DEMUXER 0
++#define CONFIG_BETHSOFTVID_DEMUXER 0
++#define CONFIG_BFI_DEMUXER 0
++#define CONFIG_BINTEXT_DEMUXER 0
++#define CONFIG_BINK_DEMUXER 0
++#define CONFIG_BINKA_DEMUXER 0
++#define CONFIG_BIT_DEMUXER 0
++#define CONFIG_BITPACKED_DEMUXER 0
++#define CONFIG_BMV_DEMUXER 0
++#define CONFIG_BFSTM_DEMUXER 0
++#define CONFIG_BRSTM_DEMUXER 0
++#define CONFIG_BOA_DEMUXER 0
++#define CONFIG_C93_DEMUXER 0
++#define CONFIG_CAF_DEMUXER 0
++#define CONFIG_CAVSVIDEO_DEMUXER 0
++#define CONFIG_CDG_DEMUXER 0
++#define CONFIG_CDXL_DEMUXER 0
++#define CONFIG_CINE_DEMUXER 0
++#define CONFIG_CODEC2_DEMUXER 0
++#define CONFIG_CODEC2RAW_DEMUXER 0
++#define CONFIG_CONCAT_DEMUXER 0
++#define CONFIG_DASH_DEMUXER 0
++#define CONFIG_DATA_DEMUXER 0
++#define CONFIG_DAUD_DEMUXER 0
++#define CONFIG_DCSTR_DEMUXER 0
++#define CONFIG_DERF_DEMUXER 0
++#define CONFIG_DFA_DEMUXER 0
++#define CONFIG_DFPWM_DEMUXER 0
++#define CONFIG_DHAV_DEMUXER 0
++#define CONFIG_DIRAC_DEMUXER 0
++#define CONFIG_DNXHD_DEMUXER 0
++#define CONFIG_DSF_DEMUXER 0
++#define CONFIG_DSICIN_DEMUXER 0
++#define CONFIG_DSS_DEMUXER 0
++#define CONFIG_DTS_DEMUXER 0
++#define CONFIG_DTSHD_DEMUXER 0
++#define CONFIG_DV_DEMUXER 0
++#define CONFIG_DVBSUB_DEMUXER 0
++#define CONFIG_DVBTXT_DEMUXER 0
++#define CONFIG_DXA_DEMUXER 0
++#define CONFIG_EA_DEMUXER 0
++#define CONFIG_EA_CDATA_DEMUXER 0
++#define CONFIG_EAC3_DEMUXER 0
++#define CONFIG_EPAF_DEMUXER 0
++#define CONFIG_FFMETADATA_DEMUXER 0
++#define CONFIG_FILMSTRIP_DEMUXER 0
++#define CONFIG_FITS_DEMUXER 0
++#define CONFIG_FLAC_DEMUXER 1
++#define CONFIG_FLIC_DEMUXER 0
++#define CONFIG_FLV_DEMUXER 0
++#define CONFIG_LIVE_FLV_DEMUXER 0
++#define CONFIG_FOURXM_DEMUXER 0
++#define CONFIG_FRM_DEMUXER 0
++#define CONFIG_FSB_DEMUXER 0
++#define CONFIG_FWSE_DEMUXER 0
++#define CONFIG_G722_DEMUXER 0
++#define CONFIG_G723_1_DEMUXER 0
++#define CONFIG_G726_DEMUXER 0
++#define CONFIG_G726LE_DEMUXER 0
++#define CONFIG_G729_DEMUXER 0
++#define CONFIG_GDV_DEMUXER 0
++#define CONFIG_GENH_DEMUXER 0
++#define CONFIG_GIF_DEMUXER 0
++#define CONFIG_GSM_DEMUXER 0
++#define CONFIG_GXF_DEMUXER 0
++#define CONFIG_H261_DEMUXER 0
++#define CONFIG_H263_DEMUXER 0
++#define CONFIG_H264_DEMUXER 0
++#define CONFIG_HCA_DEMUXER 0
++#define CONFIG_HCOM_DEMUXER 0
++#define CONFIG_HEVC_DEMUXER 0
++#define CONFIG_HLS_DEMUXER 0
++#define CONFIG_HNM_DEMUXER 0
++#define CONFIG_ICO_DEMUXER 0
++#define CONFIG_IDCIN_DEMUXER 0
++#define CONFIG_IDF_DEMUXER 0
++#define CONFIG_IFF_DEMUXER 0
++#define CONFIG_IFV_DEMUXER 0
++#define CONFIG_ILBC_DEMUXER 0
++#define CONFIG_IMAGE2_DEMUXER 0
++#define CONFIG_IMAGE2PIPE_DEMUXER 0
++#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
++#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
++#define CONFIG_IMF_DEMUXER 0
++#define CONFIG_INGENIENT_DEMUXER 0
++#define CONFIG_IPMOVIE_DEMUXER 0
++#define CONFIG_IPU_DEMUXER 0
++#define CONFIG_IRCAM_DEMUXER 0
++#define CONFIG_ISS_DEMUXER 0
++#define CONFIG_IV8_DEMUXER 0
++#define CONFIG_IVF_DEMUXER 0
++#define CONFIG_IVR_DEMUXER 0
++#define CONFIG_JACOSUB_DEMUXER 0
++#define CONFIG_JV_DEMUXER 0
++#define CONFIG_KUX_DEMUXER 0
++#define CONFIG_KVAG_DEMUXER 0
++#define CONFIG_LMLM4_DEMUXER 0
++#define CONFIG_LOAS_DEMUXER 0
++#define CONFIG_LUODAT_DEMUXER 0
++#define CONFIG_LRC_DEMUXER 0
++#define CONFIG_LVF_DEMUXER 0
++#define CONFIG_LXF_DEMUXER 0
++#define CONFIG_M4V_DEMUXER 0
++#define CONFIG_MCA_DEMUXER 0
++#define CONFIG_MCC_DEMUXER 0
++#define CONFIG_MATROSKA_DEMUXER 1
++#define CONFIG_MGSTS_DEMUXER 0
++#define CONFIG_MICRODVD_DEMUXER 0
++#define CONFIG_MJPEG_DEMUXER 0
++#define CONFIG_MJPEG_2000_DEMUXER 0
++#define CONFIG_MLP_DEMUXER 0
++#define CONFIG_MLV_DEMUXER 0
++#define CONFIG_MM_DEMUXER 0
++#define CONFIG_MMF_DEMUXER 0
++#define CONFIG_MODS_DEMUXER 0
++#define CONFIG_MOFLEX_DEMUXER 0
++#define CONFIG_MOV_DEMUXER 1
++#define CONFIG_MP3_DEMUXER 1
++#define CONFIG_MPC_DEMUXER 0
++#define CONFIG_MPC8_DEMUXER 0
++#define CONFIG_MPEGPS_DEMUXER 0
++#define CONFIG_MPEGTS_DEMUXER 0
++#define CONFIG_MPEGTSRAW_DEMUXER 0
++#define CONFIG_MPEGVIDEO_DEMUXER 0
++#define CONFIG_MPJPEG_DEMUXER 0
++#define CONFIG_MPL2_DEMUXER 0
++#define CONFIG_MPSUB_DEMUXER 0
++#define CONFIG_MSF_DEMUXER 0
++#define CONFIG_MSNWC_TCP_DEMUXER 0
++#define CONFIG_MSP_DEMUXER 0
++#define CONFIG_MTAF_DEMUXER 0
++#define CONFIG_MTV_DEMUXER 0
++#define CONFIG_MUSX_DEMUXER 0
++#define CONFIG_MV_DEMUXER 0
++#define CONFIG_MVI_DEMUXER 0
++#define CONFIG_MXF_DEMUXER 0
++#define CONFIG_MXG_DEMUXER 0
++#define CONFIG_NC_DEMUXER 0
++#define CONFIG_NISTSPHERE_DEMUXER 0
++#define CONFIG_NSP_DEMUXER 0
++#define CONFIG_NSV_DEMUXER 0
++#define CONFIG_NUT_DEMUXER 0
++#define CONFIG_NUV_DEMUXER 0
++#define CONFIG_OBU_DEMUXER 0
++#define CONFIG_OGG_DEMUXER 1
++#define CONFIG_OMA_DEMUXER 0
++#define CONFIG_PAF_DEMUXER 0
++#define CONFIG_PCM_ALAW_DEMUXER 0
++#define CONFIG_PCM_MULAW_DEMUXER 0
++#define CONFIG_PCM_VIDC_DEMUXER 0
++#define CONFIG_PCM_F64BE_DEMUXER 0
++#define CONFIG_PCM_F64LE_DEMUXER 0
++#define CONFIG_PCM_F32BE_DEMUXER 0
++#define CONFIG_PCM_F32LE_DEMUXER 0
++#define CONFIG_PCM_S32BE_DEMUXER 0
++#define CONFIG_PCM_S32LE_DEMUXER 0
++#define CONFIG_PCM_S24BE_DEMUXER 0
++#define CONFIG_PCM_S24LE_DEMUXER 0
++#define CONFIG_PCM_S16BE_DEMUXER 0
++#define CONFIG_PCM_S16LE_DEMUXER 0
++#define CONFIG_PCM_S8_DEMUXER 0
++#define CONFIG_PCM_U32BE_DEMUXER 0
++#define CONFIG_PCM_U32LE_DEMUXER 0
++#define CONFIG_PCM_U24BE_DEMUXER 0
++#define CONFIG_PCM_U24LE_DEMUXER 0
++#define CONFIG_PCM_U16BE_DEMUXER 0
++#define CONFIG_PCM_U16LE_DEMUXER 0
++#define CONFIG_PCM_U8_DEMUXER 0
++#define CONFIG_PJS_DEMUXER 0
++#define CONFIG_PMP_DEMUXER 0
++#define CONFIG_PP_BNK_DEMUXER 0
++#define CONFIG_PVA_DEMUXER 0
++#define CONFIG_PVF_DEMUXER 0
++#define CONFIG_QCP_DEMUXER 0
++#define CONFIG_R3D_DEMUXER 0
++#define CONFIG_RAWVIDEO_DEMUXER 0
++#define CONFIG_REALTEXT_DEMUXER 0
++#define CONFIG_REDSPARK_DEMUXER 0
++#define CONFIG_RL2_DEMUXER 0
++#define CONFIG_RM_DEMUXER 0
++#define CONFIG_ROQ_DEMUXER 0
++#define CONFIG_RPL_DEMUXER 0
++#define CONFIG_RSD_DEMUXER 0
++#define CONFIG_RSO_DEMUXER 0
++#define CONFIG_RTP_DEMUXER 0
++#define CONFIG_RTSP_DEMUXER 0
++#define CONFIG_S337M_DEMUXER 0
++#define CONFIG_SAMI_DEMUXER 0
++#define CONFIG_SAP_DEMUXER 0
++#define CONFIG_SBC_DEMUXER 0
++#define CONFIG_SBG_DEMUXER 0
++#define CONFIG_SCC_DEMUXER 0
++#define CONFIG_SCD_DEMUXER 0
++#define CONFIG_SDP_DEMUXER 0
++#define CONFIG_SDR2_DEMUXER 0
++#define CONFIG_SDS_DEMUXER 0
++#define CONFIG_SDX_DEMUXER 0
++#define CONFIG_SEGAFILM_DEMUXER 0
++#define CONFIG_SER_DEMUXER 0
++#define CONFIG_SGA_DEMUXER 0
++#define CONFIG_SHORTEN_DEMUXER 0
++#define CONFIG_SIFF_DEMUXER 0
++#define CONFIG_SIMBIOSIS_IMX_DEMUXER 0
++#define CONFIG_SLN_DEMUXER 0
++#define CONFIG_SMACKER_DEMUXER 0
++#define CONFIG_SMJPEG_DEMUXER 0
++#define CONFIG_SMUSH_DEMUXER 0
++#define CONFIG_SOL_DEMUXER 0
++#define CONFIG_SOX_DEMUXER 0
++#define CONFIG_SPDIF_DEMUXER 0
++#define CONFIG_SRT_DEMUXER 0
++#define CONFIG_STR_DEMUXER 0
++#define CONFIG_STL_DEMUXER 0
++#define CONFIG_SUBVIEWER1_DEMUXER 0
++#define CONFIG_SUBVIEWER_DEMUXER 0
++#define CONFIG_SUP_DEMUXER 0
++#define CONFIG_SVAG_DEMUXER 0
++#define CONFIG_SVS_DEMUXER 0
++#define CONFIG_SWF_DEMUXER 0
++#define CONFIG_TAK_DEMUXER 0
++#define CONFIG_TEDCAPTIONS_DEMUXER 0
++#define CONFIG_THP_DEMUXER 0
++#define CONFIG_THREEDOSTR_DEMUXER 0
++#define CONFIG_TIERTEXSEQ_DEMUXER 0
++#define CONFIG_TMV_DEMUXER 0
++#define CONFIG_TRUEHD_DEMUXER 0
++#define CONFIG_TTA_DEMUXER 0
++#define CONFIG_TXD_DEMUXER 0
++#define CONFIG_TTY_DEMUXER 0
++#define CONFIG_TY_DEMUXER 0
++#define CONFIG_V210_DEMUXER 0
++#define CONFIG_V210X_DEMUXER 0
++#define CONFIG_VAG_DEMUXER 0
++#define CONFIG_VC1_DEMUXER 0
++#define CONFIG_VC1T_DEMUXER 0
++#define CONFIG_VIVIDAS_DEMUXER 0
++#define CONFIG_VIVO_DEMUXER 0
++#define CONFIG_VMD_DEMUXER 0
++#define CONFIG_VOBSUB_DEMUXER 0
++#define CONFIG_VOC_DEMUXER 0
++#define CONFIG_VPK_DEMUXER 0
++#define CONFIG_VPLAYER_DEMUXER 0
++#define CONFIG_VQF_DEMUXER 0
++#define CONFIG_W64_DEMUXER 0
++#define CONFIG_WAV_DEMUXER 1
++#define CONFIG_WC3_DEMUXER 0
++#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
++#define CONFIG_WEBVTT_DEMUXER 0
++#define CONFIG_WSAUD_DEMUXER 0
++#define CONFIG_WSD_DEMUXER 0
++#define CONFIG_WSVQA_DEMUXER 0
++#define CONFIG_WTV_DEMUXER 0
++#define CONFIG_WVE_DEMUXER 0
++#define CONFIG_WV_DEMUXER 0
++#define CONFIG_XA_DEMUXER 0
++#define CONFIG_XBIN_DEMUXER 0
++#define CONFIG_XMV_DEMUXER 0
++#define CONFIG_XVAG_DEMUXER 0
++#define CONFIG_XWMA_DEMUXER 0
++#define CONFIG_YOP_DEMUXER 0
++#define CONFIG_YUV4MPEGPIPE_DEMUXER 0
++#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_CRI_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_GEM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XBM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
++#define CONFIG_LIBGME_DEMUXER 0
++#define CONFIG_LIBMODPLUG_DEMUXER 0
++#define CONFIG_LIBOPENMPT_DEMUXER 0
++#define CONFIG_VAPOURSYNTH_DEMUXER 0
++#define CONFIG_A64_MUXER 0
++#define CONFIG_AC3_MUXER 0
++#define CONFIG_ADTS_MUXER 0
++#define CONFIG_ADX_MUXER 0
++#define CONFIG_AIFF_MUXER 0
++#define CONFIG_ALP_MUXER 0
++#define CONFIG_AMR_MUXER 0
++#define CONFIG_AMV_MUXER 0
++#define CONFIG_APM_MUXER 0
++#define CONFIG_APNG_MUXER 0
++#define CONFIG_APTX_MUXER 0
++#define CONFIG_APTX_HD_MUXER 0
++#define CONFIG_ARGO_ASF_MUXER 0
++#define CONFIG_ARGO_CVG_MUXER 0
++#define CONFIG_ASF_MUXER 0
++#define CONFIG_ASS_MUXER 0
++#define CONFIG_AST_MUXER 0
++#define CONFIG_ASF_STREAM_MUXER 0
++#define CONFIG_AU_MUXER 0
++#define CONFIG_AVI_MUXER 0
++#define CONFIG_AVM2_MUXER 0
++#define CONFIG_AVS2_MUXER 0
++#define CONFIG_AVS3_MUXER 0
++#define CONFIG_BIT_MUXER 0
++#define CONFIG_CAF_MUXER 0
++#define CONFIG_CAVSVIDEO_MUXER 0
++#define CONFIG_CODEC2_MUXER 0
++#define CONFIG_CODEC2RAW_MUXER 0
++#define CONFIG_CRC_MUXER 0
++#define CONFIG_DASH_MUXER 0
++#define CONFIG_DATA_MUXER 0
++#define CONFIG_DAUD_MUXER 0
++#define CONFIG_DFPWM_MUXER 0
++#define CONFIG_DIRAC_MUXER 0
++#define CONFIG_DNXHD_MUXER 0
++#define CONFIG_DTS_MUXER 0
++#define CONFIG_DV_MUXER 0
++#define CONFIG_EAC3_MUXER 0
++#define CONFIG_F4V_MUXER 0
++#define CONFIG_FFMETADATA_MUXER 0
++#define CONFIG_FIFO_MUXER 0
++#define CONFIG_FIFO_TEST_MUXER 0
++#define CONFIG_FILMSTRIP_MUXER 0
++#define CONFIG_FITS_MUXER 0
++#define CONFIG_FLAC_MUXER 0
++#define CONFIG_FLV_MUXER 0
++#define CONFIG_FRAMECRC_MUXER 0
++#define CONFIG_FRAMEHASH_MUXER 0
++#define CONFIG_FRAMEMD5_MUXER 0
++#define CONFIG_G722_MUXER 0
++#define CONFIG_G723_1_MUXER 0
++#define CONFIG_G726_MUXER 0
++#define CONFIG_G726LE_MUXER 0
++#define CONFIG_GIF_MUXER 0
++#define CONFIG_GSM_MUXER 0
++#define CONFIG_GXF_MUXER 0
++#define CONFIG_H261_MUXER 0
++#define CONFIG_H263_MUXER 0
++#define CONFIG_H264_MUXER 0
++#define CONFIG_HASH_MUXER 0
++#define CONFIG_HDS_MUXER 0
++#define CONFIG_HEVC_MUXER 0
++#define CONFIG_HLS_MUXER 0
++#define CONFIG_ICO_MUXER 0
++#define CONFIG_ILBC_MUXER 0
++#define CONFIG_IMAGE2_MUXER 0
++#define CONFIG_IMAGE2PIPE_MUXER 0
++#define CONFIG_IPOD_MUXER 0
++#define CONFIG_IRCAM_MUXER 0
++#define CONFIG_ISMV_MUXER 0
++#define CONFIG_IVF_MUXER 0
++#define CONFIG_JACOSUB_MUXER 0
++#define CONFIG_KVAG_MUXER 0
++#define CONFIG_LATM_MUXER 0
++#define CONFIG_LRC_MUXER 0
++#define CONFIG_M4V_MUXER 0
++#define CONFIG_MD5_MUXER 0
++#define CONFIG_MATROSKA_MUXER 0
++#define CONFIG_MATROSKA_AUDIO_MUXER 0
++#define CONFIG_MICRODVD_MUXER 0
++#define CONFIG_MJPEG_MUXER 0
++#define CONFIG_MLP_MUXER 0
++#define CONFIG_MMF_MUXER 0
++#define CONFIG_MOV_MUXER 0
++#define CONFIG_MP2_MUXER 0
++#define CONFIG_MP3_MUXER 0
++#define CONFIG_MP4_MUXER 0
++#define CONFIG_MPEG1SYSTEM_MUXER 0
++#define CONFIG_MPEG1VCD_MUXER 0
++#define CONFIG_MPEG1VIDEO_MUXER 0
++#define CONFIG_MPEG2DVD_MUXER 0
++#define CONFIG_MPEG2SVCD_MUXER 0
++#define CONFIG_MPEG2VIDEO_MUXER 0
++#define CONFIG_MPEG2VOB_MUXER 0
++#define CONFIG_MPEGTS_MUXER 0
++#define CONFIG_MPJPEG_MUXER 0
++#define CONFIG_MXF_MUXER 0
++#define CONFIG_MXF_D10_MUXER 0
++#define CONFIG_MXF_OPATOM_MUXER 0
++#define CONFIG_NULL_MUXER 0
++#define CONFIG_NUT_MUXER 0
++#define CONFIG_OBU_MUXER 0
++#define CONFIG_OGA_MUXER 0
++#define CONFIG_OGG_MUXER 0
++#define CONFIG_OGV_MUXER 0
++#define CONFIG_OMA_MUXER 0
++#define CONFIG_OPUS_MUXER 0
++#define CONFIG_PCM_ALAW_MUXER 0
++#define CONFIG_PCM_MULAW_MUXER 0
++#define CONFIG_PCM_VIDC_MUXER 0
++#define CONFIG_PCM_F64BE_MUXER 0
++#define CONFIG_PCM_F64LE_MUXER 0
++#define CONFIG_PCM_F32BE_MUXER 0
++#define CONFIG_PCM_F32LE_MUXER 0
++#define CONFIG_PCM_S32BE_MUXER 0
++#define CONFIG_PCM_S32LE_MUXER 0
++#define CONFIG_PCM_S24BE_MUXER 0
++#define CONFIG_PCM_S24LE_MUXER 0
++#define CONFIG_PCM_S16BE_MUXER 0
++#define CONFIG_PCM_S16LE_MUXER 0
++#define CONFIG_PCM_S8_MUXER 0
++#define CONFIG_PCM_U32BE_MUXER 0
++#define CONFIG_PCM_U32LE_MUXER 0
++#define CONFIG_PCM_U24BE_MUXER 0
++#define CONFIG_PCM_U24LE_MUXER 0
++#define CONFIG_PCM_U16BE_MUXER 0
++#define CONFIG_PCM_U16LE_MUXER 0
++#define CONFIG_PCM_U8_MUXER 0
++#define CONFIG_PSP_MUXER 0
++#define CONFIG_RAWVIDEO_MUXER 0
++#define CONFIG_RM_MUXER 0
++#define CONFIG_ROQ_MUXER 0
++#define CONFIG_RSO_MUXER 0
++#define CONFIG_RTP_MUXER 0
++#define CONFIG_RTP_MPEGTS_MUXER 0
++#define CONFIG_RTSP_MUXER 0
++#define CONFIG_SAP_MUXER 0
++#define CONFIG_SBC_MUXER 0
++#define CONFIG_SCC_MUXER 0
++#define CONFIG_SEGAFILM_MUXER 0
++#define CONFIG_SEGMENT_MUXER 0
++#define CONFIG_STREAM_SEGMENT_MUXER 0
++#define CONFIG_SMJPEG_MUXER 0
++#define CONFIG_SMOOTHSTREAMING_MUXER 0
++#define CONFIG_SOX_MUXER 0
++#define CONFIG_SPX_MUXER 0
++#define CONFIG_SPDIF_MUXER 0
++#define CONFIG_SRT_MUXER 0
++#define CONFIG_STREAMHASH_MUXER 0
++#define CONFIG_SUP_MUXER 0
++#define CONFIG_SWF_MUXER 0
++#define CONFIG_TEE_MUXER 0
++#define CONFIG_TG2_MUXER 0
++#define CONFIG_TGP_MUXER 0
++#define CONFIG_MKVTIMESTAMP_V2_MUXER 0
++#define CONFIG_TRUEHD_MUXER 0
++#define CONFIG_TTA_MUXER 0
++#define CONFIG_TTML_MUXER 0
++#define CONFIG_UNCODEDFRAMECRC_MUXER 0
++#define CONFIG_VC1_MUXER 0
++#define CONFIG_VC1T_MUXER 0
++#define CONFIG_VOC_MUXER 0
++#define CONFIG_W64_MUXER 0
++#define CONFIG_WAV_MUXER 0
++#define CONFIG_WEBM_MUXER 0
++#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
++#define CONFIG_WEBM_CHUNK_MUXER 0
++#define CONFIG_WEBP_MUXER 0
++#define CONFIG_WEBVTT_MUXER 0
++#define CONFIG_WSAUD_MUXER 0
++#define CONFIG_WTV_MUXER 0
++#define CONFIG_WV_MUXER 0
++#define CONFIG_YUV4MPEGPIPE_MUXER 0
++#define CONFIG_CHROMAPRINT_MUXER 0
++#define CONFIG_ASYNC_PROTOCOL 0
++#define CONFIG_BLURAY_PROTOCOL 0
++#define CONFIG_CACHE_PROTOCOL 0
++#define CONFIG_CONCAT_PROTOCOL 0
++#define CONFIG_CONCATF_PROTOCOL 0
++#define CONFIG_CRYPTO_PROTOCOL 0
++#define CONFIG_DATA_PROTOCOL 0
++#define CONFIG_FFRTMPCRYPT_PROTOCOL 0
++#define CONFIG_FFRTMPHTTP_PROTOCOL 0
++#define CONFIG_FILE_PROTOCOL 0
++#define CONFIG_FTP_PROTOCOL 0
++#define CONFIG_GOPHER_PROTOCOL 0
++#define CONFIG_GOPHERS_PROTOCOL 0
++#define CONFIG_HLS_PROTOCOL 0
++#define CONFIG_HTTP_PROTOCOL 0
++#define CONFIG_HTTPPROXY_PROTOCOL 0
++#define CONFIG_HTTPS_PROTOCOL 0
++#define CONFIG_ICECAST_PROTOCOL 0
++#define CONFIG_MMSH_PROTOCOL 0
++#define CONFIG_MMST_PROTOCOL 0
++#define CONFIG_MD5_PROTOCOL 0
++#define CONFIG_PIPE_PROTOCOL 0
++#define CONFIG_PROMPEG_PROTOCOL 0
++#define CONFIG_RTMP_PROTOCOL 0
++#define CONFIG_RTMPE_PROTOCOL 0
++#define CONFIG_RTMPS_PROTOCOL 0
++#define CONFIG_RTMPT_PROTOCOL 0
++#define CONFIG_RTMPTE_PROTOCOL 0
++#define CONFIG_RTMPTS_PROTOCOL 0
++#define CONFIG_RTP_PROTOCOL 0
++#define CONFIG_SCTP_PROTOCOL 0
++#define CONFIG_SRTP_PROTOCOL 0
++#define CONFIG_SUBFILE_PROTOCOL 0
++#define CONFIG_TEE_PROTOCOL 0
++#define CONFIG_TCP_PROTOCOL 0
++#define CONFIG_TLS_PROTOCOL 0
++#define CONFIG_UDP_PROTOCOL 0
++#define CONFIG_UDPLITE_PROTOCOL 0
++#define CONFIG_UNIX_PROTOCOL 0
++#define CONFIG_LIBAMQP_PROTOCOL 0
++#define CONFIG_LIBRIST_PROTOCOL 0
++#define CONFIG_LIBRTMP_PROTOCOL 0
++#define CONFIG_LIBRTMPE_PROTOCOL 0
++#define CONFIG_LIBRTMPS_PROTOCOL 0
++#define CONFIG_LIBRTMPT_PROTOCOL 0
++#define CONFIG_LIBRTMPTE_PROTOCOL 0
++#define CONFIG_LIBSRT_PROTOCOL 0
++#define CONFIG_LIBSSH_PROTOCOL 0
++#define CONFIG_LIBSMBCLIENT_PROTOCOL 0
++#define CONFIG_LIBZMQ_PROTOCOL 0
++#endif /* FFMPEG_CONFIG_COMPONENTS_H */
diff --git a/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.asm b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.asm
new file mode 100644
index 000000000000..302423cbbb8e
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.asm
@@ -0,0 +1,725 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/x64/config.asm.orig 2022-10-01 07:40:07 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/x64/config.asm
+@@ -0,0 +1,722 @@
++; Automatically generated by configure - do not modify!
++%define ARCH_AARCH64 0
++%define ARCH_ALPHA 0
++%define ARCH_ARM 0
++%define ARCH_AVR32 0
++%define ARCH_AVR32_AP 0
++%define ARCH_AVR32_UC 0
++%define ARCH_BFIN 0
++%define ARCH_IA64 0
++%define ARCH_LOONGARCH 0
++%define ARCH_LOONGARCH32 0
++%define ARCH_LOONGARCH64 0
++%define ARCH_M68K 0
++%define ARCH_MIPS 0
++%define ARCH_MIPS64 0
++%define ARCH_PARISC 0
++%define ARCH_PPC 0
++%define ARCH_PPC64 0
++%define ARCH_RISCV 0
++%define ARCH_S390 0
++%define ARCH_SH4 0
++%define ARCH_SPARC 0
++%define ARCH_SPARC64 0
++%define ARCH_TILEGX 0
++%define ARCH_TILEPRO 0
++%define ARCH_TOMI 0
++%define ARCH_X86 1
++%define ARCH_X86_32 0
++%define ARCH_X86_64 1
++%define HAVE_ARMV5TE 0
++%define HAVE_ARMV6 0
++%define HAVE_ARMV6T2 0
++%define HAVE_ARMV8 0
++%define HAVE_NEON 0
++%define HAVE_VFP 0
++%define HAVE_VFPV3 0
++%define HAVE_SETEND 0
++%define HAVE_ALTIVEC 0
++%define HAVE_DCBZL 0
++%define HAVE_LDBRX 0
++%define HAVE_POWER8 0
++%define HAVE_PPC4XX 0
++%define HAVE_VSX 0
++%define HAVE_AESNI 1
++%define HAVE_AMD3DNOW 1
++%define HAVE_AMD3DNOWEXT 1
++%define HAVE_AVX 1
++%define HAVE_AVX2 1
++%define HAVE_AVX512 1
++%define HAVE_AVX512ICL 1
++%define HAVE_FMA3 1
++%define HAVE_FMA4 1
++%define HAVE_MMX 1
++%define HAVE_MMXEXT 1
++%define HAVE_SSE 1
++%define HAVE_SSE2 1
++%define HAVE_SSE3 1
++%define HAVE_SSE4 1
++%define HAVE_SSE42 1
++%define HAVE_SSSE3 1
++%define HAVE_XOP 1
++%define HAVE_CPUNOP 0
++%define HAVE_I686 1
++%define HAVE_MIPSFPU 0
++%define HAVE_MIPS32R2 0
++%define HAVE_MIPS32R5 0
++%define HAVE_MIPS64R2 0
++%define HAVE_MIPS32R6 0
++%define HAVE_MIPS64R6 0
++%define HAVE_MIPSDSP 0
++%define HAVE_MIPSDSPR2 0
++%define HAVE_MSA 0
++%define HAVE_LOONGSON2 0
++%define HAVE_LOONGSON3 0
++%define HAVE_MMI 0
++%define HAVE_LSX 0
++%define HAVE_LASX 0
++%define HAVE_ARMV5TE_EXTERNAL 0
++%define HAVE_ARMV6_EXTERNAL 0
++%define HAVE_ARMV6T2_EXTERNAL 0
++%define HAVE_ARMV8_EXTERNAL 0
++%define HAVE_NEON_EXTERNAL 0
++%define HAVE_VFP_EXTERNAL 0
++%define HAVE_VFPV3_EXTERNAL 0
++%define HAVE_SETEND_EXTERNAL 0
++%define HAVE_ALTIVEC_EXTERNAL 0
++%define HAVE_DCBZL_EXTERNAL 0
++%define HAVE_LDBRX_EXTERNAL 0
++%define HAVE_POWER8_EXTERNAL 0
++%define HAVE_PPC4XX_EXTERNAL 0
++%define HAVE_VSX_EXTERNAL 0
++%define HAVE_AESNI_EXTERNAL 1
++%define HAVE_AMD3DNOW_EXTERNAL 1
++%define HAVE_AMD3DNOWEXT_EXTERNAL 1
++%define HAVE_AVX_EXTERNAL 1
++%define HAVE_AVX2_EXTERNAL 1
++%define HAVE_AVX512_EXTERNAL 1
++%define HAVE_AVX512ICL_EXTERNAL 1
++%define HAVE_FMA3_EXTERNAL 1
++%define HAVE_FMA4_EXTERNAL 1
++%define HAVE_MMX_EXTERNAL 1
++%define HAVE_MMXEXT_EXTERNAL 1
++%define HAVE_SSE_EXTERNAL 1
++%define HAVE_SSE2_EXTERNAL 1
++%define HAVE_SSE3_EXTERNAL 1
++%define HAVE_SSE4_EXTERNAL 1
++%define HAVE_SSE42_EXTERNAL 1
++%define HAVE_SSSE3_EXTERNAL 1
++%define HAVE_XOP_EXTERNAL 1
++%define HAVE_CPUNOP_EXTERNAL 0
++%define HAVE_I686_EXTERNAL 0
++%define HAVE_MIPSFPU_EXTERNAL 0
++%define HAVE_MIPS32R2_EXTERNAL 0
++%define HAVE_MIPS32R5_EXTERNAL 0
++%define HAVE_MIPS64R2_EXTERNAL 0
++%define HAVE_MIPS32R6_EXTERNAL 0
++%define HAVE_MIPS64R6_EXTERNAL 0
++%define HAVE_MIPSDSP_EXTERNAL 0
++%define HAVE_MIPSDSPR2_EXTERNAL 0
++%define HAVE_MSA_EXTERNAL 0
++%define HAVE_LOONGSON2_EXTERNAL 0
++%define HAVE_LOONGSON3_EXTERNAL 0
++%define HAVE_MMI_EXTERNAL 0
++%define HAVE_LSX_EXTERNAL 0
++%define HAVE_LASX_EXTERNAL 0
++%define HAVE_ARMV5TE_INLINE 0
++%define HAVE_ARMV6_INLINE 0
++%define HAVE_ARMV6T2_INLINE 0
++%define HAVE_ARMV8_INLINE 0
++%define HAVE_NEON_INLINE 0
++%define HAVE_VFP_INLINE 0
++%define HAVE_VFPV3_INLINE 0
++%define HAVE_SETEND_INLINE 0
++%define HAVE_ALTIVEC_INLINE 0
++%define HAVE_DCBZL_INLINE 0
++%define HAVE_LDBRX_INLINE 0
++%define HAVE_POWER8_INLINE 0
++%define HAVE_PPC4XX_INLINE 0
++%define HAVE_VSX_INLINE 0
++%define HAVE_AESNI_INLINE 1
++%define HAVE_AMD3DNOW_INLINE 1
++%define HAVE_AMD3DNOWEXT_INLINE 1
++%define HAVE_AVX_INLINE 1
++%define HAVE_AVX2_INLINE 1
++%define HAVE_AVX512_INLINE 1
++%define HAVE_AVX512ICL_INLINE 1
++%define HAVE_FMA3_INLINE 1
++%define HAVE_FMA4_INLINE 1
++%define HAVE_MMX_INLINE 1
++%define HAVE_MMXEXT_INLINE 1
++%define HAVE_SSE_INLINE 1
++%define HAVE_SSE2_INLINE 1
++%define HAVE_SSE3_INLINE 1
++%define HAVE_SSE4_INLINE 1
++%define HAVE_SSE42_INLINE 1
++%define HAVE_SSSE3_INLINE 1
++%define HAVE_XOP_INLINE 1
++%define HAVE_CPUNOP_INLINE 0
++%define HAVE_I686_INLINE 0
++%define HAVE_MIPSFPU_INLINE 0
++%define HAVE_MIPS32R2_INLINE 0
++%define HAVE_MIPS32R5_INLINE 0
++%define HAVE_MIPS64R2_INLINE 0
++%define HAVE_MIPS32R6_INLINE 0
++%define HAVE_MIPS64R6_INLINE 0
++%define HAVE_MIPSDSP_INLINE 0
++%define HAVE_MIPSDSPR2_INLINE 0
++%define HAVE_MSA_INLINE 0
++%define HAVE_LOONGSON2_INLINE 0
++%define HAVE_LOONGSON3_INLINE 0
++%define HAVE_MMI_INLINE 0
++%define HAVE_LSX_INLINE 0
++%define HAVE_LASX_INLINE 0
++%define HAVE_ALIGNED_STACK 1
++%define HAVE_FAST_64BIT 1
++%define HAVE_FAST_CLZ 1
++%define HAVE_FAST_CMOV 1
++%define HAVE_LOCAL_ALIGNED 1
++%define HAVE_SIMD_ALIGN_16 1
++%define HAVE_SIMD_ALIGN_32 1
++%define HAVE_SIMD_ALIGN_64 1
++%define HAVE_ATOMIC_CAS_PTR 0
++%define HAVE_MACHINE_RW_BARRIER 0
++%define HAVE_MEMORYBARRIER 0
++%define HAVE_MM_EMPTY 1
++%define HAVE_RDTSC 0
++%define HAVE_SEM_TIMEDWAIT 1
++%define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
++%define HAVE_CABS 0
++%define HAVE_CEXP 0
++%define HAVE_INLINE_ASM 1
++%define HAVE_SYMVER 0
++%define HAVE_X86ASM 1
++%define HAVE_BIGENDIAN 0
++%define HAVE_FAST_UNALIGNED 1
++%define HAVE_ARPA_INET_H 0
++%define HAVE_ASM_TYPES_H 0
++%define HAVE_CDIO_PARANOIA_H 0
++%define HAVE_CDIO_PARANOIA_PARANOIA_H 0
++%define HAVE_CUDA_H 0
++%define HAVE_DISPATCH_DISPATCH_H 0
++%define HAVE_DEV_BKTR_IOCTL_BT848_H 0
++%define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
++%define HAVE_DEV_IC_BT8XX_H 1
++%define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
++%define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
++%define HAVE_DIRECT_H 0
++%define HAVE_DIRENT_H 1
++%define HAVE_DXGIDEBUG_H 0
++%define HAVE_DXVA_H 0
++%define HAVE_ES2_GL_H 0
++%define HAVE_GSM_H 0
++%define HAVE_IO_H 0
++%define HAVE_LINUX_DMA_BUF_H 0
++%define HAVE_LINUX_PERF_EVENT_H 0
++%define HAVE_MACHINE_IOCTL_BT848_H 0
++%define HAVE_MACHINE_IOCTL_METEOR_H 0
++%define HAVE_MALLOC_H 0
++%define HAVE_OPENCV2_CORE_CORE_C_H 0
++%define HAVE_OPENGL_GL3_H 0
++%define HAVE_POLL_H 1
++%define HAVE_SYS_PARAM_H 1
++%define HAVE_SYS_RESOURCE_H 1
++%define HAVE_SYS_SELECT_H 1
++%define HAVE_SYS_SOUNDCARD_H 0
++%define HAVE_SYS_TIME_H 1
++%define HAVE_SYS_UN_H 1
++%define HAVE_SYS_VIDEOIO_H 1
++%define HAVE_TERMIOS_H 1
++%define HAVE_UDPLITE_H 0
++%define HAVE_UNISTD_H 1
++%define HAVE_VALGRIND_VALGRIND_H 0 ; %define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440
++%define HAVE_WINDOWS_H 0
++%define HAVE_WINSOCK2_H 0
++%define HAVE_INTRINSICS_NEON 0
++%define HAVE_ATANF 1
++%define HAVE_ATAN2F 1
++%define HAVE_CBRT 1
++%define HAVE_CBRTF 1
++%define HAVE_COPYSIGN 1
++%define HAVE_COSF 1
++%define HAVE_ERF 1
++%define HAVE_EXP2 1
++%define HAVE_EXP2F 1
++%define HAVE_EXPF 1
++%define HAVE_HYPOT 1
++%define HAVE_ISFINITE 1
++%define HAVE_ISINF 1
++%define HAVE_ISNAN 1
++%define HAVE_LDEXPF 1
++%define HAVE_LLRINT 1
++%define HAVE_LLRINTF 1
++%define HAVE_LOG2 1
++%define HAVE_LOG2F 1
++%define HAVE_LOG10F 1
++%define HAVE_LRINT 1
++%define HAVE_LRINTF 1
++%define HAVE_POWF 1
++%define HAVE_RINT 1
++%define HAVE_ROUND 1
++%define HAVE_ROUNDF 1
++%define HAVE_SINF 1
++%define HAVE_TRUNC 1
++%define HAVE_TRUNCF 1
++%define HAVE_DOS_PATHS 0
++%define HAVE_LIBC_MSVCRT 0
++%define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
++%define HAVE_SECTION_DATA_REL_RO 1
++%define HAVE_THREADS 1
++%define HAVE_UWP 0
++%define HAVE_WINRT 0
++%define HAVE_ACCESS 1
++%define HAVE_ALIGNED_MALLOC 0
++%define HAVE_ARC4RANDOM 1
++%define HAVE_CLOCK_GETTIME 1
++%define HAVE_CLOSESOCKET 0
++%define HAVE_COMMANDLINETOARGVW 0
++%define HAVE_FCNTL 1
++%define HAVE_GETADDRINFO 0
++%define HAVE_GETAUXVAL 0
++%define HAVE_GETHRTIME 0
++%define HAVE_GETOPT 1
++%define HAVE_GETMODULEHANDLE 0
++%define HAVE_GETPROCESSAFFINITYMASK 0
++%define HAVE_GETPROCESSMEMORYINFO 0
++%define HAVE_GETPROCESSTIMES 0
++%define HAVE_GETRUSAGE 1
++%define HAVE_GETSTDHANDLE 0
++%define HAVE_GETSYSTEMTIMEASFILETIME 0
++%define HAVE_GETTIMEOFDAY 1
++%define HAVE_GLOB 1
++%define HAVE_GLXGETPROCADDRESS 0
++%define HAVE_GMTIME_R 1
++%define HAVE_INET_ATON 0
++%define HAVE_ISATTY 1
++%define HAVE_KBHIT 0
++%define HAVE_LOCALTIME_R 1
++%define HAVE_LSTAT 1
++%define HAVE_LZO1X_999_COMPRESS 0
++%define HAVE_MACH_ABSOLUTE_TIME 0
++%define HAVE_MAPVIEWOFFILE 0
++%define HAVE_MEMALIGN 0
++%define HAVE_MKSTEMP 1
++%define HAVE_MMAP 1
++%define HAVE_MPROTECT 1
++%define HAVE_NANOSLEEP 1
++%define HAVE_PEEKNAMEDPIPE 0
++%define HAVE_POSIX_MEMALIGN 1
++%define HAVE_PTHREAD_CANCEL 1
++%define HAVE_SCHED_GETAFFINITY 0
++%define HAVE_SECITEMIMPORT 0
++%define HAVE_SETCONSOLETEXTATTRIBUTE 0
++%define HAVE_SETCONSOLECTRLHANDLER 0
++%define HAVE_SETDLLDIRECTORY 0
++%define HAVE_SETMODE 0
++%define HAVE_SETRLIMIT 1
++%define HAVE_SLEEP 0
++%define HAVE_STRERROR_R 1
++%define HAVE_SYSCONF 1
++%define HAVE_SYSCTL 0
++%define HAVE_USLEEP 1
++%define HAVE_UTGETOSTYPEFROMSTRING 0
++%define HAVE_VIRTUALALLOC 0
++%define HAVE_WGLGETPROCADDRESS 0
++%define HAVE_BCRYPT 0
++%define HAVE_VAAPI_DRM 0
++%define HAVE_VAAPI_X11 0
++%define HAVE_VDPAU_X11 0
++%define HAVE_PTHREADS 1
++%define HAVE_OS2THREADS 0
++%define HAVE_W32THREADS 0
++%define HAVE_AS_ARCH_DIRECTIVE 0
++%define HAVE_AS_DN_DIRECTIVE 0
++%define HAVE_AS_FPU_DIRECTIVE 0
++%define HAVE_AS_FUNC 0
++%define HAVE_AS_OBJECT_ARCH 0
++%define HAVE_ASM_MOD_Q 0
++%define HAVE_BLOCKS_EXTENSION 0
++%define HAVE_EBP_AVAILABLE 1
++%define HAVE_EBX_AVAILABLE 1
++%define HAVE_GNU_AS 0
++%define HAVE_GNU_WINDRES 0
++%define HAVE_IBM_ASM 0
++%define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
++%define HAVE_INLINE_ASM_LABELS 1
++%define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
++%define HAVE_PRAGMA_DEPRECATED 1
++%define HAVE_RSYNC_CONTIMEOUT 1
++%define HAVE_SYMVER_ASM_LABEL 1
++%define HAVE_SYMVER_GNU_ASM 1
++%define HAVE_VFP_ARGS 0
++%define HAVE_XFORM_ASM 0
++%define HAVE_XMM_CLOBBERS 1
++%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
++%define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
++%define HAVE_KCMVIDEOCODECTYPE_VP9 0
++%define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
++%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
++%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
++%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
++%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
++%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
++%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
++%define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
++%define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
++%define HAVE_SOCKLEN_T 0
++%define HAVE_STRUCT_ADDRINFO 0
++%define HAVE_STRUCT_GROUP_SOURCE_REQ 0
++%define HAVE_STRUCT_IP_MREQ_SOURCE 0
++%define HAVE_STRUCT_IPV6_MREQ 0
++%define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
++%define HAVE_STRUCT_POLLFD 0
++%define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
++%define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
++%define HAVE_STRUCT_SOCKADDR_IN6 0
++%define HAVE_STRUCT_SOCKADDR_SA_LEN 0
++%define HAVE_STRUCT_SOCKADDR_STORAGE 0
++%define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
++%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
++%define HAVE_GZIP 1
++%define HAVE_LIBDRM_GETFB2 0
++%define HAVE_MAKEINFO 1
++%define HAVE_MAKEINFO_HTML 0
++%define HAVE_OPENCL_D3D11 0
++%define HAVE_OPENCL_DRM_ARM 0
++%define HAVE_OPENCL_DRM_BEIGNET 0
++%define HAVE_OPENCL_DXVA2 0
++%define HAVE_OPENCL_VAAPI_BEIGNET 0
++%define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
++%define HAVE_PERL 1
++%define HAVE_POD2MAN 1
++%define HAVE_TEXI2HTML 0
++%define HAVE_XMLLINT 1
++%define HAVE_ZLIB_GZIP 0
++%define CONFIG_DOC 0
++%define CONFIG_HTMLPAGES 0
++%define CONFIG_MANPAGES 0
++%define CONFIG_PODPAGES 0
++%define CONFIG_TXTPAGES 0
++%define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
++%define CONFIG_AVIO_READING_EXAMPLE 1
++%define CONFIG_DECODE_AUDIO_EXAMPLE 1
++%define CONFIG_DECODE_VIDEO_EXAMPLE 1
++%define CONFIG_DEMUXING_DECODING_EXAMPLE 1
++%define CONFIG_ENCODE_AUDIO_EXAMPLE 1
++%define CONFIG_ENCODE_VIDEO_EXAMPLE 1
++%define CONFIG_EXTRACT_MVS_EXAMPLE 1
++%define CONFIG_FILTER_AUDIO_EXAMPLE 0
++%define CONFIG_FILTERING_AUDIO_EXAMPLE 0
++%define CONFIG_FILTERING_VIDEO_EXAMPLE 0
++%define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
++%define CONFIG_HW_DECODE_EXAMPLE 1
++%define CONFIG_METADATA_EXAMPLE 1
++%define CONFIG_MUXING_EXAMPLE 0
++%define CONFIG_QSVDEC_EXAMPLE 0
++%define CONFIG_REMUXING_EXAMPLE 1
++%define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
++%define CONFIG_SCALING_VIDEO_EXAMPLE 0
++%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
++%define CONFIG_TRANSCODING_EXAMPLE 0
++%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
++%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
++%define CONFIG_AVISYNTH 0
++%define CONFIG_FREI0R 0
++%define CONFIG_LIBCDIO 0
++%define CONFIG_LIBDAVS2 0
++%define CONFIG_LIBRUBBERBAND 0
++%define CONFIG_LIBVIDSTAB 0
++%define CONFIG_LIBX264 0
++%define CONFIG_LIBX265 0
++%define CONFIG_LIBXAVS 0
++%define CONFIG_LIBXAVS2 0
++%define CONFIG_LIBXVID 0
++%define CONFIG_DECKLINK 0
++%define CONFIG_LIBFDK_AAC 0
++%define CONFIG_LIBTLS 0
++%define CONFIG_GMP 0
++%define CONFIG_LIBARIBB24 0
++%define CONFIG_LIBLENSFUN 0
++%define CONFIG_LIBOPENCORE_AMRNB 0
++%define CONFIG_LIBOPENCORE_AMRWB 0
++%define CONFIG_LIBVO_AMRWBENC 0
++%define CONFIG_MBEDTLS 0
++%define CONFIG_RKMPP 0
++%define CONFIG_LIBSMBCLIENT 0
++%define CONFIG_CHROMAPRINT 0
++%define CONFIG_GCRYPT 0
++%define CONFIG_GNUTLS 0
++%define CONFIG_JNI 0
++%define CONFIG_LADSPA 0
++%define CONFIG_LCMS2 0
++%define CONFIG_LIBAOM 0
++%define CONFIG_LIBASS 0
++%define CONFIG_LIBBLURAY 0
++%define CONFIG_LIBBS2B 0
++%define CONFIG_LIBCACA 0
++%define CONFIG_LIBCELT 0
++%define CONFIG_LIBCODEC2 0
++%define CONFIG_LIBDAV1D 0
++%define CONFIG_LIBDC1394 0
++%define CONFIG_LIBDRM 0
++%define CONFIG_LIBFLITE 0
++%define CONFIG_LIBFONTCONFIG 0
++%define CONFIG_LIBFREETYPE 0
++%define CONFIG_LIBFRIBIDI 0
++%define CONFIG_LIBGLSLANG 0
++%define CONFIG_LIBGME 0
++%define CONFIG_LIBGSM 0
++%define CONFIG_LIBIEC61883 0
++%define CONFIG_LIBILBC 0
++%define CONFIG_LIBJACK 0
++%define CONFIG_LIBJXL 0
++%define CONFIG_LIBKLVANC 0
++%define CONFIG_LIBKVAZAAR 0
++%define CONFIG_LIBMODPLUG 0
++%define CONFIG_LIBMP3LAME 0
++%define CONFIG_LIBMYSOFA 0
++%define CONFIG_LIBOPENCV 0
++%define CONFIG_LIBOPENH264 0
++%define CONFIG_LIBOPENJPEG 0
++%define CONFIG_LIBOPENMPT 0
++%define CONFIG_LIBOPENVINO 0
++%define CONFIG_LIBOPUS 1
++%define CONFIG_LIBPLACEBO 0
++%define CONFIG_LIBPULSE 0
++%define CONFIG_LIBRABBITMQ 0
++%define CONFIG_LIBRAV1E 0
++%define CONFIG_LIBRIST 0
++%define CONFIG_LIBRSVG 0
++%define CONFIG_LIBRTMP 0
++%define CONFIG_LIBSHADERC 0
++%define CONFIG_LIBSHINE 0
++%define CONFIG_LIBSMBCLIENT 0
++%define CONFIG_LIBSNAPPY 0
++%define CONFIG_LIBSOXR 0
++%define CONFIG_LIBSPEEX 0
++%define CONFIG_LIBSRT 0
++%define CONFIG_LIBSSH 0
++%define CONFIG_LIBSVTAV1 0
++%define CONFIG_LIBTENSORFLOW 0
++%define CONFIG_LIBTESSERACT 0
++%define CONFIG_LIBTHEORA 0
++%define CONFIG_LIBTWOLAME 0
++%define CONFIG_LIBUAVS3D 0
++%define CONFIG_LIBV4L2 0
++%define CONFIG_LIBVMAF 0
++%define CONFIG_LIBVORBIS 0
++%define CONFIG_LIBVPX 0
++%define CONFIG_LIBWEBP 0
++%define CONFIG_LIBXML2 0
++%define CONFIG_LIBZIMG 0
++%define CONFIG_LIBZMQ 0
++%define CONFIG_LIBZVBI 0
++%define CONFIG_LV2 0
++%define CONFIG_MEDIACODEC 0
++%define CONFIG_OPENAL 0
++%define CONFIG_OPENGL 0
++%define CONFIG_OPENSSL 0
++%define CONFIG_POCKETSPHINX 0
++%define CONFIG_VAPOURSYNTH 0
++%define CONFIG_ALSA 0
++%define CONFIG_APPKIT 0
++%define CONFIG_AVFOUNDATION 0
++%define CONFIG_BZLIB 0
++%define CONFIG_COREIMAGE 0
++%define CONFIG_ICONV 0
++%define CONFIG_LIBXCB 0
++%define CONFIG_LIBXCB_SHM 0
++%define CONFIG_LIBXCB_SHAPE 0
++%define CONFIG_LIBXCB_XFIXES 0
++%define CONFIG_LZMA 0
++%define CONFIG_MEDIAFOUNDATION 0
++%define CONFIG_METAL 0
++%define CONFIG_SCHANNEL 0
++%define CONFIG_SDL2 0
++%define CONFIG_SECURETRANSPORT 0
++%define CONFIG_SNDIO 0
++%define CONFIG_XLIB 0
++%define CONFIG_ZLIB 0
++%define CONFIG_CUDA_NVCC 0
++%define CONFIG_CUDA_SDK 0
++%define CONFIG_LIBNPP 0
++%define CONFIG_LIBMFX 0
++%define CONFIG_MMAL 0
++%define CONFIG_OMX 0
++%define CONFIG_OPENCL 0
++%define CONFIG_AMF 0
++%define CONFIG_AUDIOTOOLBOX 0
++%define CONFIG_CRYSTALHD 0
++%define CONFIG_CUDA 0
++%define CONFIG_CUDA_LLVM 0
++%define CONFIG_CUVID 0
++%define CONFIG_D3D11VA 0
++%define CONFIG_DXVA2 0
++%define CONFIG_FFNVCODEC 0
++%define CONFIG_NVDEC 0
++%define CONFIG_NVENC 0
++%define CONFIG_VAAPI 0
++%define CONFIG_VDPAU 0
++%define CONFIG_VIDEOTOOLBOX 0
++%define CONFIG_VULKAN 0
++%define CONFIG_V4L2_M2M 0
++%define CONFIG_FTRAPV 0
++%define CONFIG_GRAY 0
++%define CONFIG_HARDCODED_TABLES 0
++%define CONFIG_OMX_RPI 0
++%define CONFIG_RUNTIME_CPUDETECT 1
++%define CONFIG_SAFE_BITSTREAM_READER 1
++%define CONFIG_SHARED 0
++%define CONFIG_SMALL 0
++%define CONFIG_STATIC 1
++%define CONFIG_SWSCALE_ALPHA 1
++%define CONFIG_GPL 0
++%define CONFIG_NONFREE 0
++%define CONFIG_VERSION3 0
++%define CONFIG_AVDEVICE 0
++%define CONFIG_AVFILTER 0
++%define CONFIG_SWSCALE 0
++%define CONFIG_POSTPROC 0
++%define CONFIG_AVFORMAT 1
++%define CONFIG_AVCODEC 1
++%define CONFIG_SWRESAMPLE 0
++%define CONFIG_AVUTIL 1
++%define CONFIG_FFPLAY 0
++%define CONFIG_FFPROBE 0
++%define CONFIG_FFMPEG 0
++%define CONFIG_DCT 1
++%define CONFIG_DWT 0
++%define CONFIG_ERROR_RESILIENCE 0
++%define CONFIG_FAAN 0
++%define CONFIG_FAST_UNALIGNED 1
++%define CONFIG_FFT 1
++%define CONFIG_LSP 0
++%define CONFIG_MDCT 1
++%define CONFIG_PIXELUTILS 0
++%define CONFIG_NETWORK 0
++%define CONFIG_RDFT 1
++%define CONFIG_AUTODETECT 0
++%define CONFIG_FONTCONFIG 0
++%define CONFIG_LARGE_TESTS 1
++%define CONFIG_LINUX_PERF 0
++%define CONFIG_MACOS_KPERF 0
++%define CONFIG_MEMORY_POISONING 0
++%define CONFIG_NEON_CLOBBER_TEST 0
++%define CONFIG_OSSFUZZ 0
++%define CONFIG_PIC 1
++%define CONFIG_PTX_COMPRESSION 0
++%define CONFIG_THUMB 0
++%define CONFIG_VALGRIND_BACKTRACE 0
++%define CONFIG_XMM_CLOBBER_TEST 0
++%define CONFIG_BSFS 0
++%define CONFIG_DECODERS 1
++%define CONFIG_ENCODERS 0
++%define CONFIG_HWACCELS 0
++%define CONFIG_PARSERS 1
++%define CONFIG_INDEVS 0
++%define CONFIG_OUTDEVS 0
++%define CONFIG_FILTERS 0
++%define CONFIG_DEMUXERS 1
++%define CONFIG_MUXERS 0
++%define CONFIG_PROTOCOLS 0
++%define CONFIG_AANDCTTABLES 0
++%define CONFIG_AC3DSP 0
++%define CONFIG_ADTS_HEADER 1
++%define CONFIG_ATSC_A53 1
++%define CONFIG_AUDIO_FRAME_QUEUE 0
++%define CONFIG_AUDIODSP 0
++%define CONFIG_BLOCKDSP 0
++%define CONFIG_BSWAPDSP 0
++%define CONFIG_CABAC 1
++%define CONFIG_CBS 0
++%define CONFIG_CBS_AV1 0
++%define CONFIG_CBS_H264 0
++%define CONFIG_CBS_H265 0
++%define CONFIG_CBS_JPEG 0
++%define CONFIG_CBS_MPEG2 0
++%define CONFIG_CBS_VP9 0
++%define CONFIG_DEFLATE_WRAPPER 0
++%define CONFIG_DIRAC_PARSE 1
++%define CONFIG_DNN 0
++%define CONFIG_DOVI_RPU 0
++%define CONFIG_DVPROFILE 0
++%define CONFIG_EXIF 0
++%define CONFIG_FAANDCT 0
++%define CONFIG_FAANIDCT 0
++%define CONFIG_FDCTDSP 0
++%define CONFIG_FLACDSP 1
++%define CONFIG_FMTCONVERT 0
++%define CONFIG_FRAME_THREAD_ENCODER 0
++%define CONFIG_G722DSP 0
++%define CONFIG_GOLOMB 1
++%define CONFIG_GPLV3 0
++%define CONFIG_H263DSP 0
++%define CONFIG_H264CHROMA 1
++%define CONFIG_H264DSP 1
++%define CONFIG_H264PARSE 1
++%define CONFIG_H264PRED 1
++%define CONFIG_H264QPEL 1
++%define CONFIG_HEVCPARSE 0
++%define CONFIG_HPELDSP 1
++%define CONFIG_HUFFMAN 0
++%define CONFIG_HUFFYUVDSP 0
++%define CONFIG_HUFFYUVENCDSP 0
++%define CONFIG_IDCTDSP 0
++%define CONFIG_IIRFILTER 0
++%define CONFIG_MDCT15 1
++%define CONFIG_INFLATE_WRAPPER 0
++%define CONFIG_INTRAX8 0
++%define CONFIG_ISO_MEDIA 1
++%define CONFIG_IVIDSP 0
++%define CONFIG_JPEGTABLES 0
++%define CONFIG_LGPLV3 0
++%define CONFIG_LIBX262 0
++%define CONFIG_LLAUDDSP 0
++%define CONFIG_LLVIDDSP 0
++%define CONFIG_LLVIDENCDSP 0
++%define CONFIG_LPC 0
++%define CONFIG_LZF 0
++%define CONFIG_ME_CMP 0
++%define CONFIG_MPEG_ER 0
++%define CONFIG_MPEGAUDIO 1
++%define CONFIG_MPEGAUDIODSP 1
++%define CONFIG_MPEGAUDIOHEADER 1
++%define CONFIG_MPEG4AUDIO 1
++%define CONFIG_MPEGVIDEO 0
++%define CONFIG_MPEGVIDEODEC 0
++%define CONFIG_MPEGVIDEOENC 0
++%define CONFIG_MSS34DSP 0
++%define CONFIG_PIXBLOCKDSP 0
++%define CONFIG_QPELDSP 0
++%define CONFIG_QSV 0
++%define CONFIG_QSVDEC 0
++%define CONFIG_QSVENC 0
++%define CONFIG_QSVVPP 0
++%define CONFIG_RANGECODER 0
++%define CONFIG_RIFFDEC 1
++%define CONFIG_RIFFENC 0
++%define CONFIG_RTPDEC 0
++%define CONFIG_RTPENC_CHAIN 0
++%define CONFIG_RV34DSP 0
++%define CONFIG_SCENE_SAD 0
++%define CONFIG_SINEWIN 1
++%define CONFIG_SNAPPY 0
++%define CONFIG_SRTP 0
++%define CONFIG_STARTCODE 1
++%define CONFIG_TEXTUREDSP 0
++%define CONFIG_TEXTUREDSPENC 0
++%define CONFIG_TPELDSP 0
++%define CONFIG_VAAPI_1 0
++%define CONFIG_VAAPI_ENCODE 0
++%define CONFIG_VC1DSP 0
++%define CONFIG_VIDEODSP 1
++%define CONFIG_VP3DSP 1
++%define CONFIG_VP56DSP 0
++%define CONFIG_VP8DSP 1
++%define CONFIG_WMA_FREQS 0
++%define CONFIG_WMV2DSP 0
diff --git a/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.h b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.h
new file mode 100644
index 000000000000..cfd8835a5ca0
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.h
@@ -0,0 +1,742 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/x64/config.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/x64/config.h
+@@ -0,0 +1,739 @@
++/* Automatically generated by configure - do not modify! */
++#ifndef FFMPEG_CONFIG_H
++#define FFMPEG_CONFIG_H
++/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio,vp9' --extra-cflags=-I/usr/local/google/home/sandersd/src/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=nasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" " -- elide long configuration string from binary */
++#define FFMPEG_LICENSE "LGPL version 2.1 or later"
++#define CONFIG_THIS_YEAR 2022
++#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
++#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
++#define CC_IDENT "OpenBSD clang version 13.0.0"
++#define OS_NAME openbsd
++#define av_restrict restrict
++#define EXTERN_PREFIX ""
++#define EXTERN_ASM
++#define BUILDSUF ""
++#define SLIBSUF ".so"
++#define HAVE_MMX2 HAVE_MMXEXT
++#define SWS_MAX_FILTER_SIZE 256
++#define ARCH_AARCH64 0
++#define ARCH_ALPHA 0
++#define ARCH_ARM 0
++#define ARCH_AVR32 0
++#define ARCH_AVR32_AP 0
++#define ARCH_AVR32_UC 0
++#define ARCH_BFIN 0
++#define ARCH_IA64 0
++#define ARCH_LOONGARCH 0
++#define ARCH_LOONGARCH32 0
++#define ARCH_LOONGARCH64 0
++#define ARCH_M68K 0
++#define ARCH_MIPS 0
++#define ARCH_MIPS64 0
++#define ARCH_PARISC 0
++#define ARCH_PPC 0
++#define ARCH_PPC64 0
++#define ARCH_RISCV 0
++#define ARCH_S390 0
++#define ARCH_SH4 0
++#define ARCH_SPARC 0
++#define ARCH_SPARC64 0
++#define ARCH_TILEGX 0
++#define ARCH_TILEPRO 0
++#define ARCH_TOMI 0
++#define ARCH_X86 1
++#define ARCH_X86_32 0
++#define ARCH_X86_64 1
++#define HAVE_ARMV5TE 0
++#define HAVE_ARMV6 0
++#define HAVE_ARMV6T2 0
++#define HAVE_ARMV8 0
++#define HAVE_NEON 0
++#define HAVE_VFP 0
++#define HAVE_VFPV3 0
++#define HAVE_SETEND 0
++#define HAVE_ALTIVEC 0
++#define HAVE_DCBZL 0
++#define HAVE_LDBRX 0
++#define HAVE_POWER8 0
++#define HAVE_PPC4XX 0
++#define HAVE_VSX 0
++#define HAVE_AESNI 1
++#define HAVE_AMD3DNOW 1
++#define HAVE_AMD3DNOWEXT 1
++#define HAVE_AVX 1
++#define HAVE_AVX2 1
++#define HAVE_AVX512 1
++#define HAVE_AVX512ICL 1
++#define HAVE_FMA3 1
++#define HAVE_FMA4 1
++#define HAVE_MMX 1
++#define HAVE_MMXEXT 1
++#define HAVE_SSE 1
++#define HAVE_SSE2 1
++#define HAVE_SSE3 1
++#define HAVE_SSE4 1
++#define HAVE_SSE42 1
++#define HAVE_SSSE3 1
++#define HAVE_XOP 1
++#define HAVE_CPUNOP 0
++#define HAVE_I686 1
++#define HAVE_MIPSFPU 0
++#define HAVE_MIPS32R2 0
++#define HAVE_MIPS32R5 0
++#define HAVE_MIPS64R2 0
++#define HAVE_MIPS32R6 0
++#define HAVE_MIPS64R6 0
++#define HAVE_MIPSDSP 0
++#define HAVE_MIPSDSPR2 0
++#define HAVE_MSA 0
++#define HAVE_LOONGSON2 0
++#define HAVE_LOONGSON3 0
++#define HAVE_MMI 0
++#define HAVE_LSX 0
++#define HAVE_LASX 0
++#define HAVE_ARMV5TE_EXTERNAL 0
++#define HAVE_ARMV6_EXTERNAL 0
++#define HAVE_ARMV6T2_EXTERNAL 0
++#define HAVE_ARMV8_EXTERNAL 0
++#define HAVE_NEON_EXTERNAL 0
++#define HAVE_VFP_EXTERNAL 0
++#define HAVE_VFPV3_EXTERNAL 0
++#define HAVE_SETEND_EXTERNAL 0
++#define HAVE_ALTIVEC_EXTERNAL 0
++#define HAVE_DCBZL_EXTERNAL 0
++#define HAVE_LDBRX_EXTERNAL 0
++#define HAVE_POWER8_EXTERNAL 0
++#define HAVE_PPC4XX_EXTERNAL 0
++#define HAVE_VSX_EXTERNAL 0
++#define HAVE_AESNI_EXTERNAL 1
++#define HAVE_AMD3DNOW_EXTERNAL 1
++#define HAVE_AMD3DNOWEXT_EXTERNAL 1
++#define HAVE_AVX_EXTERNAL 1
++#define HAVE_AVX2_EXTERNAL 1
++#define HAVE_AVX512_EXTERNAL 1
++#define HAVE_AVX512ICL_EXTERNAL 1
++#define HAVE_FMA3_EXTERNAL 1
++#define HAVE_FMA4_EXTERNAL 1
++#define HAVE_MMX_EXTERNAL 1
++#define HAVE_MMXEXT_EXTERNAL 1
++#define HAVE_SSE_EXTERNAL 1
++#define HAVE_SSE2_EXTERNAL 1
++#define HAVE_SSE3_EXTERNAL 1
++#define HAVE_SSE4_EXTERNAL 1
++#define HAVE_SSE42_EXTERNAL 1
++#define HAVE_SSSE3_EXTERNAL 1
++#define HAVE_XOP_EXTERNAL 1
++#define HAVE_CPUNOP_EXTERNAL 0
++#define HAVE_I686_EXTERNAL 0
++#define HAVE_MIPSFPU_EXTERNAL 0
++#define HAVE_MIPS32R2_EXTERNAL 0
++#define HAVE_MIPS32R5_EXTERNAL 0
++#define HAVE_MIPS64R2_EXTERNAL 0
++#define HAVE_MIPS32R6_EXTERNAL 0
++#define HAVE_MIPS64R6_EXTERNAL 0
++#define HAVE_MIPSDSP_EXTERNAL 0
++#define HAVE_MIPSDSPR2_EXTERNAL 0
++#define HAVE_MSA_EXTERNAL 0
++#define HAVE_LOONGSON2_EXTERNAL 0
++#define HAVE_LOONGSON3_EXTERNAL 0
++#define HAVE_MMI_EXTERNAL 0
++#define HAVE_LSX_EXTERNAL 0
++#define HAVE_LASX_EXTERNAL 0
++#define HAVE_ARMV5TE_INLINE 0
++#define HAVE_ARMV6_INLINE 0
++#define HAVE_ARMV6T2_INLINE 0
++#define HAVE_ARMV8_INLINE 0
++#define HAVE_NEON_INLINE 0
++#define HAVE_VFP_INLINE 0
++#define HAVE_VFPV3_INLINE 0
++#define HAVE_SETEND_INLINE 0
++#define HAVE_ALTIVEC_INLINE 0
++#define HAVE_DCBZL_INLINE 0
++#define HAVE_LDBRX_INLINE 0
++#define HAVE_POWER8_INLINE 0
++#define HAVE_PPC4XX_INLINE 0
++#define HAVE_VSX_INLINE 0
++#define HAVE_AESNI_INLINE 1
++#define HAVE_AMD3DNOW_INLINE 1
++#define HAVE_AMD3DNOWEXT_INLINE 1
++#define HAVE_AVX_INLINE 1
++#define HAVE_AVX2_INLINE 1
++#define HAVE_AVX512_INLINE 1
++#define HAVE_AVX512ICL_INLINE 1
++#define HAVE_FMA3_INLINE 1
++#define HAVE_FMA4_INLINE 1
++#define HAVE_MMX_INLINE 1
++#define HAVE_MMXEXT_INLINE 1
++#define HAVE_SSE_INLINE 1
++#define HAVE_SSE2_INLINE 1
++#define HAVE_SSE3_INLINE 1
++#define HAVE_SSE4_INLINE 1
++#define HAVE_SSE42_INLINE 1
++#define HAVE_SSSE3_INLINE 1
++#define HAVE_XOP_INLINE 1
++#define HAVE_CPUNOP_INLINE 0
++#define HAVE_I686_INLINE 0
++#define HAVE_MIPSFPU_INLINE 0
++#define HAVE_MIPS32R2_INLINE 0
++#define HAVE_MIPS32R5_INLINE 0
++#define HAVE_MIPS64R2_INLINE 0
++#define HAVE_MIPS32R6_INLINE 0
++#define HAVE_MIPS64R6_INLINE 0
++#define HAVE_MIPSDSP_INLINE 0
++#define HAVE_MIPSDSPR2_INLINE 0
++#define HAVE_MSA_INLINE 0
++#define HAVE_LOONGSON2_INLINE 0
++#define HAVE_LOONGSON3_INLINE 0
++#define HAVE_MMI_INLINE 0
++#define HAVE_LSX_INLINE 0
++#define HAVE_LASX_INLINE 0
++#define HAVE_ALIGNED_STACK 1
++#define HAVE_FAST_64BIT 1
++#define HAVE_FAST_CLZ 1
++#define HAVE_FAST_CMOV 1
++#define HAVE_LOCAL_ALIGNED 1
++#define HAVE_SIMD_ALIGN_16 1
++#define HAVE_SIMD_ALIGN_32 1
++#define HAVE_SIMD_ALIGN_64 1
++#define HAVE_ATOMIC_CAS_PTR 0
++#define HAVE_MACHINE_RW_BARRIER 0
++#define HAVE_MEMORYBARRIER 0
++#define HAVE_MM_EMPTY 1
++#define HAVE_RDTSC 0
++#define HAVE_SEM_TIMEDWAIT 1
++#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
++#define HAVE_CABS 0
++#define HAVE_CEXP 0
++#define HAVE_INLINE_ASM 1
++#define HAVE_SYMVER 0
++#define HAVE_X86ASM 1
++#define HAVE_BIGENDIAN 0
++#define HAVE_FAST_UNALIGNED 1
++#define HAVE_ARPA_INET_H 0
++#define HAVE_ASM_TYPES_H 0
++#define HAVE_CDIO_PARANOIA_H 0
++#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
++#define HAVE_CUDA_H 0
++#define HAVE_DISPATCH_DISPATCH_H 0
++#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
++#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
++#define HAVE_DEV_IC_BT8XX_H 1
++#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
++#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
++#define HAVE_DIRECT_H 0
++#define HAVE_DIRENT_H 1
++#define HAVE_DXGIDEBUG_H 0
++#define HAVE_DXVA_H 0
++#define HAVE_ES2_GL_H 0
++#define HAVE_GSM_H 0
++#define HAVE_IO_H 0
++#define HAVE_LINUX_DMA_BUF_H 0
++#define HAVE_LINUX_PERF_EVENT_H 0
++#define HAVE_MACHINE_IOCTL_BT848_H 0
++#define HAVE_MACHINE_IOCTL_METEOR_H 0
++#define HAVE_MALLOC_H 0
++#define HAVE_OPENCV2_CORE_CORE_C_H 0
++#define HAVE_OPENGL_GL3_H 0
++#define HAVE_POLL_H 1
++#define HAVE_SYS_PARAM_H 1
++#define HAVE_SYS_RESOURCE_H 1
++#define HAVE_SYS_SELECT_H 1
++#define HAVE_SYS_SOUNDCARD_H 0
++#define HAVE_SYS_TIME_H 1
++#define HAVE_SYS_UN_H 1
++#define HAVE_SYS_VIDEOIO_H 1
++#define HAVE_TERMIOS_H 1
++#define HAVE_UDPLITE_H 0
++#define HAVE_UNISTD_H 1
++#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440 */
++#define HAVE_WINDOWS_H 0
++#define HAVE_WINSOCK2_H 0
++#define HAVE_INTRINSICS_NEON 0
++#define HAVE_ATANF 1
++#define HAVE_ATAN2F 1
++#define HAVE_CBRT 1
++#define HAVE_CBRTF 1
++#define HAVE_COPYSIGN 1
++#define HAVE_COSF 1
++#define HAVE_ERF 1
++#define HAVE_EXP2 1
++#define HAVE_EXP2F 1
++#define HAVE_EXPF 1
++#define HAVE_HYPOT 1
++#define HAVE_ISFINITE 1
++#define HAVE_ISINF 1
++#define HAVE_ISNAN 1
++#define HAVE_LDEXPF 1
++#define HAVE_LLRINT 1
++#define HAVE_LLRINTF 1
++#define HAVE_LOG2 1
++#define HAVE_LOG2F 1
++#define HAVE_LOG10F 1
++#define HAVE_LRINT 1
++#define HAVE_LRINTF 1
++#define HAVE_POWF 1
++#define HAVE_RINT 1
++#define HAVE_ROUND 1
++#define HAVE_ROUNDF 1
++#define HAVE_SINF 1
++#define HAVE_TRUNC 1
++#define HAVE_TRUNCF 1
++#define HAVE_DOS_PATHS 0
++#define HAVE_LIBC_MSVCRT 0
++#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
++#define HAVE_SECTION_DATA_REL_RO 1
++#define HAVE_THREADS 1
++#define HAVE_UWP 0
++#define HAVE_WINRT 0
++#define HAVE_ACCESS 1
++#define HAVE_ALIGNED_MALLOC 0
++#define HAVE_ARC4RANDOM 1
++#define HAVE_CLOCK_GETTIME 1
++#define HAVE_CLOSESOCKET 0
++#define HAVE_COMMANDLINETOARGVW 0
++#define HAVE_FCNTL 1
++#define HAVE_GETADDRINFO 0
++#define HAVE_GETAUXVAL 0
++#define HAVE_GETHRTIME 0
++#define HAVE_GETOPT 1
++#define HAVE_GETMODULEHANDLE 0
++#define HAVE_GETPROCESSAFFINITYMASK 0
++#define HAVE_GETPROCESSMEMORYINFO 0
++#define HAVE_GETPROCESSTIMES 0
++#define HAVE_GETRUSAGE 1
++#define HAVE_GETSTDHANDLE 0
++#define HAVE_GETSYSTEMTIMEASFILETIME 0
++#define HAVE_GETTIMEOFDAY 1
++#define HAVE_GLOB 1
++#define HAVE_GLXGETPROCADDRESS 0
++#define HAVE_GMTIME_R 1
++#define HAVE_INET_ATON 0
++#define HAVE_ISATTY 1
++#define HAVE_KBHIT 0
++#define HAVE_LOCALTIME_R 1
++#define HAVE_LSTAT 1
++#define HAVE_LZO1X_999_COMPRESS 0
++#define HAVE_MACH_ABSOLUTE_TIME 0
++#define HAVE_MAPVIEWOFFILE 0
++#define HAVE_MEMALIGN 0
++#define HAVE_MKSTEMP 1
++#define HAVE_MMAP 1
++#define HAVE_MPROTECT 1
++#define HAVE_NANOSLEEP 1
++#define HAVE_PEEKNAMEDPIPE 0
++#define HAVE_POSIX_MEMALIGN 1
++#define HAVE_PTHREAD_CANCEL 1
++#define HAVE_SCHED_GETAFFINITY 0
++#define HAVE_SECITEMIMPORT 0
++#define HAVE_SETCONSOLETEXTATTRIBUTE 0
++#define HAVE_SETCONSOLECTRLHANDLER 0
++#define HAVE_SETDLLDIRECTORY 0
++#define HAVE_SETMODE 0
++#define HAVE_SETRLIMIT 1
++#define HAVE_SLEEP 0
++#define HAVE_STRERROR_R 1
++#define HAVE_SYSCONF 1
++#define HAVE_SYSCTL 0 /* #define HAVE_SYSCTL 0 -- forced to 0 for Fuchsia */
++#define HAVE_USLEEP 1
++#define HAVE_UTGETOSTYPEFROMSTRING 0
++#define HAVE_VIRTUALALLOC 0
++#define HAVE_WGLGETPROCADDRESS 0
++#define HAVE_BCRYPT 0
++#define HAVE_VAAPI_DRM 0
++#define HAVE_VAAPI_X11 0
++#define HAVE_VDPAU_X11 0
++#define HAVE_PTHREADS 1
++#define HAVE_OS2THREADS 0
++#define HAVE_W32THREADS 0
++#define HAVE_AS_ARCH_DIRECTIVE 0
++#define HAVE_AS_DN_DIRECTIVE 0
++#define HAVE_AS_FPU_DIRECTIVE 0
++#define HAVE_AS_FUNC 0
++#define HAVE_AS_OBJECT_ARCH 0
++#define HAVE_ASM_MOD_Q 0
++#define HAVE_BLOCKS_EXTENSION 0
++#define HAVE_EBP_AVAILABLE 1
++#define HAVE_EBX_AVAILABLE 1
++#define HAVE_GNU_AS 0
++#define HAVE_GNU_WINDRES 0
++#define HAVE_IBM_ASM 0
++#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
++#define HAVE_INLINE_ASM_LABELS 1
++#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
++#define HAVE_PRAGMA_DEPRECATED 1
++#define HAVE_RSYNC_CONTIMEOUT 1
++#define HAVE_SYMVER_ASM_LABEL 1
++#define HAVE_SYMVER_GNU_ASM 1
++#define HAVE_VFP_ARGS 0
++#define HAVE_XFORM_ASM 0
++#define HAVE_XMM_CLOBBERS 1
++#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
++#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
++#define HAVE_KCMVIDEOCODECTYPE_VP9 0
++#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
++#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
++#define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
++#define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
++#define HAVE_SOCKLEN_T 0
++#define HAVE_STRUCT_ADDRINFO 0
++#define HAVE_STRUCT_GROUP_SOURCE_REQ 0
++#define HAVE_STRUCT_IP_MREQ_SOURCE 0
++#define HAVE_STRUCT_IPV6_MREQ 0
++#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
++#define HAVE_STRUCT_POLLFD 0
++#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
++#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
++#define HAVE_STRUCT_SOCKADDR_IN6 0
++#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
++#define HAVE_STRUCT_SOCKADDR_STORAGE 0
++#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
++#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
++#define HAVE_GZIP 1
++#define HAVE_LIBDRM_GETFB2 0
++#define HAVE_MAKEINFO 1
++#define HAVE_MAKEINFO_HTML 0
++#define HAVE_OPENCL_D3D11 0
++#define HAVE_OPENCL_DRM_ARM 0
++#define HAVE_OPENCL_DRM_BEIGNET 0
++#define HAVE_OPENCL_DXVA2 0
++#define HAVE_OPENCL_VAAPI_BEIGNET 0
++#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
++#define HAVE_PERL 1
++#define HAVE_POD2MAN 1
++#define HAVE_TEXI2HTML 0
++#define HAVE_XMLLINT 1
++#define HAVE_ZLIB_GZIP 0
++#define CONFIG_DOC 0
++#define CONFIG_HTMLPAGES 0
++#define CONFIG_MANPAGES 0
++#define CONFIG_PODPAGES 0
++#define CONFIG_TXTPAGES 0
++#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
++#define CONFIG_AVIO_READING_EXAMPLE 1
++#define CONFIG_DECODE_AUDIO_EXAMPLE 1
++#define CONFIG_DECODE_VIDEO_EXAMPLE 1
++#define CONFIG_DEMUXING_DECODING_EXAMPLE 1
++#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
++#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
++#define CONFIG_EXTRACT_MVS_EXAMPLE 1
++#define CONFIG_FILTER_AUDIO_EXAMPLE 0
++#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
++#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
++#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
++#define CONFIG_HW_DECODE_EXAMPLE 1
++#define CONFIG_METADATA_EXAMPLE 1
++#define CONFIG_MUXING_EXAMPLE 0
++#define CONFIG_QSVDEC_EXAMPLE 0
++#define CONFIG_REMUXING_EXAMPLE 1
++#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
++#define CONFIG_SCALING_VIDEO_EXAMPLE 0
++#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
++#define CONFIG_TRANSCODING_EXAMPLE 0
++#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
++#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
++#define CONFIG_AVISYNTH 0
++#define CONFIG_FREI0R 0
++#define CONFIG_LIBCDIO 0
++#define CONFIG_LIBDAVS2 0
++#define CONFIG_LIBRUBBERBAND 0
++#define CONFIG_LIBVIDSTAB 0
++#define CONFIG_LIBX264 0
++#define CONFIG_LIBX265 0
++#define CONFIG_LIBXAVS 0
++#define CONFIG_LIBXAVS2 0
++#define CONFIG_LIBXVID 0
++#define CONFIG_DECKLINK 0
++#define CONFIG_LIBFDK_AAC 0
++#define CONFIG_LIBTLS 0
++#define CONFIG_GMP 0
++#define CONFIG_LIBARIBB24 0
++#define CONFIG_LIBLENSFUN 0
++#define CONFIG_LIBOPENCORE_AMRNB 0
++#define CONFIG_LIBOPENCORE_AMRWB 0
++#define CONFIG_LIBVO_AMRWBENC 0
++#define CONFIG_MBEDTLS 0
++#define CONFIG_RKMPP 0
++#define CONFIG_LIBSMBCLIENT 0
++#define CONFIG_CHROMAPRINT 0
++#define CONFIG_GCRYPT 0
++#define CONFIG_GNUTLS 0
++#define CONFIG_JNI 0
++#define CONFIG_LADSPA 0
++#define CONFIG_LCMS2 0
++#define CONFIG_LIBAOM 0
++#define CONFIG_LIBASS 0
++#define CONFIG_LIBBLURAY 0
++#define CONFIG_LIBBS2B 0
++#define CONFIG_LIBCACA 0
++#define CONFIG_LIBCELT 0
++#define CONFIG_LIBCODEC2 0
++#define CONFIG_LIBDAV1D 0
++#define CONFIG_LIBDC1394 0
++#define CONFIG_LIBDRM 0
++#define CONFIG_LIBFLITE 0
++#define CONFIG_LIBFONTCONFIG 0
++#define CONFIG_LIBFREETYPE 0
++#define CONFIG_LIBFRIBIDI 0
++#define CONFIG_LIBGLSLANG 0
++#define CONFIG_LIBGME 0
++#define CONFIG_LIBGSM 0
++#define CONFIG_LIBIEC61883 0
++#define CONFIG_LIBILBC 0
++#define CONFIG_LIBJACK 0
++#define CONFIG_LIBJXL 0
++#define CONFIG_LIBKLVANC 0
++#define CONFIG_LIBKVAZAAR 0
++#define CONFIG_LIBMODPLUG 0
++#define CONFIG_LIBMP3LAME 0
++#define CONFIG_LIBMYSOFA 0
++#define CONFIG_LIBOPENCV 0
++#define CONFIG_LIBOPENH264 0
++#define CONFIG_LIBOPENJPEG 0
++#define CONFIG_LIBOPENMPT 0
++#define CONFIG_LIBOPENVINO 0
++#define CONFIG_LIBOPUS 1
++#define CONFIG_LIBPLACEBO 0
++#define CONFIG_LIBPULSE 0
++#define CONFIG_LIBRABBITMQ 0
++#define CONFIG_LIBRAV1E 0
++#define CONFIG_LIBRIST 0
++#define CONFIG_LIBRSVG 0
++#define CONFIG_LIBRTMP 0
++#define CONFIG_LIBSHADERC 0
++#define CONFIG_LIBSHINE 0
++#define CONFIG_LIBSMBCLIENT 0
++#define CONFIG_LIBSNAPPY 0
++#define CONFIG_LIBSOXR 0
++#define CONFIG_LIBSPEEX 0
++#define CONFIG_LIBSRT 0
++#define CONFIG_LIBSSH 0
++#define CONFIG_LIBSVTAV1 0
++#define CONFIG_LIBTENSORFLOW 0
++#define CONFIG_LIBTESSERACT 0
++#define CONFIG_LIBTHEORA 0
++#define CONFIG_LIBTWOLAME 0
++#define CONFIG_LIBUAVS3D 0
++#define CONFIG_LIBV4L2 0
++#define CONFIG_LIBVMAF 0
++#define CONFIG_LIBVORBIS 0
++#define CONFIG_LIBVPX 0
++#define CONFIG_LIBWEBP 0
++#define CONFIG_LIBXML2 0
++#define CONFIG_LIBZIMG 0
++#define CONFIG_LIBZMQ 0
++#define CONFIG_LIBZVBI 0
++#define CONFIG_LV2 0
++#define CONFIG_MEDIACODEC 0
++#define CONFIG_OPENAL 0
++#define CONFIG_OPENGL 0
++#define CONFIG_OPENSSL 0
++#define CONFIG_POCKETSPHINX 0
++#define CONFIG_VAPOURSYNTH 0
++#define CONFIG_ALSA 0
++#define CONFIG_APPKIT 0
++#define CONFIG_AVFOUNDATION 0
++#define CONFIG_BZLIB 0
++#define CONFIG_COREIMAGE 0
++#define CONFIG_ICONV 0
++#define CONFIG_LIBXCB 0
++#define CONFIG_LIBXCB_SHM 0
++#define CONFIG_LIBXCB_SHAPE 0
++#define CONFIG_LIBXCB_XFIXES 0
++#define CONFIG_LZMA 0
++#define CONFIG_MEDIAFOUNDATION 0
++#define CONFIG_METAL 0
++#define CONFIG_SCHANNEL 0
++#define CONFIG_SDL2 0
++#define CONFIG_SECURETRANSPORT 0
++#define CONFIG_SNDIO 0
++#define CONFIG_XLIB 0
++#define CONFIG_ZLIB 0
++#define CONFIG_CUDA_NVCC 0
++#define CONFIG_CUDA_SDK 0
++#define CONFIG_LIBNPP 0
++#define CONFIG_LIBMFX 0
++#define CONFIG_MMAL 0
++#define CONFIG_OMX 0
++#define CONFIG_OPENCL 0
++#define CONFIG_AMF 0
++#define CONFIG_AUDIOTOOLBOX 0
++#define CONFIG_CRYSTALHD 0
++#define CONFIG_CUDA 0
++#define CONFIG_CUDA_LLVM 0
++#define CONFIG_CUVID 0
++#define CONFIG_D3D11VA 0
++#define CONFIG_DXVA2 0
++#define CONFIG_FFNVCODEC 0
++#define CONFIG_NVDEC 0
++#define CONFIG_NVENC 0
++#define CONFIG_VAAPI 0
++#define CONFIG_VDPAU 0
++#define CONFIG_VIDEOTOOLBOX 0
++#define CONFIG_VULKAN 0
++#define CONFIG_V4L2_M2M 0
++#define CONFIG_FTRAPV 0
++#define CONFIG_GRAY 0
++#define CONFIG_HARDCODED_TABLES 0
++#define CONFIG_OMX_RPI 0
++#define CONFIG_RUNTIME_CPUDETECT 1
++#define CONFIG_SAFE_BITSTREAM_READER 1
++#define CONFIG_SHARED 0
++#define CONFIG_SMALL 0
++#define CONFIG_STATIC 1
++#define CONFIG_SWSCALE_ALPHA 1
++#define CONFIG_GPL 0
++#define CONFIG_NONFREE 0
++#define CONFIG_VERSION3 0
++#define CONFIG_AVDEVICE 0
++#define CONFIG_AVFILTER 0
++#define CONFIG_SWSCALE 0
++#define CONFIG_POSTPROC 0
++#define CONFIG_AVFORMAT 1
++#define CONFIG_AVCODEC 1
++#define CONFIG_SWRESAMPLE 0
++#define CONFIG_AVUTIL 1
++#define CONFIG_FFPLAY 0
++#define CONFIG_FFPROBE 0
++#define CONFIG_FFMPEG 0
++#define CONFIG_DCT 1
++#define CONFIG_DWT 0
++#define CONFIG_ERROR_RESILIENCE 0
++#define CONFIG_FAAN 0
++#define CONFIG_FAST_UNALIGNED 1
++#define CONFIG_FFT 1
++#define CONFIG_LSP 0
++#define CONFIG_MDCT 1
++#define CONFIG_PIXELUTILS 0
++#define CONFIG_NETWORK 0
++#define CONFIG_RDFT 1
++#define CONFIG_AUTODETECT 0
++#define CONFIG_FONTCONFIG 0
++#define CONFIG_LARGE_TESTS 1
++#define CONFIG_LINUX_PERF 0
++#define CONFIG_MACOS_KPERF 0
++#define CONFIG_MEMORY_POISONING 0
++#define CONFIG_NEON_CLOBBER_TEST 0
++#define CONFIG_OSSFUZZ 0
++#define CONFIG_PIC 1
++#define CONFIG_PTX_COMPRESSION 0
++#define CONFIG_THUMB 0
++#define CONFIG_VALGRIND_BACKTRACE 0
++#define CONFIG_XMM_CLOBBER_TEST 0
++#define CONFIG_BSFS 0
++#define CONFIG_DECODERS 1
++#define CONFIG_ENCODERS 0
++#define CONFIG_HWACCELS 0
++#define CONFIG_PARSERS 1
++#define CONFIG_INDEVS 0
++#define CONFIG_OUTDEVS 0
++#define CONFIG_FILTERS 0
++#define CONFIG_DEMUXERS 1
++#define CONFIG_MUXERS 0
++#define CONFIG_PROTOCOLS 0
++#define CONFIG_AANDCTTABLES 0
++#define CONFIG_AC3DSP 0
++#define CONFIG_ADTS_HEADER 1
++#define CONFIG_ATSC_A53 1
++#define CONFIG_AUDIO_FRAME_QUEUE 0
++#define CONFIG_AUDIODSP 0
++#define CONFIG_BLOCKDSP 0
++#define CONFIG_BSWAPDSP 0
++#define CONFIG_CABAC 1
++#define CONFIG_CBS 0
++#define CONFIG_CBS_AV1 0
++#define CONFIG_CBS_H264 0
++#define CONFIG_CBS_H265 0
++#define CONFIG_CBS_JPEG 0
++#define CONFIG_CBS_MPEG2 0
++#define CONFIG_CBS_VP9 0
++#define CONFIG_DEFLATE_WRAPPER 0
++#define CONFIG_DIRAC_PARSE 1
++#define CONFIG_DNN 0
++#define CONFIG_DOVI_RPU 0
++#define CONFIG_DVPROFILE 0
++#define CONFIG_EXIF 0
++#define CONFIG_FAANDCT 0
++#define CONFIG_FAANIDCT 0
++#define CONFIG_FDCTDSP 0
++#define CONFIG_FLACDSP 1
++#define CONFIG_FMTCONVERT 0
++#define CONFIG_FRAME_THREAD_ENCODER 0
++#define CONFIG_G722DSP 0
++#define CONFIG_GOLOMB 1
++#define CONFIG_GPLV3 0
++#define CONFIG_H263DSP 0
++#define CONFIG_H264CHROMA 1
++#define CONFIG_H264DSP 1
++#define CONFIG_H264PARSE 1
++#define CONFIG_H264PRED 1
++#define CONFIG_H264QPEL 1
++#define CONFIG_HEVCPARSE 0
++#define CONFIG_HPELDSP 1
++#define CONFIG_HUFFMAN 0
++#define CONFIG_HUFFYUVDSP 0
++#define CONFIG_HUFFYUVENCDSP 0
++#define CONFIG_IDCTDSP 0
++#define CONFIG_IIRFILTER 0
++#define CONFIG_MDCT15 1
++#define CONFIG_INFLATE_WRAPPER 0
++#define CONFIG_INTRAX8 0
++#define CONFIG_ISO_MEDIA 1
++#define CONFIG_IVIDSP 0
++#define CONFIG_JPEGTABLES 0
++#define CONFIG_LGPLV3 0
++#define CONFIG_LIBX262 0
++#define CONFIG_LLAUDDSP 0
++#define CONFIG_LLVIDDSP 0
++#define CONFIG_LLVIDENCDSP 0
++#define CONFIG_LPC 0
++#define CONFIG_LZF 0
++#define CONFIG_ME_CMP 0
++#define CONFIG_MPEG_ER 0
++#define CONFIG_MPEGAUDIO 1
++#define CONFIG_MPEGAUDIODSP 1
++#define CONFIG_MPEGAUDIOHEADER 1
++#define CONFIG_MPEG4AUDIO 1
++#define CONFIG_MPEGVIDEO 0
++#define CONFIG_MPEGVIDEODEC 0
++#define CONFIG_MPEGVIDEOENC 0
++#define CONFIG_MSS34DSP 0
++#define CONFIG_PIXBLOCKDSP 0
++#define CONFIG_QPELDSP 0
++#define CONFIG_QSV 0
++#define CONFIG_QSVDEC 0
++#define CONFIG_QSVENC 0
++#define CONFIG_QSVVPP 0
++#define CONFIG_RANGECODER 0
++#define CONFIG_RIFFDEC 1
++#define CONFIG_RIFFENC 0
++#define CONFIG_RTPDEC 0
++#define CONFIG_RTPENC_CHAIN 0
++#define CONFIG_RV34DSP 0
++#define CONFIG_SCENE_SAD 0
++#define CONFIG_SINEWIN 1
++#define CONFIG_SNAPPY 0
++#define CONFIG_SRTP 0
++#define CONFIG_STARTCODE 1
++#define CONFIG_TEXTUREDSP 0
++#define CONFIG_TEXTUREDSPENC 0
++#define CONFIG_TPELDSP 0
++#define CONFIG_VAAPI_1 0
++#define CONFIG_VAAPI_ENCODE 0
++#define CONFIG_VC1DSP 0
++#define CONFIG_VIDEODSP 1
++#define CONFIG_VP3DSP 1
++#define CONFIG_VP56DSP 0
++#define CONFIG_VP8DSP 1
++#define CONFIG_WMA_FREQS 0
++#define CONFIG_WMV2DSP 0
++#endif /* FFMPEG_CONFIG_H */
diff --git a/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config__components.h b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config__components.h
new file mode 100644
index 000000000000..bd3df70416b9
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config__components.h
@@ -0,0 +1,2086 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/x64/config_components.h.orig 2022-10-01 07:40:07 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/x64/config_components.h
+@@ -0,0 +1,2083 @@
++/* Automatically generated by configure - do not modify! */
++#ifndef FFMPEG_CONFIG_COMPONENTS_H
++#define FFMPEG_CONFIG_COMPONENTS_H
++#define CONFIG_AAC_ADTSTOASC_BSF 0
++#define CONFIG_AV1_FRAME_MERGE_BSF 0
++#define CONFIG_AV1_FRAME_SPLIT_BSF 0
++#define CONFIG_AV1_METADATA_BSF 0
++#define CONFIG_CHOMP_BSF 0
++#define CONFIG_DUMP_EXTRADATA_BSF 0
++#define CONFIG_DCA_CORE_BSF 0
++#define CONFIG_DV_ERROR_MARKER_BSF 0
++#define CONFIG_EAC3_CORE_BSF 0
++#define CONFIG_EXTRACT_EXTRADATA_BSF 0
++#define CONFIG_FILTER_UNITS_BSF 0
++#define CONFIG_H264_METADATA_BSF 0
++#define CONFIG_H264_MP4TOANNEXB_BSF 0
++#define CONFIG_H264_REDUNDANT_PPS_BSF 0
++#define CONFIG_HAPQA_EXTRACT_BSF 0
++#define CONFIG_HEVC_METADATA_BSF 0
++#define CONFIG_HEVC_MP4TOANNEXB_BSF 0
++#define CONFIG_IMX_DUMP_HEADER_BSF 0
++#define CONFIG_MJPEG2JPEG_BSF 0
++#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
++#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
++#define CONFIG_MPEG2_METADATA_BSF 0
++#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
++#define CONFIG_MOV2TEXTSUB_BSF 0
++#define CONFIG_NOISE_BSF 0
++#define CONFIG_NULL_BSF 0
++#define CONFIG_OPUS_METADATA_BSF 0
++#define CONFIG_PCM_RECHUNK_BSF 0
++#define CONFIG_PGS_FRAME_MERGE_BSF 0
++#define CONFIG_PRORES_METADATA_BSF 0
++#define CONFIG_REMOVE_EXTRADATA_BSF 0
++#define CONFIG_SETTS_BSF 0
++#define CONFIG_TEXT2MOVSUB_BSF 0
++#define CONFIG_TRACE_HEADERS_BSF 0
++#define CONFIG_TRUEHD_CORE_BSF 0
++#define CONFIG_VP9_METADATA_BSF 0
++#define CONFIG_VP9_RAW_REORDER_BSF 0
++#define CONFIG_VP9_SUPERFRAME_BSF 0
++#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0
++#define CONFIG_AASC_DECODER 0
++#define CONFIG_AIC_DECODER 0
++#define CONFIG_ALIAS_PIX_DECODER 0
++#define CONFIG_AGM_DECODER 0
++#define CONFIG_AMV_DECODER 0
++#define CONFIG_ANM_DECODER 0
++#define CONFIG_ANSI_DECODER 0
++#define CONFIG_APNG_DECODER 0
++#define CONFIG_ARBC_DECODER 0
++#define CONFIG_ARGO_DECODER 0
++#define CONFIG_ASV1_DECODER 0
++#define CONFIG_ASV2_DECODER 0
++#define CONFIG_AURA_DECODER 0
++#define CONFIG_AURA2_DECODER 0
++#define CONFIG_AVRP_DECODER 0
++#define CONFIG_AVRN_DECODER 0
++#define CONFIG_AVS_DECODER 0
++#define CONFIG_AVUI_DECODER 0
++#define CONFIG_AYUV_DECODER 0
++#define CONFIG_BETHSOFTVID_DECODER 0
++#define CONFIG_BFI_DECODER 0
++#define CONFIG_BINK_DECODER 0
++#define CONFIG_BITPACKED_DECODER 0
++#define CONFIG_BMP_DECODER 0
++#define CONFIG_BMV_VIDEO_DECODER 0
++#define CONFIG_BRENDER_PIX_DECODER 0
++#define CONFIG_C93_DECODER 0
++#define CONFIG_CAVS_DECODER 0
++#define CONFIG_CDGRAPHICS_DECODER 0
++#define CONFIG_CDTOONS_DECODER 0
++#define CONFIG_CDXL_DECODER 0
++#define CONFIG_CFHD_DECODER 0
++#define CONFIG_CINEPAK_DECODER 0
++#define CONFIG_CLEARVIDEO_DECODER 0
++#define CONFIG_CLJR_DECODER 0
++#define CONFIG_CLLC_DECODER 0
++#define CONFIG_COMFORTNOISE_DECODER 0
++#define CONFIG_CPIA_DECODER 0
++#define CONFIG_CRI_DECODER 0
++#define CONFIG_CSCD_DECODER 0
++#define CONFIG_CYUV_DECODER 0
++#define CONFIG_DDS_DECODER 0
++#define CONFIG_DFA_DECODER 0
++#define CONFIG_DIRAC_DECODER 0
++#define CONFIG_DNXHD_DECODER 0
++#define CONFIG_DPX_DECODER 0
++#define CONFIG_DSICINVIDEO_DECODER 0
++#define CONFIG_DVAUDIO_DECODER 0
++#define CONFIG_DVVIDEO_DECODER 0
++#define CONFIG_DXA_DECODER 0
++#define CONFIG_DXTORY_DECODER 0
++#define CONFIG_DXV_DECODER 0
++#define CONFIG_EACMV_DECODER 0
++#define CONFIG_EAMAD_DECODER 0
++#define CONFIG_EATGQ_DECODER 0
++#define CONFIG_EATGV_DECODER 0
++#define CONFIG_EATQI_DECODER 0
++#define CONFIG_EIGHTBPS_DECODER 0
++#define CONFIG_EIGHTSVX_EXP_DECODER 0
++#define CONFIG_EIGHTSVX_FIB_DECODER 0
++#define CONFIG_ESCAPE124_DECODER 0
++#define CONFIG_ESCAPE130_DECODER 0
++#define CONFIG_EXR_DECODER 0
++#define CONFIG_FFV1_DECODER 0
++#define CONFIG_FFVHUFF_DECODER 0
++#define CONFIG_FIC_DECODER 0
++#define CONFIG_FITS_DECODER 0
++#define CONFIG_FLASHSV_DECODER 0
++#define CONFIG_FLASHSV2_DECODER 0
++#define CONFIG_FLIC_DECODER 0
++#define CONFIG_FLV_DECODER 0
++#define CONFIG_FMVC_DECODER 0
++#define CONFIG_FOURXM_DECODER 0
++#define CONFIG_FRAPS_DECODER 0
++#define CONFIG_FRWU_DECODER 0
++#define CONFIG_G2M_DECODER 0
++#define CONFIG_GDV_DECODER 0
++#define CONFIG_GEM_DECODER 0
++#define CONFIG_GIF_DECODER 0
++#define CONFIG_H261_DECODER 0
++#define CONFIG_H263_DECODER 0
++#define CONFIG_H263I_DECODER 0
++#define CONFIG_H263P_DECODER 0
++#define CONFIG_H263_V4L2M2M_DECODER 0
++#define CONFIG_H264_DECODER 1
++#define CONFIG_H264_CRYSTALHD_DECODER 0
++#define CONFIG_H264_V4L2M2M_DECODER 0
++#define CONFIG_H264_MEDIACODEC_DECODER 0
++#define CONFIG_H264_MMAL_DECODER 0
++#define CONFIG_H264_QSV_DECODER 0
++#define CONFIG_H264_RKMPP_DECODER 0
++#define CONFIG_HAP_DECODER 0
++#define CONFIG_HEVC_DECODER 0
++#define CONFIG_HEVC_QSV_DECODER 0
++#define CONFIG_HEVC_RKMPP_DECODER 0
++#define CONFIG_HEVC_V4L2M2M_DECODER 0
++#define CONFIG_HNM4_VIDEO_DECODER 0
++#define CONFIG_HQ_HQA_DECODER 0
++#define CONFIG_HQX_DECODER 0
++#define CONFIG_HUFFYUV_DECODER 0
++#define CONFIG_HYMT_DECODER 0
++#define CONFIG_IDCIN_DECODER 0
++#define CONFIG_IFF_ILBM_DECODER 0
++#define CONFIG_IMM4_DECODER 0
++#define CONFIG_IMM5_DECODER 0
++#define CONFIG_INDEO2_DECODER 0
++#define CONFIG_INDEO3_DECODER 0
++#define CONFIG_INDEO4_DECODER 0
++#define CONFIG_INDEO5_DECODER 0
++#define CONFIG_INTERPLAY_VIDEO_DECODER 0
++#define CONFIG_IPU_DECODER 0
++#define CONFIG_JPEG2000_DECODER 0
++#define CONFIG_JPEGLS_DECODER 0
++#define CONFIG_JV_DECODER 0
++#define CONFIG_KGV1_DECODER 0
++#define CONFIG_KMVC_DECODER 0
++#define CONFIG_LAGARITH_DECODER 0
++#define CONFIG_LOCO_DECODER 0
++#define CONFIG_LSCR_DECODER 0
++#define CONFIG_M101_DECODER 0
++#define CONFIG_MAGICYUV_DECODER 0
++#define CONFIG_MDEC_DECODER 0
++#define CONFIG_MIMIC_DECODER 0
++#define CONFIG_MJPEG_DECODER 0
++#define CONFIG_MJPEGB_DECODER 0
++#define CONFIG_MMVIDEO_DECODER 0
++#define CONFIG_MOBICLIP_DECODER 0
++#define CONFIG_MOTIONPIXELS_DECODER 0
++#define CONFIG_MPEG1VIDEO_DECODER 0
++#define CONFIG_MPEG2VIDEO_DECODER 0
++#define CONFIG_MPEG4_DECODER 0
++#define CONFIG_MPEG4_CRYSTALHD_DECODER 0
++#define CONFIG_MPEG4_V4L2M2M_DECODER 0
++#define CONFIG_MPEG4_MMAL_DECODER 0
++#define CONFIG_MPEGVIDEO_DECODER 0
++#define CONFIG_MPEG1_V4L2M2M_DECODER 0
++#define CONFIG_MPEG2_MMAL_DECODER 0
++#define CONFIG_MPEG2_CRYSTALHD_DECODER 0
++#define CONFIG_MPEG2_V4L2M2M_DECODER 0
++#define CONFIG_MPEG2_QSV_DECODER 0
++#define CONFIG_MPEG2_MEDIACODEC_DECODER 0
++#define CONFIG_MSA1_DECODER 0
++#define CONFIG_MSCC_DECODER 0
++#define CONFIG_MSMPEG4V1_DECODER 0
++#define CONFIG_MSMPEG4V2_DECODER 0
++#define CONFIG_MSMPEG4V3_DECODER 0
++#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
++#define CONFIG_MSP2_DECODER 0
++#define CONFIG_MSRLE_DECODER 0
++#define CONFIG_MSS1_DECODER 0
++#define CONFIG_MSS2_DECODER 0
++#define CONFIG_MSVIDEO1_DECODER 0
++#define CONFIG_MSZH_DECODER 0
++#define CONFIG_MTS2_DECODER 0
++#define CONFIG_MV30_DECODER 0
++#define CONFIG_MVC1_DECODER 0
++#define CONFIG_MVC2_DECODER 0
++#define CONFIG_MVDV_DECODER 0
++#define CONFIG_MVHA_DECODER 0
++#define CONFIG_MWSC_DECODER 0
++#define CONFIG_MXPEG_DECODER 0
++#define CONFIG_NOTCHLC_DECODER 0
++#define CONFIG_NUV_DECODER 0
++#define CONFIG_PAF_VIDEO_DECODER 0
++#define CONFIG_PAM_DECODER 0
++#define CONFIG_PBM_DECODER 0
++#define CONFIG_PCX_DECODER 0
++#define CONFIG_PFM_DECODER 0
++#define CONFIG_PGM_DECODER 0
++#define CONFIG_PGMYUV_DECODER 0
++#define CONFIG_PGX_DECODER 0
++#define CONFIG_PHOTOCD_DECODER 0
++#define CONFIG_PICTOR_DECODER 0
++#define CONFIG_PIXLET_DECODER 0
++#define CONFIG_PNG_DECODER 0
++#define CONFIG_PPM_DECODER 0
++#define CONFIG_PRORES_DECODER 0
++#define CONFIG_PROSUMER_DECODER 0
++#define CONFIG_PSD_DECODER 0
++#define CONFIG_PTX_DECODER 0
++#define CONFIG_QDRAW_DECODER 0
++#define CONFIG_QPEG_DECODER 0
++#define CONFIG_QTRLE_DECODER 0
++#define CONFIG_R10K_DECODER 0
++#define CONFIG_R210_DECODER 0
++#define CONFIG_RASC_DECODER 0
++#define CONFIG_RAWVIDEO_DECODER 0
++#define CONFIG_RL2_DECODER 0
++#define CONFIG_ROQ_DECODER 0
++#define CONFIG_RPZA_DECODER 0
++#define CONFIG_RSCC_DECODER 0
++#define CONFIG_RV10_DECODER 0
++#define CONFIG_RV20_DECODER 0
++#define CONFIG_RV30_DECODER 0
++#define CONFIG_RV40_DECODER 0
++#define CONFIG_S302M_DECODER 0
++#define CONFIG_SANM_DECODER 0
++#define CONFIG_SCPR_DECODER 0
++#define CONFIG_SCREENPRESSO_DECODER 0
++#define CONFIG_SGA_DECODER 0
++#define CONFIG_SGI_DECODER 0
++#define CONFIG_SGIRLE_DECODER 0
++#define CONFIG_SHEERVIDEO_DECODER 0
++#define CONFIG_SIMBIOSIS_IMX_DECODER 0
++#define CONFIG_SMACKER_DECODER 0
++#define CONFIG_SMC_DECODER 0
++#define CONFIG_SMVJPEG_DECODER 0
++#define CONFIG_SNOW_DECODER 0
++#define CONFIG_SP5X_DECODER 0
++#define CONFIG_SPEEDHQ_DECODER 0
++#define CONFIG_SPEEX_DECODER 0
++#define CONFIG_SRGC_DECODER 0
++#define CONFIG_SUNRAST_DECODER 0
++#define CONFIG_SVQ1_DECODER 0
++#define CONFIG_SVQ3_DECODER 0
++#define CONFIG_TARGA_DECODER 0
++#define CONFIG_TARGA_Y216_DECODER 0
++#define CONFIG_TDSC_DECODER 0
++#define CONFIG_THEORA_DECODER 1
++#define CONFIG_THP_DECODER 0
++#define CONFIG_TIERTEXSEQVIDEO_DECODER 0
++#define CONFIG_TIFF_DECODER 0
++#define CONFIG_TMV_DECODER 0
++#define CONFIG_TRUEMOTION1_DECODER 0
++#define CONFIG_TRUEMOTION2_DECODER 0
++#define CONFIG_TRUEMOTION2RT_DECODER 0
++#define CONFIG_TSCC_DECODER 0
++#define CONFIG_TSCC2_DECODER 0
++#define CONFIG_TXD_DECODER 0
++#define CONFIG_ULTI_DECODER 0
++#define CONFIG_UTVIDEO_DECODER 0
++#define CONFIG_V210_DECODER 0
++#define CONFIG_V210X_DECODER 0
++#define CONFIG_V308_DECODER 0
++#define CONFIG_V408_DECODER 0
++#define CONFIG_V410_DECODER 0
++#define CONFIG_VB_DECODER 0
++#define CONFIG_VBN_DECODER 0
++#define CONFIG_VBLE_DECODER 0
++#define CONFIG_VC1_DECODER 0
++#define CONFIG_VC1_CRYSTALHD_DECODER 0
++#define CONFIG_VC1IMAGE_DECODER 0
++#define CONFIG_VC1_MMAL_DECODER 0
++#define CONFIG_VC1_QSV_DECODER 0
++#define CONFIG_VC1_V4L2M2M_DECODER 0
++#define CONFIG_VCR1_DECODER 0
++#define CONFIG_VMDVIDEO_DECODER 0
++#define CONFIG_VMNC_DECODER 0
++#define CONFIG_VP3_DECODER 1
++#define CONFIG_VP4_DECODER 0
++#define CONFIG_VP5_DECODER 0
++#define CONFIG_VP6_DECODER 0
++#define CONFIG_VP6A_DECODER 0
++#define CONFIG_VP6F_DECODER 0
++#define CONFIG_VP7_DECODER 0
++#define CONFIG_VP8_DECODER 1
++#define CONFIG_VP8_RKMPP_DECODER 0
++#define CONFIG_VP8_V4L2M2M_DECODER 0
++#define CONFIG_VP9_DECODER 0
++#define CONFIG_VP9_RKMPP_DECODER 0
++#define CONFIG_VP9_V4L2M2M_DECODER 0
++#define CONFIG_VQA_DECODER 0
++#define CONFIG_WEBP_DECODER 0
++#define CONFIG_WCMV_DECODER 0
++#define CONFIG_WRAPPED_AVFRAME_DECODER 0
++#define CONFIG_WMV1_DECODER 0
++#define CONFIG_WMV2_DECODER 0
++#define CONFIG_WMV3_DECODER 0
++#define CONFIG_WMV3_CRYSTALHD_DECODER 0
++#define CONFIG_WMV3IMAGE_DECODER 0
++#define CONFIG_WNV1_DECODER 0
++#define CONFIG_XAN_WC3_DECODER 0
++#define CONFIG_XAN_WC4_DECODER 0
++#define CONFIG_XBM_DECODER 0
++#define CONFIG_XFACE_DECODER 0
++#define CONFIG_XL_DECODER 0
++#define CONFIG_XPM_DECODER 0
++#define CONFIG_XWD_DECODER 0
++#define CONFIG_Y41P_DECODER 0
++#define CONFIG_YLC_DECODER 0
++#define CONFIG_YOP_DECODER 0
++#define CONFIG_YUV4_DECODER 0
++#define CONFIG_ZERO12V_DECODER 0
++#define CONFIG_ZEROCODEC_DECODER 0
++#define CONFIG_ZLIB_DECODER 0
++#define CONFIG_ZMBV_DECODER 0
++#define CONFIG_AAC_DECODER 1
++#define CONFIG_AAC_FIXED_DECODER 0
++#define CONFIG_AAC_LATM_DECODER 0
++#define CONFIG_AC3_DECODER 0
++#define CONFIG_AC3_FIXED_DECODER 0
++#define CONFIG_ACELP_KELVIN_DECODER 0
++#define CONFIG_ALAC_DECODER 0
++#define CONFIG_ALS_DECODER 0
++#define CONFIG_AMRNB_DECODER 0
++#define CONFIG_AMRWB_DECODER 0
++#define CONFIG_APE_DECODER 0
++#define CONFIG_APTX_DECODER 0
++#define CONFIG_APTX_HD_DECODER 0
++#define CONFIG_ATRAC1_DECODER 0
++#define CONFIG_ATRAC3_DECODER 0
++#define CONFIG_ATRAC3AL_DECODER 0
++#define CONFIG_ATRAC3P_DECODER 0
++#define CONFIG_ATRAC3PAL_DECODER 0
++#define CONFIG_ATRAC9_DECODER 0
++#define CONFIG_BINKAUDIO_DCT_DECODER 0
++#define CONFIG_BINKAUDIO_RDFT_DECODER 0
++#define CONFIG_BMV_AUDIO_DECODER 0
++#define CONFIG_COOK_DECODER 0
++#define CONFIG_DCA_DECODER 0
++#define CONFIG_DFPWM_DECODER 0
++#define CONFIG_DOLBY_E_DECODER 0
++#define CONFIG_DSD_LSBF_DECODER 0
++#define CONFIG_DSD_MSBF_DECODER 0
++#define CONFIG_DSD_LSBF_PLANAR_DECODER 0
++#define CONFIG_DSD_MSBF_PLANAR_DECODER 0
++#define CONFIG_DSICINAUDIO_DECODER 0
++#define CONFIG_DSS_SP_DECODER 0
++#define CONFIG_DST_DECODER 0
++#define CONFIG_EAC3_DECODER 0
++#define CONFIG_EVRC_DECODER 0
++#define CONFIG_FASTAUDIO_DECODER 0
++#define CONFIG_FFWAVESYNTH_DECODER 0
++#define CONFIG_FLAC_DECODER 1
++#define CONFIG_G723_1_DECODER 0
++#define CONFIG_G729_DECODER 0
++#define CONFIG_GSM_DECODER 0
++#define CONFIG_GSM_MS_DECODER 0
++#define CONFIG_HCA_DECODER 0
++#define CONFIG_HCOM_DECODER 0
++#define CONFIG_IAC_DECODER 0
++#define CONFIG_ILBC_DECODER 0
++#define CONFIG_IMC_DECODER 0
++#define CONFIG_INTERPLAY_ACM_DECODER 0
++#define CONFIG_MACE3_DECODER 0
++#define CONFIG_MACE6_DECODER 0
++#define CONFIG_METASOUND_DECODER 0
++#define CONFIG_MLP_DECODER 0
++#define CONFIG_MP1_DECODER 0
++#define CONFIG_MP1FLOAT_DECODER 0
++#define CONFIG_MP2_DECODER 0
++#define CONFIG_MP2FLOAT_DECODER 0
++#define CONFIG_MP3FLOAT_DECODER 0
++#define CONFIG_MP3_DECODER 1
++#define CONFIG_MP3ADUFLOAT_DECODER 0
++#define CONFIG_MP3ADU_DECODER 0
++#define CONFIG_MP3ON4FLOAT_DECODER 0
++#define CONFIG_MP3ON4_DECODER 0
++#define CONFIG_MPC7_DECODER 0
++#define CONFIG_MPC8_DECODER 0
++#define CONFIG_MSNSIREN_DECODER 0
++#define CONFIG_NELLYMOSER_DECODER 0
++#define CONFIG_ON2AVC_DECODER 0
++#define CONFIG_OPUS_DECODER 0
++#define CONFIG_PAF_AUDIO_DECODER 0
++#define CONFIG_QCELP_DECODER 0
++#define CONFIG_QDM2_DECODER 0
++#define CONFIG_QDMC_DECODER 0
++#define CONFIG_RA_144_DECODER 0
++#define CONFIG_RA_288_DECODER 0
++#define CONFIG_RALF_DECODER 0
++#define CONFIG_SBC_DECODER 0
++#define CONFIG_SHORTEN_DECODER 0
++#define CONFIG_SIPR_DECODER 0
++#define CONFIG_SIREN_DECODER 0
++#define CONFIG_SMACKAUD_DECODER 0
++#define CONFIG_SONIC_DECODER 0
++#define CONFIG_TAK_DECODER 0
++#define CONFIG_TRUEHD_DECODER 0
++#define CONFIG_TRUESPEECH_DECODER 0
++#define CONFIG_TTA_DECODER 0
++#define CONFIG_TWINVQ_DECODER 0
++#define CONFIG_VMDAUDIO_DECODER 0
++#define CONFIG_VORBIS_DECODER 1
++#define CONFIG_WAVPACK_DECODER 0
++#define CONFIG_WMALOSSLESS_DECODER 0
++#define CONFIG_WMAPRO_DECODER 0
++#define CONFIG_WMAV1_DECODER 0
++#define CONFIG_WMAV2_DECODER 0
++#define CONFIG_WMAVOICE_DECODER 0
++#define CONFIG_WS_SND1_DECODER 0
++#define CONFIG_XMA1_DECODER 0
++#define CONFIG_XMA2_DECODER 0
++#define CONFIG_PCM_ALAW_DECODER 1
++#define CONFIG_PCM_BLURAY_DECODER 0
++#define CONFIG_PCM_DVD_DECODER 0
++#define CONFIG_PCM_F16LE_DECODER 0
++#define CONFIG_PCM_F24LE_DECODER 0
++#define CONFIG_PCM_F32BE_DECODER 0
++#define CONFIG_PCM_F32LE_DECODER 1
++#define CONFIG_PCM_F64BE_DECODER 0
++#define CONFIG_PCM_F64LE_DECODER 0
++#define CONFIG_PCM_LXF_DECODER 0
++#define CONFIG_PCM_MULAW_DECODER 1
++#define CONFIG_PCM_S8_DECODER 0
++#define CONFIG_PCM_S8_PLANAR_DECODER 0
++#define CONFIG_PCM_S16BE_DECODER 1
++#define CONFIG_PCM_S16BE_PLANAR_DECODER 0
++#define CONFIG_PCM_S16LE_DECODER 1
++#define CONFIG_PCM_S16LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S24BE_DECODER 1
++#define CONFIG_PCM_S24DAUD_DECODER 0
++#define CONFIG_PCM_S24LE_DECODER 1
++#define CONFIG_PCM_S24LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S32BE_DECODER 0
++#define CONFIG_PCM_S32LE_DECODER 1
++#define CONFIG_PCM_S32LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S64BE_DECODER 0
++#define CONFIG_PCM_S64LE_DECODER 0
++#define CONFIG_PCM_SGA_DECODER 0
++#define CONFIG_PCM_U8_DECODER 1
++#define CONFIG_PCM_U16BE_DECODER 0
++#define CONFIG_PCM_U16LE_DECODER 0
++#define CONFIG_PCM_U24BE_DECODER 0
++#define CONFIG_PCM_U24LE_DECODER 0
++#define CONFIG_PCM_U32BE_DECODER 0
++#define CONFIG_PCM_U32LE_DECODER 0
++#define CONFIG_PCM_VIDC_DECODER 0
++#define CONFIG_DERF_DPCM_DECODER 0
++#define CONFIG_GREMLIN_DPCM_DECODER 0
++#define CONFIG_INTERPLAY_DPCM_DECODER 0
++#define CONFIG_ROQ_DPCM_DECODER 0
++#define CONFIG_SDX2_DPCM_DECODER 0
++#define CONFIG_SOL_DPCM_DECODER 0
++#define CONFIG_XAN_DPCM_DECODER 0
++#define CONFIG_ADPCM_4XM_DECODER 0
++#define CONFIG_ADPCM_ADX_DECODER 0
++#define CONFIG_ADPCM_AFC_DECODER 0
++#define CONFIG_ADPCM_AGM_DECODER 0
++#define CONFIG_ADPCM_AICA_DECODER 0
++#define CONFIG_ADPCM_ARGO_DECODER 0
++#define CONFIG_ADPCM_CT_DECODER 0
++#define CONFIG_ADPCM_DTK_DECODER 0
++#define CONFIG_ADPCM_EA_DECODER 0
++#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
++#define CONFIG_ADPCM_EA_R1_DECODER 0
++#define CONFIG_ADPCM_EA_R2_DECODER 0
++#define CONFIG_ADPCM_EA_R3_DECODER 0
++#define CONFIG_ADPCM_EA_XAS_DECODER 0
++#define CONFIG_ADPCM_G722_DECODER 0
++#define CONFIG_ADPCM_G726_DECODER 0
++#define CONFIG_ADPCM_G726LE_DECODER 0
++#define CONFIG_ADPCM_IMA_ACORN_DECODER 0
++#define CONFIG_ADPCM_IMA_AMV_DECODER 0
++#define CONFIG_ADPCM_IMA_ALP_DECODER 0
++#define CONFIG_ADPCM_IMA_APC_DECODER 0
++#define CONFIG_ADPCM_IMA_APM_DECODER 0
++#define CONFIG_ADPCM_IMA_CUNNING_DECODER 0
++#define CONFIG_ADPCM_IMA_DAT4_DECODER 0
++#define CONFIG_ADPCM_IMA_DK3_DECODER 0
++#define CONFIG_ADPCM_IMA_DK4_DECODER 0
++#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
++#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
++#define CONFIG_ADPCM_IMA_ISS_DECODER 0
++#define CONFIG_ADPCM_IMA_MOFLEX_DECODER 0
++#define CONFIG_ADPCM_IMA_MTF_DECODER 0
++#define CONFIG_ADPCM_IMA_OKI_DECODER 0
++#define CONFIG_ADPCM_IMA_QT_DECODER 0
++#define CONFIG_ADPCM_IMA_RAD_DECODER 0
++#define CONFIG_ADPCM_IMA_SSI_DECODER 0
++#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
++#define CONFIG_ADPCM_IMA_WAV_DECODER 0
++#define CONFIG_ADPCM_IMA_WS_DECODER 0
++#define CONFIG_ADPCM_MS_DECODER 0
++#define CONFIG_ADPCM_MTAF_DECODER 0
++#define CONFIG_ADPCM_PSX_DECODER 0
++#define CONFIG_ADPCM_SBPRO_2_DECODER 0
++#define CONFIG_ADPCM_SBPRO_3_DECODER 0
++#define CONFIG_ADPCM_SBPRO_4_DECODER 0
++#define CONFIG_ADPCM_SWF_DECODER 0
++#define CONFIG_ADPCM_THP_DECODER 0
++#define CONFIG_ADPCM_THP_LE_DECODER 0
++#define CONFIG_ADPCM_VIMA_DECODER 0
++#define CONFIG_ADPCM_XA_DECODER 0
++#define CONFIG_ADPCM_YAMAHA_DECODER 0
++#define CONFIG_ADPCM_ZORK_DECODER 0
++#define CONFIG_SSA_DECODER 0
++#define CONFIG_ASS_DECODER 0
++#define CONFIG_CCAPTION_DECODER 0
++#define CONFIG_DVBSUB_DECODER 0
++#define CONFIG_DVDSUB_DECODER 0
++#define CONFIG_JACOSUB_DECODER 0
++#define CONFIG_MICRODVD_DECODER 0
++#define CONFIG_MOVTEXT_DECODER 0
++#define CONFIG_MPL2_DECODER 0
++#define CONFIG_PGSSUB_DECODER 0
++#define CONFIG_PJS_DECODER 0
++#define CONFIG_REALTEXT_DECODER 0
++#define CONFIG_SAMI_DECODER 0
++#define CONFIG_SRT_DECODER 0
++#define CONFIG_STL_DECODER 0
++#define CONFIG_SUBRIP_DECODER 0
++#define CONFIG_SUBVIEWER_DECODER 0
++#define CONFIG_SUBVIEWER1_DECODER 0
++#define CONFIG_TEXT_DECODER 0
++#define CONFIG_VPLAYER_DECODER 0
++#define CONFIG_WEBVTT_DECODER 0
++#define CONFIG_XSUB_DECODER 0
++#define CONFIG_AAC_AT_DECODER 0
++#define CONFIG_AC3_AT_DECODER 0
++#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
++#define CONFIG_ALAC_AT_DECODER 0
++#define CONFIG_AMR_NB_AT_DECODER 0
++#define CONFIG_EAC3_AT_DECODER 0
++#define CONFIG_GSM_MS_AT_DECODER 0
++#define CONFIG_ILBC_AT_DECODER 0
++#define CONFIG_MP1_AT_DECODER 0
++#define CONFIG_MP2_AT_DECODER 0
++#define CONFIG_MP3_AT_DECODER 0
++#define CONFIG_PCM_ALAW_AT_DECODER 0
++#define CONFIG_PCM_MULAW_AT_DECODER 0
++#define CONFIG_QDMC_AT_DECODER 0
++#define CONFIG_QDM2_AT_DECODER 0
++#define CONFIG_LIBARIBB24_DECODER 0
++#define CONFIG_LIBCELT_DECODER 0
++#define CONFIG_LIBCODEC2_DECODER 0
++#define CONFIG_LIBDAV1D_DECODER 0
++#define CONFIG_LIBDAVS2_DECODER 0
++#define CONFIG_LIBFDK_AAC_DECODER 0
++#define CONFIG_LIBGSM_DECODER 0
++#define CONFIG_LIBGSM_MS_DECODER 0
++#define CONFIG_LIBILBC_DECODER 0
++#define CONFIG_LIBJXL_DECODER 0
++#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
++#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
++#define CONFIG_LIBOPENJPEG_DECODER 0
++#define CONFIG_LIBOPUS_DECODER 1
++#define CONFIG_LIBRSVG_DECODER 0
++#define CONFIG_LIBSPEEX_DECODER 0
++#define CONFIG_LIBUAVS3D_DECODER 0
++#define CONFIG_LIBVORBIS_DECODER 0
++#define CONFIG_LIBVPX_VP8_DECODER 0
++#define CONFIG_LIBVPX_VP9_DECODER 0
++#define CONFIG_LIBZVBI_TELETEXT_DECODER 0
++#define CONFIG_BINTEXT_DECODER 0
++#define CONFIG_XBIN_DECODER 0
++#define CONFIG_IDF_DECODER 0
++#define CONFIG_LIBAOM_AV1_DECODER 0
++#define CONFIG_AV1_DECODER 0
++#define CONFIG_AV1_CUVID_DECODER 0
++#define CONFIG_AV1_QSV_DECODER 0
++#define CONFIG_LIBOPENH264_DECODER 0
++#define CONFIG_H264_CUVID_DECODER 0
++#define CONFIG_HEVC_CUVID_DECODER 0
++#define CONFIG_HEVC_MEDIACODEC_DECODER 0
++#define CONFIG_MJPEG_CUVID_DECODER 0
++#define CONFIG_MJPEG_QSV_DECODER 0
++#define CONFIG_MPEG1_CUVID_DECODER 0
++#define CONFIG_MPEG2_CUVID_DECODER 0
++#define CONFIG_MPEG4_CUVID_DECODER 0
++#define CONFIG_MPEG4_MEDIACODEC_DECODER 0
++#define CONFIG_VC1_CUVID_DECODER 0
++#define CONFIG_VP8_CUVID_DECODER 0
++#define CONFIG_VP8_MEDIACODEC_DECODER 0
++#define CONFIG_VP8_QSV_DECODER 0
++#define CONFIG_VP9_CUVID_DECODER 0
++#define CONFIG_VP9_MEDIACODEC_DECODER 0
++#define CONFIG_VP9_QSV_DECODER 0
++#define CONFIG_A64MULTI_ENCODER 0
++#define CONFIG_A64MULTI5_ENCODER 0
++#define CONFIG_ALIAS_PIX_ENCODER 0
++#define CONFIG_AMV_ENCODER 0
++#define CONFIG_APNG_ENCODER 0
++#define CONFIG_ASV1_ENCODER 0
++#define CONFIG_ASV2_ENCODER 0
++#define CONFIG_AVRP_ENCODER 0
++#define CONFIG_AVUI_ENCODER 0
++#define CONFIG_AYUV_ENCODER 0
++#define CONFIG_BITPACKED_ENCODER 0
++#define CONFIG_BMP_ENCODER 0
++#define CONFIG_CFHD_ENCODER 0
++#define CONFIG_CINEPAK_ENCODER 0
++#define CONFIG_CLJR_ENCODER 0
++#define CONFIG_COMFORTNOISE_ENCODER 0
++#define CONFIG_DNXHD_ENCODER 0
++#define CONFIG_DPX_ENCODER 0
++#define CONFIG_DVVIDEO_ENCODER 0
++#define CONFIG_EXR_ENCODER 0
++#define CONFIG_FFV1_ENCODER 0
++#define CONFIG_FFVHUFF_ENCODER 0
++#define CONFIG_FITS_ENCODER 0
++#define CONFIG_FLASHSV_ENCODER 0
++#define CONFIG_FLASHSV2_ENCODER 0
++#define CONFIG_FLV_ENCODER 0
++#define CONFIG_GIF_ENCODER 0
++#define CONFIG_H261_ENCODER 0
++#define CONFIG_H263_ENCODER 0
++#define CONFIG_H263P_ENCODER 0
++#define CONFIG_HAP_ENCODER 0
++#define CONFIG_HUFFYUV_ENCODER 0
++#define CONFIG_JPEG2000_ENCODER 0
++#define CONFIG_JPEGLS_ENCODER 0
++#define CONFIG_LJPEG_ENCODER 0
++#define CONFIG_MAGICYUV_ENCODER 0
++#define CONFIG_MJPEG_ENCODER 0
++#define CONFIG_MPEG1VIDEO_ENCODER 0
++#define CONFIG_MPEG2VIDEO_ENCODER 0
++#define CONFIG_MPEG4_ENCODER 0
++#define CONFIG_MSMPEG4V2_ENCODER 0
++#define CONFIG_MSMPEG4V3_ENCODER 0
++#define CONFIG_MSVIDEO1_ENCODER 0
++#define CONFIG_PAM_ENCODER 0
++#define CONFIG_PBM_ENCODER 0
++#define CONFIG_PCX_ENCODER 0
++#define CONFIG_PFM_ENCODER 0
++#define CONFIG_PGM_ENCODER 0
++#define CONFIG_PGMYUV_ENCODER 0
++#define CONFIG_PNG_ENCODER 0
++#define CONFIG_PPM_ENCODER 0
++#define CONFIG_PRORES_ENCODER 0
++#define CONFIG_PRORES_AW_ENCODER 0
++#define CONFIG_PRORES_KS_ENCODER 0
++#define CONFIG_QTRLE_ENCODER 0
++#define CONFIG_R10K_ENCODER 0
++#define CONFIG_R210_ENCODER 0
++#define CONFIG_RAWVIDEO_ENCODER 0
++#define CONFIG_ROQ_ENCODER 0
++#define CONFIG_RPZA_ENCODER 0
++#define CONFIG_RV10_ENCODER 0
++#define CONFIG_RV20_ENCODER 0
++#define CONFIG_S302M_ENCODER 0
++#define CONFIG_SGI_ENCODER 0
++#define CONFIG_SMC_ENCODER 0
++#define CONFIG_SNOW_ENCODER 0
++#define CONFIG_SPEEDHQ_ENCODER 0
++#define CONFIG_SUNRAST_ENCODER 0
++#define CONFIG_SVQ1_ENCODER 0
++#define CONFIG_TARGA_ENCODER 0
++#define CONFIG_TIFF_ENCODER 0
++#define CONFIG_UTVIDEO_ENCODER 0
++#define CONFIG_V210_ENCODER 0
++#define CONFIG_V308_ENCODER 0
++#define CONFIG_V408_ENCODER 0
++#define CONFIG_V410_ENCODER 0
++#define CONFIG_VBN_ENCODER 0
++#define CONFIG_VC2_ENCODER 0
++#define CONFIG_WRAPPED_AVFRAME_ENCODER 0
++#define CONFIG_WMV1_ENCODER 0
++#define CONFIG_WMV2_ENCODER 0
++#define CONFIG_XBM_ENCODER 0
++#define CONFIG_XFACE_ENCODER 0
++#define CONFIG_XWD_ENCODER 0
++#define CONFIG_Y41P_ENCODER 0
++#define CONFIG_YUV4_ENCODER 0
++#define CONFIG_ZLIB_ENCODER 0
++#define CONFIG_ZMBV_ENCODER 0
++#define CONFIG_AAC_ENCODER 0
++#define CONFIG_AC3_ENCODER 0
++#define CONFIG_AC3_FIXED_ENCODER 0
++#define CONFIG_ALAC_ENCODER 0
++#define CONFIG_APTX_ENCODER 0
++#define CONFIG_APTX_HD_ENCODER 0
++#define CONFIG_DCA_ENCODER 0
++#define CONFIG_DFPWM_ENCODER 0
++#define CONFIG_EAC3_ENCODER 0
++#define CONFIG_FLAC_ENCODER 0
++#define CONFIG_G723_1_ENCODER 0
++#define CONFIG_MLP_ENCODER 0
++#define CONFIG_MP2_ENCODER 0
++#define CONFIG_MP2FIXED_ENCODER 0
++#define CONFIG_NELLYMOSER_ENCODER 0
++#define CONFIG_OPUS_ENCODER 0
++#define CONFIG_RA_144_ENCODER 0
++#define CONFIG_SBC_ENCODER 0
++#define CONFIG_SONIC_ENCODER 0
++#define CONFIG_SONIC_LS_ENCODER 0
++#define CONFIG_TRUEHD_ENCODER 0
++#define CONFIG_TTA_ENCODER 0
++#define CONFIG_VORBIS_ENCODER 0
++#define CONFIG_WAVPACK_ENCODER 0
++#define CONFIG_WMAV1_ENCODER 0
++#define CONFIG_WMAV2_ENCODER 0
++#define CONFIG_PCM_ALAW_ENCODER 0
++#define CONFIG_PCM_BLURAY_ENCODER 0
++#define CONFIG_PCM_DVD_ENCODER 0
++#define CONFIG_PCM_F32BE_ENCODER 0
++#define CONFIG_PCM_F32LE_ENCODER 0
++#define CONFIG_PCM_F64BE_ENCODER 0
++#define CONFIG_PCM_F64LE_ENCODER 0
++#define CONFIG_PCM_MULAW_ENCODER 0
++#define CONFIG_PCM_S8_ENCODER 0
++#define CONFIG_PCM_S8_PLANAR_ENCODER 0
++#define CONFIG_PCM_S16BE_ENCODER 0
++#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S16LE_ENCODER 0
++#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S24BE_ENCODER 0
++#define CONFIG_PCM_S24DAUD_ENCODER 0
++#define CONFIG_PCM_S24LE_ENCODER 0
++#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S32BE_ENCODER 0
++#define CONFIG_PCM_S32LE_ENCODER 0
++#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S64BE_ENCODER 0
++#define CONFIG_PCM_S64LE_ENCODER 0
++#define CONFIG_PCM_U8_ENCODER 0
++#define CONFIG_PCM_U16BE_ENCODER 0
++#define CONFIG_PCM_U16LE_ENCODER 0
++#define CONFIG_PCM_U24BE_ENCODER 0
++#define CONFIG_PCM_U24LE_ENCODER 0
++#define CONFIG_PCM_U32BE_ENCODER 0
++#define CONFIG_PCM_U32LE_ENCODER 0
++#define CONFIG_PCM_VIDC_ENCODER 0
++#define CONFIG_ROQ_DPCM_ENCODER 0
++#define CONFIG_ADPCM_ADX_ENCODER 0
++#define CONFIG_ADPCM_ARGO_ENCODER 0
++#define CONFIG_ADPCM_G722_ENCODER 0
++#define CONFIG_ADPCM_G726_ENCODER 0
++#define CONFIG_ADPCM_G726LE_ENCODER 0
++#define CONFIG_ADPCM_IMA_AMV_ENCODER 0
++#define CONFIG_ADPCM_IMA_ALP_ENCODER 0
++#define CONFIG_ADPCM_IMA_APM_ENCODER 0
++#define CONFIG_ADPCM_IMA_QT_ENCODER 0
++#define CONFIG_ADPCM_IMA_SSI_ENCODER 0
++#define CONFIG_ADPCM_IMA_WAV_ENCODER 0
++#define CONFIG_ADPCM_IMA_WS_ENCODER 0
++#define CONFIG_ADPCM_MS_ENCODER 0
++#define CONFIG_ADPCM_SWF_ENCODER 0
++#define CONFIG_ADPCM_YAMAHA_ENCODER 0
++#define CONFIG_SSA_ENCODER 0
++#define CONFIG_ASS_ENCODER 0
++#define CONFIG_DVBSUB_ENCODER 0
++#define CONFIG_DVDSUB_ENCODER 0
++#define CONFIG_MOVTEXT_ENCODER 0
++#define CONFIG_SRT_ENCODER 0
++#define CONFIG_SUBRIP_ENCODER 0
++#define CONFIG_TEXT_ENCODER 0
++#define CONFIG_TTML_ENCODER 0
++#define CONFIG_WEBVTT_ENCODER 0
++#define CONFIG_XSUB_ENCODER 0
++#define CONFIG_AAC_AT_ENCODER 0
++#define CONFIG_ALAC_AT_ENCODER 0
++#define CONFIG_ILBC_AT_ENCODER 0
++#define CONFIG_PCM_ALAW_AT_ENCODER 0
++#define CONFIG_PCM_MULAW_AT_ENCODER 0
++#define CONFIG_LIBAOM_AV1_ENCODER 0
++#define CONFIG_LIBCODEC2_ENCODER 0
++#define CONFIG_LIBFDK_AAC_ENCODER 0
++#define CONFIG_LIBGSM_ENCODER 0
++#define CONFIG_LIBGSM_MS_ENCODER 0
++#define CONFIG_LIBILBC_ENCODER 0
++#define CONFIG_LIBJXL_ENCODER 0
++#define CONFIG_LIBMP3LAME_ENCODER 0
++#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
++#define CONFIG_LIBOPENJPEG_ENCODER 0
++#define CONFIG_LIBOPUS_ENCODER 0
++#define CONFIG_LIBRAV1E_ENCODER 0
++#define CONFIG_LIBSHINE_ENCODER 0
++#define CONFIG_LIBSPEEX_ENCODER 0
++#define CONFIG_LIBSVTAV1_ENCODER 0
++#define CONFIG_LIBTHEORA_ENCODER 0
++#define CONFIG_LIBTWOLAME_ENCODER 0
++#define CONFIG_LIBVO_AMRWBENC_ENCODER 0
++#define CONFIG_LIBVORBIS_ENCODER 0
++#define CONFIG_LIBVPX_VP8_ENCODER 0
++#define CONFIG_LIBVPX_VP9_ENCODER 0
++#define CONFIG_LIBWEBP_ANIM_ENCODER 0
++#define CONFIG_LIBWEBP_ENCODER 0
++#define CONFIG_LIBX262_ENCODER 0
++#define CONFIG_LIBX264_ENCODER 0
++#define CONFIG_LIBX264RGB_ENCODER 0
++#define CONFIG_LIBX265_ENCODER 0
++#define CONFIG_LIBXAVS_ENCODER 0
++#define CONFIG_LIBXAVS2_ENCODER 0
++#define CONFIG_LIBXVID_ENCODER 0
++#define CONFIG_AAC_MF_ENCODER 0
++#define CONFIG_AC3_MF_ENCODER 0
++#define CONFIG_H263_V4L2M2M_ENCODER 0
++#define CONFIG_LIBOPENH264_ENCODER 0
++#define CONFIG_H264_AMF_ENCODER 0
++#define CONFIG_H264_MF_ENCODER 0
++#define CONFIG_H264_NVENC_ENCODER 0
++#define CONFIG_H264_OMX_ENCODER 0
++#define CONFIG_H264_QSV_ENCODER 0
++#define CONFIG_H264_V4L2M2M_ENCODER 0
++#define CONFIG_H264_VAAPI_ENCODER 0
++#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_HEVC_AMF_ENCODER 0
++#define CONFIG_HEVC_MF_ENCODER 0
++#define CONFIG_HEVC_NVENC_ENCODER 0
++#define CONFIG_HEVC_QSV_ENCODER 0
++#define CONFIG_HEVC_V4L2M2M_ENCODER 0
++#define CONFIG_HEVC_VAAPI_ENCODER 0
++#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_LIBKVAZAAR_ENCODER 0
++#define CONFIG_MJPEG_QSV_ENCODER 0
++#define CONFIG_MJPEG_VAAPI_ENCODER 0
++#define CONFIG_MP3_MF_ENCODER 0
++#define CONFIG_MPEG2_QSV_ENCODER 0
++#define CONFIG_MPEG2_VAAPI_ENCODER 0
++#define CONFIG_MPEG4_OMX_ENCODER 0
++#define CONFIG_MPEG4_V4L2M2M_ENCODER 0
++#define CONFIG_PRORES_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_VP8_V4L2M2M_ENCODER 0
++#define CONFIG_VP8_VAAPI_ENCODER 0
++#define CONFIG_VP9_VAAPI_ENCODER 0
++#define CONFIG_VP9_QSV_ENCODER 0
++#define CONFIG_AV1_D3D11VA_HWACCEL 0
++#define CONFIG_AV1_D3D11VA2_HWACCEL 0
++#define CONFIG_AV1_DXVA2_HWACCEL 0
++#define CONFIG_AV1_NVDEC_HWACCEL 0
++#define CONFIG_AV1_VAAPI_HWACCEL 0
++#define CONFIG_H263_VAAPI_HWACCEL 0
++#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_H264_D3D11VA_HWACCEL 0
++#define CONFIG_H264_D3D11VA2_HWACCEL 0
++#define CONFIG_H264_DXVA2_HWACCEL 0
++#define CONFIG_H264_NVDEC_HWACCEL 0
++#define CONFIG_H264_VAAPI_HWACCEL 0
++#define CONFIG_H264_VDPAU_HWACCEL 0
++#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_HEVC_D3D11VA_HWACCEL 0
++#define CONFIG_HEVC_D3D11VA2_HWACCEL 0
++#define CONFIG_HEVC_DXVA2_HWACCEL 0
++#define CONFIG_HEVC_NVDEC_HWACCEL 0
++#define CONFIG_HEVC_VAAPI_HWACCEL 0
++#define CONFIG_HEVC_VDPAU_HWACCEL 0
++#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MJPEG_NVDEC_HWACCEL 0
++#define CONFIG_MJPEG_VAAPI_HWACCEL 0
++#define CONFIG_MPEG1_NVDEC_HWACCEL 0
++#define CONFIG_MPEG1_VDPAU_HWACCEL 0
++#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MPEG2_D3D11VA_HWACCEL 0
++#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
++#define CONFIG_MPEG2_NVDEC_HWACCEL 0
++#define CONFIG_MPEG2_DXVA2_HWACCEL 0
++#define CONFIG_MPEG2_VAAPI_HWACCEL 0
++#define CONFIG_MPEG2_VDPAU_HWACCEL 0
++#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MPEG4_NVDEC_HWACCEL 0
++#define CONFIG_MPEG4_VAAPI_HWACCEL 0
++#define CONFIG_MPEG4_VDPAU_HWACCEL 0
++#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_PRORES_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_VC1_D3D11VA_HWACCEL 0
++#define CONFIG_VC1_D3D11VA2_HWACCEL 0
++#define CONFIG_VC1_DXVA2_HWACCEL 0
++#define CONFIG_VC1_NVDEC_HWACCEL 0
++#define CONFIG_VC1_VAAPI_HWACCEL 0
++#define CONFIG_VC1_VDPAU_HWACCEL 0
++#define CONFIG_VP8_NVDEC_HWACCEL 0
++#define CONFIG_VP8_VAAPI_HWACCEL 0
++#define CONFIG_VP9_D3D11VA_HWACCEL 0
++#define CONFIG_VP9_D3D11VA2_HWACCEL 0
++#define CONFIG_VP9_DXVA2_HWACCEL 0
++#define CONFIG_VP9_NVDEC_HWACCEL 0
++#define CONFIG_VP9_VAAPI_HWACCEL 0
++#define CONFIG_VP9_VDPAU_HWACCEL 0
++#define CONFIG_VP9_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_WMV3_D3D11VA_HWACCEL 0
++#define CONFIG_WMV3_D3D11VA2_HWACCEL 0
++#define CONFIG_WMV3_DXVA2_HWACCEL 0
++#define CONFIG_WMV3_NVDEC_HWACCEL 0
++#define CONFIG_WMV3_VAAPI_HWACCEL 0
++#define CONFIG_WMV3_VDPAU_HWACCEL 0
++#define CONFIG_AAC_PARSER 1
++#define CONFIG_AAC_LATM_PARSER 0
++#define CONFIG_AC3_PARSER 0
++#define CONFIG_ADX_PARSER 0
++#define CONFIG_AMR_PARSER 0
++#define CONFIG_AV1_PARSER 0
++#define CONFIG_AVS2_PARSER 0
++#define CONFIG_AVS3_PARSER 0
++#define CONFIG_BMP_PARSER 0
++#define CONFIG_CAVSVIDEO_PARSER 0
++#define CONFIG_COOK_PARSER 0
++#define CONFIG_CRI_PARSER 0
++#define CONFIG_DCA_PARSER 0
++#define CONFIG_DIRAC_PARSER 0
++#define CONFIG_DNXHD_PARSER 0
++#define CONFIG_DOLBY_E_PARSER 0
++#define CONFIG_DPX_PARSER 0
++#define CONFIG_DVAUDIO_PARSER 0
++#define CONFIG_DVBSUB_PARSER 0
++#define CONFIG_DVDSUB_PARSER 0
++#define CONFIG_DVD_NAV_PARSER 0
++#define CONFIG_FLAC_PARSER 1
++#define CONFIG_G723_1_PARSER 0
++#define CONFIG_G729_PARSER 0
++#define CONFIG_GIF_PARSER 0
++#define CONFIG_GSM_PARSER 0
++#define CONFIG_H261_PARSER 0
++#define CONFIG_H263_PARSER 0
++#define CONFIG_H264_PARSER 1
++#define CONFIG_HEVC_PARSER 0
++#define CONFIG_IPU_PARSER 0
++#define CONFIG_JPEG2000_PARSER 0
++#define CONFIG_MJPEG_PARSER 0
++#define CONFIG_MLP_PARSER 0
++#define CONFIG_MPEG4VIDEO_PARSER 0
++#define CONFIG_MPEGAUDIO_PARSER 1
++#define CONFIG_MPEGVIDEO_PARSER 0
++#define CONFIG_OPUS_PARSER 1
++#define CONFIG_PNG_PARSER 0
++#define CONFIG_PNM_PARSER 0
++#define CONFIG_RV30_PARSER 0
++#define CONFIG_RV40_PARSER 0
++#define CONFIG_SBC_PARSER 0
++#define CONFIG_SIPR_PARSER 0
++#define CONFIG_TAK_PARSER 0
++#define CONFIG_VC1_PARSER 0
++#define CONFIG_VORBIS_PARSER 1
++#define CONFIG_VP3_PARSER 1
++#define CONFIG_VP8_PARSER 1
++#define CONFIG_VP9_PARSER 1
++#define CONFIG_WEBP_PARSER 0
++#define CONFIG_XBM_PARSER 0
++#define CONFIG_XMA_PARSER 0
++#define CONFIG_ALSA_INDEV 0
++#define CONFIG_ANDROID_CAMERA_INDEV 0
++#define CONFIG_AVFOUNDATION_INDEV 0
++#define CONFIG_BKTR_INDEV 0
++#define CONFIG_DECKLINK_INDEV 0
++#define CONFIG_DSHOW_INDEV 0
++#define CONFIG_FBDEV_INDEV 0
++#define CONFIG_GDIGRAB_INDEV 0
++#define CONFIG_IEC61883_INDEV 0
++#define CONFIG_JACK_INDEV 0
++#define CONFIG_KMSGRAB_INDEV 0
++#define CONFIG_LAVFI_INDEV 0
++#define CONFIG_OPENAL_INDEV 0
++#define CONFIG_OSS_INDEV 0
++#define CONFIG_PULSE_INDEV 0
++#define CONFIG_SNDIO_INDEV 0
++#define CONFIG_V4L2_INDEV 0
++#define CONFIG_VFWCAP_INDEV 0
++#define CONFIG_XCBGRAB_INDEV 0
++#define CONFIG_LIBCDIO_INDEV 0
++#define CONFIG_LIBDC1394_INDEV 0
++#define CONFIG_ALSA_OUTDEV 0
++#define CONFIG_AUDIOTOOLBOX_OUTDEV 0
++#define CONFIG_CACA_OUTDEV 0
++#define CONFIG_DECKLINK_OUTDEV 0
++#define CONFIG_FBDEV_OUTDEV 0
++#define CONFIG_OPENGL_OUTDEV 0
++#define CONFIG_OSS_OUTDEV 0
++#define CONFIG_PULSE_OUTDEV 0
++#define CONFIG_SDL2_OUTDEV 0
++#define CONFIG_SNDIO_OUTDEV 0
++#define CONFIG_V4L2_OUTDEV 0
++#define CONFIG_XV_OUTDEV 0
++#define CONFIG_ABENCH_FILTER 0
++#define CONFIG_ACOMPRESSOR_FILTER 0
++#define CONFIG_ACONTRAST_FILTER 0
++#define CONFIG_ACOPY_FILTER 0
++#define CONFIG_ACUE_FILTER 0
++#define CONFIG_ACROSSFADE_FILTER 0
++#define CONFIG_ACROSSOVER_FILTER 0
++#define CONFIG_ACRUSHER_FILTER 0
++#define CONFIG_ADECLICK_FILTER 0
++#define CONFIG_ADECLIP_FILTER 0
++#define CONFIG_ADECORRELATE_FILTER 0
++#define CONFIG_ADELAY_FILTER 0
++#define CONFIG_ADENORM_FILTER 0
++#define CONFIG_ADERIVATIVE_FILTER 0
++#define CONFIG_ADYNAMICEQUALIZER_FILTER 0
++#define CONFIG_ADYNAMICSMOOTH_FILTER 0
++#define CONFIG_AECHO_FILTER 0
++#define CONFIG_AEMPHASIS_FILTER 0
++#define CONFIG_AEVAL_FILTER 0
++#define CONFIG_AEXCITER_FILTER 0
++#define CONFIG_AFADE_FILTER 0
++#define CONFIG_AFFTDN_FILTER 0
++#define CONFIG_AFFTFILT_FILTER 0
++#define CONFIG_AFIR_FILTER 0
++#define CONFIG_AFORMAT_FILTER 0
++#define CONFIG_AFREQSHIFT_FILTER 0
++#define CONFIG_AFWTDN_FILTER 0
++#define CONFIG_AGATE_FILTER 0
++#define CONFIG_AIIR_FILTER 0
++#define CONFIG_AINTEGRAL_FILTER 0
++#define CONFIG_AINTERLEAVE_FILTER 0
++#define CONFIG_ALATENCY_FILTER 0
++#define CONFIG_ALIMITER_FILTER 0
++#define CONFIG_ALLPASS_FILTER 0
++#define CONFIG_ALOOP_FILTER 0
++#define CONFIG_AMERGE_FILTER 0
++#define CONFIG_AMETADATA_FILTER 0
++#define CONFIG_AMIX_FILTER 0
++#define CONFIG_AMULTIPLY_FILTER 0
++#define CONFIG_ANEQUALIZER_FILTER 0
++#define CONFIG_ANLMDN_FILTER 0
++#define CONFIG_ANLMF_FILTER 0
++#define CONFIG_ANLMS_FILTER 0
++#define CONFIG_ANULL_FILTER 0
++#define CONFIG_APAD_FILTER 0
++#define CONFIG_APERMS_FILTER 0
++#define CONFIG_APHASER_FILTER 0
++#define CONFIG_APHASESHIFT_FILTER 0
++#define CONFIG_APSYCLIP_FILTER 0
++#define CONFIG_APULSATOR_FILTER 0
++#define CONFIG_AREALTIME_FILTER 0
++#define CONFIG_ARESAMPLE_FILTER 0
++#define CONFIG_AREVERSE_FILTER 0
++#define CONFIG_ARNNDN_FILTER 0
++#define CONFIG_ASDR_FILTER 0
++#define CONFIG_ASEGMENT_FILTER 0
++#define CONFIG_ASELECT_FILTER 0
++#define CONFIG_ASENDCMD_FILTER 0
++#define CONFIG_ASETNSAMPLES_FILTER 0
++#define CONFIG_ASETPTS_FILTER 0
++#define CONFIG_ASETRATE_FILTER 0
++#define CONFIG_ASETTB_FILTER 0
++#define CONFIG_ASHOWINFO_FILTER 0
++#define CONFIG_ASIDEDATA_FILTER 0
++#define CONFIG_ASOFTCLIP_FILTER 0
++#define CONFIG_ASPECTRALSTATS_FILTER 0
++#define CONFIG_ASPLIT_FILTER 0
++#define CONFIG_ASR_FILTER 0
++#define CONFIG_ASTATS_FILTER 0
++#define CONFIG_ASTREAMSELECT_FILTER 0
++#define CONFIG_ASUBBOOST_FILTER 0
++#define CONFIG_ASUBCUT_FILTER 0
++#define CONFIG_ASUPERCUT_FILTER 0
++#define CONFIG_ASUPERPASS_FILTER 0
++#define CONFIG_ASUPERSTOP_FILTER 0
++#define CONFIG_ATEMPO_FILTER 0
++#define CONFIG_ATILT_FILTER 0
++#define CONFIG_ATRIM_FILTER 0
++#define CONFIG_AXCORRELATE_FILTER 0
++#define CONFIG_AZMQ_FILTER 0
++#define CONFIG_BANDPASS_FILTER 0
++#define CONFIG_BANDREJECT_FILTER 0
++#define CONFIG_BASS_FILTER 0
++#define CONFIG_BIQUAD_FILTER 0
++#define CONFIG_BS2B_FILTER 0
++#define CONFIG_CHANNELMAP_FILTER 0
++#define CONFIG_CHANNELSPLIT_FILTER 0
++#define CONFIG_CHORUS_FILTER 0
++#define CONFIG_COMPAND_FILTER 0
++#define CONFIG_COMPENSATIONDELAY_FILTER 0
++#define CONFIG_CROSSFEED_FILTER 0
++#define CONFIG_CRYSTALIZER_FILTER 0
++#define CONFIG_DCSHIFT_FILTER 0
++#define CONFIG_DEESSER_FILTER 0
++#define CONFIG_DIALOGUENHANCE_FILTER 0
++#define CONFIG_DRMETER_FILTER 0
++#define CONFIG_DYNAUDNORM_FILTER 0
++#define CONFIG_EARWAX_FILTER 0
++#define CONFIG_EBUR128_FILTER 0
++#define CONFIG_EQUALIZER_FILTER 0
++#define CONFIG_EXTRASTEREO_FILTER 0
++#define CONFIG_FIREQUALIZER_FILTER 0
++#define CONFIG_FLANGER_FILTER 0
++#define CONFIG_HAAS_FILTER 0
++#define CONFIG_HDCD_FILTER 0
++#define CONFIG_HEADPHONE_FILTER 0
++#define CONFIG_HIGHPASS_FILTER 0
++#define CONFIG_HIGHSHELF_FILTER 0
++#define CONFIG_JOIN_FILTER 0
++#define CONFIG_LADSPA_FILTER 0
++#define CONFIG_LOUDNORM_FILTER 0
++#define CONFIG_LOWPASS_FILTER 0
++#define CONFIG_LOWSHELF_FILTER 0
++#define CONFIG_LV2_FILTER 0
++#define CONFIG_MCOMPAND_FILTER 0
++#define CONFIG_PAN_FILTER 0
++#define CONFIG_REPLAYGAIN_FILTER 0
++#define CONFIG_RUBBERBAND_FILTER 0
++#define CONFIG_SIDECHAINCOMPRESS_FILTER 0
++#define CONFIG_SIDECHAINGATE_FILTER 0
++#define CONFIG_SILENCEDETECT_FILTER 0
++#define CONFIG_SILENCEREMOVE_FILTER 0
++#define CONFIG_SOFALIZER_FILTER 0
++#define CONFIG_SPEECHNORM_FILTER 0
++#define CONFIG_STEREOTOOLS_FILTER 0
++#define CONFIG_STEREOWIDEN_FILTER 0
++#define CONFIG_SUPEREQUALIZER_FILTER 0
++#define CONFIG_SURROUND_FILTER 0
++#define CONFIG_TREBLE_FILTER 0
++#define CONFIG_TREMOLO_FILTER 0
++#define CONFIG_VIBRATO_FILTER 0
++#define CONFIG_VOLUME_FILTER 0
++#define CONFIG_VOLUMEDETECT_FILTER 0
++#define CONFIG_AEVALSRC_FILTER 0
++#define CONFIG_AFIRSRC_FILTER 0
++#define CONFIG_ANOISESRC_FILTER 0
++#define CONFIG_ANULLSRC_FILTER 0
++#define CONFIG_FLITE_FILTER 0
++#define CONFIG_HILBERT_FILTER 0
++#define CONFIG_SINC_FILTER 0
++#define CONFIG_SINE_FILTER 0
++#define CONFIG_ANULLSINK_FILTER 0
++#define CONFIG_ADDROI_FILTER 0
++#define CONFIG_ALPHAEXTRACT_FILTER 0
++#define CONFIG_ALPHAMERGE_FILTER 0
++#define CONFIG_AMPLIFY_FILTER 0
++#define CONFIG_ASS_FILTER 0
++#define CONFIG_ATADENOISE_FILTER 0
++#define CONFIG_AVGBLUR_FILTER 0
++#define CONFIG_AVGBLUR_OPENCL_FILTER 0
++#define CONFIG_AVGBLUR_VULKAN_FILTER 0
++#define CONFIG_BBOX_FILTER 0
++#define CONFIG_BENCH_FILTER 0
++#define CONFIG_BILATERAL_FILTER 0
++#define CONFIG_BITPLANENOISE_FILTER 0
++#define CONFIG_BLACKDETECT_FILTER 0
++#define CONFIG_BLACKFRAME_FILTER 0
++#define CONFIG_BLEND_FILTER 0
++#define CONFIG_BLEND_VULKAN_FILTER 0
++#define CONFIG_BLURDETECT_FILTER 0
++#define CONFIG_BM3D_FILTER 0
++#define CONFIG_BOXBLUR_FILTER 0
++#define CONFIG_BOXBLUR_OPENCL_FILTER 0
++#define CONFIG_BWDIF_FILTER 0
++#define CONFIG_CAS_FILTER 0
++#define CONFIG_CHROMABER_VULKAN_FILTER 0
++#define CONFIG_CHROMAHOLD_FILTER 0
++#define CONFIG_CHROMAKEY_FILTER 0
++#define CONFIG_CHROMANR_FILTER 0
++#define CONFIG_CHROMASHIFT_FILTER 0
++#define CONFIG_CIESCOPE_FILTER 0
++#define CONFIG_CODECVIEW_FILTER 0
++#define CONFIG_COLORBALANCE_FILTER 0
++#define CONFIG_COLORCHANNELMIXER_FILTER 0
++#define CONFIG_COLORCONTRAST_FILTER 0
++#define CONFIG_COLORCORRECT_FILTER 0
++#define CONFIG_COLORIZE_FILTER 0
++#define CONFIG_COLORKEY_FILTER 0
++#define CONFIG_COLORKEY_OPENCL_FILTER 0
++#define CONFIG_COLORHOLD_FILTER 0
++#define CONFIG_COLORLEVELS_FILTER 0
++#define CONFIG_COLORMAP_FILTER 0
++#define CONFIG_COLORMATRIX_FILTER 0
++#define CONFIG_COLORSPACE_FILTER 0
++#define CONFIG_COLORTEMPERATURE_FILTER 0
++#define CONFIG_CONVOLUTION_FILTER 0
++#define CONFIG_CONVOLUTION_OPENCL_FILTER 0
++#define CONFIG_CONVOLVE_FILTER 0
++#define CONFIG_COPY_FILTER 0
++#define CONFIG_COREIMAGE_FILTER 0
++#define CONFIG_COVER_RECT_FILTER 0
++#define CONFIG_CROP_FILTER 0
++#define CONFIG_CROPDETECT_FILTER 0
++#define CONFIG_CUE_FILTER 0
++#define CONFIG_CURVES_FILTER 0
++#define CONFIG_DATASCOPE_FILTER 0
++#define CONFIG_DBLUR_FILTER 0
++#define CONFIG_DCTDNOIZ_FILTER 0
++#define CONFIG_DEBAND_FILTER 0
++#define CONFIG_DEBLOCK_FILTER 0
++#define CONFIG_DECIMATE_FILTER 0
++#define CONFIG_DECONVOLVE_FILTER 0
++#define CONFIG_DEDOT_FILTER 0
++#define CONFIG_DEFLATE_FILTER 0
++#define CONFIG_DEFLICKER_FILTER 0
++#define CONFIG_DEINTERLACE_QSV_FILTER 0
++#define CONFIG_DEINTERLACE_VAAPI_FILTER 0
++#define CONFIG_DEJUDDER_FILTER 0
++#define CONFIG_DELOGO_FILTER 0
++#define CONFIG_DENOISE_VAAPI_FILTER 0
++#define CONFIG_DERAIN_FILTER 0
++#define CONFIG_DESHAKE_FILTER 0
++#define CONFIG_DESHAKE_OPENCL_FILTER 0
++#define CONFIG_DESPILL_FILTER 0
++#define CONFIG_DETELECINE_FILTER 0
++#define CONFIG_DILATION_FILTER 0
++#define CONFIG_DILATION_OPENCL_FILTER 0
++#define CONFIG_DISPLACE_FILTER 0
++#define CONFIG_DNN_CLASSIFY_FILTER 0
++#define CONFIG_DNN_DETECT_FILTER 0
++#define CONFIG_DNN_PROCESSING_FILTER 0
++#define CONFIG_DOUBLEWEAVE_FILTER 0
++#define CONFIG_DRAWBOX_FILTER 0
++#define CONFIG_DRAWGRAPH_FILTER 0
++#define CONFIG_DRAWGRID_FILTER 0
++#define CONFIG_DRAWTEXT_FILTER 0
++#define CONFIG_EDGEDETECT_FILTER 0
++#define CONFIG_ELBG_FILTER 0
++#define CONFIG_ENTROPY_FILTER 0
++#define CONFIG_EPX_FILTER 0
++#define CONFIG_EQ_FILTER 0
++#define CONFIG_EROSION_FILTER 0
++#define CONFIG_EROSION_OPENCL_FILTER 0
++#define CONFIG_ESTDIF_FILTER 0
++#define CONFIG_EXPOSURE_FILTER 0
++#define CONFIG_EXTRACTPLANES_FILTER 0
++#define CONFIG_FADE_FILTER 0
++#define CONFIG_FEEDBACK_FILTER 0
++#define CONFIG_FFTDNOIZ_FILTER 0
++#define CONFIG_FFTFILT_FILTER 0
++#define CONFIG_FIELD_FILTER 0
++#define CONFIG_FIELDHINT_FILTER 0
++#define CONFIG_FIELDMATCH_FILTER 0
++#define CONFIG_FIELDORDER_FILTER 0
++#define CONFIG_FILLBORDERS_FILTER 0
++#define CONFIG_FIND_RECT_FILTER 0
++#define CONFIG_FLIP_VULKAN_FILTER 0
++#define CONFIG_FLOODFILL_FILTER 0
++#define CONFIG_FORMAT_FILTER 0
++#define CONFIG_FPS_FILTER 0
++#define CONFIG_FRAMEPACK_FILTER 0
++#define CONFIG_FRAMERATE_FILTER 0
++#define CONFIG_FRAMESTEP_FILTER 0
++#define CONFIG_FREEZEDETECT_FILTER 0
++#define CONFIG_FREEZEFRAMES_FILTER 0
++#define CONFIG_FREI0R_FILTER 0
++#define CONFIG_FSPP_FILTER 0
++#define CONFIG_GBLUR_FILTER 0
++#define CONFIG_GBLUR_VULKAN_FILTER 0
++#define CONFIG_GEQ_FILTER 0
++#define CONFIG_GRADFUN_FILTER 0
++#define CONFIG_GRAPHMONITOR_FILTER 0
++#define CONFIG_GRAYWORLD_FILTER 0
++#define CONFIG_GREYEDGE_FILTER 0
++#define CONFIG_GUIDED_FILTER 0
++#define CONFIG_HALDCLUT_FILTER 0
++#define CONFIG_HFLIP_FILTER 0
++#define CONFIG_HFLIP_VULKAN_FILTER 0
++#define CONFIG_HISTEQ_FILTER 0
++#define CONFIG_HISTOGRAM_FILTER 0
++#define CONFIG_HQDN3D_FILTER 0
++#define CONFIG_HQX_FILTER 0
++#define CONFIG_HSTACK_FILTER 0
++#define CONFIG_HSVHOLD_FILTER 0
++#define CONFIG_HSVKEY_FILTER 0
++#define CONFIG_HUE_FILTER 0
++#define CONFIG_HUESATURATION_FILTER 0
++#define CONFIG_HWDOWNLOAD_FILTER 0
++#define CONFIG_HWMAP_FILTER 0
++#define CONFIG_HWUPLOAD_FILTER 0
++#define CONFIG_HWUPLOAD_CUDA_FILTER 0
++#define CONFIG_HYSTERESIS_FILTER 0
++#define CONFIG_ICCDETECT_FILTER 0
++#define CONFIG_ICCGEN_FILTER 0
++#define CONFIG_IDENTITY_FILTER 0
++#define CONFIG_IDET_FILTER 0
++#define CONFIG_IL_FILTER 0
++#define CONFIG_INFLATE_FILTER 0
++#define CONFIG_INTERLACE_FILTER 0
++#define CONFIG_INTERLEAVE_FILTER 0
++#define CONFIG_KERNDEINT_FILTER 0
++#define CONFIG_KIRSCH_FILTER 0
++#define CONFIG_LAGFUN_FILTER 0
++#define CONFIG_LATENCY_FILTER 0
++#define CONFIG_LENSCORRECTION_FILTER 0
++#define CONFIG_LENSFUN_FILTER 0
++#define CONFIG_LIBPLACEBO_FILTER 0
++#define CONFIG_LIBVMAF_FILTER 0
++#define CONFIG_LIMITDIFF_FILTER 0
++#define CONFIG_LIMITER_FILTER 0
++#define CONFIG_LOOP_FILTER 0
++#define CONFIG_LUMAKEY_FILTER 0
++#define CONFIG_LUT_FILTER 0
++#define CONFIG_LUT1D_FILTER 0
++#define CONFIG_LUT2_FILTER 0
++#define CONFIG_LUT3D_FILTER 0
++#define CONFIG_LUTRGB_FILTER 0
++#define CONFIG_LUTYUV_FILTER 0
++#define CONFIG_MASKEDCLAMP_FILTER 0
++#define CONFIG_MASKEDMAX_FILTER 0
++#define CONFIG_MASKEDMERGE_FILTER 0
++#define CONFIG_MASKEDMIN_FILTER 0
++#define CONFIG_MASKEDTHRESHOLD_FILTER 0
++#define CONFIG_MASKFUN_FILTER 0
++#define CONFIG_MCDEINT_FILTER 0
++#define CONFIG_MEDIAN_FILTER 0
++#define CONFIG_MERGEPLANES_FILTER 0
++#define CONFIG_MESTIMATE_FILTER 0
++#define CONFIG_METADATA_FILTER 0
++#define CONFIG_MIDEQUALIZER_FILTER 0
++#define CONFIG_MINTERPOLATE_FILTER 0
++#define CONFIG_MIX_FILTER 0
++#define CONFIG_MONOCHROME_FILTER 0
++#define CONFIG_MORPHO_FILTER 0
++#define CONFIG_MPDECIMATE_FILTER 0
++#define CONFIG_MSAD_FILTER 0
++#define CONFIG_MULTIPLY_FILTER 0
++#define CONFIG_NEGATE_FILTER 0
++#define CONFIG_NLMEANS_FILTER 0
++#define CONFIG_NLMEANS_OPENCL_FILTER 0
++#define CONFIG_NNEDI_FILTER 0
++#define CONFIG_NOFORMAT_FILTER 0
++#define CONFIG_NOISE_FILTER 0
++#define CONFIG_NORMALIZE_FILTER 0
++#define CONFIG_NULL_FILTER 0
++#define CONFIG_OCR_FILTER 0
++#define CONFIG_OCV_FILTER 0
++#define CONFIG_OSCILLOSCOPE_FILTER 0
++#define CONFIG_OVERLAY_FILTER 0
++#define CONFIG_OVERLAY_OPENCL_FILTER 0
++#define CONFIG_OVERLAY_QSV_FILTER 0
++#define CONFIG_OVERLAY_VAAPI_FILTER 0
++#define CONFIG_OVERLAY_VULKAN_FILTER 0
++#define CONFIG_OVERLAY_CUDA_FILTER 0
++#define CONFIG_OWDENOISE_FILTER 0
++#define CONFIG_PAD_FILTER 0
++#define CONFIG_PAD_OPENCL_FILTER 0
++#define CONFIG_PALETTEGEN_FILTER 0
++#define CONFIG_PALETTEUSE_FILTER 0
++#define CONFIG_PERMS_FILTER 0
++#define CONFIG_PERSPECTIVE_FILTER 0
++#define CONFIG_PHASE_FILTER 0
++#define CONFIG_PHOTOSENSITIVITY_FILTER 0
++#define CONFIG_PIXDESCTEST_FILTER 0
++#define CONFIG_PIXELIZE_FILTER 0
++#define CONFIG_PIXSCOPE_FILTER 0
++#define CONFIG_PP_FILTER 0
++#define CONFIG_PP7_FILTER 0
++#define CONFIG_PREMULTIPLY_FILTER 0
++#define CONFIG_PREWITT_FILTER 0
++#define CONFIG_PREWITT_OPENCL_FILTER 0
++#define CONFIG_PROCAMP_VAAPI_FILTER 0
++#define CONFIG_PROGRAM_OPENCL_FILTER 0
++#define CONFIG_PSEUDOCOLOR_FILTER 0
++#define CONFIG_PSNR_FILTER 0
++#define CONFIG_PULLUP_FILTER 0
++#define CONFIG_QP_FILTER 0
++#define CONFIG_RANDOM_FILTER 0
++#define CONFIG_READEIA608_FILTER 0
++#define CONFIG_READVITC_FILTER 0
++#define CONFIG_REALTIME_FILTER 0
++#define CONFIG_REMAP_FILTER 0
++#define CONFIG_REMOVEGRAIN_FILTER 0
++#define CONFIG_REMOVELOGO_FILTER 0
++#define CONFIG_REPEATFIELDS_FILTER 0
++#define CONFIG_REVERSE_FILTER 0
++#define CONFIG_RGBASHIFT_FILTER 0
++#define CONFIG_ROBERTS_FILTER 0
++#define CONFIG_ROBERTS_OPENCL_FILTER 0
++#define CONFIG_ROTATE_FILTER 0
++#define CONFIG_SAB_FILTER 0
++#define CONFIG_SCALE_FILTER 0
++#define CONFIG_SCALE_CUDA_FILTER 0
++#define CONFIG_SCALE_NPP_FILTER 0
++#define CONFIG_SCALE_QSV_FILTER 0
++#define CONFIG_SCALE_VAAPI_FILTER 0
++#define CONFIG_SCALE_VULKAN_FILTER 0
++#define CONFIG_SCALE2REF_FILTER 0
++#define CONFIG_SCALE2REF_NPP_FILTER 0
++#define CONFIG_SCDET_FILTER 0
++#define CONFIG_SCHARR_FILTER 0
++#define CONFIG_SCROLL_FILTER 0
++#define CONFIG_SEGMENT_FILTER 0
++#define CONFIG_SELECT_FILTER 0
++#define CONFIG_SELECTIVECOLOR_FILTER 0
++#define CONFIG_SENDCMD_FILTER 0
++#define CONFIG_SEPARATEFIELDS_FILTER 0
++#define CONFIG_SETDAR_FILTER 0
++#define CONFIG_SETFIELD_FILTER 0
++#define CONFIG_SETPARAMS_FILTER 0
++#define CONFIG_SETPTS_FILTER 0
++#define CONFIG_SETRANGE_FILTER 0
++#define CONFIG_SETSAR_FILTER 0
++#define CONFIG_SETTB_FILTER 0
++#define CONFIG_SHARPEN_NPP_FILTER 0
++#define CONFIG_SHARPNESS_VAAPI_FILTER 0
++#define CONFIG_SHEAR_FILTER 0
++#define CONFIG_SHOWINFO_FILTER 0
++#define CONFIG_SHOWPALETTE_FILTER 0
++#define CONFIG_SHUFFLEFRAMES_FILTER 0
++#define CONFIG_SHUFFLEPIXELS_FILTER 0
++#define CONFIG_SHUFFLEPLANES_FILTER 0
++#define CONFIG_SIDEDATA_FILTER 0
++#define CONFIG_SIGNALSTATS_FILTER 0
++#define CONFIG_SIGNATURE_FILTER 0
++#define CONFIG_SITI_FILTER 0
++#define CONFIG_SMARTBLUR_FILTER 0
++#define CONFIG_SOBEL_FILTER 0
++#define CONFIG_SOBEL_OPENCL_FILTER 0
++#define CONFIG_SPLIT_FILTER 0
++#define CONFIG_SPP_FILTER 0
++#define CONFIG_SR_FILTER 0
++#define CONFIG_SSIM_FILTER 0
++#define CONFIG_STEREO3D_FILTER 0
++#define CONFIG_STREAMSELECT_FILTER 0
++#define CONFIG_SUBTITLES_FILTER 0
++#define CONFIG_SUPER2XSAI_FILTER 0
++#define CONFIG_SWAPRECT_FILTER 0
++#define CONFIG_SWAPUV_FILTER 0
++#define CONFIG_TBLEND_FILTER 0
++#define CONFIG_TELECINE_FILTER 0
++#define CONFIG_THISTOGRAM_FILTER 0
++#define CONFIG_THRESHOLD_FILTER 0
++#define CONFIG_THUMBNAIL_FILTER 0
++#define CONFIG_THUMBNAIL_CUDA_FILTER 0
++#define CONFIG_TILE_FILTER 0
++#define CONFIG_TINTERLACE_FILTER 0
++#define CONFIG_TLUT2_FILTER 0
++#define CONFIG_TMEDIAN_FILTER 0
++#define CONFIG_TMIDEQUALIZER_FILTER 0
++#define CONFIG_TMIX_FILTER 0
++#define CONFIG_TONEMAP_FILTER 0
++#define CONFIG_TONEMAP_OPENCL_FILTER 0
++#define CONFIG_TONEMAP_VAAPI_FILTER 0
++#define CONFIG_TPAD_FILTER 0
++#define CONFIG_TRANSPOSE_FILTER 0
++#define CONFIG_TRANSPOSE_NPP_FILTER 0
++#define CONFIG_TRANSPOSE_OPENCL_FILTER 0
++#define CONFIG_TRANSPOSE_VAAPI_FILTER 0
++#define CONFIG_TRANSPOSE_VULKAN_FILTER 0
++#define CONFIG_TRIM_FILTER 0
++#define CONFIG_UNPREMULTIPLY_FILTER 0
++#define CONFIG_UNSHARP_FILTER 0
++#define CONFIG_UNSHARP_OPENCL_FILTER 0
++#define CONFIG_UNTILE_FILTER 0
++#define CONFIG_USPP_FILTER 0
++#define CONFIG_V360_FILTER 0
++#define CONFIG_VAGUEDENOISER_FILTER 0
++#define CONFIG_VARBLUR_FILTER 0
++#define CONFIG_VECTORSCOPE_FILTER 0
++#define CONFIG_VFLIP_FILTER 0
++#define CONFIG_VFLIP_VULKAN_FILTER 0
++#define CONFIG_VFRDET_FILTER 0
++#define CONFIG_VIBRANCE_FILTER 0
++#define CONFIG_VIDSTABDETECT_FILTER 0
++#define CONFIG_VIDSTABTRANSFORM_FILTER 0
++#define CONFIG_VIF_FILTER 0
++#define CONFIG_VIGNETTE_FILTER 0
++#define CONFIG_VMAFMOTION_FILTER 0
++#define CONFIG_VPP_QSV_FILTER 0
++#define CONFIG_VSTACK_FILTER 0
++#define CONFIG_W3FDIF_FILTER 0
++#define CONFIG_WAVEFORM_FILTER 0
++#define CONFIG_WEAVE_FILTER 0
++#define CONFIG_XBR_FILTER 0
++#define CONFIG_XCORRELATE_FILTER 0
++#define CONFIG_XFADE_FILTER 0
++#define CONFIG_XFADE_OPENCL_FILTER 0
++#define CONFIG_XMEDIAN_FILTER 0
++#define CONFIG_XSTACK_FILTER 0
++#define CONFIG_YADIF_FILTER 0
++#define CONFIG_YADIF_CUDA_FILTER 0
++#define CONFIG_YADIF_VIDEOTOOLBOX_FILTER 0
++#define CONFIG_YAEPBLUR_FILTER 0
++#define CONFIG_ZMQ_FILTER 0
++#define CONFIG_ZOOMPAN_FILTER 0
++#define CONFIG_ZSCALE_FILTER 0
++#define CONFIG_ALLRGB_FILTER 0
++#define CONFIG_ALLYUV_FILTER 0
++#define CONFIG_CELLAUTO_FILTER 0
++#define CONFIG_COLOR_FILTER 0
++#define CONFIG_COLORCHART_FILTER 0
++#define CONFIG_COLORSPECTRUM_FILTER 0
++#define CONFIG_COREIMAGESRC_FILTER 0
++#define CONFIG_FREI0R_SRC_FILTER 0
++#define CONFIG_GRADIENTS_FILTER 0
++#define CONFIG_HALDCLUTSRC_FILTER 0
++#define CONFIG_LIFE_FILTER 0
++#define CONFIG_MANDELBROT_FILTER 0
++#define CONFIG_MPTESTSRC_FILTER 0
++#define CONFIG_NULLSRC_FILTER 0
++#define CONFIG_OPENCLSRC_FILTER 0
++#define CONFIG_PAL75BARS_FILTER 0
++#define CONFIG_PAL100BARS_FILTER 0
++#define CONFIG_RGBTESTSRC_FILTER 0
++#define CONFIG_SIERPINSKI_FILTER 0
++#define CONFIG_SMPTEBARS_FILTER 0
++#define CONFIG_SMPTEHDBARS_FILTER 0
++#define CONFIG_TESTSRC_FILTER 0
++#define CONFIG_TESTSRC2_FILTER 0
++#define CONFIG_YUVTESTSRC_FILTER 0
++#define CONFIG_NULLSINK_FILTER 0
++#define CONFIG_ABITSCOPE_FILTER 0
++#define CONFIG_ADRAWGRAPH_FILTER 0
++#define CONFIG_AGRAPHMONITOR_FILTER 0
++#define CONFIG_AHISTOGRAM_FILTER 0
++#define CONFIG_APHASEMETER_FILTER 0
++#define CONFIG_AVECTORSCOPE_FILTER 0
++#define CONFIG_CONCAT_FILTER 0
++#define CONFIG_SHOWCQT_FILTER 0
++#define CONFIG_SHOWFREQS_FILTER 0
++#define CONFIG_SHOWSPATIAL_FILTER 0
++#define CONFIG_SHOWSPECTRUM_FILTER 0
++#define CONFIG_SHOWSPECTRUMPIC_FILTER 0
++#define CONFIG_SHOWVOLUME_FILTER 0
++#define CONFIG_SHOWWAVES_FILTER 0
++#define CONFIG_SHOWWAVESPIC_FILTER 0
++#define CONFIG_SPECTRUMSYNTH_FILTER 0
++#define CONFIG_AVSYNCTEST_FILTER 0
++#define CONFIG_AMOVIE_FILTER 0
++#define CONFIG_MOVIE_FILTER 0
++#define CONFIG_AFIFO_FILTER 0
++#define CONFIG_FIFO_FILTER 0
++#define CONFIG_AA_DEMUXER 0
++#define CONFIG_AAC_DEMUXER 1
++#define CONFIG_AAX_DEMUXER 0
++#define CONFIG_AC3_DEMUXER 0
++#define CONFIG_ACE_DEMUXER 0
++#define CONFIG_ACM_DEMUXER 0
++#define CONFIG_ACT_DEMUXER 0
++#define CONFIG_ADF_DEMUXER 0
++#define CONFIG_ADP_DEMUXER 0
++#define CONFIG_ADS_DEMUXER 0
++#define CONFIG_ADX_DEMUXER 0
++#define CONFIG_AEA_DEMUXER 0
++#define CONFIG_AFC_DEMUXER 0
++#define CONFIG_AIFF_DEMUXER 0
++#define CONFIG_AIX_DEMUXER 0
++#define CONFIG_ALP_DEMUXER 0
++#define CONFIG_AMR_DEMUXER 0
++#define CONFIG_AMRNB_DEMUXER 0
++#define CONFIG_AMRWB_DEMUXER 0
++#define CONFIG_ANM_DEMUXER 0
++#define CONFIG_APC_DEMUXER 0
++#define CONFIG_APE_DEMUXER 0
++#define CONFIG_APM_DEMUXER 0
++#define CONFIG_APNG_DEMUXER 0
++#define CONFIG_APTX_DEMUXER 0
++#define CONFIG_APTX_HD_DEMUXER 0
++#define CONFIG_AQTITLE_DEMUXER 0
++#define CONFIG_ARGO_ASF_DEMUXER 0
++#define CONFIG_ARGO_BRP_DEMUXER 0
++#define CONFIG_ARGO_CVG_DEMUXER 0
++#define CONFIG_ASF_DEMUXER 0
++#define CONFIG_ASF_O_DEMUXER 0
++#define CONFIG_ASS_DEMUXER 0
++#define CONFIG_AST_DEMUXER 0
++#define CONFIG_AU_DEMUXER 0
++#define CONFIG_AV1_DEMUXER 0
++#define CONFIG_AVI_DEMUXER 0
++#define CONFIG_AVISYNTH_DEMUXER 0
++#define CONFIG_AVR_DEMUXER 0
++#define CONFIG_AVS_DEMUXER 0
++#define CONFIG_AVS2_DEMUXER 0
++#define CONFIG_AVS3_DEMUXER 0
++#define CONFIG_BETHSOFTVID_DEMUXER 0
++#define CONFIG_BFI_DEMUXER 0
++#define CONFIG_BINTEXT_DEMUXER 0
++#define CONFIG_BINK_DEMUXER 0
++#define CONFIG_BINKA_DEMUXER 0
++#define CONFIG_BIT_DEMUXER 0
++#define CONFIG_BITPACKED_DEMUXER 0
++#define CONFIG_BMV_DEMUXER 0
++#define CONFIG_BFSTM_DEMUXER 0
++#define CONFIG_BRSTM_DEMUXER 0
++#define CONFIG_BOA_DEMUXER 0
++#define CONFIG_C93_DEMUXER 0
++#define CONFIG_CAF_DEMUXER 0
++#define CONFIG_CAVSVIDEO_DEMUXER 0
++#define CONFIG_CDG_DEMUXER 0
++#define CONFIG_CDXL_DEMUXER 0
++#define CONFIG_CINE_DEMUXER 0
++#define CONFIG_CODEC2_DEMUXER 0
++#define CONFIG_CODEC2RAW_DEMUXER 0
++#define CONFIG_CONCAT_DEMUXER 0
++#define CONFIG_DASH_DEMUXER 0
++#define CONFIG_DATA_DEMUXER 0
++#define CONFIG_DAUD_DEMUXER 0
++#define CONFIG_DCSTR_DEMUXER 0
++#define CONFIG_DERF_DEMUXER 0
++#define CONFIG_DFA_DEMUXER 0
++#define CONFIG_DFPWM_DEMUXER 0
++#define CONFIG_DHAV_DEMUXER 0
++#define CONFIG_DIRAC_DEMUXER 0
++#define CONFIG_DNXHD_DEMUXER 0
++#define CONFIG_DSF_DEMUXER 0
++#define CONFIG_DSICIN_DEMUXER 0
++#define CONFIG_DSS_DEMUXER 0
++#define CONFIG_DTS_DEMUXER 0
++#define CONFIG_DTSHD_DEMUXER 0
++#define CONFIG_DV_DEMUXER 0
++#define CONFIG_DVBSUB_DEMUXER 0
++#define CONFIG_DVBTXT_DEMUXER 0
++#define CONFIG_DXA_DEMUXER 0
++#define CONFIG_EA_DEMUXER 0
++#define CONFIG_EA_CDATA_DEMUXER 0
++#define CONFIG_EAC3_DEMUXER 0
++#define CONFIG_EPAF_DEMUXER 0
++#define CONFIG_FFMETADATA_DEMUXER 0
++#define CONFIG_FILMSTRIP_DEMUXER 0
++#define CONFIG_FITS_DEMUXER 0
++#define CONFIG_FLAC_DEMUXER 1
++#define CONFIG_FLIC_DEMUXER 0
++#define CONFIG_FLV_DEMUXER 0
++#define CONFIG_LIVE_FLV_DEMUXER 0
++#define CONFIG_FOURXM_DEMUXER 0
++#define CONFIG_FRM_DEMUXER 0
++#define CONFIG_FSB_DEMUXER 0
++#define CONFIG_FWSE_DEMUXER 0
++#define CONFIG_G722_DEMUXER 0
++#define CONFIG_G723_1_DEMUXER 0
++#define CONFIG_G726_DEMUXER 0
++#define CONFIG_G726LE_DEMUXER 0
++#define CONFIG_G729_DEMUXER 0
++#define CONFIG_GDV_DEMUXER 0
++#define CONFIG_GENH_DEMUXER 0
++#define CONFIG_GIF_DEMUXER 0
++#define CONFIG_GSM_DEMUXER 0
++#define CONFIG_GXF_DEMUXER 0
++#define CONFIG_H261_DEMUXER 0
++#define CONFIG_H263_DEMUXER 0
++#define CONFIG_H264_DEMUXER 0
++#define CONFIG_HCA_DEMUXER 0
++#define CONFIG_HCOM_DEMUXER 0
++#define CONFIG_HEVC_DEMUXER 0
++#define CONFIG_HLS_DEMUXER 0
++#define CONFIG_HNM_DEMUXER 0
++#define CONFIG_ICO_DEMUXER 0
++#define CONFIG_IDCIN_DEMUXER 0
++#define CONFIG_IDF_DEMUXER 0
++#define CONFIG_IFF_DEMUXER 0
++#define CONFIG_IFV_DEMUXER 0
++#define CONFIG_ILBC_DEMUXER 0
++#define CONFIG_IMAGE2_DEMUXER 0
++#define CONFIG_IMAGE2PIPE_DEMUXER 0
++#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
++#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
++#define CONFIG_IMF_DEMUXER 0
++#define CONFIG_INGENIENT_DEMUXER 0
++#define CONFIG_IPMOVIE_DEMUXER 0
++#define CONFIG_IPU_DEMUXER 0
++#define CONFIG_IRCAM_DEMUXER 0
++#define CONFIG_ISS_DEMUXER 0
++#define CONFIG_IV8_DEMUXER 0
++#define CONFIG_IVF_DEMUXER 0
++#define CONFIG_IVR_DEMUXER 0
++#define CONFIG_JACOSUB_DEMUXER 0
++#define CONFIG_JV_DEMUXER 0
++#define CONFIG_KUX_DEMUXER 0
++#define CONFIG_KVAG_DEMUXER 0
++#define CONFIG_LMLM4_DEMUXER 0
++#define CONFIG_LOAS_DEMUXER 0
++#define CONFIG_LUODAT_DEMUXER 0
++#define CONFIG_LRC_DEMUXER 0
++#define CONFIG_LVF_DEMUXER 0
++#define CONFIG_LXF_DEMUXER 0
++#define CONFIG_M4V_DEMUXER 0
++#define CONFIG_MCA_DEMUXER 0
++#define CONFIG_MCC_DEMUXER 0
++#define CONFIG_MATROSKA_DEMUXER 1
++#define CONFIG_MGSTS_DEMUXER 0
++#define CONFIG_MICRODVD_DEMUXER 0
++#define CONFIG_MJPEG_DEMUXER 0
++#define CONFIG_MJPEG_2000_DEMUXER 0
++#define CONFIG_MLP_DEMUXER 0
++#define CONFIG_MLV_DEMUXER 0
++#define CONFIG_MM_DEMUXER 0
++#define CONFIG_MMF_DEMUXER 0
++#define CONFIG_MODS_DEMUXER 0
++#define CONFIG_MOFLEX_DEMUXER 0
++#define CONFIG_MOV_DEMUXER 1
++#define CONFIG_MP3_DEMUXER 1
++#define CONFIG_MPC_DEMUXER 0
++#define CONFIG_MPC8_DEMUXER 0
++#define CONFIG_MPEGPS_DEMUXER 0
++#define CONFIG_MPEGTS_DEMUXER 0
++#define CONFIG_MPEGTSRAW_DEMUXER 0
++#define CONFIG_MPEGVIDEO_DEMUXER 0
++#define CONFIG_MPJPEG_DEMUXER 0
++#define CONFIG_MPL2_DEMUXER 0
++#define CONFIG_MPSUB_DEMUXER 0
++#define CONFIG_MSF_DEMUXER 0
++#define CONFIG_MSNWC_TCP_DEMUXER 0
++#define CONFIG_MSP_DEMUXER 0
++#define CONFIG_MTAF_DEMUXER 0
++#define CONFIG_MTV_DEMUXER 0
++#define CONFIG_MUSX_DEMUXER 0
++#define CONFIG_MV_DEMUXER 0
++#define CONFIG_MVI_DEMUXER 0
++#define CONFIG_MXF_DEMUXER 0
++#define CONFIG_MXG_DEMUXER 0
++#define CONFIG_NC_DEMUXER 0
++#define CONFIG_NISTSPHERE_DEMUXER 0
++#define CONFIG_NSP_DEMUXER 0
++#define CONFIG_NSV_DEMUXER 0
++#define CONFIG_NUT_DEMUXER 0
++#define CONFIG_NUV_DEMUXER 0
++#define CONFIG_OBU_DEMUXER 0
++#define CONFIG_OGG_DEMUXER 1
++#define CONFIG_OMA_DEMUXER 0
++#define CONFIG_PAF_DEMUXER 0
++#define CONFIG_PCM_ALAW_DEMUXER 0
++#define CONFIG_PCM_MULAW_DEMUXER 0
++#define CONFIG_PCM_VIDC_DEMUXER 0
++#define CONFIG_PCM_F64BE_DEMUXER 0
++#define CONFIG_PCM_F64LE_DEMUXER 0
++#define CONFIG_PCM_F32BE_DEMUXER 0
++#define CONFIG_PCM_F32LE_DEMUXER 0
++#define CONFIG_PCM_S32BE_DEMUXER 0
++#define CONFIG_PCM_S32LE_DEMUXER 0
++#define CONFIG_PCM_S24BE_DEMUXER 0
++#define CONFIG_PCM_S24LE_DEMUXER 0
++#define CONFIG_PCM_S16BE_DEMUXER 0
++#define CONFIG_PCM_S16LE_DEMUXER 0
++#define CONFIG_PCM_S8_DEMUXER 0
++#define CONFIG_PCM_U32BE_DEMUXER 0
++#define CONFIG_PCM_U32LE_DEMUXER 0
++#define CONFIG_PCM_U24BE_DEMUXER 0
++#define CONFIG_PCM_U24LE_DEMUXER 0
++#define CONFIG_PCM_U16BE_DEMUXER 0
++#define CONFIG_PCM_U16LE_DEMUXER 0
++#define CONFIG_PCM_U8_DEMUXER 0
++#define CONFIG_PJS_DEMUXER 0
++#define CONFIG_PMP_DEMUXER 0
++#define CONFIG_PP_BNK_DEMUXER 0
++#define CONFIG_PVA_DEMUXER 0
++#define CONFIG_PVF_DEMUXER 0
++#define CONFIG_QCP_DEMUXER 0
++#define CONFIG_R3D_DEMUXER 0
++#define CONFIG_RAWVIDEO_DEMUXER 0
++#define CONFIG_REALTEXT_DEMUXER 0
++#define CONFIG_REDSPARK_DEMUXER 0
++#define CONFIG_RL2_DEMUXER 0
++#define CONFIG_RM_DEMUXER 0
++#define CONFIG_ROQ_DEMUXER 0
++#define CONFIG_RPL_DEMUXER 0
++#define CONFIG_RSD_DEMUXER 0
++#define CONFIG_RSO_DEMUXER 0
++#define CONFIG_RTP_DEMUXER 0
++#define CONFIG_RTSP_DEMUXER 0
++#define CONFIG_S337M_DEMUXER 0
++#define CONFIG_SAMI_DEMUXER 0
++#define CONFIG_SAP_DEMUXER 0
++#define CONFIG_SBC_DEMUXER 0
++#define CONFIG_SBG_DEMUXER 0
++#define CONFIG_SCC_DEMUXER 0
++#define CONFIG_SCD_DEMUXER 0
++#define CONFIG_SDP_DEMUXER 0
++#define CONFIG_SDR2_DEMUXER 0
++#define CONFIG_SDS_DEMUXER 0
++#define CONFIG_SDX_DEMUXER 0
++#define CONFIG_SEGAFILM_DEMUXER 0
++#define CONFIG_SER_DEMUXER 0
++#define CONFIG_SGA_DEMUXER 0
++#define CONFIG_SHORTEN_DEMUXER 0
++#define CONFIG_SIFF_DEMUXER 0
++#define CONFIG_SIMBIOSIS_IMX_DEMUXER 0
++#define CONFIG_SLN_DEMUXER 0
++#define CONFIG_SMACKER_DEMUXER 0
++#define CONFIG_SMJPEG_DEMUXER 0
++#define CONFIG_SMUSH_DEMUXER 0
++#define CONFIG_SOL_DEMUXER 0
++#define CONFIG_SOX_DEMUXER 0
++#define CONFIG_SPDIF_DEMUXER 0
++#define CONFIG_SRT_DEMUXER 0
++#define CONFIG_STR_DEMUXER 0
++#define CONFIG_STL_DEMUXER 0
++#define CONFIG_SUBVIEWER1_DEMUXER 0
++#define CONFIG_SUBVIEWER_DEMUXER 0
++#define CONFIG_SUP_DEMUXER 0
++#define CONFIG_SVAG_DEMUXER 0
++#define CONFIG_SVS_DEMUXER 0
++#define CONFIG_SWF_DEMUXER 0
++#define CONFIG_TAK_DEMUXER 0
++#define CONFIG_TEDCAPTIONS_DEMUXER 0
++#define CONFIG_THP_DEMUXER 0
++#define CONFIG_THREEDOSTR_DEMUXER 0
++#define CONFIG_TIERTEXSEQ_DEMUXER 0
++#define CONFIG_TMV_DEMUXER 0
++#define CONFIG_TRUEHD_DEMUXER 0
++#define CONFIG_TTA_DEMUXER 0
++#define CONFIG_TXD_DEMUXER 0
++#define CONFIG_TTY_DEMUXER 0
++#define CONFIG_TY_DEMUXER 0
++#define CONFIG_V210_DEMUXER 0
++#define CONFIG_V210X_DEMUXER 0
++#define CONFIG_VAG_DEMUXER 0
++#define CONFIG_VC1_DEMUXER 0
++#define CONFIG_VC1T_DEMUXER 0
++#define CONFIG_VIVIDAS_DEMUXER 0
++#define CONFIG_VIVO_DEMUXER 0
++#define CONFIG_VMD_DEMUXER 0
++#define CONFIG_VOBSUB_DEMUXER 0
++#define CONFIG_VOC_DEMUXER 0
++#define CONFIG_VPK_DEMUXER 0
++#define CONFIG_VPLAYER_DEMUXER 0
++#define CONFIG_VQF_DEMUXER 0
++#define CONFIG_W64_DEMUXER 0
++#define CONFIG_WAV_DEMUXER 1
++#define CONFIG_WC3_DEMUXER 0
++#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
++#define CONFIG_WEBVTT_DEMUXER 0
++#define CONFIG_WSAUD_DEMUXER 0
++#define CONFIG_WSD_DEMUXER 0
++#define CONFIG_WSVQA_DEMUXER 0
++#define CONFIG_WTV_DEMUXER 0
++#define CONFIG_WVE_DEMUXER 0
++#define CONFIG_WV_DEMUXER 0
++#define CONFIG_XA_DEMUXER 0
++#define CONFIG_XBIN_DEMUXER 0
++#define CONFIG_XMV_DEMUXER 0
++#define CONFIG_XVAG_DEMUXER 0
++#define CONFIG_XWMA_DEMUXER 0
++#define CONFIG_YOP_DEMUXER 0
++#define CONFIG_YUV4MPEGPIPE_DEMUXER 0
++#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_CRI_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_GEM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEGXL_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_VBN_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XBM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
++#define CONFIG_LIBGME_DEMUXER 0
++#define CONFIG_LIBMODPLUG_DEMUXER 0
++#define CONFIG_LIBOPENMPT_DEMUXER 0
++#define CONFIG_VAPOURSYNTH_DEMUXER 0
++#define CONFIG_A64_MUXER 0
++#define CONFIG_AC3_MUXER 0
++#define CONFIG_ADTS_MUXER 0
++#define CONFIG_ADX_MUXER 0
++#define CONFIG_AIFF_MUXER 0
++#define CONFIG_ALP_MUXER 0
++#define CONFIG_AMR_MUXER 0
++#define CONFIG_AMV_MUXER 0
++#define CONFIG_APM_MUXER 0
++#define CONFIG_APNG_MUXER 0
++#define CONFIG_APTX_MUXER 0
++#define CONFIG_APTX_HD_MUXER 0
++#define CONFIG_ARGO_ASF_MUXER 0
++#define CONFIG_ARGO_CVG_MUXER 0
++#define CONFIG_ASF_MUXER 0
++#define CONFIG_ASS_MUXER 0
++#define CONFIG_AST_MUXER 0
++#define CONFIG_ASF_STREAM_MUXER 0
++#define CONFIG_AU_MUXER 0
++#define CONFIG_AVI_MUXER 0
++#define CONFIG_AVIF_MUXER 0
++#define CONFIG_AVM2_MUXER 0
++#define CONFIG_AVS2_MUXER 0
++#define CONFIG_AVS3_MUXER 0
++#define CONFIG_BIT_MUXER 0
++#define CONFIG_CAF_MUXER 0
++#define CONFIG_CAVSVIDEO_MUXER 0
++#define CONFIG_CODEC2_MUXER 0
++#define CONFIG_CODEC2RAW_MUXER 0
++#define CONFIG_CRC_MUXER 0
++#define CONFIG_DASH_MUXER 0
++#define CONFIG_DATA_MUXER 0
++#define CONFIG_DAUD_MUXER 0
++#define CONFIG_DFPWM_MUXER 0
++#define CONFIG_DIRAC_MUXER 0
++#define CONFIG_DNXHD_MUXER 0
++#define CONFIG_DTS_MUXER 0
++#define CONFIG_DV_MUXER 0
++#define CONFIG_EAC3_MUXER 0
++#define CONFIG_F4V_MUXER 0
++#define CONFIG_FFMETADATA_MUXER 0
++#define CONFIG_FIFO_MUXER 0
++#define CONFIG_FIFO_TEST_MUXER 0
++#define CONFIG_FILMSTRIP_MUXER 0
++#define CONFIG_FITS_MUXER 0
++#define CONFIG_FLAC_MUXER 0
++#define CONFIG_FLV_MUXER 0
++#define CONFIG_FRAMECRC_MUXER 0
++#define CONFIG_FRAMEHASH_MUXER 0
++#define CONFIG_FRAMEMD5_MUXER 0
++#define CONFIG_G722_MUXER 0
++#define CONFIG_G723_1_MUXER 0
++#define CONFIG_G726_MUXER 0
++#define CONFIG_G726LE_MUXER 0
++#define CONFIG_GIF_MUXER 0
++#define CONFIG_GSM_MUXER 0
++#define CONFIG_GXF_MUXER 0
++#define CONFIG_H261_MUXER 0
++#define CONFIG_H263_MUXER 0
++#define CONFIG_H264_MUXER 0
++#define CONFIG_HASH_MUXER 0
++#define CONFIG_HDS_MUXER 0
++#define CONFIG_HEVC_MUXER 0
++#define CONFIG_HLS_MUXER 0
++#define CONFIG_ICO_MUXER 0
++#define CONFIG_ILBC_MUXER 0
++#define CONFIG_IMAGE2_MUXER 0
++#define CONFIG_IMAGE2PIPE_MUXER 0
++#define CONFIG_IPOD_MUXER 0
++#define CONFIG_IRCAM_MUXER 0
++#define CONFIG_ISMV_MUXER 0
++#define CONFIG_IVF_MUXER 0
++#define CONFIG_JACOSUB_MUXER 0
++#define CONFIG_KVAG_MUXER 0
++#define CONFIG_LATM_MUXER 0
++#define CONFIG_LRC_MUXER 0
++#define CONFIG_M4V_MUXER 0
++#define CONFIG_MD5_MUXER 0
++#define CONFIG_MATROSKA_MUXER 0
++#define CONFIG_MATROSKA_AUDIO_MUXER 0
++#define CONFIG_MICRODVD_MUXER 0
++#define CONFIG_MJPEG_MUXER 0
++#define CONFIG_MLP_MUXER 0
++#define CONFIG_MMF_MUXER 0
++#define CONFIG_MOV_MUXER 0
++#define CONFIG_MP2_MUXER 0
++#define CONFIG_MP3_MUXER 0
++#define CONFIG_MP4_MUXER 0
++#define CONFIG_MPEG1SYSTEM_MUXER 0
++#define CONFIG_MPEG1VCD_MUXER 0
++#define CONFIG_MPEG1VIDEO_MUXER 0
++#define CONFIG_MPEG2DVD_MUXER 0
++#define CONFIG_MPEG2SVCD_MUXER 0
++#define CONFIG_MPEG2VIDEO_MUXER 0
++#define CONFIG_MPEG2VOB_MUXER 0
++#define CONFIG_MPEGTS_MUXER 0
++#define CONFIG_MPJPEG_MUXER 0
++#define CONFIG_MXF_MUXER 0
++#define CONFIG_MXF_D10_MUXER 0
++#define CONFIG_MXF_OPATOM_MUXER 0
++#define CONFIG_NULL_MUXER 0
++#define CONFIG_NUT_MUXER 0
++#define CONFIG_OBU_MUXER 0
++#define CONFIG_OGA_MUXER 0
++#define CONFIG_OGG_MUXER 0
++#define CONFIG_OGV_MUXER 0
++#define CONFIG_OMA_MUXER 0
++#define CONFIG_OPUS_MUXER 0
++#define CONFIG_PCM_ALAW_MUXER 0
++#define CONFIG_PCM_MULAW_MUXER 0
++#define CONFIG_PCM_VIDC_MUXER 0
++#define CONFIG_PCM_F64BE_MUXER 0
++#define CONFIG_PCM_F64LE_MUXER 0
++#define CONFIG_PCM_F32BE_MUXER 0
++#define CONFIG_PCM_F32LE_MUXER 0
++#define CONFIG_PCM_S32BE_MUXER 0
++#define CONFIG_PCM_S32LE_MUXER 0
++#define CONFIG_PCM_S24BE_MUXER 0
++#define CONFIG_PCM_S24LE_MUXER 0
++#define CONFIG_PCM_S16BE_MUXER 0
++#define CONFIG_PCM_S16LE_MUXER 0
++#define CONFIG_PCM_S8_MUXER 0
++#define CONFIG_PCM_U32BE_MUXER 0
++#define CONFIG_PCM_U32LE_MUXER 0
++#define CONFIG_PCM_U24BE_MUXER 0
++#define CONFIG_PCM_U24LE_MUXER 0
++#define CONFIG_PCM_U16BE_MUXER 0
++#define CONFIG_PCM_U16LE_MUXER 0
++#define CONFIG_PCM_U8_MUXER 0
++#define CONFIG_PSP_MUXER 0
++#define CONFIG_RAWVIDEO_MUXER 0
++#define CONFIG_RM_MUXER 0
++#define CONFIG_ROQ_MUXER 0
++#define CONFIG_RSO_MUXER 0
++#define CONFIG_RTP_MUXER 0
++#define CONFIG_RTP_MPEGTS_MUXER 0
++#define CONFIG_RTSP_MUXER 0
++#define CONFIG_SAP_MUXER 0
++#define CONFIG_SBC_MUXER 0
++#define CONFIG_SCC_MUXER 0
++#define CONFIG_SEGAFILM_MUXER 0
++#define CONFIG_SEGMENT_MUXER 0
++#define CONFIG_STREAM_SEGMENT_MUXER 0
++#define CONFIG_SMJPEG_MUXER 0
++#define CONFIG_SMOOTHSTREAMING_MUXER 0
++#define CONFIG_SOX_MUXER 0
++#define CONFIG_SPX_MUXER 0
++#define CONFIG_SPDIF_MUXER 0
++#define CONFIG_SRT_MUXER 0
++#define CONFIG_STREAMHASH_MUXER 0
++#define CONFIG_SUP_MUXER 0
++#define CONFIG_SWF_MUXER 0
++#define CONFIG_TEE_MUXER 0
++#define CONFIG_TG2_MUXER 0
++#define CONFIG_TGP_MUXER 0
++#define CONFIG_MKVTIMESTAMP_V2_MUXER 0
++#define CONFIG_TRUEHD_MUXER 0
++#define CONFIG_TTA_MUXER 0
++#define CONFIG_TTML_MUXER 0
++#define CONFIG_UNCODEDFRAMECRC_MUXER 0
++#define CONFIG_VC1_MUXER 0
++#define CONFIG_VC1T_MUXER 0
++#define CONFIG_VOC_MUXER 0
++#define CONFIG_W64_MUXER 0
++#define CONFIG_WAV_MUXER 0
++#define CONFIG_WEBM_MUXER 0
++#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
++#define CONFIG_WEBM_CHUNK_MUXER 0
++#define CONFIG_WEBP_MUXER 0
++#define CONFIG_WEBVTT_MUXER 0
++#define CONFIG_WSAUD_MUXER 0
++#define CONFIG_WTV_MUXER 0
++#define CONFIG_WV_MUXER 0
++#define CONFIG_YUV4MPEGPIPE_MUXER 0
++#define CONFIG_CHROMAPRINT_MUXER 0
++#define CONFIG_ASYNC_PROTOCOL 0
++#define CONFIG_BLURAY_PROTOCOL 0
++#define CONFIG_CACHE_PROTOCOL 0
++#define CONFIG_CONCAT_PROTOCOL 0
++#define CONFIG_CONCATF_PROTOCOL 0
++#define CONFIG_CRYPTO_PROTOCOL 0
++#define CONFIG_DATA_PROTOCOL 0
++#define CONFIG_FFRTMPCRYPT_PROTOCOL 0
++#define CONFIG_FFRTMPHTTP_PROTOCOL 0
++#define CONFIG_FILE_PROTOCOL 0
++#define CONFIG_FTP_PROTOCOL 0
++#define CONFIG_GOPHER_PROTOCOL 0
++#define CONFIG_GOPHERS_PROTOCOL 0
++#define CONFIG_HLS_PROTOCOL 0
++#define CONFIG_HTTP_PROTOCOL 0
++#define CONFIG_HTTPPROXY_PROTOCOL 0
++#define CONFIG_HTTPS_PROTOCOL 0
++#define CONFIG_ICECAST_PROTOCOL 0
++#define CONFIG_MMSH_PROTOCOL 0
++#define CONFIG_MMST_PROTOCOL 0
++#define CONFIG_MD5_PROTOCOL 0
++#define CONFIG_PIPE_PROTOCOL 0
++#define CONFIG_PROMPEG_PROTOCOL 0
++#define CONFIG_RTMP_PROTOCOL 0
++#define CONFIG_RTMPE_PROTOCOL 0
++#define CONFIG_RTMPS_PROTOCOL 0
++#define CONFIG_RTMPT_PROTOCOL 0
++#define CONFIG_RTMPTE_PROTOCOL 0
++#define CONFIG_RTMPTS_PROTOCOL 0
++#define CONFIG_RTP_PROTOCOL 0
++#define CONFIG_SCTP_PROTOCOL 0
++#define CONFIG_SRTP_PROTOCOL 0
++#define CONFIG_SUBFILE_PROTOCOL 0
++#define CONFIG_TEE_PROTOCOL 0
++#define CONFIG_TCP_PROTOCOL 0
++#define CONFIG_TLS_PROTOCOL 0
++#define CONFIG_UDP_PROTOCOL 0
++#define CONFIG_UDPLITE_PROTOCOL 0
++#define CONFIG_UNIX_PROTOCOL 0
++#define CONFIG_LIBAMQP_PROTOCOL 0
++#define CONFIG_LIBRIST_PROTOCOL 0
++#define CONFIG_LIBRTMP_PROTOCOL 0
++#define CONFIG_LIBRTMPE_PROTOCOL 0
++#define CONFIG_LIBRTMPS_PROTOCOL 0
++#define CONFIG_LIBRTMPT_PROTOCOL 0
++#define CONFIG_LIBRTMPTE_PROTOCOL 0
++#define CONFIG_LIBSRT_PROTOCOL 0
++#define CONFIG_LIBSSH_PROTOCOL 0
++#define CONFIG_LIBSMBCLIENT_PROTOCOL 0
++#define CONFIG_LIBZMQ_PROTOCOL 0
++#define CONFIG_IPFS_PROTOCOL 0
++#define CONFIG_IPNS_PROTOCOL 0
++#endif /* FFMPEG_CONFIG_COMPONENTS_H */
diff --git a/www/ungoogled-chromium/files/patch-third__party_ffmpeg_libavcodec_x86_cabac.h b/www/ungoogled-chromium/files/patch-third__party_ffmpeg_libavcodec_x86_cabac.h
new file mode 100644
inde